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 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

  • 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.

Vertex AI in Firebase

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.

Vertex AI in Firebase

  • 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

Vertex AI in Firebase

  • 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 GitHub PR #3487.

Version 7.18.0 - August 13, 2020

Cloud Messaging

  • Added onBackgroundMessage, which is called regardless of whether or not a notification is displayed.

  • getToken now accepts an options object that includes an optional vapid key and an optional service worker registration.

  • Deprecated setBackgroundMessageHandler. Use the new API onBackgroundMessage instead.

  • Deprecated useVapidKey and useServiceWorker. Use getToken to set these values instead.

  • Deprecated onTokenRefresh which is a no-op API currently.

Cloud Firestore

  • The SDK no longer crashes with the error "The database connection is closing". Instead, the individual operations that cause this error may be rejected. Addresses GitHub issue #3495.

  • Fixed a bug that caused slow retries for IndexedDB operations even when a webpage re-entered the foreground.

Analytics

  • analytics.isSupported() now returns Promise<false> for extension environments.

Version 7.17.2 - August 6, 2020

Realtime Database

  • Added interface Database which is implemented by FirebaseDatabase. This allows consumer SDKs (such as the Firebase Admin SDK) to export Realtime Database types as an interface.

Cloud Firestore

  • Upgraded to the latest version of Google Closure Library and Compiler. Developers will not need to make any changes to their code to handle this change.

Version 7.17.1 - July 24, 2020

Analytics

  • Added an omitted dependency update that caused Analytics to error on initialization. Addresses GitHub issue #3469.

Version 7.17.0 - July 23, 2020

Analytics

  • Added an analytics.isSupported() method which returns true if the current browser context supports Analytics. This can used in a conditional to prevent initialization of Analytics in environments that don't support it. This check also automatically runs when Analytics is initialized (firebase.analytics()) and if it finds an unsupported environment, throws an error advising developers to use isSupported(). Addresses GitHub issue #2393.

Cloud Storage

  • Error messages for backend errors now include the backend's response message.

Version 7.16.1 - July 16, 2020

Cloud Firestore

  • The SDK no longer crashes if an IndexedDB failure occurs when unsubscribing from a Query.

  • Removed a delay that prevented Firestore from immediately reestablishing a network connection if a connectivity change occurred while the app was in the background.

Realtime Database

  • Instead of using production auth, the SDK will use test credentials to connect to the Emulator when Realtime Database is used via the Firebase Admin SDK. Fixes GitHub issue #3144.

Cloud Storage

  • Updated the TypeScript types for all APIs using Observers to allow callback omission. Fixes GitHub issue #3158.

Authentication

  • Added the browser field in package.json.

Version 7.16.0 - July 09, 2020

Cloud Firestore

  • Added support for set() with merge options when using FirestoreDataConverter.

  • Re-added the React Native bundle, which allows Cloud Firestore to be used without btoa/atob polyfills.

  • Removed internal wrapper around our public API that was meant to prevent incorrect SDK usage for JavaScript users, but caused the SDK to stop working in IE11. See GitHub issue #3305.

FCM

  • Fixed an issue where we tried to update the token for every getToken() call because we don't save the updated token in the IndexedDB.

  • Fixed an RxJS incompatibility issue by adding support for onMessage so the internal callback can work with RxJS's Subscriber. See GitHub issue #3142.

Cloud Functions for Firebase Client SDK

  • Clear timeout after a successful response or after the request is canceled. Fixes GitHub issue #3289.

Version 7.15.5 - June 25, 2020

Cloud Firestore

  • Fixed a bug that sometimes caused Cloud Firestore operations to fail during an auth token change. See GitHub issue #3179

Version 7.15.4 - June 20, 2020

Cloud Firestore

  • Removed the React Native entry point due to an issue in our internal library. For Cloud Firestore in React Native, use the browser build and add necessary polyfills. See GitHub issue #2667

Version 7.15.3 - June 19, 2020

Cloud Firestore

  • Fixed an issue that prevented Cloud Firestore from working in React Native. See GitHub issue #2667

Version 7.15.2 - June 18, 2020

Realtime Database

  • Added an internal HTTP header to the WebSocket connection.

Cloud Firestore

  • Updated grpc-js to version ^1.0.0.

Version 7.15.1 - June 11, 2020

Cloud Firestore

  • Fixed an issue that prevented the client from connecting to the backend immediately after a user signed in. See GitHub issue #2923.

  • Fixed a regression introduced in PR #3048 that changed the context.path variable from Path|null to undefined|null. See GitHub issue #3172.

Version 7.15.0 - June 04, 2020

Cloud Firestore

  • Added an experimentalForceOwningTab setting that can be used to enable persistence in environments without localStorage, which allows persistence to be used in Web Workers. See GitHub issue #983.

  • All known failure cases for IndexedDB-related crashes have now been addressed. Instead of crashing the client, IndexedDB failures result in rejected operations (for example, rejected Writes or errored Query listeners). If these rejections surface in your app, you can retry these operations when IndexedDB access is restored. IndexedDB failures that occur due to background work are automatically retried.

    If you continue to see IndexedDB-related crashes, please provide feedback GitHub issue #2755.

Version 7.14.6 - May 29, 2020

Cloud Firestore

  • Fixed an issue that could cause Cloud Firestore to temporarily go offline when a Window visibility event occurred.

  • Added support for calling FirebaseFirestore.settings with { ignoreUndefinedProperties: true }. When this parameter is set, Cloud Firestore ignores undefined properties inside objects rather than rejecting the API call.

Version 7.14.5 - May 21, 2020

Realtime Database

  • Fixed a Realtime Database URL parsing bug to support domains with more than 3 components.

Version 7.14.4 - May 14, 2020

Cloud Firestore

  • Fixed a regression introduced in v7.14.2 that incorrectly applied a FieldValue.increment in combination with set({...}, {merge: true}).

Version 7.14.3 - May 07, 2020

Cloud Firestore

  • Cloud Firestore now rejects onSnapshot() listeners if they cannot be registered in IndexedDB. Previously, these errors crashed the client.

Version 7.14.2 - April 23, 2020

Cloud Firestore

  • Firestore now rejects write operations if they cannot be persisted in IndexedDB. Previously, these errors crashed the client.

  • Fixed a source of IndexedDB-related crashes for tabs that receive multi-tab notifications while the file system is locked.

FCM

  • Changed to compare hostname instead of the entire URL to decide if there is a matching window client. See GitHub issue #390.

Version 7.14.1 - April 16, 2020

Cloud Storage

  • Fixed an issue that occurred when users tried to retrieve data from multiple Cloud Storage instances.

Authentication

  • Fixed a bug that occurred when users set persistence to LOCAL in a worker environment. See GitHub issue #2903.

Version 7.14.0 - April 9, 2020

Cloud Firestore

  • Replaced grpc with @grpc/grpc-js in the Node.js builds. As a result, the minimum supported NodeJS version is now 8.13.0.

Realtime Database

  • Added ServerValue.increment() to support atomic field value increments without transactions.

Performance Monitoring

  • Updated internal performance event transport mechanism.

Version 7.13.2 - April 2, 2020

Cloud Firestore

  • Fixed a regression introduced by a crypto change in 7.13.0 that breaks Firestore in IE 11. See GitHub issue #2827.

  • Fixed an issue that causes excessive reads in large changesets over slow connections. See GitHub issue #2683.

  • Fixed an issue causing WriteBatch.commit() to resolve one loop later than .set and .update. See GitHub issue #2822.

FCM

  • Fixed an issue introduced in 7.7.0, when FCM switched to provide base64-encoded VAPID keys to PushManager for push subscription. For backward compatibility, the SDK has switched back to using VAPID keys in type ArrayBuffer. See Github issue #2712.

