Firebase JavaScript SDK Release Notes

To review release notes for the Firebase console and for other Firebase platforms and related SDKs, refer to the Firebase Release Notes.

Version 12.2.1 - August 28, 2025

AI Logic

  • Fixed an issue that caused TypeScript compilation errors.

Version 12.2.0 - August 28, 2025

AI Logic

  • Add support for the Gemini Live API.

  • Add thoughtSummary() convenience method to EnhancedGenerateContentResponse.

  • Add support for limited-use tokens with Firebase App Check. These limited-use tokens are required for an upcoming optional feature called replay protection. We recommend enabling the usage of limited-use tokens now so that when replay protection becomes available, you can enable it sooner because more of your users will be on versions of your app that send limited-use tokens.

  • Fixed an issue where AIError messages were too long after including an entire response body.

  • Added 'includeSafetyAttributes' field to Predict request payloads.

  • Excluded ChromeAdapterImpl code from Node entry point.

Cloud Firestore

  • Fixed a bug where a rejected promise with an empty message in a transaction would cause a timeout. See GitHub Issue #9147.

Cloud Functions for Firebase Client SDK

  • Fixed an issue which caused a CORS error in Firebase Studio when connected to emulators.

Version 12.1.0 - August 7, 2025

AI Logic

  • Added hybrid inference options to AI Logic. This provides options to perform inference tasks using the Prompt API in browsers that have the Prompt API enabled.

Performance Monitoring

  • Fixed errors thrown when capturing long target element names for out-of-the-box metrics. See GitHub Issue #9136.

Version 12.0.0 - July 17, 2025

  • Updated Node.js "engines" version to require a minimum of Node 20.

  • Updated the SDK to use ES2020. Developers whose apps are not using ES2020 or higher may need to update their tooling or configuration.

  • Removed the firebase/vertexai import alias. All the functionality is still available under the new name: firebase/ai, although some methods may be renamed (see AI Logic notes below).

AI Logic

  • Removed methods and symbols with the VertexAI name in them such as getVertexAI or VertexAIError. These were deprecated in 11.8.0 and were just wrappers on the newly introduced methods with the AI name, such as getAI or AIError.

  • Added support for Grounding with Google Search.

  • Added support for the Thinking Budget feature.

  • Added support for anyOf schemas.

  • Converted each enum export to a combination of a const map and a string literal type. This makes the constants available to non-TypeScript users and allows tree-shaking of unused variables.

  • Removed GroundingAttribution, which had previously been deprecated.

  • Fixed typings for functionDeclaration.parameters to prevent the use of optionalProperties when using an object literal.

Cloud Firestore

  • Reverted a fix for an issue where Cloud Firestore would send undefined for a document snapshot if the "clear site data" button was pressed in the web browser. This fix was introduced in v11.6.1 but inadvertently caused IndexedDB issues for some customers. See GitHub Issue #9165.

  • Further improved performance of UTF-8 string ordering logic, which had degraded in v11.3.0, was reverted in v11.3.1, and was reintroduced with some improvements in v11.5.0.

  • Fixed a regression where the SDK did not re-connect to IndexedDb after a disconnect.

Version 11.10.0 - June 26, 2025

  • Added React Native entry point.

AI Logic

  • Added deprecation label to totalBillableCharacters. totalTokens should be used instead.

Cloud Firestore

  • Added support for Firestore result types to be serialized with toJSON and then deserialized with fromJSON methods on the objects.
  • Added support to resume onSnapshot listeners in the CSR phase based on serialized DataSnapshots and QuerySnapshots built in the SSR phase.
  • Internal listener registration change for IndexedDB versionchange events.

Cloud Storage

  • Fixed CORS error that occurred in Firebase Studio.

Version 11.9.1 - June 10, 2025

Authentication

  • Fixed a Firebase Studio issue where Firebase Auth cookie refresh attempts issued in Firebase Studio resulted in CORS errors.

Cloud Storage

  • Fixed a Firebase Studio issue that didn't properly populate cookies for Storage users.

Version 11.9.0 - June 5, 2025

AI Logic

  • Added title, maximum, minimum, maxItems, minItems, and propertyOrdering to Schema.
  • Added HarmBlockThreshold.OFF support.

Cloud Firestore

  • Clean up leaked WebChannel instances when the Firestore instance is terminated.

Version 11.8.0 - May 20, 2025

  • The FirebaseApp setting automaticDataCollectionEnabled now defaults to true. This setting was previously only used by App Check and won't change the default behavior in App Check.

Cloud Firestore

  • Fixed a cache issue in Safari/WebKit that occurs when client-side indexing is used.

AI Logic

  • Initial release of the Firebase AI Logic SDK (@firebase/ai). This SDK replaces the previous Vertex AI in Firebase SDK (@firebase/vertexai) to accommodate the evolving set of supported features and services. The new Firebase AI Logic SDK provides preview support for the Gemini Developer API, including its free tier offering. Using the Firebase AI Logic SDK with the Vertex AI Gemini API is still generally available (GA).

    To start using the new SDK, use the getAI() instance getter imported from ’firebase/ai’. See details in the migration guide.

  • Added support for Gemini multimodal output.

  • Fixed an issue where GenerationConfig was not inherited from ChatSession.

Version 11.7.1 - May 7, 2025

  • Rolled back the change in 11.7.0 that set the value of automaticDataCollectionEnabled to true. Due to a backend setting not being ready yet, this will cause errors in Vertex AI in Firebase requests. This change will be restored when the backend is ready.

Version 11.7.0 - May 7, 2025

  • The FirebaseApp setting automaticDataCollectionEnabled now defaults to true. This setting was previously only used by App Check and won't change the default behavior in App Check.

Version 11.6.1 - April 24, 2025

Authentication

  • Fixed an issue where ActionCodeURL was not populating languageCode from the URL. Fixes GitHub Issue #8912.

Data Connect

  • Resolved a 'cannot extend private constructor' build error that occurred when using the DataConnectError and DataConnectOperationError types. See GitHub PR #8898.

Cloud Firestore

  • Fixed the null value handling in != and not-in filters. See GitHub PR #8915.
  • Fixed 'window is not defined' error when calling clearIndexedDbPersistence from a service worker. Fixes GitHub Issue #6465.
  • Fixed an issue where Firestore would produce undefined for document snapshot data if using IndexedDB persistence and "clear site data" (or equivalent) was selected in the web browser. Fixes GitHub Issue #8953.
  • Added unique IDs and state information into fatal error messages instead of the generic "unexpected state" message.

Version 11.6.0 - March 31, 2025

Authentication

  • Added Persistence.COOKIE, a new persistence method backed by cookies. The browserCookiePersistence implementation is designed to be used in conjunction with middleware that ensures both your front and backend authentication state remain synchronized.

Data Connect

  • Exposed partial errors to the user.

Vertex AI in Firebase

  • The SDK now throws an error when initializing models if appId is not defined in the given Vertex AI in Firebase instance.

  • Labeled GroundingAttribution as deprecated.

Version 11.5.0 - March 20, 2025

App Check

  • The getToken() method now throws internalError strings that were previously internally suppressed. Fixes GitHub issue #8822.

Cloud Firestore

Data Connect

  • Updated requests to point to the v1 backend endpoints instead of v1beta.

Performance Monitoring

Realtime Database

  • Added non-null parent properties to ThenableReference.

Vertex AI in Firebase

  • Added missing BlockReason and FinishReason enum values.

  • systemInstruction, tools, and generationConfig have been added to CountTokensRequest.

Version 11.4.0 - February 27, 2025

  • Added support for the FIREBASE_WEBAPP_CONFIG environment variable at install time. This feature supports auto-initialization for SSR apps using Firebase App Hosting.

Authentication

  • Invoking connectAuthEmulator multiple times with the same parameters will no longer cause an error. Fixes GitHub issue #6824.

App Check

  • Fixed a bug that caused an error to be thrown when the debug exchange request failed.

Realtime Database

  • Invoking connectDatabaseEmulator multiple times with the same parameters will no longer cause an error. Fixes GitHub issue #6824.

Vertex AI in Firebase

  • Public Preview: Added support for generating images using the Imagen 3 models.

  • Added support for modality-based token count.

  • The SDK now filters out empty text parts from streaming responses. Fixes GitHub issue #8714.

  • Created a separate entry point bundle for Node.js. This bundle can be automatically detected by any developer tooling configured to prefer Node.js fields in package.json, such as main or exports.node.

Remote Config

  • Added support for initial state hydration from SSR contexts.

Version 11.3.1 - February 11, 2025

Cloud Firestore

  • Reverted a change to use UTF-8 encoding in string comparisons because it caused a performance issue. Fixes GitHub issue #8778.

Version 11.3.0 - February 6, 2025

  • Added an appCheckToken parameter to FirebaseServerAppSettings. FirebaseServerApp will use the token when making service requests, unblocking the use of App Check enforced products in SSR environments.

