To see release notes for the Firebase console and for other Firebase platforms and related SDKs, see the Firebase Release Notes.
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
AsyncStorageas it was causing errors.
Cloud Firestore
- Made error messages more informative for
AsyncQueueerrors on iOS.
Version 6.2.1 - June 20, 2019
Updated the React Native bundle to first try importing the
AsyncStoragemodule 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 APINotification.requestPermission()instead.
Version 6.0.4 - May 23, 2019
Browser environment check is now able to detect a web worker environment.
@firebase/app-typesand@firebase/utilare now direct dependencies of the mainfirebasepackage.
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
gRPCto 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 signInAndRetrieveDataWithCustomTokensignInWithCustomTokensignInAnonymouslyAndRetrieveDatasignInAnonymouslycreateUserAndRetrieveDataWithEmailAndPasswordcreateUserWithEmailAndPasswordsignInAndRetrieveDataWithEmailAndPasswordsignInWithEmailAndPasswordfetchProvidersForEmailfetchSignInMethodsForEmailBreaking change: Updated the return type signature for
signInWithCredentialandlinkWithCredentialto a promise that resolves with aUserCredentialinstead of aUser.Changed
reauthenticateWithCredentialto return a promise that resolves with aUserCredential.Deprecated the following APIs
Deprecated Use instead signInAndRetrieveDataWithCredentialsignInWithCredentiallinkAndRetrieveDataWithCredentiallinkWithCredentialreauthenticateAndRetrieveDataWithCredentialreauthenticateWithCredential
Cloud Firestore
You can now query across all collections in your database with a given collection ID using the
FirebaseFirestore.collectionGroup()method.Deprecated the
experimentalTabSynchronizationsetting in favor ofsynchronizeTabs. If you use multi-tab synchronization, it is recommended that you update your call toenablePersistence(). Firestore logs an error if you continue to useexperimentalTabSynchronization.
Realtime Database
- Breaking change: Improved consistency between the type annotations for
Query.on/Reference.on,Query.off/Reference.offandQuery.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
experimentalForceLongPollingsetting 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
DocumentReferencesinwhere()clauses.
Version 5.9.0 - Mar 14, 2019
Cloud Firestore
- Added
FieldValue.increment(), which can be used inupdate()andset(..., {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
OAuthCredentialtype 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
endAtqueries.
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
timestampsInSnapshotssetting is now enabled by default. Now, timestamp fields read from aDocumentSnapshotwill be returned asTimestampobjects instead ofDate. Any code expecting to receive aDateobject 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
cacheSizeBytesin the settings passed toFirestore.settings(). It must be set to a minimum of 1 MB. The garbage collection process can be disabled entirely by settingcacheSizeBytestoCACHE_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
useFunctionsEmulatormethod 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
thisvariable was changed to undefined incorrectly.
Cloud Firestore
- Removed fallback based on
eval()for JSON parsing, allowing SDK to be used in environments that prohibiteval().
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.hasPendingWritesmetadata 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
navigatorglobal 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()andfirebase.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
forEachandforEachChildto 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.appVerificationDisabledForTestingflag for disabling reCAPTCHA app verification used for phone authentication integration testing with whitelisted phone numbers. - Exposes the new
Auth.updateCurrentUserAPI for copyingfirebase.Userobjects between Firebase apps. - Updated the return type signature for
signInWithEmailAndPassword,signInWithCustomToken,signInAnonymouslyandcreateUserWithEmailAndPasswordto return a promise that resolves with aUserCredentialinstead of a user. - Removed
getTokenAPI in favor ofgetIdTokenandgetIdTokenResult. - Deprecated
signInWithCredential,linkWithCredential,reauthenticateWithCredentialandfetchProvidersForEmailin favor ofsignInAndRetrieveDataWithCredential,linkAndRetrieveDataWithCredential,reauthenticateAndRetrieveDataWithCredentialandfetchSignInMethodsForEmail. - Improved detection of external auth state changes for synchronizing Auth state between different windows.
Realtime Database
- Removed the private
pathproperty fromfirebase.database.Reference.
Cloud Firestore
- Merged the
includeQueryMetadataChangesandincludeDocumentMetadataChangesoptions passed toQuery.onSnapshot()into a singleincludeMetadataChangesoption. -
QuerySnapshot.docChanges()is now a method that optionally takes anincludeMetadataChangesoption. By default, even when listening to a query with{ includeMetadataChanges:true }, metadata-only document changes are suppressed indocChanges(). - Added new
{ mergeFields: (string|FieldPath)[] }option toset()which allows merging of a reduced subset of fields.
Storage
- Removed the previously deprecated
FullMetadata.downloadURLsandUploadTaskSnapshot.downloadURLproperties.
Version 4.13.0 - April 19, 2018
- Added support for an alternate
initializeAppsyntax, to facilitate additional config options. - Fixed the version of our
devDependenciesthroughout 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.onLinesometimes errantly reportsfalse. - Fixed an issue where Firefox multi-tab/private mode browsing threw errors with our IndexedDB implementation.
- Exposes the new
getIdTokenResultAPI forfirebase.Userobjects.
Cloud Firestore
- Added a new
Timestampclass 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 makeDocumentSnapshots read timestamp fields back asTimestamps instead of Dates, you can set the newly added flagtimestampsInSnapshotsinFirestoreSettingstotrue. Note that the current behavior (DocumentSnapshots returning JS Date objects) will be removed in a future release.Timestampsupports higher precision than JS Date. - Added ability to control whether
DocumentReference.get()andQuery.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
getTokenwas throwing errors in Worker environments. - General cleanup and hardening of the entire messaging codebase. added Typescript types, additional tests, etc.
Storage
- Deprecated the
FullMetadata.downloadURLsandUploadTaskSnapshot.downloadURLproperties in favor ofReference.getDownloadURL()
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
useServiceWorkerfunction to better communicate the intended use case.
Version 4.12.0 - March 20, 2018
Authentication
- Added several APIs to support the new passwordless email sign in feature.
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
nsquery parameter.
FCM
- Added the
usePublicVapidKeyAPI 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
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
includeMetadataChangesoption enabled) now receive an event withsnapshot.metadata.fromCacheset totrueif the SDK loses its connection to the backend. A new event withsnapshot.metadata.fromCacheset to false will be raised once the connection is restored and the query is in sync with the backend again. - Added
SnapshotOptionsAPI to control how DocumentSnapshots return unresolved server timestamps. - Added
disableNetwork()andenableNetwork()methods toFirestoreclass, allowing for explicit network management. - For non-existing documents,
DocumentSnapshot.data()now returnsundefinedinstead of throwing an exception. A newQueryDocumentSnapshotclass is introduced for Queries to reduce the number of undefined-checks in your code. - Added
isEqualAPI toGeoPoint,Blob,SnapshotMetadata,DocumentSnapshot,QuerySnapshot,CollectionReference,FieldValueandFieldPath. - 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
- Added new APIs
firebase.auth.Auth.prototype.createUserAndRetrieveDataWithEmailAndPassword,firebase.auth.Auth.prototype.signInAndRetrieveDataWithCustomToken,firebase.auth.Auth.prototype.signInAndRetrieveDataWithEmailAndPasswordandfirebase.auth.Auth.prototype.signInAnonymouslyAndRetrieveDatawhich function the same as their counterparts but return a promise that resolves with afirebase.auth.UserCredentialinstead of afirebase.User. These methods will be eventually renamed to replace the older methods.
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
localStorageerrors 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.metadatawhich includes information about user creation time and last sign in time. - Added the
isNewUserproperty tofirebase.auth.AdditionalUserInfo, which is returned by sign in methods to indicate whether a user is a new or returning user. - Fixed a
TypeErrorthrown after manually clearing localStorage
Realtime Database
- Fixed a regression introduced in version
4.5.1where authenticated user info was not properly being passed to the server, causing reads and writes to fail withpermission_deniederrors.
Cloud Firestore
- Fixed the validation of nested arrays to allow indirect nesting.
- We now support
FieldValue.delete()sentinels inset()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_VERSIONwas 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 anorderBy()orwhere()clause in a query.
Version 4.5.0 - October 2, 2017
- Added support for Cloud Firestore. For more information, see the following resources::
Version 4.4.0 - September 21, 2017
Authentication
- Fixed some issues with null initialization of several classes in the externs files.
Realtime Database
- Added multi-resource support to the database SDK.
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
phoneNumberproperty onprovideDataobjects. - Fixed temporary error message when opening a popup for sign-in, prominent in some IE browsers.
- Refactored to not use
navigator.onLinefor offline detection in Cordova environments.
Realtime Database
- Fixed an issue where database references were missing a
toJSONmethod.
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
signInWithRedirectwere 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.prototypewas being incorrectly patched. - Fixed an issue where loading the SDK from our CDN, while also
providing a chunked webpack build, was duplicating the
webpackJsonpnamespace.
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
serviceAccountandcredentialproperties 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
- Added support for phone number authentication using the following APIs:
- Augmented the IdP data (for a list of all supported fields see
firebase.auth.UserCredential) returned by the following APIs: - Added the
firebase.auth.Auth.prototype.onIdTokenChangedmethod that triggers on ID token changes. - Fixed an issue where new anonymous users were created on page load instead of returning an existing one.
- Fixed an issue where
firebase.User.prototype.updateProfilewas not triggering an update in password provider data. - Deprecated
firebase.User.prototype.getTokenin favor offirebase.User.prototype.getIdToken. - BREAKING:
firebase.auth.Auth.prototype.onAuthStateChangednow triggers on sign in and sign out. - BREAKING:
firebase.User.prototype.reauthenticatehas been removed in favor offirebase.User.prototype.reauthenticateWithCredential. - BREAKING:
firebase.User.prototype.linkhas been removed in favor offirebase.User.prototype.linkWithCredential. - BREAKING:
firebase.AuthCredential.prototype.providerhas been removed in favor offirebase.AuthCredential.prototype.providerId.
Version 3.9.0 - April 25, 2017
Authentication
- Deprecated
firebase.auth.authCredential.prototype.providerin favor of thefirebase.auth.AuthCredential.prototype.providerIdproperty. - 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
- Added new APIs
reauthenticateWithPopupandreauthenticateWithRedirectfor reauthenticating with an OAuth provider using a popup or a redirect. - Added the
operationTypeproperty to thefirebase.auth.UserCredentialobject to determine if the result was obtained from asignIn,linkorreauthenticateoperation. - Added support for Cordova OAuth sign-in using the
signInWithRedirect,linkWithRedirect, andreauthenticateWithRedirectmethods. - Deprecated
firebase.User.prototype.linkin favor of thefirebase.User.prototype.linkWithCredentialmethod. - Deprecated
firebase.User.prototype.reauthenticatein favor of thefirebase.User.prototype.reauthenticateWithCredentialmethod.
Version 3.7.8 - April 14, 2017
- Fixed an issue where
npm-shrinkwrap.jsonwas 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 onUploadTask.
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-specificstatequery parameter.
Version 3.6.8 - January 31, 2017
- Fixed an issue with some module bundlers. The npm (commonjs)
modules no longer require a
globalvariable to be set explicitly and fallback towindoworselfifglobalis 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()andfirebase.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
- Improved error messages when invalid metadata is passed to the
put,putString, orupdateMetadatamethods.
Version 3.6.4 - December 13, 2016
Realtime Database
- Added the missing
firebase.database.ServerValue.TIMESTAMPproperty to the TypeScript type declarations (firebase.d.ts).
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
- Added support for custom OAuth parameters using the
GoogleAuthProvider.setCustomParameters(),FacebookAuthProvider.setCustomParameters(), andGithubAuthProvider.setCustomParameters()methods.
Cloud Messaging
- Introduction of Firebase Cloud Messaging for the JavaScript SDK.
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()orfirebase.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/movefor a child nodewalkwill cancel transactions at/,/move, and/move/walkand 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 anyReferenceorQueryfor equality.
Version 3.3.2 - September 8, 2016
Authentication
- Fixed an issue with
signInWithPopup()not working with Internet Explorer.
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-useandauth/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
contentTypein 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 aserviceAccountto use the Authentication for Servers APIs in your app, or pass anapiKeyto use the client Authentication APIs. - Network error handling for sign in and link with popup operations.
- Long popup cancellation timeouts.
- When you use
signInWithRedirect, theonAuthStateChangedobserver now waits untilgetRedirectResultresolves before triggering. (In older versions, the observer would trigger twice: once when the page loaded, and a second time whengetRedirectResultresolved.)
Realtime Database
- A warning is no longer logged if you don't provide an
apiKeywhen 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 anapiKey.
Storage
- Added support for string and base64 encoded uploads
(
Reference.put()andReference.putString()).
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
-
UploadTaskcan 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
uidto the decoded token returned byverifyIdToken(). It is set to the ID token'ssub(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"instorageBucketconfig.
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-environmenterror when trying to use unsupported operations (signInWithPopup,signInWithRedirect,linkWithPopup,linkWithRedirectandgetRedirectResult).
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
Promiseobject 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
- Launch of new APIs and Firebase console.
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
databaseAuthVariableOverrideoption (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.