Version 7.13.1 - March 27, 2020

Cloud Firestore

  • Removed a dangling comma in package.json.

Version 7.13.0 - March 26, 2020

Cloud Firestore

  • Added a memory-only firestore build. Instead of persisting data in the IndexedDB, it keeps it in memory. This build is about 14% smaller than the full featured build because it doesn't have IndexedDB related code. If you don't care about persisting data across sessions, or your code runs in environments that don't support IndexedDB, use this build to reduce your application size. It is available under a special import path. You can import it this way:

    import * as firebase from 'firebase/app';
    import 'firebase/firestore/memory';
    
    

    // Don't change the format for any other products. import 'firebase/auth'; // etc.

    Or if using the CDN:

    <script src="https://www.gstatic.com/firebasejs/7.13.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.13.0/firebase-firestore.memory.js"></script>
    <!-- Don't change the format for any other products. -->
    <script src="https://www.gstatic.com/firebasejs/7.13.0/firebase-auth.js"></script>
    <!-- etc. -->
    

Analytics

  • Added convenient enums and function overloads to support enhanced ecommerce events.

Version 7.12.0 - March 19, 2020

  • Added two methods for logging:
    • firebase.setLogLevel(), which sets the level above which Firebase log messages will be shown.
    • firebase.onLog(), which adds a user-specified callback run on each log event. The callback has access to log level, message, and name of the package (e.g. "@firebase/firestore") that generated the log message.

Cloud Firestore

  • Fixed an issue where the number value -0.0 would lose its sign when stored in Cloud Firestore.

Version 7.11.0 - March 12, 2020

Authentication

Version 7.10.0 - March 5, 2020

Cloud Firestore

  • Implemented Timestamp.valueOf() so that Timestamp objects can be compared for relative ordering using the JavaScript arithmetic comparison operators. Fixes GitHub issue #2632.

Version 7.9.3 - February 28, 2020

Cloud Storage

  • Fixed an issue introduced in 7.9.2 where Cloud Storage could throw a CORS error (GitHub issue).

Version 7.9.2 - February 27, 2020

Cloud Firestore

  • Fixed an issue where OnlineState value was mangled and was not being parsed correctly.

Version 7.9.1 - February 21, 2020

Cloud Firestore

  • Fixed an issue introduced in 7.9.0 where minified Cloud Firestore Node and CJS bundles do not work.

Version 7.9.0 - February 20, 2020

Cloud Firestore

  • The minified version of the Cloud Firestore library, added as an experimental option in 7.8.0, is now the default Cloud Firestore bundle. The steps listed in the 7.8.0 release notes are no longer necessary to get the minified bundle. This minification currently reduces the total bundle size by approximately 15% as of this build.

  • Fixed an issue where auth credentials were not respected in Cordova environments. See Github issue #2626.

  • Fixed a performance regression introduced by the addition of Query.limitToLast(n: number) in Firestore 1.7.0 (Firebase 7.3.0). See Github issue #2620.

FCM

  • Fix an issue where service workers do not reliably update after upgrading to a new version of Firebase. See Github issue #2590.

Version 7.8.2 - February 13, 2020

Cloud Firestore

  • Fixed an issue where CollectionReference.add() would reject custom types when using withConverter(). Github issue #2606.

Version 7.8.1 - February 6, 2020

Cloud Firestore

  • Fix a bug causing intermittent errors when the same app is open in multiple tabs. Addresses Github issue #2555.

Version 7.8.0 - January 30, 2020

Cloud Firestore

  • Experimental: Added an alternative minified import for the firestore package. Users who want to try this experimental import can do it this way:

    import * as firebase from 'firebase/app';
    import '@firebase/firestore/dist/index.cjs.min';
    
    // Don't change the format for any other products.
    import 'firebase/auth';
    // etc.
    

    Or if using the CDN:

    <script src="https://www.gstatic.com/firebasejs/7.8.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.8.0/firebase-firestore.min.js"></script>
    <!-- Don't change the format for any other products. -->
    <script src="https://www.gstatic.com/firebasejs/7.8.0/firebase-auth.js"></script>
    <!-- etc. -->
    

Version 7.7.0 - January 16, 2020

Cloud Firestore

  • Fixed an issue where auth credentials were not respected in some Firefox or Chrome extensions. See Github issue #1491.

  • Firestore previously required that every document read in a transaction must also be written. This requirement has been removed, and you can now read a document in a transaction without writing to it.

Performance Monitoring

  • Updated internal transport protocol from proto2 to proto3.

Authentication

  • Added missing constructor for SAMLAuthProvider type.

Version 7.6.2 - January 9, 2020

Cloud Functions for Firebase Client SDK

  • Fixed a bug causing notification permissions requests to pop up when using functions.httpsCallable().

Realtime Database

Cloud Firestore

  • Fixed an issue where auth credentials were not respected in certain browser environments (Electron 7, IE11 in trusted zone, UWP apps). Addresses Github issue #1491.

Version 7.6.1 - December 18, 2019

Realtime Database

  • Fixed an internal typing issue where the library firebase-admin, which depends on @firebase/database, failed to compile.

Version 7.6.0 - December 12, 2019

Cloud Firestore

  • Added support for storing and retrieving custom types in Cloud Firestore. Added support for strongly typed collections, documents, and queries. You can now use withConverter() to supply a custom data converter that will convert between Cloud Firestore data and your custom type.

  • Added a stronger environment check that specifically checks for the existence of process.env. Addresses Github issue #2404.

FCM

  • getToken() now automatically requests notification permission if permission was set to "default".

  • Temporarily suppressing errors occurring on reset of notifications permissions, pending a backend solution. Addresses Github issue #2364.

Testing SDK

  • Fixed a bug where Testing SDK was unable to connect to the Cloud Firestore emulator. Addresses Github issue #2417.

Version 7.5.2 - December 6, 2019

Realtime Database

  • Fixed an issue introduced in 7.5.1 where @firebase/component is not listed as a dependency. It caused "Cannot find module @firebase/component" in the firebase-admin package, which depends on Realtime Database.

Version 7.5.1 - December 5, 2019

  • Fixed an issue where typing undefined in the IDE prompts to auto-import it from the firebase package. Addresses #2203 (GitHub link). Thanks camsjams for the contribution!

  • Fixed a bug where RxFire's objectVal will return an empty object if the result of snapshot.val() is not an object.

Remote Config

  • Fixed a bug where the promises returned by fetch() and fetchAndActivate() were not rejected with errors caused by indexeddb operations. You can now handle these errors in the error handler of the returned promise.

Version 7.5.0 - November 21, 2019

Cloud Firestore

  • Improved the performance of repeatedly executed queries when persistence is enabled. Recently executed queries should see dramatic improvements. This benefit is reduced if changes accumulate while the query is inactive. Queries that use the limit() API may not always benefit, depending on the accumulated changes.

Version 7.4.0 - November 14, 2019

Authentication

  • Added nonce support for sign-in with OIDC ID token credentials.
  • Added the OAuth sign-in support for apps served from origins with the ionic:// scheme for latest Ionic framework.

Analytics

  • Fixed a bug where Analytics did not work with Google Tag Manager on the same page.

Cloud Firestore

  • The in query operator now accepts nested arrays.

Version 7.3.0 - November 7, 2019

Cloud Firestore

  • Added in and array-contains-any query operators for use with .where(). The in operator finds documents where a specified field’s value is in a specified array. The array-contains-any operator finds documents where a specified field is an array and contains any element of a specified array.
  • Added Query.limitToLast(n: number) which returns the last n documents as the result.

