Repository Analysis

invertase/react-native-firebase

🔥 A well-tested feature-rich modular Firebase implementation for React Native. Supports both iOS & Android platforms for all Firebase services.

16.3 Moderate AI signal View on GitHub
16.3
Adjusted Score
16.3
Raw Score
100%
Time Factor
2026-05-26
Last Push
12,303
Stars
TypeScript
Language
224,407
Lines of Code
1125
Files
480
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 303HIGH 0MEDIUM 1LOW 176

Pattern Findings

480 matches across 7 categories. Click a row to expand file-level details.

Hallucination Indicators303 hits · 3462 pts
SeverityFileLineSnippet
CRITICALpackages/database/e2e/query/query.e2e.js31 queryBefore._modifiers._modifiers.length.should.equal(0);
CRITICALpackages/database/e2e/query/query.e2e.js34 queryBefore._modifiers._modifiers.length.should.equal(0);
CRITICALpackages/database/e2e/query/query.e2e.js35 queryAfter._modifiers._modifiers.length.should.equal(1);
CRITICALpackages/database/e2e/query/query.e2e.js38 queryAfter._modifiers._modifiers.length.should.equal(1);
CRITICALpackages/database/e2e/query/query.e2e.js39 queryAfterAfter._modifiers._modifiers.length.should.equal(3); // adds startAt endAt internally
CRITICALpackages/database/e2e/query/query.e2e.js48 queryBefore._modifiers._modifiers.length.should.equal(0);
CRITICALpackages/database/e2e/query/query.e2e.js51 queryBefore._modifiers._modifiers.length.should.equal(0);
CRITICALpackages/database/e2e/query/query.e2e.js52 queryAfter._modifiers._modifiers.length.should.equal(1);
CRITICALpackages/database/e2e/query/query.e2e.js55 queryAfter._modifiers._modifiers.length.should.equal(1);
CRITICALpackages/database/e2e/query/query.e2e.js56 queryAfterAfter._modifiers._modifiers.length.should.equal(3); // adds startAt endAt internally
CRITICALpackages/app/e2e/utilsStatics.e2e.js23 firebase.utils.FilePath.should.be.an.Object();
CRITICALpackages/app/e2e/utilsStatics.e2e.js25 firebase.utils.FilePath.MAIN_BUNDLE.should.be.a.String();
CRITICALpackages/app/e2e/utilsStatics.e2e.js30 firebase.utils.FilePath.CACHES_DIRECTORY.should.be.a.String();
CRITICALpackages/app/e2e/utilsStatics.e2e.js31 firebase.utils.FilePath.DOCUMENT_DIRECTORY.should.be.a.String();
CRITICALpackages/app/e2e/utilsStatics.e2e.js35 firebase.utils.FilePath.EXTERNAL_DIRECTORY.should.be.a.String();
CRITICALpackages/app/e2e/utilsStatics.e2e.js42 firebase.utils.FilePath.EXTERNAL_STORAGE_DIRECTORY.should.be.a.String();
CRITICALpackages/app/e2e/utilsStatics.e2e.js47 firebase.utils.FilePath.TEMP_DIRECTORY.should.be.a.String();
CRITICALpackages/app/e2e/utilsStatics.e2e.js48 firebase.utils.FilePath.LIBRARY_DIRECTORY.should.be.a.String();
CRITICALpackages/app/e2e/utilsStatics.e2e.js49 firebase.utils.FilePath.PICTURES_DIRECTORY.should.be.a.String();
CRITICALpackages/app/e2e/utilsStatics.e2e.js50 firebase.utils.FilePath.MOVIES_DIRECTORY.should.be.a.String();
CRITICALpackages/app/e2e/app.e2e.js55 firebase.SDK_VERSION.should.be.a.String();
CRITICALpackages/app/e2e/app.constants.e2e.js44 app.appConfig.should.be.a.Object();
CRITICALpackages/app/e2e/app.constants.e2e.js45 app.appConfig.name.should.be.a.String();
CRITICALpackages/app/e2e/app.constants.e2e.js46 app.options.should.be.a.Object();
CRITICALpackages/firestore/e2e/Pipeline.e2e.js190 data.createdAt.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js196 data.nested.updatedAt.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js197 data.nested.updatedAt.seconds.should.equal(updatedAt.seconds);
CRITICALpackages/firestore/e2e/Pipeline.e2e.js198 data.nested.updatedAt.nanoseconds.should.equal(updatedAt.nanoseconds);
CRITICALpackages/firestore/e2e/Pipeline.e2e.js199 data.nested.linkedRef.path.should.equal(linkedRef.path);
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1813 data.nextDay.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1815 data.prevHour.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1817 data.dayBucket.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1818 data.fromEpochMs.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1857 data.now.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1860 data.fromSec.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1862 data.fromMicros.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1166 iosData.randomValue.should.be.a.Number();
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1182 data.randomValue.should.be.a.Number();
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1696 data.firstScore.should.be.a.Number();
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1697 data.lastScore.should.be.a.Number();
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1737 eng.firstName.should.be.a.String();
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1738 eng.lastName.should.be.a.String();
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1801 iosData.dayBucket.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1802 iosData.fromEpochMs.constructor.name.should.equal('Timestamp');
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1889 data.numType.should.be.a.String();
CRITICALpackages/firestore/e2e/Pipeline.e2e.js1890 data.collId.should.be.a.String();
CRITICALpackages/firestore/e2e/SnapshotMetadata.e2e.js41 colRef.metadata.fromCache.should.be.Boolean();
CRITICALpackages/firestore/e2e/SnapshotMetadata.e2e.js42 docRef.metadata.fromCache.should.be.Boolean();
CRITICALpackages/firestore/e2e/SnapshotMetadata.e2e.js50 colRef.metadata.hasPendingWrites.should.be.Boolean();
CRITICALpackages/firestore/e2e/SnapshotMetadata.e2e.js51 docRef.metadata.hasPendingWrites.should.be.Boolean();
CRITICALpackages/firestore/e2e/SnapshotMetadata.e2e.js109 colRef.metadata.fromCache.should.be.Boolean();
CRITICALpackages/firestore/e2e/SnapshotMetadata.e2e.js110 docRef.metadata.fromCache.should.be.Boolean();
CRITICALpackages/firestore/e2e/SnapshotMetadata.e2e.js121 colRef.metadata.hasPendingWrites.should.be.Boolean();
CRITICALpackages/firestore/e2e/SnapshotMetadata.e2e.js122 docRef.metadata.hasPendingWrites.should.be.Boolean();
CRITICALpackages/firestore/e2e/FieldValue.e2e.js115 snapshot.data().foo.seconds.should.be.a.Number();
CRITICALpackages/firestore/e2e/FieldValue.e2e.js123 snapshot1.data().foo.nanoseconds.should.be.a.Number();
CRITICALpackages/firestore/e2e/FieldValue.e2e.js128 snapshot2.data().foo.nanoseconds.should.be.a.Number();
CRITICALpackages/firestore/e2e/FieldValue.e2e.js380 snapshot.data().foo.seconds.should.be.a.Number();
CRITICALpackages/firestore/e2e/FieldValue.e2e.js392 snapshot1.data().foo.nanoseconds.should.be.a.Number();
CRITICALpackages/firestore/e2e/FieldValue.e2e.js397 snapshot2.data().foo.nanoseconds.should.be.a.Number();
243 more matches not shown…
Hyper-Verbose Identifiers131 hits · 136 pts
SeverityFileLineSnippet
LOWtests/local-tests/firestore/document-reference.tsx6export function DocumentReferenceTestComponent() {
LOWtests/local-tests/firestore/onSnapshotInSync.js31export function FirestoreOnSnapshotInSyncTest() {
LOWtests/local-tests/functions/https-callable.tsx14export function HttpsCallableTestComponent(): React.JSX.Element {
LOWtests/local-tests/functions/streaming-callable.tsx14export function StreamingCallableTestComponent(): React.JSX.Element {
LOWpackages/database/lib/modular.ts92export function setPersistenceCacheSizeBytes(db: Database, bytes: number): Promise<void> {
LOWpackages/database/lib/web/RNFBDatabaseModule.ts81function snapshotWithPreviousChildToObject(
LOWpackages/database/lib/web/RNFBDatabaseModule.ts106function getCachedDatabaseInstance(appName: string, dbURL: string): WebDatabase {
LOWpackages/database/lib/web/RNFBDatabaseModule.ts123function getCachedOnDisconnectInstance(refValue: WebDatabaseReference): WebOnDisconnect {
LOWpackages/crashlytics/lib/modular.ts73export function didCrashOnPreviousExecution(crashlytics: Crashlytics): Promise<boolean> {
LOWpackages/crashlytics/lib/modular.ts239export function setCrashlyticsCollectionEnabled(
LOWpackages/app/lib/modular.ts138export function setReactNativeAsyncStorage(
LOWpackages/app/lib/internal/asyncStorage.ts47export async function getReactNativeAsyncStorageInternal(): Promise<AsyncStorageStatic> {
LOWpackages/app/lib/internal/asyncStorage.ts52export function setReactNativeAsyncStorageInternal(
LOWpackages/app/lib/internal/web/structuredClone/index.js212export function makeStructuredCloneAvailable() {
LOWpackages/app/lib/internal/registry/namespace.ts76function getOrCreateModuleForApp(app: FirebaseApp, moduleNamespace: KnownNamespace): ModuleGetter {
LOWpackages/app/lib/internal/registry/namespace.ts147function getOrCreateModuleForRoot(moduleNamespace: KnownNamespace): ModuleGetter {
LOWpackages/app/lib/internal/registry/app.ts235export function setReactNativeAsyncStorage(asyncStorage: ReactNativeAsyncStorage): void {
LOWpackages/app/lib/internal/registry/nativeModule.ts50function nativeModuleMethodWrapped(
LOWpackages/app/lib/internal/registry/nativeModule.ts195function subscribeToNativeModuleEvent(eventName: string): void {
LOWpackages/app/lib/common/validate.ts25export function objectKeyValuesAreStrings(object: unknown): boolean {
LOWpackages/app/lib/common/validate.ts209export function validateOptionalNativeDependencyExists(
LOWpackages/app/lib/common/index.ts539export function deprecationConsoleWarning(
LOWpackages/firestore/type-test.ts560function acceptRootDocumentSnapshot(_snap: DocumentSnapshot<DocumentData>) {}
LOWpackages/firestore/type-test.ts811async function withTestDocAndInitialData(
LOWpackages/firestore/consumer-type-test.ts560function rootTransactionUpdateFunction(tx: Transaction): Promise<DocumentSnapshot<DocumentData>> {
LOWpackages/firestore/consumer-type-test.ts809async function withTestDocAndInitialData(
LOWpackages/firestore/lib/modular.ts328export function clearIndexedDbPersistence(firestore: Firestore): Promise<void> {
LOWpackages/firestore/lib/modular.ts505export function getPersistentCacheIndexManager(
LOWpackages/firestore/lib/modular.ts514export function enablePersistentCacheIndexAutoCreation(
LOWpackages/firestore/lib/modular.ts523export function disablePersistentCacheIndexAutoCreation(
LOWpackages/firestore/lib/modular.ts532export function deleteAllPersistentCacheIndexes(
LOWpackages/firestore/lib/FirestoreDocumentReference.ts51export function provideCollectionReferenceClass(
LOWpackages/firestore/lib/FirestoreDocumentReference.ts69export function provideDocumentSnapshotClass(
LOWpackages/firestore/lib/web/RNFBFirestoreModule.ts131function getCachedFirestoreInstance(appName: string, databaseId: string): Firestore {
LOWpackages/firestore/lib/web/pipelines/pipeline.ts30async function executeWebSdkPipelineSnapshot(
LOW…tore/lib/web/pipelines/pipeline_snapshot_serializer.ts113export function serializeWebSdkPipelineSnapshot(
LOW…firestore/lib/web/pipelines/pipeline_bridge_factory.ts39function createPipelineRuntimeImportError(message: string): Error {
LOW…firestore/lib/web/pipelines/pipeline_bridge_factory.ts47function buildCollectionSourcePipeline(
LOW…firestore/lib/web/pipelines/pipeline_bridge_factory.ts61function buildCollectionGroupSourcePipeline(
LOW…firestore/lib/web/pipelines/pipeline_bridge_factory.ts75function buildDatabaseSourcePipeline(
LOW…firestore/lib/web/pipelines/pipeline_bridge_factory.ts88function buildDocumentsSourcePipeline(
LOWpackages/firestore/lib/pipelines/pipeline_validate.ts37function validateNonEmptyStringArray(value: unknown, fieldName: string): void {
LOWpackages/firestore/lib/pipelines/pipeline_validate.ts97function validateNonEmptyStageArray(value: unknown, fieldName: string): void {
LOWpackages/firestore/lib/pipelines/pipeline_validate.ts161export function validateSerializedPipeline(
LOWpackages/firestore/lib/pipelines/pipeline_validate.ts233export function validatePipelineExecuteRequest(
LOWpackages/firestore/lib/pipelines/pipeline_runtime.ts112function assertSameFirestoreInstance(
LOWpackages/firestore/lib/pipelines/pipeline_runtime.ts792export function registerPipelineRuntimeInstaller(): void {
LOWpackages/firestore/lib/pipelines/pipeline_support.ts66export function createPipelineUnsupportedMessage(
LOWpackages/firestore/lib/pipelines/pipeline_support.ts82export function getIOSUnsupportedPipelineFunctions(
LOWpackages/firestore/lib/pipelines/pipeline_support.ts97function collectIOSUnsupportedFunctions(
LOWpackages/firestore/lib/pipelines/pipeline_support.ts127function isSerializedFunctionExpression(
LOWpackages/firestore/lib/utils/index.ts133export function applyFirestoreDataConverter(
LOWpackages/firestore/lib/utils/serialize.ts47export function provideDocumentReferenceClass(
LOWpackages/firestore/e2e/Pipeline.e2e.js42async function expectIOSUnsupportedFunctions(run, functionNames) {
LOWpackages/firestore/e2e/withConverter.e2e.js85function modifyIgnoreUndefinedProperties(db, value) {
LOWpackages/firestore/e2e/withConverter.e2e.js99async function withModifiedUndefinedPropertiesTestDb(fn) {
LOWpackages/firestore/e2e/withConverter.e2e.js114function withTestCollectionAndInitialData(data, fn) {
LOWpackages/auth/plugin/src/ios/openUrlFix.ts55export function withOpenUrlFixForAppDelegate({
LOWpackages/auth/plugin/src/ios/openUrlFix.ts211export function isFirebaseSwizzlingDisabled(config: ExportedConfigWithProps<InfoPlist>): boolean {
LOWpackages/auth/plugin/src/ios/openUrlFix.ts215export function ensureFirebaseSwizzlingIsEnabled(
71 more matches not shown…
Over-Commented Block34 hits · 34 pts
SeverityFileLineSnippet
LOWjest.config.js1module.exports = {
LOWtests/globals.js21import shouldMatchers from 'should';
LOWtests/globals.js41// - (🧪 -> ✅/❌) Start and end of each test, mainly for grouping logs.
LOWtests/ios/testing/AppDelegate.mm21#import "RNFBAppCheckModule.h"
LOWtests/local-tests/auth/gcloud-enable-totp-in-project.sh1#!/bin/bash
LOWscripts/fetch_ai_mock_responses.ts1// Copyright (c) 2016-present Invertase Limited & Contributors
LOWscripts/update-firebase-sdk-versions.sh1#!/usr/bin/env bash
LOWpackages/crashlytics/ios_config.sh1#!/usr/bin/env bash
LOW…tics/ios/RNFBCrashlytics/RNFBCrashlyticsInitProvider.m21#import <FirebaseCoreExtension/FIRComponent.h>
LOWpackages/crashlytics/lib/handlers.ts121 //
LOWpackages/app/ios_config.sh1#!/usr/bin/env bash
LOWpackages/app/firebase_json.rb1# frozen_string_literal: true
LOWpackages/app/ios/RNFBApp/RNFBAppModule.m21#import "RNFBAppModule.h"
LOWpackages/app/ios/RNFBApp/RNFBSharedUtils.h21#import <FirebaseCore/FirebaseCore.h>
LOWpackages/app/lib/internal/web/memidb/lib/scheduling.js1// When running within Node.js (including jsdom), we want to use setImmediate
LOW…tore/ios/RNFBFirestore/RNFBFirestoreCollectionModule.m21#import <RNFBFirestore/RNFBFirestore-Swift.h>
LOWpackages/auth/lib/web/RNFBAuthModule.js281// getConstants
LOWpackages/storage/e2e/StorageTask.e2e.js261 await uploadTaskSnapshot;
LOW…ges/functions/ios/RNFBFunctions/RNFBFunctionsModule.mm21#import "NativeRNFBTurboFunctions.h"
LOW…ons/ios/RNFBFunctions/RNFBFunctionsStreamHandler.swift21
LOW…tions/ios/RNFBFunctions/RNFBFunctionsCallHandler.swift21
LOWpackages/perf/e2e/Trace.e2e.js81 // return Promise.resolve();
LOWpackages/perf/e2e/Trace.e2e.js401 // return Promise.reject(new Error('Did not throw'));
LOWpackages/perf/e2e/HttpMetric.e2e.js81 httpMetric.setHttpResponseCode(floatingPoint);
LOWpackages/perf/e2e/HttpMetric.e2e.js101 // });
LOWpackages/perf/e2e/HttpMetric.e2e.js401 // e.message.should.containEql('must be a string');
LOWpackages/messaging/e2e/messaging.e2e.js21}
LOW…ages/analytics/ios/RNFBAnalytics/RNFBAnalyticsModule.m21#if __has_include(<RNFBAnalytics/RNFBAnalytics-Swift.h>)
LOWpackages/analytics/lib/web/api.ts21} from '../types/web';
LOWpackages/analytics/lib/web/api.ts281
LOWpackages/analytics/lib/web/api.ts301 // affiliation: 'af',
LOW.github/reaction.yml1# Configuration for reaction-comments - https://github.com/dessant/reaction-comments
LOW.github/reaction.yml21# pulls:
LOW.github/workflows/create_test_patches.yml101 name: Yarn Cache Save
Fake / Example Data9 hits · 9 pts
SeverityFileLineSnippet
LOWpackages/firestore/e2e/Pipeline.e2e.js1212 phone: '555-0200',
LOWpackages/firestore/e2e/Pipeline.e2e.js1390 iosData.fullName.should.equal('John Doe');
LOWpackages/firestore/e2e/Pipeline.e2e.js1405 data.fullName.should.equal('John Doe');
LOWpackages/auth/__tests__/auth.test.ts995 const profile = { displayName: 'John Doe', photoURL: 'https://example.com/photo.jpg' };
LOWpackages/auth/lib/index.d.ts80 * const authCredential = provider.credential('foo@bar.com', '123456');
LOWpackages/auth/e2e/phone.e2e.js1// const TEST_EMAIL = 'test@test.com';
LOWpackages/auth/e2e/user.e2e.js1const TEST_EMAIL = 'test@test.com';
LOWpackages/analytics/lib/modular.ts932 * @param {string} emailAddress - Email address, properly formatted complete with domain name e.g, 'user@example.com'.
LOWpackages/analytics/lib/modular.ts954 * @param hashedEmailAddress sha256-hashed of normalized email address, properly formatted complete with domain name e.g
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippet
MEDIUMpackages/app/ios_config.sh23# This file is installed as an Xcode build script in the project file
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippet
LOWscripts/update-firebase-sdk-versions.sh9# Usage:
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippet
LOW…ive/java/io/invertase/firebase/common/SharedUtils.java116 * We need to check if app is in foreground otherwise the app will crash.