Go to console

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 7.2.0 - October 10, 2019

  • The Installations.getToken() method now accept an optional forecRefresh 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

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

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.

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

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.

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 faciliate 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 isssue 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.

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.

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

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

Storage

  • Added support for using multiple buckets within Storage.

Version 3.6.10 - February 21, 2017

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

Storage

Version 3.6.4 - December 13, 2016

Realtime Database

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

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.

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.

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 intializeApp(), 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.

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

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.

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

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.

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