Version 7.2.3 - October 31, 2019

  • Improved error handling in installations calls.

Cloud Firestore

  • The client can now recover if certain periodic IndexedDB operations fail. Addresses #2232 (GitHub link).

Analytics

  • Added missing overload signatures for logEvent when using standard event names add_payment_info and page_view.

Version 7.2.2 - October 24, 2019

  • Fixed a change detection bug in rxFire.
  • Switched to ref.isEqual when comparing documents to support collection groups for Cloud Firestore in rxFire.

Cloud Firestore

  • Improved iOS 13 support by eliminating an additional crash in our IndexedDB persistence layer.

Version 7.2.1 - October 16, 2019

Cloud Firestore

  • Fixed a crash on iOS 13 that occurred when persistence was enabled in a background tab.
  • Fixed an issue in the interaction with the Firestore Emulator that caused requests with timestamps to fail.

Version 7.2.0 - October 10, 2019

  • The Installations.getToken() method now accept an optional forceRefresh parameter.

Remote Config

  • Corrected the path of the main script in package.json file.

Version 7.1.0 - October 3, 2019

Cloud Firestore

  • Added a Firestore.onSnapshotsInSync() method that notifies you when all your snapshot listeners are in sync with each other.

  • Fixed a regression that caused queries with nested field filters to crash the client if the field was not present in the local copy of the document.

Realtime Database

  • Fixed an issue that caused large numeric values with leading zeros to not always be sorted correctly.

Analytics

  • Fixed a bug where firebase.analytics() was not available when importing firebase as an all-in-one package.

  • The eventParams param to logEvent() is now optional.

Version 7.0.0 - September 26, 2019

  • Breaking change: For TypeScript users, the required minimal TypeScript version is 2.8.0.

FCM

  • Breaking change: version 7.0.0 introduces a new service related to client app instance registration. If you are currently using FCM for web and want to upgrade to SDK 7.0.0 or later, you must enable the FCM Registration API for your project in the Google Cloud Console.

    When you enable this service, make sure you are logged in to Cloud Console with the same Google account you use for Firebase, and make sure to select the correct project.

    Please also make sure that projectId, apiKey, appId and messagingSenderId are present in your app config. See how to get your app config object.

    No other migration tasks are required; once the API is enabled, pre-7.0.0 apps will continue to function normally.

    New projects adding the FCM SDK have this service enabled by default.

  • Version 7.0.0 introduces the targeting of web apps for FCM messages sent from the Notifications composer. You can now target web notification messages by browser type and version as well as operating system. See Send messages with the Firebase Console.

Analytics

Remote Config

Version 6.6.2 - September 19, 2019

Cloud Firestore

  • Fixed a regression introduced in 6.6.0 where Document.toString() throws an error.

Version 6.6.1 - September 12, 2019

Realtime Database

  • Internal cleanup of code that supports Node.js.

Version 6.6.0 - September 5, 2019

Authentication

  • Added support for multi-tenancy for Google Cloud Identity Platform developers.

Cloud Firestore

  • Fixed a race condition between authenticating and initializing Firestore that could result in initial writes to the database being dropped.

Version 6.5.0 - August 23, 2019

Cloud Firestore

  • Added a Firestore.waitForPendingWrites() method that allows users to wait until all pending writes are acknowledged by the Firestore backend.
  • Added a Firestore.terminate() method which terminates the instance, releasing any held resources. Once it completes, you can optionally call Firestore.clearPersistence() to wipe persisted Firestore data from disk.

Version 6.4.2 - August 23, 2019

  • Changed fromRef, 'fromDocRef' and fromCollectionRef to accept an option parameter in rxFire.

Performance Monitoring

  • Fixed a regression introduced in 6.4.1 where built-in metrics collections threw errors.

Version 6.4.1 - August 22, 2019

  • The SDK no longer throws an error on duplicate service registration. This simplifies cases when multiple components each internally depend on another component and may each try to register it.

Cloud Firestore

  • Transactions now perform exponential backoff before retrying. This means transactions on highly contended documents are more likely to succeed.

Performance Monitoring

  • Performance Monitoring now validates performance metrics and attributes before storing them.

Version 6.4.0 - August 15, 2019

Realtime Database

  • When parsing the Realtime Database URL, the ns URL query parameter will be treated as the default Realtime Database namespace name.
  • Fixed an issue that caused .info/serverTimeOffset events not to fire.

Version 6.3.5 - August 8, 2019

Authentication

  • Fixed an issue where cached redirect results were not cleared after calling signOut() or getRedirectResult().

Version 6.3.4 - August 1, 2019

Realtime Database

  • Fixed an issue where multi-byte UTF-8 characters were not written correctly when using firebase.js or firebase-database.js.

Version 6.3.3 - July 26, 2019

Realtime Database

  • Fixed a regression introduced in v6.3.2 causing errors when run in a browser environment.

Version 6.3.2 - July 25, 2019

Realtime Database

  • Added an environment variable (FIREBASE_DATABASE_EMULATOR_HOST) that allows developers to point the database emulator SDK to a local database emulator instance.

Performance Monitoring

  • The SDK has been updated to better handle errors when the Performance Monitoring library is imported in an environment without a window object (such as the server side of an SSR app) or a Performance Monitoring instance is initialized in such an environment.

Version 6.3.1 - July 18, 2019

Cloud Firestore

  • Transactions are now more flexible. Some sequences of operations that were previously incorrectly disallowed are now allowed. For example, after reading a document that doesn't exist, you can now set it multiple times successfully in a transaction.

  • Fixed an issue where query results were temporarily missing documents that previously had not matched but had been updated to now match the query.

Version 6.3.0 - July 11, 2019

Performance Monitoring

  • Fixed an issue causing errors during page load in browser environments that don't support IndexedDB (such as when cookies are disabled).

Version 6.2.4 - June 27, 2019

Performance Monitoring

  • Fixed an issue where Performance Monitoring throws an exception in unsupported environments. Now Performance Monitoring will not initialize in unsupported environments.

Version 6.2.3 - June 24, 2019

Authentication

  • Fixed a bug causing errors in Node.

Cloud Firestore

  • Fixed an issue causing some queries to return no results.

Version 6.2.2 - June 21, 2019

  • Reverted change to the way the React Native bundle imports AsyncStorage as it was causing errors.

Cloud Firestore

  • Made error messages more informative for AsyncQueue errors on iOS.

Version 6.2.1 - June 20, 2019

  • Updated the React Native bundle to first try importing the AsyncStorage module from the recommended community package, if available, instead of the now-deprecated version bundled with React Native core.

  • Fixed a bug in Firebase's environment check that can cause errors when Firebase is bundled into user code (using tools such as Rollup).

Cloud Firestore

  • Fixed an issue causing errors in environments that are missing window.addEventListener, such as React Native with Expo.

Cloud Storage

  • Fixed an incorrect type on Reference.put() params.

Version 6.2.0 - June 13, 2019

Cloud Firestore

  • Added clearPersistence(), which clears the persistent storage including pending writes and cached documents. This is intended to help write reliable tests.

  • Added logging and a custom error message to help users hitting https://bugs.webkit.org/show_bug.cgi?id=197050 (a bug in iOS 12.2 causing the SDK to potentially crash when persistence is enabled).

Version 6.1.1 - June 6, 2019

  • Did some internal refactoring to improve type safety and documentation generation.

Version 6.1.0 - May 28, 2019

Cloud Firestore

  • Fixed an issue where an environment check fails in Node.js environments.

Cloud Storage

  • Added the ability to list objects in a bucket.

Cloud Messaging

  • Deprecated requestPermission(). Use the native browser API Notification.requestPermission() instead.