Authentication

  • Added ActionCodeSettings.linkDomain to customize the Firebase Hosting link domain that is used in mobile out-of-band email action flows. Also, deprecated ActionCodeSettings.dynamicLinkDomain.

Performance Monitoring

  • Collect web vital metrics (INP,CLS,LCP) as part of page load event.

Realtime Database

  • Fixed a potential negative offset when calculating last reconnect times. This could cause lengthy reconnect delays in some scenarios. Fixes GitHub Issue #8718.

Cloud Firestore

  • Fixed an issue where the SDK's string sorting differed from the server's (UTF-8 byte order) for document fields and map/document keys, resolving a mismatch caused by special characters.

Version 11.2.0 - January 16, 2025

Data Connect

  • Usage of PromiseLike has been replaced with Promise.

Remote Config

  • Added support for custom signal targeting. Use the setCustomSignals API and to set custom signals that can be targeted using the new custom signal condition type in the Remote Config console.

Version 11.1.0 - December 12, 2024

Cloud Functions for Firebase Client SDK

  • Added .stream() API for callable functions to consume stream responses.

Data Connect

  • Fixed issue where multiple calls to connectDataConnectEmulator caused an exception.

Cloud Messaging

  • Fixed an issue where PushManager.subscribe() is called too soon after registering the default service worker. Fixes GitHub Issue #7784.

Vertex AI in Firebase

  • Clear fetch timeout after request completion. Fixes an issue that caused Node.js scripts to hang on exit due to a pending timeout.

Version 11.0.2 - November 14, 2024

  • Upgraded to TypeScript 5.5.4.

Cloud Firestore

  • Prevent a possible condition of slow snapshots, caused by a rapid series of document update(s) followed by a delete. Fixes GitHub Issue #8474.

Vertex AI in Firebase

  • Update to new base URL in documentation.
  • Remove indentation in API Not Enabled error.
  • Send App Check dummy token in header if there is an App Check getToken error.

Version 11.0.1 - October 22, 2024

Realtime Database

  • Bumped @firebase/database-compat by a major version to ensure downstream libraries like firebase-admin don't automatically pick up the Node.js engines update in package.json.

Version 11.0.0 - October 21, 2024

  • Vertex AI in Firebase is now Generally Available (GA) and can be used in production apps.

    Use the Vertex AI in Firebase SDK to call the Vertex AI Gemini API directly from your app. This client SDK is built specifically for use with Web apps, offering security options against unauthorized clients as well as integrations with other Firebase services.

  • The SDK no longer supports versions of Node.js below version 18. engines fields in all package.json files have been updated to reflect this.

  • Removed ES5 bundles. The minimum required ES version is now ES2017.

  • Removed usage of undici and node-fetch dependencies in our Node.js bundles, replacing them with the native Node.js fetch implementation.

Authentication

  • Added ReCAPTCHA Enterprise support for app verification during phone authentication.

Cloud Functions for Firebase Client SDK

  • The FunctionsError class is now publicly exported.

Cloud Firestore

  • Memory LRU GC is now enabled by default.

Version 10.14.1 - October 10, 2024

Cloud Messaging

  • Fixed a logging issue where Web Push data was missing in BigQuery logs.

Version 10.14.0 - September 30, 2024

Data Connect

  • Added the Data Connect package to the SDK.

  • Added App Check support.

Cloud Firestore

  • Re-enabled useFetchStreams with the latest WebChannel implementation. This reduces the memory usage of WebChannel.

  • Refactored Cloud Firestore client instantiation. This prepares for future releases that require the client to restart.

Version 10.13.2 - September 18, 2024

Authentication

  • Suppress the use of the parameter referrerPolicy within fetch requests originating from Cloudflare Workers. Cloudflare Worker environments do not support this parameter and all Auth operations would silently fail. Fixes GitHub Issue #8355.

Cloud Firestore

  • Fix an issue with metadata fromCache defaulting to true when listening to cache in multiple browser tabs. See GitHub PR #8343.

Version 10.13.1 - August 29, 2024

Cloud Functions for Firebase Client SDK

Version 10.13 - August 15, 2024

Cloud Firestore

  • Add support for reading and writing Firestore vectors. See GitHub PR #8215.

Authentication

  • Remove localStorage synchronization on storage events in Safari iframes. See GitHub PR #8408.

Cloud Storage