Version 6.0.4 - May 23, 2019

  • Browser environment check is now able to detect a web worker environment.

  • @firebase/app-types and @firebase/util are now direct dependencies of the main firebase package.

Cloud Firestore

  • Cloud Firestore will gracefully fall back to memory persistence when the user is in Firefox Private Browsing.

  • Cloud Firestore now recovers more quickly after network connectivity changes (airplane mode, Wi-Fi availability, etc.).

Version 6.0.2 - May 9, 2019

  • Browser environment check now works correctly without throwing an error in non-browser environments.

Cloud Firestore

  • Updated gRPC to 1.20.3 to support Node.js 12 and Electron v5.0.

Version 6.0.1 - May 8, 2019

Authentication

  • Fixed a regression introduced in 6.0.0 that caused code to access a removed property.

Version 6.0.0 - May 7, 2019

  • Breaking change: Removed polyfills in the Firebase package. Now developers must decide which polyfills to include based on the environments they need to support. This ensures only required polyfills are included, reducing application size. See Environment Support.

Authentication

  • Breaking change: Removed previously deprecated APIs.

    Removed Replaced by
    signInAndRetrieveDataWithCustomToken signInWithCustomToken
    signInAnonymouslyAndRetrieveData signInAnonymously
    createUserAndRetrieveDataWithEmailAndPassword createUserWithEmailAndPassword
    signInAndRetrieveDataWithEmailAndPassword signInWithEmailAndPassword
    fetchProvidersForEmail fetchSignInMethodsForEmail
  • Breaking change: Updated the return type signature for signInWithCredential and linkWithCredential to a promise that resolves with a UserCredential instead of a User.

  • Changed reauthenticateWithCredential to return a promise that resolves with a UserCredential.

  • Deprecated the following APIs

    Deprecated Use instead
    signInAndRetrieveDataWithCredential signInWithCredential
    linkAndRetrieveDataWithCredential linkWithCredential
    reauthenticateAndRetrieveDataWithCredential reauthenticateWithCredential

Cloud Firestore

  • You can now query across all collections in your database with a given collection ID using the FirebaseFirestore.collectionGroup() method.

  • Deprecated the experimentalTabSynchronization setting in favor of synchronizeTabs. If you use multi-tab synchronization, it is recommended that you update your call to enablePersistence(). Firestore logs an error if you continue to use experimentalTabSynchronization.

Realtime Database

  • Breaking change: Improved consistency between the type annotations for Query.on/Reference.on, Query.off/Reference.off and Query.once/Reference.once.

Performance Monitoring

  • This release contains the new Performance Monitoring Client SDK. Visit the Performance Monitoring for Web Getting Started guide.

Version 5.10.1 - April 25, 2019

Authentication

  • Fixed an issue where duplicate auth events could cause errors when using signInWithPopup().
  • Fixed an issue where the SDK could fail to detect that it is in a service worker environment.
  • Added an error message that appears when the client attempts to perform an admin-only operation.

Cloud Firestore

  • Enabled the SDK to recognize older versions of iOS Safari and Android when checking if persistence can be enabled.

Version 5.10.0 - April 18, 2019

Authentication

  • Added serialization and deserialization methods to AuthCredential classes.

Cloud Firestore

  • Added an experimentalForceLongPolling setting that can be used to work around proxies that prevent the Firestore client from connecting to the Firestore backend.

Version 5.9.4 - April 11, 2019

Cloud Storage

  • Fixed an incorrect type definition in UploadTask.on() params.

Version 5.9.3 - April 4, 2019

Cloud Messaging

  • Refactored to use const enum for ErrorCode.

Version 5.9.2 - Mar 28, 2019

Cloud Firestore

  • Added a missing type definition for firestore.FieldValue.increment.

Version 5.9.1 - Mar 21, 2019

Cloud Firestore

  • Increased a connection timeout that could lead to large writes perpetually retrying without ever succeeding.

  • Fixed an issue where transactions in a NodeJS app could be sent without auth credentials, leading to Permission Denied errors.

  • Fixed an issue with IndexedDb persistence that triggered an internal assert for Queries that use nested DocumentReferences in where() clauses.

Version 5.9.0 - Mar 14, 2019

Cloud Firestore

  • Added FieldValue.increment(), which can be used in update() and set(..., {merge:true}) to increment or decrement numeric field values safely without transactions.
  • Prepared the persistence layer to support collection group queries. While this feature is not yet available, all schema changes are included in this release. Once you upgrade, you will not be able to use an older version of the Firestore SDK with persistence enabled.

FCM

  • The SDK now does not send messages to Chrome Extension background pages, which previously caused notifications not to display.

Cloud Storage

  • Fixed an incorrect type definition.

Version 5.8.6 - Mar 7, 2019

Cloud Firestore

  • Improved performance when querying over documents that contain subcollections.

Version 5.8.5 - Mar 1, 2019

  • Added a warning that appears in the console at runtime if a Firebase browser bundle is loaded in a node environment.

Authentication

  • Added OAuthCredential type as an exposed type.

  • Fixed updateProfile() so each property passed to it is optional.

Cloud Functions for Firebase Client SDK

  • Added timeouts and ability to customize them to HttpsCallables.

Version 5.8.4 - Feb 21, 2019

Cloud Firestore

  • Fixed an uncaught promise error occurring when enablePersistence() was called in a second tab.

Testing SDK

  • Made rulesets that don't compile throw errors.

Version 5.8.3 - Feb 14, 2019

Cloud Firestore

  • Improved error handling for endAt queries.

Version 5.8.2 - Jan 31, 2019

  • Added a missing file to the files array in package.json.

  • Fixed some errors in the documentation.

Version 5.8.1 - Jan 24, 2019

  • Added the missing depenedency to auth-types and storage-types packages.

Testing SDK

  • Added clearFirestoreData() to delete data between tests.

Version 5.8.0 - Jan 17, 2019

  • Added a type definition file for all firebase components, so that they work with TypeScript with dynamic import.

Cloud Firestore

  • BREAKING: The timestampsInSnapshots setting is now enabled by default. Now, timestamp fields read from a DocumentSnapshot will be returned as Timestamp objects instead of Date. Any code expecting to receive a Date object must be updated.

  • Fixed a crash that could happen when the app is shut down after a write has been sent to the server but before it has been received on a listener.

Version 5.7.2 - Jan 10, 2019

  • Fixed a packaging issue where some external dependencies were included in the Firebase package.

  • Added syntax highlights to the README file.

Cloud Firestore

  • Fixed a regression introduced in 5.7.0 that caused apps using experimentalTabSynchronization to hit an exception for "Failed to obtain primary lease for action 'Collect garbage'".

Version 5.7.1 - Dec 20, 2018

Authentication

  • Added SAML providers and exposed the API to enable OIDC providers.

  • Changed the email validation logic to allow international email addresses.

Cloud Firestore

  • Added a custom error for schema downgrades.

Version 5.7.0 - Dec 6, 2018

Cloud Firestore

  • Added a garbage collection process to on-disk persistence that removes older documents. This is enabled automatically if persistence is enabled, and the SDK will attempt to periodically clean up older, unused documents once the on-disk cache passes a threshold size (default: 40 MB). This threshold can be configured by changing the setting cacheSizeBytes in the settings passed to Firestore.settings(). It must be set to a minimum of 1 MB. The garbage collection process can be disabled entirely by setting cacheSizeBytes to CACHE_SIZE_UNLIMITED.

  • Updated gRPC version to support Node 11.

Version 5.6.0 - Nov 29, 2018

Authentication

  • Added the ability to customize the dynamic link domain for email actions.

Version 5.5.9 - Nov 20, 2018

  • Updated mocha to version 5.2.0.

  • Corrected syntax errors for Realtime Database example in rxFire documentation.

Cloud Firestore

  • Capped the amount of exponential backoff gRPC will use for reconnection attempts to 100ms.

Version 5.5.8 - Nov 8, 2018

Authentication

  • Added a source map to facilitate easy debugging.

Version 5.5.7 - Nov 1, 2018

Cloud Functions for Firebase Client SDK

  • Added the type definition for the useFunctionsEmulator method in the Cloud Functions for Firebase Client SDK.

Version 5.5.6 - Oct 25, 2018

  • Changed to distribute component libraries in UMD format from the CDN.

Cloud Firestore

  • Fixed an issue where the library is not compatible with IE 11.

Version 5.5.5 - Oct 18, 2018

  • Updated documentation to include examples for typescript and native es6 module in Node.js environment.

  • Fixed the import path for Authentication in rxFire documentation.

Version 5.5.4 - Oct 11, 2018

Authentication

  • Fixed an issue where the this variable was changed to undefined incorrectly.

Cloud Firestore

  • Removed fallback based on eval() for JSON parsing, allowing SDK to be used in environments that prohibit eval().

Version 5.5.3 - Oct 4, 2018

Cloud Firestore

  • Fixed an issue that prevented query synchronization between multiple tabs.
  • Start tracking document usage in preparation for LRU Garbage Collection.

Version 5.5.2 - Sep 27, 2018

  • Fixed a browser compatibility issue with Safari 9 when loading individual components using the CDN.

Cloud Firestore

  • Fixed an issue where native ES6 module loading was not working.

Authentication

  • Added a new phone auth error message for malformed or mismatching credentials.

Version 5.5.1 - Sep 19, 2018

  • Updated the dependency version for the closure compiler, so it works with Java 10.

Cloud Firestore

  • Fixed an issue where typings are created in the wrong location.

Realtime Database

  • Fixed an issue where typings are created in the wrong location.

Version 5.5.0 - Sep 12, 2018

  • Fixed an issue where typings for the firebase package were referenced incorrectly.

Cloud Firestore

  • Access to offline persistence is no longer limited to a single tab. You can opt into this new experimental mode by invoking enablePersistence() with {experimentalTabSynchronization: true}. All tabs accessing persistence must use the same setting for this flag.
  • Fixed an issue where the first get() call made after being offline could incorrectly return cached data without attempting to reach the backend.
  • Changed get() to only make 1 attempt to reach the backend before returning cached data, potentially reducing delays while offline. Previously it would make 2 attempts, to work around a backend bug.
  • Fixed an issue that caused us to drop empty objects from calls to set(..., { merge: true }).
  • Improved argument validation for several API methods.
  • Changed the internal handling for locally updated documents that haven't yet been read back from Cloud Firestore. This can lead to slight behavior changes and may affect the SnapshotMetadata.hasPendingWrites metadata flag.
  • Eliminated superfluous update events for locally cached documents that are known to lag behind the server version. Instead, we buffer these events until the client has caught up with the server.

Version 5.4.2 - August 30, 2018

Authentication

  • Fixed an issue where the navigator global was unavailable in some environments.

Version 5.4.1 - August 23, 2018

Cloud Firestore

  • Fixed a regression that prevented use of Cloud Firestore on ReactNative's Expo platform (#1138).

Authentication

  • Fixed an issue in the IndexedDB implementation that was slow for some browsers.
  • Fixed a memory leak in the IndexedDB implementation.

Version 5.4.0 - August 16, 2018