Version 10.12.5 - August 1, 2024

  • Reverted the change that added the safevalues library, as it is not compatible with ES5 bundles. We will return to using safevalues when we migrate all our builds away from ES5.

  • Properly handle the case in app-compat checks where window exists but self does not. (This occurs in Ionic Stencil's Jest preset, for example.)

  • Fixed typos in documentation and some internal variables and parameters.

Version 10.12.4 - July 18, 2024

  • The SDK now uses the safevalues library to sanitize HTML vulnerable to XSS.

Version 10.12.3 - July 3, 2024

  • Updated browser environment detection logic in firebase/util to allow for the experimental use of FirebaseServerApp instances in edge runtimes. See GitHub Issue #8299.
  • Guard the use of FinalizationRegistry in FirebaseServerApp initialization based on the availability of FinalizationRegistry in the JavaScript runtime. See GitHub Issue #8299.
  • The FirebaseServerAppSettings.name field inherited from FirebaseAppSettings is now omitted instead of overloading the value as undefined. This fixes a TypeScript compilation error. For more information, see GitHub Issue #8336.

Cloud Firestore

  • Fixed a metadata sync issue with multi-tab persistence and snapshot listeners. See GitHub Issue #8314.
  • Fixed a typo in the package.json of webchannel-wrapper that caused bloom-blob to be missing the esm5 specifier. See GitHub Issue #8319.

Firebase AI Logic

Version 10.12.2 - May 27, 2024

Authentication

  • Changed types paths to point to rolled-up public d.ts files. This fixes TypeScript compilation errors in the web extension and cordova bundles. See GitHub Issue #8222.

Firebase AI Logic

  • Changed types paths to point to point to rolled-up public d.ts files. This fixes some TypeScript compiler errors. See GitHub PR #8256

Version 10.12.1 - May 20, 2024

Analytics

  • Fixed a bug where setConsent was incorrectly passing consent parameters to gtag(). See GitHub Issue #8210.

Cloud Firestore

  • Fixed a multi-tab persistence issue that caused empty snapshots.

Version 10.12.0 - May 13, 2024

Firebase AI Logic

  • Initial release of the Vertex AI for Firebase SDK (public preview). Learn how to get started with the SDK in your app.

Cloud Firestore

  • Updated @firebase/webchannel-wrapper to consume Closure dependencies from the closure-net GitHub repo.

  • Fixed multi-byte character decoding bug by updating webchannel-wrapper dependency.

Version 10.11.1 - April 25, 2024

Authentication

  • The SDK now emits a module package file with esm2017 browser extension builds. See GitHub Issue #8115.
  • Update jszip transient dependency from 3.7.1 to 3.10.1.

Cloud Firestore

  • Prevent spurious "Backend didn't respond within 10 seconds" errors when network is in fact responding, but slowly. See GitHub PR #8145.
  • Update protobufjs transitive dependency from 6.11.3 to 7.2.6.
  • Return to using xmlhttprequest for bidi-streams, as fetch streams seem to be having connection issues.
  • Reduce code bundle size by 6.5 kB in applications that only use memory persistence (the default persistence mode). This bundle size regression was accidentally introduced in version 10.7.2.

Version 10.11.0 - April 11, 2024

  • FirebaseServerApp is no longer JSON serializable.
  • Upgraded undici version to 5.28.4 due to the low severity security issue CVE-2024-30260.
  • Updated dependencies in Auth, Firestore, Storage and App. See GitHub PR #8098.

Cloud Firestore

  • Fixed an issue where client side indexing on timestamp fields leads to incorrect query results. See GitHub issue #8031.

Cloud Messaging

  • Revised token update logic to prevent unnecessary token deletions during transient network issues. See GitHub PR #8141.

Version 10.10.0 - March 28, 2024

  • Added the new FirebaseServerApp interface to bridge state data between client and server runtime environments. This interface extends FirebaseApp.

Authentication

  • Updated transitive dependencies based on generated dependabot security reports. See GitHub PR #8088.
  • Additional protection against misuse of the authTokenSyncURL experiment. See GitHub PR #8076.

Version 10.9.0 - March 14, 2024

Authentication

  • Fixed a potential XSS vulnerability through FIREBASE_DEFAULTS settings. See PR #8056 for more information.

Cloud Firestore

  • Added the ListenSource enum to SnapshotListenOptions to provide an option to retrieve data from local cache only.

Version 10.8.1 - February 28, 2024

  • Upgrade undici version to 5.28.3 due to the low severity security issue CVE-2024-24758.

Version 10.8.0 - February 1, 2024

  • Fixed to catch transaction.done errors in readHeartbeatsFromIndexedDB and log them as a warning, because platform logging errors should never block user app functionality.

Authentication

  • Added a firebase/auth/web-extension entry point for web extension developers. This entry point does not include any code that loads remote scripts, which are disallowed under Manifest V3. In extensions, this entry point should replace firebase/auth completely, and developers should not try to use both in the same app. See GitHub issue #7617.

Analytics

  • Added two new consent options to the ConsentSettings interface: ad_personalization and ad_user_data.

Realtime Database

  • Fixed issue where queryConstraint.type was undefined.

Cloud Firestore

Version 10.7.2 - January 18, 2024

  • Catch and warn IndexedDB createObjectStore errors in Safari-based browsers. See GitHub issue #7829.

Cloud Firestore

  • Update the isEqual function for arrayUnion, arrayRemove and increment. See GitHub issue #7706.
  • Fixed leak of grpc-js resources on terminate. See GitHub issue #7747.
  • Adjusted the automatic index creation parameters to use more optimal values for the platform/browser detected at runtime.
  • Support special characters in query paths sent to getCountFromServer(...), getCount(...) (lite API), and getDocs(...) (lite API).

Version 10.7.1 - December 5, 2023

App Check

  • Prevent App Check from logging "uncaught" cancelled promises. The cancelled promises are part of App Check's expected behavior, and their cancellation wasn't intended to produce errors or warnings. See GitHub issue #7805.

Authentication

  • Added protections when enumerating an empty list in Auth's reading of IndexedDB results, as this causes errors in some macOS and iOS browser runtimes. See GitHub issue #7825.

Version 10.7.0 - November 27, 2023

  • Replaced node-fetch dependency with the latest version of undici in Node.js SDK builds for Auth, Firestore, Cloud Functions, and Storage. See GitHub issue #7280.
  • Introduced more safeguards to ensure that heartbeat objects queried from IndexedDB include a heartbeats field.

Authentication

  • Exposed INVALID_LOGIN_CREDENTIALS as auth/invalid-credential error and updated docs for various Auth SDK methods.

Cloud Firestore

  • Introduced fixes for high memory usage of Firestore in browsers. See GitHub issue #6118.

Version 10.6.0 - November 9, 2023

  • Provide a more robust check to cover more cases of empty heartbeat data.

Authentication

  • Add Sign in with Apple token revocation support.

Cloud Firestore

Version 10.5.2 - October 26, 2023

Authentication

  • Added the TotpMultiFactorGenerator and TotpSecret exports that were missing from the React Native entry point.

Cloud Firestore

  • Rolled back the use of useFetchStreams, which had led to hanging queries. This bug was introduced in 10.4.0.

Version 10.5.1 - October 26, 2023

Authentication

Cloud Firestore

  • Clarified API documentation around getFirestore() and initializeFirestore() functions.

Version 10.5.0 - October 12, 2023

Cloud Firestore

  • Added support for sum and average aggregations.

  • Added a default template type parameter to withConverter() methods to allow backward compatibility with version 9 of the SDK.

Version 10.4.0 - September 14, 2023

Cloud Firestore

  • Added enablePersistentCacheIndexAutoCreation() function to enable automatic creation of local cache query indexes, which can improve performance of local query execution.

  • Fixed an issue where Cloud Firestore was incorrectly using XHR instead of fetch for streaming response.

  • Updated dependency grpc-js from version ~1.8.17 to ~1.9.0.

Version 10.3.1 - August 31, 2023

Cloud Firestore

  • An internal refactor related to client-side index creation.

Version 10.3.0 - August 22, 2023

Authentication

  • Fixed a regression in version 10.0.0 caused by adding a hard dependency on @react-native-async-storage/async-storage as a convenience for React Native developers. This caused unnecessary warnings during npm or Yarn install for non-React Native users, and in some cases, React version conflicts.

    10.3.0 will break React Native users who have converted to using getAuth() to initialize Authentication. React Native users who want persistent auth state must now explicitly import @react-native-async-storage/async-storage and provide it to initializeAuth() as an option like so:

    import { initializeAuth, getReactNativePersistence } from 'firebase/auth';
    import ReactNativeAsyncStorage from '@react-native-async-storage/async-storage';
    const auth = initializeAuth(app, {
      persistence: getReactNativePersistence(ReactNativeAsyncStorage)
    });
    // getAuth() can be used any time after initialization
    

    See Github issue #7522.

Cloud Firestore

Version 10.2.0 - August 17, 2023

Authentication

  • Added a validatePassword method for validating passwords against the password policy configured for the project or a tenant. This method returns a status object that can be used to display the requirements of the password policy and whether each one was met.

  • Fixed a bug in the onAuthStateChanged canceller. See Github issue #7383.

  • The SDK now raises an error if initializeRecaptchaConfig is called in a Node.js environment.

Cloud Firestore

  • Updated @grpc/proto-loader from v0.6.13 to v0.7.8. This addresses a vulnerability in an older version of the transitive dependency protobufjs.

Version 10.1.0 - July 20, 2023

Authentication

  • Implemented authStateReady(), which returns a promise that resolves immediately when the initial auth state is settled and currentUser is available. When the promise is resolved, currentUser might be a valid user or null if there is no user signed in currently.

  • Unpinned the version of the dependency @react-native-async-storage/async-storage so that React Native users have more control over which version of it they use. See Github issue #7448.

Cloud Firestore

  • Updated the grpc dependency to the latest version. See Github PR #7452.

  • Fixed issue where count and firestore-lite API queries did not work with named databases. See Github PR #7440.

Version 10.0.0 - July 6, 2023

The Firebase JavaScript SDK v10.0.0 has a number of breaking changes related to the React Native bundle for Authentication, as well as typings changes across several products.

Authentication

  • Removed explicit firebase/auth/react-native entry point. The React Native bundle should be automatically picked up by React Native build tools which recognize the react-native fields in package.json (at the top level and in exports). See Github PR #7138.

  • Changed getAuth() in the React Native bundle to default to importing AsyncStorage from @react-native-async-storage/async-storage instead of from the react-native core package (which has recently removed it). See Github PR #7128.

  • Changed the type of ParsedToken values from any to unknown.

  • Reordered RecaptchaVerifier parameters so auth is the first parameter.

Realtime Database

  • Updated type of action parameter for DataSnapshot#forEach.

Cloud Firestore

  • Fixed updateDoc() typing issue by adding a second type parameter to FirestoreDataConverter. See Github PR #7310.

  • Changed UpdateData to expand support for types with index signatures. See Github PR #7318.

  • Fixed an issue where localCache was not copied as part of Settings.

  • Fixed some incorrectly generated source maps for the following bundles: index.esm2017.js, index.cjs.js, index.node.mjs, and index.browser.esm2017.js (lite SDK only).

Version 9.23.0 - June 21, 2023

Cloud Firestore

Version 9.22.2 - June 8, 2023

  • Fixed the types path for compat/app to deliver the proper typings to the compat packages. See Github issue #7279.

Cloud Firestore

  • Fix potentially false warning message when configuring host in both settings() and connectFirestoreEmulator(). See Github issue #7331.

Version 9.22.1 - May 25, 2023

App Check

  • Added support for App Check replay protection in callable functions. See Github PR #7296.

Cloud Firestore

  • Updated dependencies to enable setting experimentalLongPollingOptions.timeoutSeconds. See Github PR #7311.

Version 9.22.0 - May 12, 2023

  • Made the error more helpful when getApp() is called before initializeApp(). See Github PR #7263.

  • Improved error handling for heartbeat read/write errors. See Github issue #6871.

Authentication

Cloud Firestore

  • Enabled long-polling networking mode auto detection by default. It can be explicitly disabled by setting FirestoreSettings.experimentalForceLongPolling to false. See Github PR #7236.

  • Added the ability to configure the long-polling GET request timeout using the new experimentalLongPollingOptions.timeoutSeconds setting. See Github PR #7176.

Version 9.21.0 - April 27, 2023

Analytics

  • Added method getGoogleAnalyticsClientId() to retrieve an unique identifier for a web client. This allows users to log purchase and other events from their backends using Google Analytics 4 Measurement Protocol and to connect them to actions taken on the client within their Firebase web app. getGoogleAnalyticsClientId() simplifies this event recording process. See Github PR #7158.

App Check

Cloud Firestore

  • Created MemoryLruGarbageCollector a new LRU garbage document collector for memory cache. See Github PR #6943.

  • Optimized the local cache synchronization logic to reduce the number of billed document reads when documents were deleted on the server while the client was not actively listening to the query (e.g. while the client was offline). See Github PR #7229.

  • Fixed stack overflow caused by deeply nested server timestamps. See Github PR #7139.

  • Simplified the internal handling of aggregation results. See Github PR #7170.

  • Updated exports of webchannel-wrapper (a Firestore dependency) to conform to Node ESM standards. See Github PR #7228.

Authentication

  • Increased the popup poller timeout to 8s to support blocking functions for Firefox. See Github PR #7140.

Version 9.20.0 - April 18, 2023

App Check

  • Fixed ReCAPTCHA error handling so that the SDK now catches all ReCAPTCHA errors and then prevents the SDK from making a request to the App Check exchange endpoint, which prevents unnecessary 403 errors and throttling. See Github PR #7203.

Authentication

  • Added App Check support in Authentication.

  • Added ReCAPTCHA Enterprise support.

Cloud Firestore

  • Fixed a bug that sometimes prevented aggregations from being run when multi-tab persistence was enabled.

Version 9.19.1 - March 31, 2023

Authentication

  • Fixed typings for TotpMultiFactorGenerator. This fixes a reversion in 9.19.0. See Github issue #7174.

Version 9.19.0 - March 30, 2023

Authentication

  • Support TOTP as a multi-factor option in Firebase Auth/GCIP. See Github PR #7146.

  • Modify _fail(...) to use AuthErrorCode.NETWORK_REQUEST_FAILED and accept an error message. See Github PR #7125.

Analytics

  • Use the Trusted Types API when composing the gtag URL. See Github PR #7155.

Cloud Firestore

  • Introduced additional configurations for Firestore SDK Cache. See Github PR #7015.

  • Verify DOMException exists before referencing it. See Github PR #7130.

Version 9.18.0 - March 16, 2023

Authentication

  • Fixed a bug where updateCurrentUser set user metadata to undefined. See Github issue #7066.

Cloud Firestore

  • Added support for disjunctions in OR queries. See Github PR #7053.

  • Improved debug logging of GrpcConnection and WebChannelConnection. See Github PR #7076.

  • Updated check for an IndexedDB bug in Safari to include navigator.userAgent when determining whether to trigger a workaround. This is helpful for Cordova apps that lack appVersion in their webview but need to apply the workaround. See Github issue #6509.

Version 9.17.2 - March 2, 2023

Authentication

  • Modified _fail(...) to use AuthErrorCode.INTERNAL_ERROR and accept an error message. See Github PR #7038.

Realtime Database

  • Fixed issue where Vite with Astro could not resolve the correct output bundle. See Github PR #7055.

Cloud Firestore

  • Relaxed query validation performed by the SDK. See Github PR #7024.

  • Refactored platform-specific logic to create TextEncoder and TextDecoder objects. See Github PR #7018.

  • Modified all base64 decoding functions to explicitly throw an error on invalid input, as some previous implementations silently accepted invalid input. See Github PR #7019.

  • Refactored the aggregation implementation to support future aggregate functions. See Github PR #6952.

  • Implemented closed property in the reader returned from toByteStreamReaderHelper which previously only raised an unimplemented error. See Github PR #7058.

Version 9.17.1 - February 3, 2023

  • Moved exports.default fields to always be the last field. This fixes a bug introduced in 9.17.0 that prevented some bundlers and frameworks from building. For these build failures, the error text is: "Default condition should be last one".

Version 9.17.0 - February 2, 2023

  • Added browser CJS entry points (expected by Jest when using JSDOM mode). See Github PR #6981.

Authentication

  • Exposed TOKEN_EXPIRED error when multi-factor authentication (MFA) unenroll logs out the user. See Github PR #6973.

Realtime Database

  • Fixed issue where hostname set by connectDatabaseEmulator was being overridden by longpolling response. See Github issue #4603.

Cloud Firestore

  • Reduced memory usage by applying query check sooner in remote document cache. See Github PR #6989.

Cloud Storage

  • Fixed issue where users were unable to check if an error was an instance of StorageError. See Github issue #6944.

Version 9.16.0 - January 19, 2023

  • Allow users to specify their environment as node or browser to override Firebase's runtime environment detection and force the SDK to act as if it were in the respective environment.

    Example:

    export __FIREBASE_DEFAULTS__='{"forceEnvironment":"browser"}'
    
  • Reformat a comment that causes compile errors in some build toolchains. See Github issue #6838.

  • Removed unused peerDependencies in @firebase/auth-interop-types. This should remove installation warnings for firebase-admin users. See Github PR #6940.

Authentication

  • Added a fix to minimize a potential race condition between initialization of the Authentication SDK and signInWithRedirect. See Github issue #6827.

Realtime Database

  • Fixed an issue where connectDatabaseToEmulator was sometimes called twice during a hot reload See Github issue #6853.

Cloud Firestore

  • Updated internal logic behind AND and OR queries to ensure consistency with older implicit AND queries. See Github PR #6896.

  • Fixed an issue that stops some performance optimization being applied. See Github PR #6893.

Cloud Storage

  • Fixed an issue where pause throws an error when a request is in flight. See Github issue #6935.

Version 9.15.0 - December 8, 2022

  • Upgraded TypeScript in each individual package to 4.7.4. The earlier update in version 9.13.0 upgraded TypeScript only in the root.

  • Fixed a bug that caused Firebase SDKs to throw an error in Firefox browsers when third-party cookies are blocked. See Github issue #6801.

  • Updated firebase/[product] entry point bundles to conform to Node.js ES module specifications.

Realtime Database

  • Added support for startAfter and endBefore query params to the REST API and wire protocol. This change does not affect the existing public API. See Github PR #6706.

Cloud Firestore

  • Functions in the Firestore package that return QueryConstraints (for example: where(...), limit(...), and orderBy(...)) now return a more specific type, which extends QueryConstraint. See Github PR #6694.

Version 9.14.0 - November 10, 2022

Cloud Messaging

App Check

  • Corrected the clearing of the App Check exchange promise after a request succeeds. See Github issue #6734.

Cloud Firestore

  • Updated "missing index" error message to include the link to create the composite index. See Github issue #6613.

  • Updated transaction.set() failure to now retry on already-exists error. See Github PR #6729.

Performance Monitoring

  • Expanded check in getServiceWorkerStatus to account for a navigator that has a key of serviceWorker with a falsy value. See Github PR #6723.

Version 9.13.0 - October 27, 2022

Cloud Messaging

Cloud Storage

  • Fixed issue where clients using Node.js v18 would use the native Blob object, which is incompatible with node-fetch. See Github PR #6705.

Version 9.12.1 - October 12, 2022

  • Added error catching for when the SDK checks __FIREBASE_DEFAULTS__ in order to not block other app functionality on error. See Github issue #6677.

Analytics

Cloud Storage

  • Cleared retry timeouts when uploads are paused/canceled. See Github PR #6667.

Version 9.12.0 - October 11, 2022

  • Removed __FIREBASE_DEFAULTS_PATH__ option, as the current implementation caused Webpack warnings. Fixed process.env check to be compatible with environments where process exists but process.env does not. See Github issue #6660.

  • Fixed IPv6 addresses in emulator autoinit for Cloud Firestore, Realtime Database, Cloud Functions for Firebase Client SDK, and Cloud Storage. See Github issue #6673.

Cloud Firestore

  • Set withCredentials=true when making requests via non-streaming RPCs, as is done for streaming RPCs. See Github PR #6643.

  • Fixed Firestore failing to raise initial snapshot from empty local cache result. See Github issue #5873.

Analytics

  • Updated Analytics to allow for multiple instances of gtag with different data layer names. See Github PR #6655.

Realtime Database

  • Fixed endBefore and push documentation typos in Realtime Database documentation. See Github PR #6583.

Cloud Storage

  • Fixed bug where upload status wasn't being checked after an upload failure. Implemented exponential backoff and max retry strategy. See Github PR #6653.

Version 9.11.0 - October 06, 2022

  • Added functionality to auto-initialize project config and emulator settings from global defaults. This allows the SDK to work with the upcoming framework-aware Firebase tools (currently an experimental release).

App Check

  • Fixed timer issues in the App Check SDK that caused the token to fail to refresh after it had expired, or had caused rapid repeated requests while attempting to do so. See Github issue #6373.

Cloud Firestore

  • Added getCountFromServer() (getCount() in the Lite SDK), which fetches the number of documents in the result set without actually downloading the documents.

  • Fixed a time travel issue across multiple tabs. See Github issue #6511.

Version 9.10.0 - September 15, 2022

Authentication

  • Updated custom claim type of ParsedToken to be any. This more accurately reflects that a JWT may contain any valid JSON object. See Github issue #6553.

Cloud Firestore

  • Enabled encodeInitMessageHeaders to transition the Firestore client from encoding HTTP Headers via the httpHeadersOverwriteParam to the request's POST payload. Note, this requires Cloud Firestore Emulator v1.14.4 or newer. See Github PR #6107.

Version 9.9.4 - September 1, 2022

Authentication

  • Fixed proactive refresh logic in Authentication when Realtime Database, Cloud Firestore, or Cloud Storage are in use. See Github PR #6544.

Realtime Database

Cloud Firestore

  • Fixed a bug that threw a FAILED_PRECONDITION error when writing to a deleted document in a transaction. See Github issue #6550.

Version 9.9.3 - August 18, 2022

Realtime Database

  • Fixed issue where get() would return incorrect results when using a filtered get() and an onValue() event listener on the same path. See Github PR #6497.

  • Fixed faulty transaction issue causing filtered index queries to override default queries. See Github PR #6508.

  • Reverted the type of action parameter for DataSnapshot.forEach(). See Github issue #6368.

Version 9.9.2 - August 04, 2022

  • Prevent the SDK from throwing errors if it is unable to log platform data due to an IndexedDB error. It will log a warning instead. See Github PR #6480.

Realtime Database

  • Updated the type of the action parameter for DataSnapshot.forEach(). See Github issue #6368.

Cloud Firestore

  • Introduce client-side indexing with beta API setIndexConfiguration(). See Github PR #6496.

Version 9.9.1 - July 22, 2022

App Check

  • Fixed throttling for App Check to prevent unnecessary requests to the backend. See Github issue #6373.

Cloud Firestore

  • Updated @grpc/proto-loader dependency to address protobufjs security issue. See Github issue #6438.

Testing SDK

  • Updated firebase-admin and firebase-functions dependencies to address protobufjs security issue.

Version 9.9.0 - July 07, 2022

  • Added the missing CDN build and entry point for Firebase installations.

Analytics

  • Added function setConsent() to set the applicable end user "consent" state.

  • Added function setDefaultEventParameters() to set data that is logged on every Analytics event.

Authentication

  • Fixed a bug that caused ReCAPTCHA conflicts between Authentication and App Check when using ReCAPTCHA Enterprise in App Check. See Github issue #6133.

  • Updated user agent detection to better detect iPad. This fixes a bug affecting some iPad devices running Cordova apps. See Github issue #6331.

Realtime Database

  • Forced get() to wait to resolve until the SDK is connected to the Realtime Database backend. See Github issue #6036.

Cloud Firestore

Cloud Functions for Firebase Client SDK

Version 9.8.4 - June 23, 2022

Analytics

Realtime Database

  • Fixed issue where get() saved results incorrectly for non-default queries. See Github PR #6273.

Version 9.8.3 - June 09, 2022

Realtime Database

  • Removed @firebase/app-compat as a peerDependency of @firebase/database-compat, which should not impact JS SDK users, but will prevent firebase-admin users from seeing a warning during npm installation.

Cloud Messaging

  • Fixed a bug where the fcmOptions field was missing from onMessage() and onBackgroundMessage() payloads. See Github issue #6207.

Cloud Storage

  • Fixed the Node.js ESM bundle to build from the Node.js entry point (it was incorrectly using the browser entry point). See Github issue #6343.

Version 9.8.2 - May 27, 2022

Authentication

  • Added missing identities field to firebase claim in the typings for the ID token result. See Github issue #6218.

  • Updated the SDK to recognize Capacitor apps by detecting the capacitor: protocol. See Github issue #5020.

  • Fixed a bug where error.email and other fields were not populated in the Google Sign-In error flow if the user had been disabled using the Firebase Console.

Version 9.8.1 - May 09, 2022

Authentication

  • Fixed some typings issues that caused compile errors for TypeScript users. See Github issue #6246.

Version 9.8.0 - May 06, 2022

  • As of this version, Internet Explorer 11 is no longer officially supported by the Firebase JavaScript SDK.

  • Restored idb dependency and increased to the latest version, which supports ESM. This affects Analytics, App Check, Cloud Messaging, Performance Monitoring, and Remote Config. See Github issue #6154.

Authentication

  • Added a beforeAuthStateChanged() middleware function which allows you to provide callbacks that are run before an auth state change sets a new user.

Realtime Database

  • Added forceWebSockets() and forceLongPolling() methods.

Cloud Firestore

  • Added a TransactionOptions param to the runTransaction() method.

Version 9.7.0 - April 28, 2022

App Check

  • Updated App Check to use v1 exchange endpoint instead of v1beta endpoint for both reCAPTCHA v3 and reCAPTCHA Enterprise.

Cloud Functions for Firebase Client SDK

  • Added httpsCallableFromURL(), which calls a callable function using its URL.

Version 9.6.11 - April 14, 2022

  • Set default IndexedDB transaction mode to readonly for IE11 compatibility.

Realtime Database

  • Fixes an issue where if a websocket protocol was used in the databaseURL, the webSocketOnly field was incorrectly set to undefined. (When using wss or ws protocols in the databaseURL, webSocketOnly is true and long polling is disabled). See Github PR #6126.

  • Updated compat typings for Reference methods. See Github issue #6071.

Cloud Firestore

  • Fixes an issue during multi-document lookup that resulted in the IndexedDB error "The parameter is less than or equal to this cursor's". See Github issue #6110.

Version 9.6.10 - March 24, 2022

  • Removed unneeded typings from the internal package @firebase/util. These typings caused errors in some projects using both Node.js and TypeScript.

App Check

  • Fixed a bug where @firebase/app-check-types was not included as a dependency of @firebase/app-check-compat. This could potentially affect TypeScript compilation for users of the app-check-compat package.

Cloud Firestore

  • Changed the format of some of the IndexedDB data stored by the Cloud Firestore SDK. This increases the performance of document lookups after an initial migration. If you do not want to migrate data, you can call clearIndexedDbPersistence() before invoking enableIndexedDbPersistence().

Version 9.6.9 - March 17, 2022

  • Replaced idb dependency with in-house code to fix errors that occur when Node.js or SSR apps target ESM. This includes apps using Angular 13.1+. This fix affects Analytics, App Check, Cloud Messaging, Performance Monitoring, and Remote Config. See Github issue #6042.

Version 9.6.8 - March 4, 2022

Cloud Messaging

  • Fixed a bug in onBackgroundMessage() that caused notifications to display twice. See Github issue #5516.

Version 9.6.7 - February 17, 2022

Cloud Firestore

  • Fixed a bug that caused Cloud Firestore streams to get restarted with the same App Check token.

  • On browsers that support IndexedDB v3, we now invoke transaction.commit() and IndexedDB.getAll() to speed up data processing.

  • Cloud Firestore queries are now sent to the backend before the SDK starts local processing, which reduces overall Query latency.

Version 9.6.6 - February 3, 2022

Authentication

Cloud Firestore

  • Added to the version 9 upgrade guide important details about a potential breaking change in which the property DocumentSnapshot.exists has been changed from a property to a method. If your version 8-based app uses the exists property, you must refactor your code as part of the upgrade to version 9.

Cloud Messaging

  • Fixed an uncaught rejection in isSupported() when the environment does not support IndexedDB's open() method. See Github issue #5868.

Version 8.10.1 - January 28, 2022

  • Updated node-fetch dependency due to a security issue (CVE-2022-0235).

Version 9.6.5 - January 27, 2022

  • Updated node-fetch dependency due to a security issue (CVE-2022-0235).

Authentication

  • Fixed errors in auth-compat when cookies are fully disabled in Chrome. See Github issue #5913.

  • Added missing PhoneMultiFactorInfo public interface. See Github issue #5922.

  • The SDK no longer causes React Native to log a warning about deprecation of AsyncStorage if the developer has provided the non-deprecated version. See Github issue #1847.

Cloud Firestore

  • Fixed an App Check issue that caused Cloud Firestore listeners to stop working and receive a "Permission Denied" error. This issue only affected App Check developers that set their expiration time to under an hour. See Github issue #5842.

Version 9.6.4 - January 20, 2022

Authentication

  • Fixed the error code thrown when the network times out. See Github issue #5874.

  • Added ./cordova and ./react-native paths to the exports field in package.json. See Github issue #5878.

Cloud Messaging

  • Changed exports paths to always point to .cjs bundles when in a Node.js context, since the Cloud Messaging SDK is currently unable to provide ESM bundles for Node.js. See Github issue #5839.

Version 9.6.3 - January 13, 2022

Cloud Firestore

  • The Node.js SDK now bundles its internal .proto files into the code instead of reading them from the filesystem at runtime. This prevents errors like no such file or directory in certain types of deployments. See Github issue #5823.

Cloud Messaging

  • Fixed a bug where the fcmMessageId field in the message payload was incorrectly defined as fcm_message_id.

  • Add a CJS bundle for messaging/sw. This enables some SSR frameworks to run their Node.js pipelines without erroring. See Github issue #5854.

Version 9.6.2 - January 7, 2022

Authentication

  • Fix persistence selection in compatibility layer in worker scripts. See Github issue #5791.

Cloud Firestore

  • FirestoreError now extends FirebaseError. See Github issue #5754.

  • Fixed an issue that caused incomplete Query snapshots when the SDK is backgrounded during query execution.

Cloud Storage

Version 9.6.1 - December 9, 2021

Authentication

  • Fixed errors that occurred during initialization of the Authentication SDK when the network is unavailable. See Github issue #5720.

Cloud Firestore

  • Hardcoded the version of grpc-js sent to logs as a temporary fix for createRequire issues in the Node.js CJS bundle.

Version 9.6.0 - December 2, 2021

Cloud Firestore

  • Added support for App Check.

Version 9.5.0 - November 18, 2021

Cloud Storage

  • Added getBytes(), getStream() and getBlob(), which allow direct file downloads from the SDK. getStream() is only available for Node.js and getBlob() is only available for browser-like environments.

App Check

  • Reduced the latency of the first getToken() call by proactively retrieving a token when App Check is initialized.

  • App Check now throttles requests after some error codes to prevent overwhelming the endpoint.

Cloud Firestore

  • The SDK no longer accesses IndexedDB during a page unload event on Safari 15. This aims to reduce the occurrence of an IndexedDB bug in Safari (https://bugs.webkit.org/show_bug.cgi?id=226547). See Github issue #5716.

  • Updated the Node.js build to work better with Jest. See Github issue #5687.

Version 9.4.1 - November 11, 2021

Authentication

  • Added getReactNativePersistence() as an export from the React Native bundle. See Github issue #1847.

Cloud Functions for Firebase Client SDK

  • Clear pending timeout after Promise.race(). It allows the process to exit immediately in case the SDK is used in Node.js. Otherwise the process waits for the timeout to finish before exiting. See Github issue #5692.

Cloud Storage

  • Clear the global timeout once an operation is done in the Cloud Storage SDK. Otherwise the pending timeout may prevent Node.js from exiting. See Github issue #5628.

Version 9.4.0 - November 08, 2021

Realtime Database

  • Fixed a packaging issue that broke the Firebase Admin Node.js SDK. see Github issue #1487.

Cloud Firestore

  • Expanded Firestore.WithFieldValue<T> to include T. This allows developers to delegate WithFieldValue<T> inside wrappers of type T to avoid exposing Firebase types beyond Firebase-specific logic. see Github issue #5661.

Version 9.3.0 - November 04, 2021

  • Added ESM entry point for Node.js and added exports field support to all packages.

App Check

  • Added ReCAPTCHA Enterprise as an attestation option.

Authentication

  • Added the missing SAMLAuthProvider to the compatibility layer.

  • Fixed bug that caused onAuthStateChanged to be fired twice. See Github issue #5685.

Version 9.2.0 - October 28, 2021

  • Added an empty typings file to the firebase package to fix autocomplete problems in some IDEs. See Github issue #5649.

Authentication

  • Fixed behavior on subsequent calls to getRedirectResult(). See Github issue #5610.

  • Fixed the public AuthError typing and update the MultiFactorError implementation to follow the new standard (where all fields are listed under customData).

  • Fixed an error raised in Lighthouse reports by adding the attribute aria-hidden="true" to the embedded iframe. See Github issue #5631.

  • The SDK now exports phone sign-in functionality in the React Native entry point (except for RecaptchaVerifier).

  • Made the SDK resilient against localStorage and sessionStorage permissions errors. See Github issue #5618.

  • Fixed compatibility layer (auth-compat) errors that were being thrown in Safari. See Github issue #5644.

Cloud Firestore

  • Fixed exports fields to also point to ESM builds for Node.js. This change requires Node.js version 10+. See Github issue #5499.

  • Added missing compat conversion for runTransaction. See Github issue #5627.

  • Changed the networking API to use XHR instead of fetch() for React Native. See Github issue #1674.

Version 9.1.3 - October 14, 2021

Cloud Storage

  • Fixed a bug causing an unhandled promise rejection in Node.js when the Cloud Storage client encounters a network error. See Github issue #5372.

Version 9.1.2 - October 07, 2021

App Check

  • Fixed incorrect typings. See GitHub issue #5569.

  • Updated @firebase/app-check-compat to correctly export and handle ReCaptchaV3Provider and CustomProvider classes.

Authentication

  • Calls to connectAuthEmulator with the disableWarnings flag set to true will no longer cause a console.info warning to be printed.

  • Fixed a bug in the OAuthProvider.prototype.credential method that was preventing the rawNonce field from being populated in the returned OAuthCredential. See GitHub issue #5553.

  • Fixed a bug where user.tenantId wasn't being carried over in the updateCurrentUser function.

  • Fixed an issue in @firebase/auth-compat where the SDK tried to access fields from a undefined variable.

Version 9.1.1 - September 30, 2021

Authentication

  • Fixed a bug on iOS causing incorrectly formatted links to be sent in emails. See GitHub issue #5541.

Version 9.1.0 - September 24, 2021

Authentication

  • All browser persistence implementations such as indexedDBLocalPersistence are mapped to inMemoryPersistence in Node.js to allow isomorphic code that works well with use cases like server-side rendering.

  • emailVerified field is now set in the User correctly. See GitHub issue #5430.

  • Added missing phone FACTOR_ID static property to the PhoneMultiFactorGenerator class. See GitHub issue #5480.

  • Fixed wrongly-typed tenantId fields in requests to some endpoints.

Cloud Firestore

  • Fixed a bug where UpdateData did not recognize union types or optional, dot-separated string fields.

Remote Config

  • Added an isSupported() function. You can use this function to check if the current environment supports Remote Config, and only initialize Remote Config in supported environments.

Analytics

  • Fixed an issue where isSupported() throws unexpected errors in certain environments.

App Check

  • Initialization no longer throws runtime errors in Node.js.

  • Debug mode check is delayed till initializeAppCheck() is called.

Cloud Messaging

  • Fixed an issue where isSupported() throws unexpected errors in certain environments.

Performance Monitoring

  • Fixed an issue where isSupported() throws unexpected errors in certain environments.

Testing SDK

  • Fixed typing issues where Database/Firestore/Storage compat instances returned by RulesTestContext are not compatible with v9 modular APIs.

  • Set RTDB namespace to be same as projectId by default instead of ${projectId}-default-rtdb. This fixes rules not being applied and other issues related to namespace mismatch.

Version 9.0.2 - September 9, 2021

Authentication

  • Fixed a bug where custom errors from blocking functions were being dropped. See GitHub issue #5386.

  • Removed const enums from the public typings file.

Cloud Firestore

  • Improved the error handling when the SDK encounters a failure opening IndexedDB in a Firefox private browsing session. See GitHub issue #5377.

  • Fixed a deadlock during asynchronous initialization of both Cloud Firestore and Authentication. See GitHub issue #5402.

  • Fixed the behavior of collection() when passed multiple path segment strings. See GitHub issue #5431.

  • Added a temporary workaround for a bug causing initializeFirestore() to throw errors when used in certain build pipelines, such as the default production build for Create React App. See GitHub issue #5384.

Cloud Functions for Firebase Client SDK

  • The SDK now omits sending an App Check token header to the Cloud Functions endpoint if there is no valid App Check token to send.

Cloud Storage

Version 9.0.1 - August 30, 2021

  • Fixed .cjs builds that caused errors in Node.js use cases, such as using SSR in AngularFire. See GitHub PR #5400.

  • Fixed a typing issue in @firebase/app-compat. See GitHub issue #5382.

  • Fixed incorrect import of node-fetch polyfill that caused uncaught exceptions when using Cloud Storage and the firestore/lite package from Cloud Firestore.

Authentication

  • Fixed a typing issue caused by a missing constructor for OAuthProvider.

Cloud Firestore

  • Added export fields to make firestore/lite available in Node.js. See GitHub PR #5400.

  • Fixed incorrect import of node-fetch polyfill that caused uncaught exceptions when using firestore/lite.

Version 9.0.0 - August 25, 2021

  • This release introduces the new modular API, which enables tree-shaking, bundle size reduction, and other benefits. See SDK versions 8 and 9 for more details. Users of version 8 will need to update their code in order for it to still work with version 9.0.0 and higher. We have provided a compat package to make this migration easier. See the upgrade guide for instructions for upgrading from version 8 or the setup guide for instructions for getting started from scratch with version 9+.

Cloud Messaging

Cloud Firestore

  • This release introduces Firestore Lite, a lightweight, standalone REST-only Firestore SDK that supports single document fetches, query execution, and document updates, at a fraction of the regular Web SDK size. See Cloud Firestore Lite Web SDK.

Version 8.10.0 - August 19, 2021

  • Added or updated the mockUserToken option provided to the useEmulator() functions in Realtime Database, Cloud Firestore, and Cloud Storage. The details for each product are below.

Realtime Database

  • Allow useEmulator() to also accept a string for its mockUserToken option.

Cloud Firestore

  • Allow useEmulator() to also accept a string for its mockUserToken option.

Cloud Storage

  • Add an options object containing mockUserToken as a param for useEmulator().

  • Changed ref() so it does not throw if given a path string that contains ...

Cloud Messaging

  • Exposed the messageId property on MessagePayload.

Testing SDK

  • Fixed JWT encoding bug that broke interoperability with the Cloud Storage emulator.

Version 8.9.1 - August 10, 2021

App Check

  • Fixed typings on params passed to activate().

Version 8.9.0 - August 5, 2021

Analytics

  • Fixed formatting of documentation comments and updated some event typings to correctly match Google Analytics 4 specs.

App Check

  • Add RecaptchaV3Provider and CustomProvider classes that can be supplied as params to firebase.appCheck().activate().

Cloud Storage

  • Added a browser CJS build as ./dist/index.browser.cjs.js. This change was primarily to prevent breaking the Emulator UI.

Version 8.8.1 - July 29, 2021

  • Added a missing dependency in the @firebase/app-types package.

Version 8.8.0 - July 22, 2021

Analytics

  • Added firebase_screen and firebase_screen_class to logEvent() overload for screen_view events. These fields are required to log screen_view events correctly to Analytics.

Realtime Database

  • Fixed sending of Authentication tokens in Node.js. This bug affected Admin SDK users who have App Check enforced.

Cloud Firestore

  • The SDK no longer accesses IndexedDB during a page unload event on Safari 14. This aims to reduce the occurrence of an IndexedDB bug in Safari (https://bugs.webkit.org/show_bug.cgi?id=226547). See GitHub issue #4076.

  • Fixed an issue that prevented Date objects from being used via update() when connected to the Cloud Firestore emulator.

Cloud Storage

  • Added Node.js support to Cloud Storage for Firebase. This release changes the main field in package.json to point to a Node-specific build. If you are building a bundle for browser usage, make sure that your bundler uses the browser field (this is usually the default).

Version 8.7.1 - July 8, 2021

Realtime Database

  • In Node.js, always send Authentication and App Check tokens when they are available.

Version 8.7.0 - July 1, 2021

App Check

  • Added a getToken() method that returns an App Check token asynchronously.

  • Added an onTokenChanged() method that adds listeners to App Check token changes.

  • Fixed an error causing HTTP status 429 errors in debug mode. See GitHub issue #5052.

Authentication

  • Fixed an issue where Cloud Firestore didn't detect Authentication, which led to permission denied errors. See GitHub issue #4932.

Version 8.6.8 - June 17, 2021

Authentication

  • Fixed a bug where linkWithPopup, linkWithRedirect, reauthenticateWithPopup, and reauthenticateWithRedirect weren't correctly picking up the emulator configuration. See GitHub issue #4879.

Cloud Firestore

  • Fixed a bug that caused Uncaught TypeError: e.auth.addAuthTokenListener is not a function. See GitHub issue #5018.

Version 8.6.7 - June 10, 2021

Cloud Firestore

  • Fixed a regression that prevented Cloud Firestore from detecting the Authentication service during initialization, which prevented some writes from being sent.

Version 8.6.5 - June 4, 2021

  • Fixed an error where firebase.SDK_VERSION did not always contain the correct version number.

Cloud Firestore

  • Fixed an issue where FetchXmlHttpFactory was not available.

Version 8.6.4 - June 3, 2021

Cloud Functions for Firebase Client SDK

  • JavaScript Date objects are now serialized to an ISO string instead of an empty object.

Version 8.6.3 - May 27, 2021

Realtime Database

  • Fixed an "index not defined" error that sometimes occurred during a get() call on an orderByChild query.

Cloud Firestore

  • Added a warning message when settings() is used to override the original value of host without also setting {merge: true}.

Version 8.6.2 - May 20, 2021

Cloud Firestore

Cloud Functions for Firebase Client SDK

  • Fixed a bug in httpsCallable() when it is used in the same project as Cloud Messaging. See GitHub issue #4909.

Testing SDK

  • Prevent useEmulators() from erroring when only the storage field is populated in the options parameter.

Version 8.6.1 - May 12, 2021

  • Fixed a bug that caused crashes in Cloud Storage, Cloud Functions for Firebase Client SDK, and Realtime Database when using the all-in-one firebase import, as in import firebase from 'firebase'.

Realtime Database

  • Fixed an issue that could cause once() to fire more than once if the value was modified inside its callback.

Version 8.6.0 - May 11, 2021

App Check

  • Published the App Check package.

Realtime Database

  • Fixed typings for useEmulator.

Testing SDK

  • Added support for Cloud Storage emulator.

Version 8.5.0 - May 5, 2021

Realtime Database

  • useEmulator now accepts an optional mockUserToken.

Cloud Firestore

  • useEmulator now accepts an optional mockUserToken.

Version 8.4.3 - April 29, 2021

Realtime Database

  • Fixed an issue that prevented the SDK from firing cancel events for Firebase Security Rules violations. See GitHub issue #4818.

  • Fixes a regression introduced in version 8.4.1 that broke useEmulator(). See GitHub issue #4811.

Version 8.4.2 - April 23, 2021

  • Fixed outdated peerDependencies.

Cloud Firestore

  • Fixed an issue where errors from grpc are thrown directly to user code. Now they are wrapped in FirestoreError.

  • Fixed an issue where an empty X-Firebase-GMPID header is sent in the request when appId is not available. See GitHub issue #4795.

Cloud Storage

  • Fixed the infinite recursion caused by the FirebaseStorageError message getter.

Version 8.4.1 - April 13, 2021

Realtime Database

  • Fixed a build issue that caused SDK breakage.

Version 8.4.0 - April 12, 2021

Cloud Storage

  • Added a storage().useEmulator() method to enable emulator mode for storage. This allows you to set a storage emulator host and port.

Cloud Firestore

  • Fixed a bug where decimal inputs to Timestamp.fromMillis() were calculated incorrectly due to floating point precision loss.

Version 8.3.3 - April 08, 2021

  • This update only includes internal refactoring.

Version 8.3.2 - March 31, 2021

  • This update includes internal refactoring.

Version 8.3.1 - March 18, 2021

  • Fixed a bug caused by an outdated version of the tslib dependency. See GitHub issue #4633.

Version 8.3.0 - March 10, 2021

Cloud Firestore

  • Added support to remove the FirestoreDataConverter on a Firestore reference by calling withConverter(null)

Version 8.2.10 - March 4, 2021

Analytics

  • Fixed typings for analytics().logEvent() so that the eventParams argument is correctly typed as optional.

Version 8.2.9 - February 19, 2021

  • API update for an internal package. There is no change in the public API.

Version 8.2.8 - February 18, 2021

Analytics

  • Fixed a behavior causing gtag.js to be downloaded twice on Firebase Analytics initialization. See GitHub issue #2628.

Version 8.2.7 - February 11, 2021

Realtime Database

  • Fixed an issue with Query.get() where Query filters were not applied to data in some cases.

  • Added the missing type definitions for startAfter() and endBefore().

Cloud Firestore

  • Fixed a bug where local cache inconsistencies were unnecessarily being resolved.

  • Fixed the path to the react native memory-only build.

Version 8.2.6 - February 04, 2021

Authentication

  • Fixed a bug where UTF-8 encoded strings were not decoded in getIdTokenResult. See GitHub issue #4174.

Realtime Database

  • Fixed an issue with startAfter/endBefore when used in orderByKey queries.

Cloud Firestore

  • Correctly handle ignoreUndefinedProperties in set({ merge: true }). Previously this would behave as if the undefined value were FieldValue.delete(), which wasn't intended.

Version 8.2.5 - January 28, 2021

Realtime Database

  • When issued for queries that are being listened to, get() calls no longer send backend requests.

Cloud Firestore

  • Classes like DocumentReference and Query can now be serialized to JSON. See GitHub issue #4258.

Version 8.2.4 - January 21, 2021

Realtime Database

  • Added startAfter and endBefore filters for paginating Realtime Database queries.

Authentication

  • Added the useEmulator() function and emulatorConfig to the firebase package externs.

Cloud Firestore

  • Fixed an error that caused FirestoreDataConverter.fromFirestore() to be called with an incorrect QueryDocumentSnapshot object. See GitHub issue #4278

Version 8.2.3 - January 14, 2021

Realtime Database

  • Fixed an issue that caused refFromUrl() to reject production database URLs when useEmulator() was used.

Version 8.2.2 - January 7, 2021

Realtime Database

  • Fixed an issue with multiple database instances when using the Realtime Database emulator. See GitHub issue #3681

Cloud Firestore

  • Updated an outdated error message to include != and not-in as inequality operators. See GitHub issue #4253

  • Fixed an issue in the Transaction API that caused the SDK to return invalid DocumentReference objects through DocumentSnapshot.data() calls. See GitHub issue #4226

Version 8.2.1 - December 17, 2020

Authentication

  • Updated auth token logic to rely on device clock time instead of server time. This fixes an issue seen when a device's clock is skewed by a lot: see GitHub issue #3222

Cloud Firestore

  • Fixed an issue that prevented the SDK from automatically retrieving custom claims for a User. See GitHub issue #4175

Version 8.2.0 - December 11, 2020

Authentication

  • Added an option to hide the banner in Auth when using the emulator.

Cloud Firestore

  • Released Firestore Bundles (pre-packaged Firestore data). For NPM users, this can be enabled via an additional import: firebase/firestore/bundle. For CDN usage, it is enabled by default.

  • A write to a document that contains FieldValue transforms is no longer split up into two separate operations. This reduces the number of writes the backend performs and allows each WriteBatch to hold 500 writes regardless of how many FieldValue transformations are attached.

Performance Monitoring

  • Changed to dispatch no more than 1000 collected performance events for each network request. Events over the cap will be queued and sent with the next dispatch.

Version 8.1.2 - December 3, 2020

Authentication

  • Fixed an issue with IndexedDB retry logic causing uncaught errors.

Cloud Firestore

  • Fixed a bug that prevented usage of FieldPath objects with multiple special characters.

  • Fixes an issue that returned invalid DocumentReference instances from QuerySnapshot objects. See GitHub issue #4125

Testing SDK

  • Fixed assertFails not recognizing permission-denied errors from Realtime Database.

Version 8.1.1 - November 19, 2020

Realtime Database

  • Added the missing type definition for Query.get().

Cloud Firestore

  • Fixed an issue that prevented experimentalAutoDetectLongPolling from working correctly.

Version 8.1.0 - November 19, 2020

Realtime Database

  • We have identified an issue in the newly added Query.get() API. This causes data to be returned which doesn't match the Query filters. We are working on providing a fix.
  • Added a database query get method that returns server results when connected.

Cloud Firestore

  • Fixed a regression introduced in v8.0.2 that returned invalid values for DocumentChange.newIndex. See GitHub issue #4071

Version 8.0.2 - November 12, 2020

Authentication

  • The SDK now retries IndexedDB errors a fixed number of times to handle connection issues in mobile WebKit. Fixes GitHub issue #1926.

Cloud Firestore

  • Fixed an issue that caused DocumentReference objects in DocumentSnapshot instances to be returned with the custom converter of the original DocumentReference.

Version 8.0.1 - November 5, 2020

Cloud Messaging

  • Fixed an issue where a silent-push warning was displayed along with the message shown by ServiceWorkerRegistration.showNotification. Added a timeout for the onBackgroundMessage hook so that silent-push warnings won't show if ServiceWorkerRegistration.showNotification is called inside the hook within 1 second. See GitHub issue #3725.

Testing SDK

  • Added a withFunctionTriggersDisabled method which runs a user-provided setup function with emulated Cloud Functions triggers disabled. This can be used to import data into the Realtime Database or Cloud Firestore emulators without triggering locally emulated functions. This method only works with Firebase CLI version 8.13.0 or higher.

Version 8.0.0 - October 26, 2020

  • Breaking change: browser fields in package.json files now point to ESM bundles instead of CJS bundles. Users who are using ESM imports must now use the default import instead of a namespace import.

    Before 8.0.0

    import * as firebase from 'firebase/app'
    

    After 8.0.0

    import firebase from 'firebase/app'
    

    Code that uses require('firebase/app') or require('firebase') will still work, but in order to get proper typings (for code completion, for example) users should change these require calls to require('firebase/app').default or require('firebase').default. This is because the SDK now uses typings for the ESM bundle, and the different bundles share one typings file.

Cloud Firestore

  • Removed the undocumented Firestore.logLevel property.

  • Breaking change: Removed deprecated experimentalTabSynchronization settings. To enable multi-tab synchronization, use synchronizeTabs instead.

  • This release removes runtime type validations that are covered by TypeScript. Developers can use our TypeScript types to validate API usage.

  • Breaking change: Removed the timestampsInSnapshots option from FirestoreSettings. Now, Cloud Firestore always returns Timestamp values for all timestamp values.

  • Added a useEmulator(host, port) method to Cloud Firestore.

  • Removed excess validation of null and NaN values in query filters. This more closely aligns the SDK with the Cloud Firestore backend, which has always accepted null and NaN for all operators.

Cloud Storage

  • This release removes runtime type validations that are covered by TypeScript. Developers can use our TypeScript types to validate API usage.

Realtime Database

  • Added a useEmulator(host, port) method to Realtime Database.

Cloud Functions for Firebase Client SDK

  • Added a useEmulator(host, port) method to the Cloud Functions for Firebase Client SDK.

Version 7.24.0 - October 15, 2020

Authentication

  • Added the ability to configure the SDK to communicate with the Firebase Emulator.

Cloud Firestore

  • Added a new experimentalAutoDetectLongPolling to FirestoreSettings. When enabled, the SDK's underlying transport layer automatically detects if long-polling should be used. This is very similar to experimentalForceLongPolling, but only uses long-polling if required.

  • Fixed a potential issue in our internal queue that could have allowed API calls to be executed out of order.

Testing SDK

  • Changed to not delete the uid property from user auth object in initializeTestApp(). See GitHub issue #3920.

  • Fixed the typing for custom claims.

Version 7.23.0 - October 8, 2020

Analytics

  • The SDK now warns instead of throwing an error if it detects a browser environment where Analytics does not work.

Cloud Firestore

  • The SDK now includes more information in the error message for failed IndexedDB transactions.

Performance Monitoring

  • Moved the loggingEnabled check to wait until performance initialization finishes, which prevents the SDK from dropping custom traces right after getting the performance object.
  • Throws an exception when startTime or duration is not a positive value in the trace.record() API.

Testing SDK

  • Added stronger types to the options.auth option for initializeTestApp().

Version 7.22.1 - October 5, 2020

Cloud Functions for Firebase Client SDK

  • Fixed a bug introduced in 7.21.1 that causes callable functions to throw an error in some environments.

Version 7.22.0 - October 1, 2020

Cloud Functions for Firebase Client SDK

  • Users can now set a custom domain for callable functions.

Version 7.21.1 - September 24, 2020

Cloud Firestore

  • Fixed an issue that prevented waitForPendingWrites() from resolving in background tabs when multi-tab is used. See GitHub issue #3816.

  • Fixed a "Comparison with -0" lint warning for customers that build from source. See GitHub issue #3814.

Authentication

  • Fixed an encoding issue in the Authentication CDN script for environments that require UTF-8, for example, Chrome extensions. See GitHub issue #414.

Version 7.21.0 - September 17, 2020

Cloud Firestore

  • Added not-in and != query operators for use with .where().
    • not-in finds documents where a specified field’s value is not in a specified array.
    • != finds documents where a specified field's value does not equal the specified value. Neither query operator will match documents where the specified field is not present.
  • The SDK now uses FirestoreError instead of Error in onSnapshot*() error callbacks.
  • Fixed a bug where CollectionReference.add() called FirestoreDataConverter.toFirestore() twice instead of once. See GitHub issue #3742

Realtime Database

  • Fixed detection of Admin SDK context.

Testing SDK

  • Fixed a bug preventing users from testing Realtime Database with both the Admin SDK and the client JS SDK.

Version 7.20.0 - September 10, 2020

Analytics

  • For apps using v7.20.0 and later, Firebase dynamically fetches the measurementId when your app initializes Analytics. Having this ID in your Firebase config object is optional, but it does serve as a fallback in the rare case that the dynamic fetch fails. Learn more about this field in the Analytics getting started page.

Realtime Database

  • The SDK can now infer a default database URL if none is provided in the config.

Cloud Firestore

  • Fixed a bug where, if a user change happened while the network connection was disabled, the client did not raise snapshots from cache.

Cloud Messaging

  • The SDK no longer opens non-origin links, fixing a potential security issue.

Version 7.19.1 - August 27, 2020

Cloud Firestore

  • Added merge option to firestore.settings(), which merges the provided settings with settings from a previous call. This addresses GitHub issue #3354.

Testing SDK

Version 7.19.0 - August 20, 2020

Testing SDK

  • Released @firebase/rules-unit-testing to replace the @firebase/testing package. The new package is API compatible but has the following breaking behavior changes:
    • assertFails() now fails only on PERMISSION DENIED errors, not any error.
    • initializeAdminApp() now relies on firebase-admin rather than imitating the Admin SDK.

Performance Monitoring

  • Adds a check to silently prevent Performance Monitoring from initializing if the required indexedDB.open() API is not available in the environment.

Cloud Firestore

  • terminate() can now be retried if it fails with an IndexedDB exception. See GitHub issue #2755.

  • Enabled fallback for auto-generated identifiers in environments that support crypto but not crypto.getRandomValues. See