Cloud Firestore

  • Fixed get({source: 'cache'}) to be able to return nonexistent documents from cache.
  • Prepared the persistence layer to allow shared access from multiple tabs. While this feature is not yet available, all schema changes are included in this release. Once you upgrade, you will not be able to use an older version of the Firestore SDK with persistence enabled.
  • Fixed an issue where changes to custom authentication claims did not take effect until you did a full sign-out and sign-in. (firebase/firebase-ios-sdk#1499)

Version 5.3.1 - August 3, 2018

Cloud Firestore

  • Improved how Firestore handles idle queries to reduce the cost of re-listening within 30 minutes.
  • Improved offline performance with many outstanding writes.

Version 5.3.0 - July 19, 2018

Authentication

  • Fixed an issue where redirect results were being handled incorrectly for deleted Auth instances.

Cloud Firestore

  • Fixed an issue where queries returned fewer results than they should, caused by documents that were cached as deleted when they should not have been (firebase/firebase-ios-sdk#1548). Because some cache data is cleared, clients might use extra bandwidth the first time they launch with this version of the SDK.
  • Added firebase.firestore.FieldValue.arrayUnion() and firebase.firestore.FieldValue.arrayRemove() to atomically add and remove elements from an array field in a document.
  • Added 'array-contains' query operator for use with .where() to find documents where an array field contains a specific element.

Version 5.2.0 - June 28, 2018

Cloud Functions for Firebase Client SDK

  • Added a method that allows the Cloud Functions for Firebase Client SDK to use a local Functions Emulator.
  • Added support for specifying a region for a given function.

Realtime Database

  • Fixed an issue that caused database to not work on IE 11.

Version 5.1.0 - June 21, 2018

  • Fixed an issue with the typings where the firebase namespace wasn't being exported.

Authentication

  • Added an ES Module export of Firebase Auth
  • Fixed an issue with the IndexedDB fallback logic

Version 5.0.4 - May 24, 2018

  • Update the README.md files for our scoped packages on NPM (i.e. @firebase/app, @firebase/auth, @firebase/database, etc) to properly reflect the officially supported API.

FCM

  • Fixed an issue where VAPID keys weren't being handled correctly.

Cloud Firestore

  • Improved the messaging when unable to connect to the backend servers.

Realtime Database

  • Fixed the typings for forEach and forEachChild to properly support all valid return types.

Version 5.0.3 - May 17, 2018

  • Fixed a regression that was causing the import * as firebase from 'firebase'; syntax to fail.

FCM

  • Fixed an issue where the messaging types were inconsistent with our documentation.

Cloud Firestore

  • Updated our GRPC dependency which fixed an issue some users had during npm install.

Version 5.0.2 - May 10, 2018

  • Fixed an issue where some of the nested imports (e.g. firebase/app) weren't exposing the proper types.

FCM

  • Changed a behavior where, if a VAPID key did not exist, an error was thrown.

Version 5.0.1 - May 8, 2018

  • Fixed an issue with our typings that was preventing TypeScript apps from compiling.

Version 5.0.0 - May 8, 2018

  • Refactored the top-level Firebase entrypoints (e.g. import firebase from 'firebase';) to additionally include the Firestore and Functions components which were previously excluded by default. Developers using these bundles will find a warning in the browser console instructing them how to include only the components they are using, which will improve the performance of their applications.

Authentication

  • Exposes the new Auth.settings.appVerificationDisabledForTesting flag for disabling reCAPTCHA app verification used for phone authentication integration testing with whitelisted phone numbers.
  • Exposes the new Auth.updateCurrentUser API for copying firebase.User objects between Firebase apps.
  • Updated the return type signature for signInWithEmailAndPassword, signInWithCustomToken, signInAnonymously and createUserWithEmailAndPassword to return a promise that resolves with a UserCredential instead of a user.
  • Removed getToken API in favor of getIdToken and getIdTokenResult.
  • Deprecated signInWithCredential, linkWithCredential, reauthenticateWithCredential and fetchProvidersForEmail in favor of signInAndRetrieveDataWithCredential, linkAndRetrieveDataWithCredential, reauthenticateAndRetrieveDataWithCredential and fetchSignInMethodsForEmail.
  • Improved detection of external auth state changes for synchronizing Auth state between different windows.

Realtime Database

  • Removed the private path property from firebase.database.Reference.

Cloud Firestore

  • Merged the includeQueryMetadataChanges and includeDocumentMetadataChanges options passed to Query.onSnapshot() into a single includeMetadataChanges option.
  • QuerySnapshot.docChanges() is now a method that optionally takes an includeMetadataChanges option. By default, even when listening to a query with { includeMetadataChanges:true }, metadata-only document changes are suppressed in docChanges().
  • Added new { mergeFields: (string|FieldPath)[] } option to set() which allows merging of a reduced subset of fields.

Cloud Storage

  • Removed the previously deprecated FullMetadata.downloadURLs and UploadTaskSnapshot.downloadURL properties.

Version 4.13.0 - April 19, 2018

  • Added support for an alternate initializeApp syntax, to facilitate additional config options.
  • Fixed the version of our devDependencies throughout the SDK to ensure that build/test changes are picked up in future releases.
  • Refactored to use core-js for our Polyfills/Shims.

Authentication

  • Fixed an issue where navigator.onLine sometimes errantly reports false.
  • Fixed an issue where Firefox multi-tab/private mode browsing threw errors with our IndexedDB implementation.
  • Exposes the new getIdTokenResult API for firebase.User objects.

Cloud Firestore

  • Added a new Timestamp class to represent timestamp fields, currently supporting up to microsecond precision. It can be passed to API methods anywhere a JS Date object is currently accepted. To make DocumentSnapshots read timestamp fields back as Timestamps instead of Dates, you can set the newly added flag timestampsInSnapshots in FirestoreSettings to true. Note that the current behavior (DocumentSnapshots returning JS Date objects) will be removed in a future release. Timestamp supports higher precision than JS Date.
  • Added ability to control whether DocumentReference.get() and Query.get() should fetch from server only, (by passing { source: 'server' }), cache only (by passing { source: 'cache' }), or attempt server and fall back to the cache (which was the only option previously, and is now the default).

FCM

  • Fixed an issue where getToken was throwing errors in Worker environments.
  • General cleanup and hardening of the entire messaging codebase. added TypeScript types, additional tests, etc.

Cloud Storage

Version 4.12.1 - March 29, 2018

  • Fixed an issue where TypeScript would throw errors due to duplicate symbols.

Authentication

  • Fixed an issue where several of the new APIs were missing from the firebase package typings.

Cloud Firestore

  • Fixed a regression in the Firebase JS release 4.11.0 that could cause get() requests made while offline to be delayed by up to 10 seconds (rather than returning from cache immediately).
  • Fixed an issue where some NPM users were seeing large performance degradations on Edge.
  • Fixed an issue where several APIs were missing from the firebase package typings.

FCM

  • Improved error messaging around the useServiceWorker function to better communicate the intended use case.

Version 4.12.0 - March 20, 2018

Authentication

Cloud Functions for Firebase Client SDK

This release contains the new Firebase Functions Client SDK, with support for HTTPS Callable Functions. See Call Functions from Your App.

Cloud Firestore

  • Fixed a regression in the Firebase JS release 4.11.0 that could cause a crash if a user signs out while the client is offline, resulting in an error of "Attempted to schedule multiple operations with timer id listen_stream_connection_backoff".

Version 4.11.0 - March 8, 2018

Realtime Database

  • Fixed an issue where certain browser APIs weren't available in IE 11.
  • Added the ability to create a new reference from an existing database reference.

Cloud Firestore

  • If the SDK's attempt to connect to the Cloud Firestore backend doesn't succeed or fails within 10 seconds, the SDK will consider itself "offline", causing get() calls to resolve with cached results, rather than continuing to wait.

Version 4.10.1 - February 22, 2018

  • Did some internal refactoring to support the use of modern typescript APIs across the codebase (thanks merlinnot for the PR!)

Realtime Database

  • Fixed an issue where users were unintentionally receiving an "Invalid query string" warning (see this issue).

FCM

  • Fixed an issue where some users received duplicate notifications.
  • Fixed an issue with a missing API in the typings.

Version 4.10.0 - February 15, 2018

Cloud Firestore

  • Fixed an issue where Microsoft Edge users were seeing slow response times.

Realtime Database

  • Allow users passing custom database URLs, to set the namespace via the ns query parameter.

FCM

  • Added the usePublicVapidKey API to facilitate custom server application key usage.

Version 4.9.1 - February 1, 2018

  • Fixed an issue where ES6 wildcard imports were breaking Closure Compiler (thanks @Doehl for the PR!)

Authentication

  • Fixed an issue with universal link subscriptions when multiple listeners are registered.

Realtime Database

  • Allow users to set the database URL to a localhost value (thanks @rynobax for the PR!)

Cloud Firestore

  • Fixed a regression in Firebase JS release 4.9.0 that could in certain cases result in an "OnlineState should not affect limbo documents." assertion crash when the client loses its network connection.

Version 4.9.0 - January 18, 2018

  • Snapshot listeners (with the includeMetadataChanges option enabled) now receive an event with snapshot.metadata.fromCache set to true if the SDK loses its connection to the backend. A new event with snapshot.metadata.fromCache set to false will be raised once the connection is restored and the query is in sync with the backend again.
  • Added SnapshotOptions API to control how DocumentSnapshots return unresolved server timestamps.
  • Added disableNetwork() and enableNetwork() methods to Firestore class, allowing for explicit network management.
  • For non-existing documents, DocumentSnapshot.data() now returns undefined instead of throwing an exception. A new QueryDocumentSnapshot class is introduced for Queries to reduce the number of undefined-checks in your code.
  • Added isEqual API to GeoPoint, Blob, SnapshotMetadata, DocumentSnapshot, QuerySnapshot, CollectionReference, FieldValue and FieldPath.
  • A "Could not reach Firestore backend." message will be logged when the initial connection to the Firestore backend fails.
  • A "Using maximum backoff delay to prevent overloading the backend." message will be logged when we get a resource-exhausted error from the backend.

Version 4.8.2 - January 11, 2018

  • Fixed some regressions that were introduced in the typings refactor from the last release.
  • Added the missing "author" field to the package.json files of each of the NPM packages.

Version 4.8.1 - December 18, 2017

  • Refactored the typings setup across the SDK.

Cloud Firestore

  • A "Could not reach Firestore backend." message will be logged when the initial connection to the Firestore backend fails.
  • A "Using maximum backoff delay to prevent overloading the backend." message will be logged when we get a resource-exhausted error from the backend.

Version 4.8.0 - December 7, 2017

Authentication

Cloud Firestore

  • Fixed an issue with the Firestore webchannel integration that prevented use of firestore in worker environments.

Version 4.7.0 - November 30, 2017

Cloud Firestore

  • Added Node.js support for Cloud Firestore (with the exception of offline persistence).
  • Refactor Webchannel integration to avoid extra CORS preflight requests.

Version 4.6.2 - November 9, 2017

Authentication

  • Fixed an issue where localStorage errors were not being caught properly.
  • Return auth/user-disabled instead of auth/internal-error when signing in with an OAuth provider using a disabled account.

Cloud Firestore

  • Network streams are automatically closed after 60 seconds of   idleness.
  • We no longer log 'RPC failed' messages for expected failures.
  • Fixed an "Image is not defined" error when using Cloud Firestore from React Native.

Version 4.6.1 - November 2, 2017

  • Updated dependency versions across the different sub packages.

Authentication

  • Released the Open Source auth codebase.
  • Automatically resets the reCAPTCHA after the phone authentication flow is triggered to prevent the same reCAPTCHA token from being sent in subsequent calls.

Version 4.6.0 - October 19, 2017

Authentication

  • Added firebase.User.prototype.metadata which includes information about user creation time and last sign in time.
  • Added the isNewUser property to firebase.auth.AdditionalUserInfo, which is returned by sign in methods to indicate whether a user is a new or returning user.
  • Fixed a TypeError thrown after manually clearing localStorage

Realtime Database

  • Fixed a regression introduced in version 4.5.1 where authenticated user info was not properly being passed to the server, causing reads and writes to fail with permission_denied errors.

Cloud Firestore

  • Fixed the validation of nested arrays to allow indirect nesting.
  • We now support FieldValue.delete() sentinels in set() calls with {merge:true}.

Version 4.5.2 - October 16, 2017

  • Fixed an issue where the "react-native" property was missing from the firebase package.json.
  • Fixed an issue where firebase.SDK_VERSION was returning the placeholder string.

Version 4.5.1 - October 12, 2017

  • Refactored the internal module structure to make our package more modular and easier to maintain.

Cloud Firestore

  • Fixed an issue causing exceptions when trying to use firebase.firestore.FieldPath.documentId() in an orderBy() or where() clause in a query.

Version 4.5.0 - October 2, 2017

Version 4.4.0 - September 21, 2017

Authentication

  • Fixed some issues with null initialization of several classes in the externs files.

Realtime Database

Version 4.3.1 - September 7, 2017

Authentication

  • Fixed issue with typings for features released in 4.3.0

Version 4.3.0 - August 17, 2017

Authentication

  • Added client side localization for email actions (password reset, email verification, etc), phone authentication SMS messages, OAuth flows and reCAPTCHA verification.
  • Added the ability to pass a continue URL/state when triggering a password reset/email verification which gives a user the ability to go back to the app after completion. In addition, added support for the ability to open these links directly from a mobile app instead of a web flow using Firebase Dynamic Links. See the docs for more information.
  • Fixed issue with IE10 state synchronization across tabs

Version 4.2.0 - July 27, 2017

Authentication

  • Added ability to configure state persistence. See the docs for more information.
  • Added missing phoneNumber property on provideData objects.
  • Fixed temporary error message when opening a popup for sign-in, prominent in some IE browsers.
  • Refactored to not use navigator.onLine for offline detection in Cordova environments.

Realtime Database

  • Fixed an issue where database references were missing a toJSON method.

Version 4.1.5 - July 25, 2017

Authentication

  • Fixed an issue where authenticated realtime database access wasn't possible.

Version 4.1.4 - July 24, 2017

  • Bundle size improvements for firebase-app.js, firebase-storage.js, firebase-messaging.js.

Realtime Database

  • Refactored internal implementation to TypeScript.

Version 4.1.3 - June 21, 2017

  • Fixed an issue where certain app names were invalid

Authentication

  • Fixed an issue with the PhoneAuthProvider typings
  • Fixed an issue where network errors from signInWithRedirect were cached even after the network connection stabilized.
  • Fixed an issue where Cordova OAuth redirects in iOS apps were failing due iOS bundle ID case sensitive checks.

Version 4.1.2 - June 6, 2017

  • Fixed an issue where sourcemaps weren't pointing to the actual TypeScript source code.
  • Fixed an issue where FirebaseAppImpl.prototype was being incorrectly patched.
  • Fixed an issue where loading the SDK from our CDN, while also providing a chunked webpack build, was duplicating the webpackJsonp namespace.

Version 4.1.1 - May 31, 2017

  • Fixed an issue where the default storage bucket was not being initialized correctly.

Version 4.1.0 - May 30, 2017

  • Allow for lazy initialization of Firebase components (i.e. Authentication, Realtime Database, Cloud Storage, FCM).

Authentication

  • Fixed an issue where the SDK could trigger an infinite loop when loaded in an iFrame on Safari.

Version 4.0.0 - May 17, 2017

Authentication for Servers

  • Removed support for deprecated serviceAccount and credential properties from the Node.js SDK. If you were previously using the Firebase JavaScript SDK to use these properties, use the Firebase Admin Node.js SDK instead.

Authentication

Version 3.9.0 - April 25, 2017

Authentication

  • Deprecated firebase.auth.authCredential.prototype.provider in favor of the firebase.auth.AuthCredential.prototype.providerId property.
  • Fixed an issue where Cordova apps were seeing unusual delays in authentication.

Version 3.8.0 - April 18, 2017

  • Provide source maps for firebase-app.js.

Authentication

Version 3.7.8 - April 14, 2017

  • Fixed an issue where npm-shrinkwrap.json was not being generated correctly.

Version 3.7.7 - April 14, 2017

  • Fixed an issue where undefined symbols caused an error to be thrown in older browsers.

Version 3.7.6 - April 11, 2017

Authentication

  • Fixed an issue where removal of a legacy options object broke older clients.

Version 3.7.5 - April 4, 2017

Cloud Storage

  • Provide higher-granularity progress updates for object uploads.

Version 3.7.4 - March 28, 2017

Realtime Database

  • Fixed an issue where firebase.database().ref().push(), would trigger an infinite loop if the returned .then() function was called.

Authentication

  • Fixed an issue where firebase.User.reauthenticate() was creating new users if passed an OAuth credential for a user that didn't exist.

Version 3.7.3 - March 21, 2017

Realtime Database

  • Fixed error messaging for invalid calls to Query.equalTo().

Version 3.7.2 - March 14, 2017

  • Fixed an issue where some components erroneously allowed creation of multiple instances.

Version 3.7.1 - March 9, 2017

Authentication

  • Updated firebase.auth().signInWithPopup() to work properly in Chrome extensions.
  • Improved session handling for prolonged usage of the Realtime Database.

Version 3.7.0 - March 1, 2017

Cloud Storage

  • Added support for using multiple buckets within Cloud Storage.

Version 3.6.10 - February 21, 2017

Cloud Storage

  • Fixed an issue where the catch() method didn't exist on UploadTask.

Version 3.6.9 - February 7, 2017

Authentication

  • Fixed an issue that broke firebase.auth().signInWithCredential() in a browser environment when the current URL has the OAuth 2.0-specific state query parameter.

Version 3.6.8 - January 31, 2017

  • Fixed an issue with some module bundlers. The npm (commonjs) modules no longer require a global variable to be set explicitly and fallback to window or self if global is not defined.

Authentication

  • Increased authentication timeouts for network requests to handle slow network connections.
  • Fixed authentication module Node.js detection to be compatible with browserify.
  • Modified firebase.auth().signInWithPopup() to work for apps embedded in a sandboxed iframe.
  • Fixed the Android Chrome bug for triggering internal-errors in firebase.auth().signInWithPopup()
  • Fixed an issue that broke firebase.auth().signInWithCredential() and firebase.auth().fetchProvidersForEmail() in non http/https environments like chrome-extensions.
  • Fixed progress bar styling in the OAuth helper for popup/redirect operations.

Version 3.6.7 - January 24, 2017

  • Improved Firebase app errors to return error codes prefixed with app/ consistent with other Firebase service errors.

Version 3.6.6 - January 17, 2017

  • Fixed support for TypeScript and ES6 imports of individual SDK modules (see the npm package README for more information).

Authentication

  • Fixed an issue on Chrome for iOS where a blank gray screen was being displayed when signInWithPopup() does not require additional user interaction (because the user is already signed in and has previously consented to the requested scopes).

Version 3.6.5 - January 10, 2017

Cloud Storage

Version 3.6.4 - December 13, 2016

Realtime Database

Cloud Storage

  • Fixed an issue where percent-encoded data in a data URL was not decoded.

Authentication

  • Optimized offline detection to reduce the frequency of network timeouts.

Version 3.6.3 - December 6, 2016

  • Changed the packaging of browser npm modules to fix an issue that occurred when using Cloud Storage with the Browserify and webpack module bundlers.

Version 3.6.2 - November 29, 2016

  • Updated file attributes in the Firebase npm package to be compatible with the Yarn Package Manager.
  • Updated the jsonwebtoken version used in the Firebase npm package.

Authentication

  • Fixed an issue that prevented user authentication states from persisting when using Firebase Authentication with React Native versions 0.37 and higher.

Version 3.6.1 - November 15, 2016

Cloud Storage

  • Reduced the SDK download size.
  • Fixed networking issues affecting React Native on Android.

Authentication

  • Added missing definitions for setCustomParameters() methods in the firebase.d.ts file for TypeScript users.

Version 3.6.0 - November 8, 2016

Authentication for Servers

  • SDK authentication with a service account on Node.js, and the corresponding token minting and verification methods, has been deprecated in favor of a new Node.js Admin SDK. To learn more, go to Admin SDK Setup. To see the Node.js Admin API reference, go to Admin SDK API Reference.

Authentication

  • Fixed an incorrect popup blocked error that occurred in the Chrome browser on iOS 7 and 8.

Version 3.5.3 - November 1, 2016

  • Reduced the SDK download size.

Authentication

  • Fixed issues with redirect and pop-up sign-in methods when using browsers that block third-party cookies and site data.

Version 3.5.2 - October 24, 2016

Authentication

  • Increase the request timeout interval for mobile devices to improve performance on high-latency networks.

Version 3.5.1 - October 19, 2016

Cloud Messaging

  • Added a check to validate the gcm_sender_id.
  • Fixed a race condition that occurs when using the Firefox web browser.

Version 3.5.0 - October 14, 2016

Authentication

Cloud Messaging

Version 3.4.1 - September 27, 2016

Realtime Database

  • Ensure that the SDK does not prevent Node.js from shutting down the process. Calling firebase.database().goOffline() or firebase.app().delete() should be sufficient for Node.js to exit now.
  • Fixed a bug where the database inadvertently created a global variable on the window object.
  • Use of the update() method now only cancels transactions that are directly included in the updated paths (not transactions in adjacent paths). For example, an update at /move for a child node walk will cancel transactions at /, /move, and /move/walk and in any child nodes under /move/walk. But, it will no longer cancel transactions at sibling nodes, such as /move/run.

Cloud Storage

  • Improved network utilization for file uploads.

Version 3.4.0 - September 14, 2016

Realtime Database

  • New Query.isEqual() method allows for comparing any Reference or Query for equality.

Version 3.3.2 - September 8, 2016

Authentication

Version 3.3.1 - September 7, 2016

  • Added an error message when attempting to use a service account in non-Node.js environments.

Authentication

  • Fixed backend error messages that were being truncated.
  • Fixed an error where user properties were not automatically refreshed on page reload.
  • The user's credential and email are now returned when account linking throws the following errors: auth/credential-already-in-use and auth/email-already-in-use.
  • Modified the Facebook login and OAuth grant permissions screen to work better in popup-sized windows.
  • This release has an issue with signInWithPopup() not working with Internet Explorer. You can continue to use version 3.3.0 or earlier until this is fixed in a future release.

Cloud Storage

  • Fixed an issue where contentType in custom metadata was being ignored for string-format uploads.

Version 3.3.0 - August 16, 2016

Authentication

  • Client Authentication APIs are now available in Node.js. When you call initializeApp(), pass a serviceAccount to use the Authentication for Servers APIs in your app, or pass an apiKey to use the client Authentication APIs.
  • Network error handling for sign in and link with popup operations.
  • Long popup cancellation timeouts.
  • When you use signInWithRedirect, the onAuthStateChanged observer now waits until getRedirectResult resolves before triggering. (In older versions, the observer would trigger twice: once when the page loaded, and a second time when getRedirectResult resolved.)

Realtime Database

  • A warning is no longer logged if you don't provide an apiKey when initializing the SDK and just want to have unauthenticated access to your Realtime Database. Security Rules are still in effect even if you do not provide an apiKey.

Cloud Storage

Version 3.2.1 - July 26, 2016

  • TypeScript 2.0 type definitions added to npm package.

Authentication

  • Fixed issues with Safari private mode.
  • More detailed debugging messages for internal errors.

Version 3.2.0 - July 12, 2016

Cloud Storage

  • UploadTask can now be used like a Promise, and resolves with its snapshot data when the upload completes.

Authentication

  • Github login responsiveness.
  • Missing display names in profile scope for some Google accounts.

Authentication for Servers

  • Added uid to the decoded token returned by verifyIdToken(). It is set to the ID token's sub (subject) claim.

Version 3.1.0 - June 28, 2016

Authentication

  • Replace use of browser-specific APIs that were blocking use of React Native from the JavaScript SDK.
  • The Node.js SDK now supports unauthenticated access. If no service account is provided, Realtime Database access will be restricted just as any unauthenticated client would be. In this case, certain methods (like creating and verifying tokens) will throw an error.

Version 3.0.5 - June 14, 2016

Authentication

  • Fixed JSON parsing error when used in Chrome extensions.
  • Corrected server URLs used by library when using localhost for debugging.

Cloud Storage

  • Allows use of "gs://bucket" instead of "bucket" in storageBucket config.

Version 3.0.4 - June 7, 2016

Realtime Database

  • Updated the reference documentation to include more extensive API descriptions and examples.
  • Improved Realtime Database authentication-expiration retry logic.

Authentication

  • When using Firebase Web SDK in a non http or https environment (Cordova or Electron apps for instance), instead of raising a confusing error on initialization, it will silently ignore it. It will only throw an auth/operation-not-supported-in-this-environment error when trying to use unsupported operations (signInWithPopup, signInWithRedirect, linkWithPopup, linkWithRedirect and getRedirectResult).

Cloud Storage

  • Generate more specific error message when quota is exceeded.

Version 3.0.3 - May 24, 2016

Authentication

  • Improved error messages.

Authentication for Servers

  • Global Promise object is no longer overwritten.
  • Added error message when initializing the Node.js SDK with an invalid service account.

Version 3.0.2 - May 19, 2016

  • Browserify and webpack compatibility.

Version 3.0.1 - May 18, 2016

  • Node.js version 0.10 support.

Version 3.0.0 - May 18, 2016

Realtime Database

  • The way you install and initialize the SDK has changed and several APIs have been renamed. When you decide to upgrade, please see the Web Migration Guide for detail.
  • The way you install and initialize the Node.js has also changed. APIs have been renamed and you now authenticate using a service account instead of a secret or custom token. When you choose to upgrade, please see the Database Server SDK Setup Guide and use the Web Migration Guide to help you update your Node.js code to the latest APIs.

Authentication

  • The way you install and initialize the SDK has changed and most APIs have been renamed. When you decide to upgrade, please see the Web Migration Guide for details.
  • Node.js server SDK:
    • Token minting and verification for Firebase Authentication is now built into the server SDKs themselves instead of in separate token minting libraries.
    • All of the existing authentication methods have been removed. Instead, use the databaseAuthVariableOverride option (Node.js) or when initializing the SDK. See Installation & Setup for Servers for more details.
    • Use the Web Migration Guide or to help you update your Node.js or Java code to the latest APIs.

Cloud Storage

  • Initial release of Cloud Storage. Cloud Storage provides secure file uploads and downloads for your Firebase apps, regardless of network quality. You can use it to store images, audio, video, or other user-generated content. Cloud Storage is backed by Google Cloud Storage, a powerful, simple, and cost-effective object storage service.

Legacy release notes

Firebase 1.0 and 2.0 JavaScript Changelog