To review release notes for the Firebase console and for other Firebase platforms and related SDKs, refer to the Firebase Release Notes.
Version 10.14.0 - September 30, 2024
Data Connect
Added the Data Connect package to the SDK.
Added App Check support.
Cloud Firestore
Re-enabled
useFetchStreams
with the latest WebChannel implementation. This reduces the memory usage of WebChannel.Refactored Cloud Firestore client instantiation. This prepares for future releases that require the client to restart.
Version 10.13.2 - September 18, 2024
Authentication
- Suppress the use of the parameter
referrerPolicy
withinfetch
requests originating from Cloudflare Workers. Cloudflare Worker environments do not support this parameter and all Auth operations would silently fail. Fixes GitHub Issue #8355.
Cloud Firestore
- Fix an issue with metadata
fromCache
defaulting totrue
when listening to cache in multiple browser tabs. See GitHub PR #8343.
Version 10.13.1 - August 29, 2024
- Removed an unnecessary
console.log
statement. See GitHub Issue #8436. - Updated
undici
dependency to 6.19.7 due to a memory leak in older versions. See GitHub Issue #8431
Cloud Functions for Firebase Client SDK
- Allow a custom path in Firebase Functions custom domain. See GitHub Issue #8440
Version 10.13 - August 15, 2024
- The compat package now checks whether firebase is defined in the
global
scope. Fixes GitHub Issue #8409. - Prevent heartbeats from throwing errors. Fixes GitHub Issue #8407.
Cloud Firestore
- Add support for reading and writing Firestore vectors. See GitHub PR #8215.
Authentication
- Remove
localStorage
synchronization on storage events in Safari iframes. See GitHub PR #8408.
Cloud Storage
- Migrate from the Node to the Web ReadableStream. See GitHub PR #8410.
Version 10.12.5 - August 1, 2024
Reverted the change that added the safevalues library, as it is not compatible with ES5 bundles. We will return to using
safevalues
when we migrate all our builds away from ES5.Properly handle the case in
app-compat
checks wherewindow
exists butself
does not. (This occurs in Ionic Stencil's Jest preset, for example.)Fixed typos in documentation and some internal variables and parameters.
Version 10.12.4 - July 18, 2024
- The SDK now uses the safevalues library to sanitize HTML vulnerable to XSS.
Version 10.12.3 - July 3, 2024
- Updated browser environment detection logic in
firebase/util
to allow for the experimental use ofFirebaseServerApp
instances in edge runtimes. See GitHub Issue #8299. - Guard the use of
FinalizationRegistry
inFirebaseServerApp
initialization based on the availability ofFinalizationRegistry
in the JavaScript runtime. See GitHub Issue #8299. - The
FirebaseServerAppSettings.name
field inherited fromFirebaseAppSettings
is now omitted instead of overloading the value asundefined
. This fixes a TypeScript compilation error. For more information, see GitHub Issue #8336.
Cloud Firestore
- Fixed a metadata sync issue with multi-tab persistence and snapshot listeners. See GitHub Issue #8314.
- Fixed a typo in the
package.json
ofwebchannel-wrapper
that causedbloom-blob
to be missing theesm5
specifier. See GitHub Issue #8319.
Vertex AI in Firebase
- Added a new publicly exported
VertexAIError
class. See GitHub PR #8240.
Version 10.12.2 - May 27, 2024
Authentication
- Changed
types
paths to point to rolled-up publicd.ts
files. This fixes TypeScript compilation errors in the web extension and cordova bundles. See GitHub Issue #8222.
Vertex AI in Firebase
- Changed
types
paths to point to point to rolled-up publicd.ts
files. This fixes some TypeScript compiler errors. See GitHub PR #8256
Version 10.12.1 - May 20, 2024
Analytics
- Fixed a bug where
setConsent
was incorrectly passing consent parameters togtag()
. See GitHub Issue #8210.
Cloud Firestore
- Fixed a multi-tab persistence issue that caused empty snapshots.
Version 10.12.0 - May 13, 2024
Vertex AI in Firebase
- Initial release of the Vertex AI for Firebase SDK (public preview). Learn how to get started with the SDK in your app.
Cloud Firestore
Updated
@firebase/webchannel-wrapper
to consume Closure dependencies from theclosure-net
GitHub repo.Fixed multi-byte character decoding bug by updating
webchannel-wrapper
dependency.
Version 10.11.1 - April 25, 2024
Authentication
- The SDK now emits a module package file with
esm2017
browser extension builds. See GitHub Issue #8115. - Update
jszip
transient dependency from3.7.1
to3.10.1
.
Cloud Firestore
- Prevent spurious "Backend didn't respond within 10 seconds" errors when network is in fact responding, but slowly. See GitHub PR #8145.
- Update
protobufjs
transitive dependency from6.11.3
to7.2.6
. - Return to using
xmlhttprequest
for bidi-streams, asfetch
streams seem to be having connection issues. - Reduce code bundle size by 6.5 kB in applications that only use
memory persistence (the default persistence mode). This bundle size regression
was accidentally introduced in version
10.7.2
.
Version 10.11.0 - April 11, 2024
-
FirebaseServerApp
is no longer JSON serializable. - Upgraded
undici
version to5.28.4
due to the low severity security issue CVE-2024-30260. - Updated dependencies in Auth, Firestore, Storage and App. See GitHub PR #8098.
Cloud Firestore
- Fixed an issue where client side indexing on timestamp fields leads to incorrect query results. See GitHub issue #8031.
Cloud Messaging
- Revised token update logic to prevent unnecessary token deletions during transient network issues. See GitHub PR #8141.
Version 10.10.0 - March 28, 2024
- Added the new
FirebaseServerApp
interface to bridge state data between client and server runtime environments. This interface extendsFirebaseApp
.
Authentication
- Updated transitive dependencies based on generated dependabot security reports. See GitHub PR #8088.
- Additional protection against misuse of the
authTokenSyncURL
experiment. See GitHub PR #8076.
Version 10.9.0 - March 14, 2024
Authentication
- Fixed a potential XSS vulnerability through
FIREBASE_DEFAULTS
settings. See PR #8056 for more information.
Cloud Firestore
- Added the
ListenSource
enum toSnapshotListenOptions
to provide an option to retrieve data from local cache only.
Version 10.8.1 - February 28, 2024
- Upgrade
undici
version to5.28.3
due to the low severity security issue CVE-2024-24758.
Version 10.8.0 - February 1, 2024
- Fixed to catch
transaction.done
errors inreadHeartbeatsFromIndexedDB
and log them as a warning, because platform logging errors should never block user app functionality.
Authentication
- Added a
firebase/auth/web-extension
entry point for web extension developers. This entry point does not include any code that loads remote scripts, which are disallowed under Manifest V3. In extensions, this entry point should replacefirebase/auth
completely, and developers should not try to use both in the same app. See GitHub issue #7617.
Analytics
- Added two new consent options to the
ConsentSettings
interface:ad_personalization
andad_user_data
.
Realtime Database
- Fixed issue where
queryConstraint.type
was undefined.
Cloud Firestore
- Fixed
isSafari()
throwing in React Native. See GitHub issue #7962.
Version 10.7.2 - January 18, 2024
- Catch and warn IndexedDB
createObjectStore
errors in Safari-based browsers. See GitHub issue #7829.
Cloud Firestore
- Update the
isEqual
function forarrayUnion
,arrayRemove
andincrement
. See GitHub issue #7706. - Fixed leak of grpc-js resources on terminate. See GitHub issue #7747.
- Adjusted the automatic index creation parameters to use more optimal values for the platform/browser detected at runtime.
- Support special characters in query paths sent to
getCountFromServer(...)
,getCount(...)
(lite API), andgetDocs(...)
(lite API).
Version 10.7.1 - December 5, 2023
App Check
- Prevent App Check from logging "uncaught" cancelled promises. The cancelled promises are part of App Check's expected behavior, and their cancellation wasn't intended to produce errors or warnings. See GitHub issue #7805.
Authentication
- Added protections when enumerating an empty list in Auth's reading of IndexedDB results, as this causes errors in some macOS and iOS browser runtimes. See GitHub issue #7825.
Version 10.7.0 - November 27, 2023
- Replaced
node-fetch
dependency with the latest version ofundici
in Node.js SDK builds for Auth, Firestore, Cloud Functions, and Storage. See GitHub issue #7280. - Introduced more safeguards to ensure that heartbeat objects queried from IndexedDB include a heartbeats field.
Authentication
- Exposed
INVALID_LOGIN_CREDENTIALS
asauth/invalid-credential
error and updated docs for various Auth SDK methods.
Cloud Firestore
- Introduced fixes for high memory usage of Firestore in browsers. See GitHub issue #6118.
Version 10.6.0 - November 9, 2023
- Provide a more robust check to cover more cases of empty heartbeat data.
Authentication
- Add Sign in with Apple token revocation support.
Cloud Firestore
- Allow converter return value of undefined. See GitHub issue #7719.
Version 10.5.2 - October 26, 2023
Authentication
- Added the
TotpMultiFactorGenerator
andTotpSecret
exports that were missing from the React Native entry point.
Cloud Firestore
- Rolled back the use of
useFetchStreams
, which had led to hanging queries. This bug was introduced in 10.4.0.
Version 10.5.1 - October 26, 2023
Authentication
- Fixed issues with
FetchProvider
in non-browser environments. See Github issue #7633.
Cloud Firestore
- Clarified API documentation around
getFirestore()
andinitializeFirestore()
functions.
Version 10.5.0 - October 12, 2023
Cloud Firestore
Added support for
sum
andaverage
aggregations.Added a default template type parameter to
withConverter()
methods to allow backward compatibility with version 9 of the SDK.
Version 10.4.0 - September 14, 2023
Cloud Firestore
Added
enablePersistentCacheIndexAutoCreation()
function to enable automatic creation of local cache query indexes, which can improve performance of local query execution.Fixed an issue where Cloud Firestore was incorrectly using XHR instead of
fetch
for streaming response.Updated dependency
grpc-js
from version~1.8.17
to~1.9.0
.
Version 10.3.1 - August 31, 2023
Cloud Firestore
- An internal refactor related to client-side index creation.
Version 10.3.0 - August 22, 2023
Authentication
Fixed a regression in version 10.0.0 caused by adding a hard dependency on
@react-native-async-storage/async-storage
as a convenience for React Native developers. This caused unnecessary warnings during npm or Yarn install for non-React Native users, and in some cases, React version conflicts.10.3.0 will break React Native users who have converted to using
getAuth()
to initialize Authentication. React Native users who want persistent auth state must now explicitly import@react-native-async-storage/async-storage
and provide it toinitializeAuth()
as an option like so:import { initializeAuth, getReactNativePersistence } from 'firebase/auth'; import ReactNativeAsyncStorage from '@react-native-async-storage/async-storage'; const auth = initializeAuth(app, { persistence: getReactNativePersistence(ReactNativeAsyncStorage) }); // getAuth() can be used any time after initialization
See Github issue #7522.
Cloud Firestore
- Fixed a bug that caused high memory usage in Safari. See Github issue #6118.
Version 10.2.0 - August 17, 2023
Authentication
Added a
validatePassword
method for validating passwords against the password policy configured for the project or a tenant. This method returns a status object that can be used to display the requirements of the password policy and whether each one was met.Fixed a bug in the
onAuthStateChanged
canceller. See Github issue #7383.The SDK now raises an error if
initializeRecaptchaConfig
is called in a Node.js environment.
Cloud Firestore
- Updated
@grpc/proto-loader
from v0.6.13 to v0.7.8. This addresses a vulnerability in an older version of the transitive dependencyprotobufjs
.
Version 10.1.0 - July 20, 2023
Authentication
Implemented
authStateReady()
, which returns a promise that resolves immediately when the initial auth state is settled andcurrentUser
is available. When the promise is resolved,currentUser
might be a valid user ornull
if there is no user signed in currently.Unpinned the version of the dependency
@react-native-async-storage/async-storage
so that React Native users have more control over which version of it they use. See Github issue #7448.
Cloud Firestore
Updated the
grpc
dependency to the latest version. See Github PR #7452.Fixed issue where
count
andfirestore-lite
API queries did not work with named databases. See Github PR #7440.
Version 10.0.0 - July 6, 2023
The Firebase JavaScript SDK v10.0.0 has a number of breaking changes related to the React Native bundle for Authentication, as well as typings changes across several products.
Authentication
Removed explicit
firebase/auth/react-native
entry point. The React Native bundle should be automatically picked up by React Native build tools which recognize thereact-native
fields inpackage.json
(at the top level and inexports
). See Github PR #7138.Changed
getAuth()
in the React Native bundle to default to importingAsyncStorage
from@react-native-async-storage/async-storage
instead of from thereact-native
core package (which has recently removed it). See Github PR #7128.Changed the type of
ParsedToken
values fromany
tounknown
.Reordered
RecaptchaVerifier
parameters soauth
is the first parameter.
Realtime Database
- Updated type of action parameter for
DataSnapshot#forEach
.
Cloud Firestore
Fixed
updateDoc()
typing issue by adding a second type parameter toFirestoreDataConverter
. See Github PR #7310.Changed
UpdateData
to expand support for types with index signatures. See Github PR #7318.Fixed an issue where
localCache
was not copied as part ofSettings
.Fixed some incorrectly generated source maps for the following bundles:
index.esm2017.js
,index.cjs.js
,index.node.mjs
, andindex.browser.esm2017.js
(lite SDK only).
Version 9.23.0 - June 21, 2023
Cloud Firestore
- Exposed the MultiDB API for public preview. See Github PR #7356.
Version 9.22.2 - June 8, 2023
- Fixed the types path for
compat/app
to deliver the proper typings to the compat packages. See Github issue #7279.
Cloud Firestore
- Fix potentially false warning message when configuring host in both
settings()
andconnectFirestoreEmulator()
. See Github issue #7331.
Version 9.22.1 - May 25, 2023
App Check
- Added support for App Check replay protection in callable functions. See Github PR #7296.
Cloud Firestore
- Updated dependencies to enable setting
experimentalLongPollingOptions.timeoutSeconds
. See Github PR #7311.
Version 9.22.0 - May 12, 2023
Made the error more helpful when
getApp()
is called beforeinitializeApp()
. See Github PR #7263.Improved error handling for heartbeat read/write errors. See Github issue #6871.
Authentication
- The SDK now allows port numbers in
authDomain
. See Github issue #7233.
Cloud Firestore
Enabled long-polling networking mode auto detection by default. It can be explicitly disabled by setting
FirestoreSettings.experimentalForceLongPolling
tofalse
. See Github PR #7236.Added the ability to configure the long-polling
GET
request timeout using the newexperimentalLongPollingOptions.timeoutSeconds
setting. See Github PR #7176.
Version 9.21.0 - April 27, 2023
Analytics
- Added method
getGoogleAnalyticsClientId()
to retrieve an unique identifier for a web client. This allows users to log purchase and other events from their backends using Google Analytics 4 Measurement Protocol and to connect them to actions taken on the client within their Firebase web app.getGoogleAnalyticsClientId()
simplifies this event recording process. See Github PR #7158.
App Check
- Added method
getLimitedUseToken()
which requests a Firebase App Check token. This method should be used to authorize requests to non-Firebase backends. See Github PR #7169.
Cloud Firestore
Created
MemoryLruGarbageCollector
a new LRU garbage document collector for memory cache. See Github PR #6943.Optimized the local cache synchronization logic to reduce the number of billed document reads when documents were deleted on the server while the client was not actively listening to the query (e.g. while the client was offline). See Github PR #7229.
Fixed stack overflow caused by deeply nested server timestamps. See Github PR #7139.
Simplified the internal handling of aggregation results. See Github PR #7170.
Updated exports of
webchannel-wrapper
(a Firestore dependency) to conform to Node ESM standards. See Github PR #7228.
Authentication
- Increased the popup poller timeout to 8s to support blocking functions for Firefox. See Github PR #7140.
Version 9.20.0 - April 18, 2023
App Check
- Fixed ReCAPTCHA error handling so that the SDK now catches all ReCAPTCHA errors and then prevents the SDK from making a request to the App Check exchange endpoint, which prevents unnecessary 403 errors and throttling. See Github PR #7203.
Authentication
Added App Check support in Authentication.
Added ReCAPTCHA Enterprise support.
Cloud Firestore
- Fixed a bug that sometimes prevented aggregations from being run when multi-tab persistence was enabled.
Version 9.19.1 - March 31, 2023
Authentication
- Fixed typings for
TotpMultiFactorGenerator
. This fixes a reversion in 9.19.0. See Github issue #7174.
Version 9.19.0 - March 30, 2023
Authentication
Support
TOTP
as a multi-factor option in Firebase Auth/GCIP. See Github PR #7146.Modify
_fail(...)
to useAuthErrorCode.NETWORK_REQUEST_FAILED
and accept an error message. See Github PR #7125.
Analytics
- Use the Trusted Types API when composing the gtag URL. See Github PR #7155.
Cloud Firestore
Introduced additional configurations for Firestore SDK Cache. See Github PR #7015.
Verify
DOMException
exists before referencing it. See Github PR #7130.
Version 9.18.0 - March 16, 2023
Authentication
- Fixed a bug where
updateCurrentUser
set user metadata toundefined
. See Github issue #7066.
Cloud Firestore
Added support for disjunctions in
OR
queries. See Github PR #7053.Improved debug logging of
GrpcConnection
andWebChannelConnection
. See Github PR #7076.Updated check for an IndexedDB bug in Safari to include
navigator.userAgent
when determining whether to trigger a workaround. This is helpful for Cordova apps that lackappVersion
in their webview but need to apply the workaround. See Github issue #6509.
Version 9.17.2 - March 2, 2023
Authentication
- Modified
_fail(...)
to useAuthErrorCode.INTERNAL_ERROR
and accept an error message. See Github PR #7038.
Realtime Database
- Fixed issue where Vite with Astro could not resolve the correct output bundle. See Github PR #7055.
Cloud Firestore
Relaxed query validation performed by the SDK. See Github PR #7024.
Refactored platform-specific logic to create
TextEncoder
andTextDecoder
objects. See Github PR #7018.Modified all base64 decoding functions to explicitly throw an error on invalid input, as some previous implementations silently accepted invalid input. See Github PR #7019.
Refactored the aggregation implementation to support future aggregate functions. See Github PR #6952.
Implemented
closed
property in the reader returned fromtoByteStreamReaderHelper
which previously only raised anunimplemented
error. See Github PR #7058.
Version 9.17.1 - February 3, 2023
- Moved
exports.default
fields to always be the last field. This fixes a bug introduced in 9.17.0 that prevented some bundlers and frameworks from building. For these build failures, the error text is: "Default condition should be last one".
Version 9.17.0 - February 2, 2023
- Added browser CJS entry points (expected by Jest when using JSDOM mode). See Github PR #6981.
Authentication
- Exposed
TOKEN_EXPIRED
error when multi-factor authentication (MFA) unenroll logs out the user. See Github PR #6973.
Realtime Database
- Fixed issue where hostname set by
connectDatabaseEmulator
was being overridden by longpolling response. See Github issue #4603.
Cloud Firestore
- Reduced memory usage by applying query check sooner in remote document cache. See Github PR #6989.
Cloud Storage
- Fixed issue where users were unable to check if an error was an instance of
StorageError
. See Github issue #6944.
Version 9.16.0 - January 19, 2023
Allow users to specify their environment as
node
orbrowser
to override Firebase's runtime environment detection and force the SDK to act as if it were in the respective environment.Example:
export __FIREBASE_DEFAULTS__='{"forceEnvironment":"browser"}'
Reformat a comment that causes compile errors in some build toolchains. See Github issue #6838.
Removed unused
peerDependencies
in@firebase/auth-interop-types
. This should remove installation warnings forfirebase-admin
users. See Github PR #6940.
Authentication
- Added a fix to minimize a potential race condition between
initialization of the Authentication SDK and
signInWithRedirect
. See Github issue #6827.
Realtime Database
- Fixed an issue where
connectDatabaseToEmulator
was sometimes called twice during a hot reload See Github issue #6853.
Cloud Firestore
Updated internal logic behind
AND
andOR
queries to ensure consistency with older implicitAND
queries. See Github PR #6896.Fixed an issue that stops some performance optimization being applied. See Github PR #6893.
Cloud Storage
- Fixed an issue where
pause
throws an error when a request is in flight. See Github issue #6935.
Version 9.15.0 - December 8, 2022
Upgraded TypeScript in each individual package to 4.7.4. The earlier update in version 9.13.0 upgraded TypeScript only in the root.
Fixed a bug that caused Firebase SDKs to throw an error in Firefox browsers when third-party cookies are blocked. See Github issue #6801.
Updated
firebase/[product]
entry point bundles to conform to Node.js ES module specifications.
Realtime Database
- Added support for
startAfter
andendBefore
query params to the REST API and wire protocol. This change does not affect the existing public API. See Github PR #6706.
Cloud Firestore
- Functions in the Firestore package that return
QueryConstraints
(for example:where(...)
,limit(...)
, andorderBy(...)
) now return a more specific type, which extendsQueryConstraint
. See Github PR #6694.
Version 9.14.0 - November 10, 2022
Cloud Messaging
- Exposed
icon
field for thenotification
payload. See Github PR #6728.
App Check
- Corrected the clearing of the App Check exchange promise after a request succeeds. See Github issue #6734.
Cloud Firestore
Updated "missing index" error message to include the link to create the composite index. See Github issue #6613.
Updated
transaction.set()
failure to now retry onalready-exists
error. See Github PR #6729.
Performance Monitoring
- Expanded check in
getServiceWorkerStatus
to account for anavigator
that has a key ofserviceWorker
with a falsy value. See Github PR #6723.
Version 9.13.0 - October 27, 2022
- Upgraded TypeScript to 4.7.4. See Github PR #6682.
Cloud Messaging
- Exposed
icon
field for thenotification
payload. See Github PR #6722.
Cloud Storage
- Fixed issue where clients using Node.js v18 would use the native
Blob
object, which is incompatible withnode-fetch
. See Github PR #6705.
Version 9.12.1 - October 12, 2022
- Added error catching for when the SDK checks
__FIREBASE_DEFAULTS__
in order to not block other app functionality on error. See Github issue #6677.
Analytics
- Corrected
id
type insetUserId
. See Github PR #6671.
Cloud Storage
- Cleared retry timeouts when uploads are paused/canceled. See Github PR #6667.
Version 9.12.0 - October 11, 2022
Removed
__FIREBASE_DEFAULTS_PATH__
option, as the current implementation caused Webpack warnings. Fixedprocess.env
check to be compatible with environments whereprocess
exists butprocess.env
does not. See Github issue #6660.Fixed IPv6 addresses in emulator autoinit for Cloud Firestore, Realtime Database, Cloud Functions for Firebase Client SDK, and Cloud Storage. See Github issue #6673.
Cloud Firestore
Set
withCredentials=true
when making requests via non-streaming RPCs, as is done for streaming RPCs. See Github PR #6643.Fixed Firestore failing to raise initial snapshot from empty local cache result. See Github issue #5873.
Analytics
- Updated Analytics to allow for multiple instances of
gtag
with different data layer names. See Github PR #6655.
Realtime Database
- Fixed
endBefore
andpush
documentation typos in Realtime Database documentation. See Github PR #6583.
Cloud Storage
- Fixed bug where upload status wasn't being checked after an upload failure. Implemented exponential backoff and max retry strategy. See Github PR #6653.
Version 9.11.0 - October 06, 2022
- Added functionality to auto-initialize project config and emulator settings from global defaults. This allows the SDK to work with the upcoming framework-aware Firebase tools (currently an experimental release).
App Check
- Fixed timer issues in the App Check SDK that caused the token to fail to refresh after it had expired, or had caused rapid repeated requests while attempting to do so. See Github issue #6373.
Cloud Firestore
Added
getCountFromServer()
(getCount()
in the Lite SDK), which fetches the number of documents in the result set without actually downloading the documents.Fixed a time travel issue across multiple tabs. See Github issue #6511.
Version 9.10.0 - September 15, 2022
Authentication
- Updated custom claim type of
ParsedToken
to beany
. This more accurately reflects that a JWT may contain any valid JSON object. See Github issue #6553.
Cloud Firestore
- Enabled
encodeInitMessageHeaders
to transition the Firestore client from encoding HTTP Headers via thehttpHeadersOverwriteParam
to the request'sPOST
payload. Note, this requires Cloud Firestore Emulator v1.14.4 or newer. See Github PR #6107.
Version 9.9.4 - September 1, 2022
Authentication
- Fixed proactive refresh logic in Authentication when Realtime Database, Cloud Firestore, or Cloud Storage are in use. See Github PR #6544.
Realtime Database
- Added experimental support for Deno. See Github PR #6560.
Cloud Firestore
- Fixed a bug that threw a
FAILED_PRECONDITION
error when writing to a deleted document in a transaction. See Github issue #6550.
Version 9.9.3 - August 18, 2022
- Removed all references to
@firebase/polyfill
. See Github issue #6503.
Realtime Database
Fixed issue where
get()
would return incorrect results when using a filteredget()
and anonValue()
event listener on the same path. See Github PR #6497.Fixed faulty transaction issue causing filtered index queries to override default queries. See Github PR #6508.
Reverted the type of
action
parameter forDataSnapshot.forEach()
. See Github issue #6368.
Version 9.9.2 - August 04, 2022
- Prevent the SDK from throwing errors if it is unable to log platform data due to an IndexedDB error. It will log a warning instead. See Github PR #6480.
Realtime Database
- Updated the type of the
action
parameter forDataSnapshot.forEach()
. See Github issue #6368.
Cloud Firestore
- Introduce client-side indexing with beta API
setIndexConfiguration()
. See Github PR #6496.
Version 9.9.1 - July 22, 2022
App Check
- Fixed throttling for App Check to prevent unnecessary requests to the backend. See Github issue #6373.
Cloud Firestore
- Updated
@grpc/proto-loader
dependency to addressprotobufjs
security issue. See Github issue #6438.
Testing SDK
- Updated
firebase-admin
andfirebase-functions
dependencies to addressprotobufjs
security issue.
Version 9.9.0 - July 07, 2022
- Added the missing CDN build and entry point for Firebase installations.
Analytics
Added function
setConsent()
to set the applicable end user "consent" state.Added function
setDefaultEventParameters()
to set data that is logged on every Analytics event.
Authentication
Fixed a bug that caused ReCAPTCHA conflicts between Authentication and App Check when using ReCAPTCHA Enterprise in App Check. See Github issue #6133.
Updated user agent detection to better detect iPad. This fixes a bug affecting some iPad devices running Cordova apps. See Github issue #6331.
Realtime Database
- Forced
get()
to wait to resolve until the SDK is connected to the Realtime Database backend. See Github issue #6036.
Cloud Firestore
- Fixed Node.js ESM
exports
paths forfirestore/lite
. See Github issue #6414.
Cloud Functions for Firebase Client SDK
- Updated
FunctionsErrorCode
type to include "functions/" prefix. See Github issue #6281.
Version 9.8.4 - June 23, 2022
Analytics
- Fixed typo in
GtagConfigParams
. See Github issue #6349.
Realtime Database
- Fixed issue where
get()
saved results incorrectly for non-default queries. See Github PR #6273.
Version 9.8.3 - June 09, 2022
Added
types
fields toexports
object inpackage.json
files for all published packages to make them compatible with TypeScript 4.7 support of Node.js ES modules. See Github issue #6300.Fixed some incorrect
package.json
paths to entry points in Authentication and Cloud Firestore.
Realtime Database
- Removed
@firebase/app-compat
as apeerDependency
of@firebase/database-compat
, which should not impact JS SDK users, but will preventfirebase-admin
users from seeing a warning during npm installation.
Cloud Messaging
- Fixed a bug where the
fcmOptions
field was missing fromonMessage()
andonBackgroundMessage()
payloads. See Github issue #6207.
Cloud Storage
- Fixed the Node.js ESM bundle to build from the Node.js entry point (it was incorrectly using the browser entry point). See Github issue #6343.
Version 9.8.2 - May 27, 2022
Authentication
Added missing
identities
field tofirebase
claim in the typings for the ID token result. See Github issue #6218.Updated the SDK to recognize Capacitor apps by detecting the
capacitor:
protocol. See Github issue #5020.Fixed a bug where
error.email
and other fields were not populated in the Google Sign-In error flow if the user had been disabled using the Firebase Console.
Version 9.8.1 - May 09, 2022
Authentication
- Fixed some typings issues that caused compile errors for TypeScript users. See Github issue #6246.
Version 9.8.0 - May 06, 2022
As of this version, Internet Explorer 11 is no longer officially supported by the Firebase JavaScript SDK.
Restored
idb
dependency and increased to the latest version, which supports ESM. This affects Analytics, App Check, Cloud Messaging, Performance Monitoring, and Remote Config. See Github issue #6154.
Authentication
- Added a
beforeAuthStateChanged()
middleware function which allows you to provide callbacks that are run before an auth state change sets a new user.
Realtime Database
- Added
forceWebSockets()
andforceLongPolling()
methods.
Cloud Firestore
- Added a
TransactionOptions
param to therunTransaction()
method.
Version 9.7.0 - April 28, 2022
App Check
- Updated App Check to use
v1
exchange endpoint instead ofv1beta
endpoint for both reCAPTCHA v3 and reCAPTCHA Enterprise.
Cloud Functions for Firebase Client SDK
- Added
httpsCallableFromURL()
, which calls a callable function using its URL.
Version 9.6.11 - April 14, 2022
- Set default IndexedDB transaction mode to
readonly
for IE11 compatibility.
Realtime Database
Fixes an issue where if a websocket protocol was used in the
databaseURL
, thewebSocketOnly
field was incorrectly set to undefined. (When usingwss
orws
protocols in thedatabaseURL
,webSocketOnly
is true and long polling is disabled). See Github PR #6126.Updated compat typings for
Reference
methods. See Github issue #6071.
Cloud Firestore
- Fixes an issue during multi-document lookup that resulted in the IndexedDB error "The parameter is less than or equal to this cursor's". See Github issue #6110.
Version 9.6.10 - March 24, 2022
- Removed unneeded typings from the internal package
@firebase/util
. These typings caused errors in some projects using both Node.js and TypeScript.
App Check
- Fixed a bug where
@firebase/app-check-types
was not included as a dependency of@firebase/app-check-compat
. This could potentially affect TypeScript compilation for users of theapp-check-compat
package.
Cloud Firestore
- Changed the format of some of the IndexedDB data stored by
the Cloud Firestore SDK. This increases the performance of document lookups
after an initial migration. If you do not want to migrate data, you can call
clearIndexedDbPersistence()
before invokingenableIndexedDbPersistence()
.
Version 9.6.9 - March 17, 2022
- Replaced
idb
dependency with in-house code to fix errors that occur when Node.js or SSR apps target ESM. This includes apps using Angular 13.1+. This fix affects Analytics, App Check, Cloud Messaging, Performance Monitoring, and Remote Config. See Github issue #6042.
Version 9.6.8 - March 4, 2022
Cloud Messaging
- Fixed a bug in
onBackgroundMessage()
that caused notifications to display twice. See Github issue #5516.
Version 9.6.7 - February 17, 2022
Cloud Firestore
Fixed a bug that caused Cloud Firestore streams to get restarted with the same App Check token.
On browsers that support IndexedDB v3, we now invoke
transaction.commit()
andIndexedDB.getAll()
to speed up data processing.Cloud Firestore queries are now sent to the backend before the SDK starts local processing, which reduces overall
Query
latency.
Version 9.6.6 - February 3, 2022
Authentication
- Fixed a bug where the
user.providerData
field was being improperly initialized. See firebaseui-web Github issue #917.
Cloud Firestore
- Added to the version 9 upgrade guide
important details about a potential breaking change in which the property
DocumentSnapshot.exists
has been changed from a property to a method. If your version 8-based app uses theexists
property, you must refactor your code as part of the upgrade to version 9.
Cloud Messaging
- Fixed an uncaught rejection in
isSupported()
when the environment does not support IndexedDB'sopen()
method. See Github issue #5868.
Version 8.10.1 - January 28, 2022
- Updated
node-fetch
dependency due to a security issue (CVE-2022-0235).
Version 9.6.5 - January 27, 2022
- Updated
node-fetch
dependency due to a security issue (CVE-2022-0235).
Authentication
Fixed errors in
auth-compat
when cookies are fully disabled in Chrome. See Github issue #5913.Added missing
PhoneMultiFactorInfo
public interface. See Github issue #5922.The SDK no longer causes React Native to log a warning about deprecation of
AsyncStorage
if the developer has provided the non-deprecated version. See Github issue #1847.
Cloud Firestore
- Fixed an App Check issue that caused Cloud Firestore listeners to stop working and receive a "Permission Denied" error. This issue only affected App Check developers that set their expiration time to under an hour. See Github issue #5842.
Version 9.6.4 - January 20, 2022
Authentication
Fixed the error code thrown when the network times out. See Github issue #5874.
Added
./cordova
and./react-native
paths to theexports
field inpackage.json
. See Github issue #5878.
Cloud Messaging
- Changed
exports
paths to always point to.cjs
bundles when in a Node.js context, since the Cloud Messaging SDK is currently unable to provide ESM bundles for Node.js. See Github issue #5839.
Version 9.6.3 - January 13, 2022
Cloud Firestore
- The Node.js SDK now bundles its internal
.proto
files into the code instead of reading them from the filesystem at runtime. This prevents errors likeno such file or directory
in certain types of deployments. See Github issue #5823.
Cloud Messaging
Fixed a bug where the
fcmMessageId
field in the message payload was incorrectly defined asfcm_message_id
.Add a CJS bundle for
messaging/sw
. This enables some SSR frameworks to run their Node.js pipelines without erroring. See Github issue #5854.
Version 9.6.2 - January 7, 2022
Authentication
- Fix persistence selection in compatibility layer in worker scripts. See Github issue #5791.
Cloud Firestore
FirestoreError
now extendsFirebaseError
. See Github issue #5754.Fixed an issue that caused incomplete
Query
snapshots when the SDK is backgrounded during query execution.
Cloud Storage
-
StorageError
now extendsFirebaseError
. See Github issue #5754.
Version 9.6.1 - December 9, 2021
Authentication
- Fixed errors that occurred during initialization of the Authentication SDK when the network is unavailable. See Github issue #5720.
Cloud Firestore
- Hardcoded the version of grpc-js sent to logs as a temporary fix
for
createRequire
issues in the Node.js CJS bundle.
Version 9.6.0 - December 2, 2021
Cloud Firestore
- Added support for App Check.
Version 9.5.0 - November 18, 2021
Cloud Storage
- Added
getBytes()
,getStream()
andgetBlob()
, which allow direct file downloads from the SDK.getStream()
is only available for Node.js andgetBlob()
is only available for browser-like environments.
App Check
Reduced the latency of the first
getToken()
call by proactively retrieving a token when App Check is initialized.App Check now throttles requests after some error codes to prevent overwhelming the endpoint.
Cloud Firestore
The SDK no longer accesses
IndexedDB
during a page unload event on Safari 15. This aims to reduce the occurrence of anIndexedDB
bug in Safari (https://bugs.webkit.org/show_bug.cgi?id=226547). See Github issue #5716.Updated the Node.js build to work better with Jest. See Github issue #5687.
Version 9.4.1 - November 11, 2021
Authentication
- Added
getReactNativePersistence()
as an export from the React Native bundle. See Github issue #1847.
Cloud Functions for Firebase Client SDK
- Clear pending timeout after
Promise.race()
. It allows the process to exit immediately in case the SDK is used in Node.js. Otherwise the process waits for the timeout to finish before exiting. See Github issue #5692.
Cloud Storage
- Clear the global timeout once an operation is done in the Cloud Storage SDK. Otherwise the pending timeout may prevent Node.js from exiting. See Github issue #5628.
Version 9.4.0 - November 08, 2021
Realtime Database
- Fixed a packaging issue that broke the Firebase Admin Node.js SDK. see Github issue #1487.
Cloud Firestore
- Expanded
Firestore.WithFieldValue<T>
to includeT
. This allows developers to delegateWithFieldValue<T>
inside wrappers of typeT
to avoid exposing Firebase types beyond Firebase-specific logic. see Github issue #5661.
Version 9.3.0 - November 04, 2021
- Added ESM entry point for Node.js and added
exports
field support to all packages.
App Check
- Added ReCAPTCHA Enterprise as an attestation option.
Authentication
Added the missing
SAMLAuthProvider
to the compatibility layer.Fixed bug that caused
onAuthStateChanged
to be fired twice. See Github issue #5685.
Version 9.2.0 - October 28, 2021
- Added an empty typings file to the
firebase
package to fix autocomplete problems in some IDEs. See Github issue #5649.
Authentication
Fixed behavior on subsequent calls to
getRedirectResult()
. See Github issue #5610.Fixed the public
AuthError
typing and update theMultiFactorError
implementation to follow the new standard (where all fields are listed undercustomData
).Fixed an error raised in Lighthouse reports by adding the attribute
aria-hidden="true"
to the embedded iframe. See Github issue #5631.The SDK now exports phone sign-in functionality in the React Native entry point (except for
RecaptchaVerifier
).Made the SDK resilient against
localStorage
andsessionStorage
permissions errors. See Github issue #5618.Fixed compatibility layer (
auth-compat
) errors that were being thrown in Safari. See Github issue #5644.
Cloud Firestore
Fixed
exports
fields to also point to ESM builds for Node.js. This change requires Node.js version 10+. See Github issue #5499.Added missing compat conversion for
runTransaction
. See Github issue #5627.Changed the networking API to use XHR instead of
fetch()
for React Native. See Github issue #1674.
Version 9.1.3 - October 14, 2021
Cloud Storage
- Fixed a bug causing an unhandled promise rejection in Node.js when the Cloud Storage client encounters a network error. See Github issue #5372.
Version 9.1.2 - October 07, 2021
App Check
Fixed incorrect typings. See GitHub issue #5569.
Updated
@firebase/app-check-compat
to correctly export and handleReCaptchaV3Provider
andCustomProvider
classes.
Authentication
Calls to
connectAuthEmulator
with thedisableWarnings
flag set to true will no longer cause aconsole.info
warning to be printed.Fixed a bug in the
OAuthProvider.prototype.credential
method that was preventing therawNonce
field from being populated in the returnedOAuthCredential
. See GitHub issue #5553.Fixed a bug where
user.tenantId
wasn't being carried over in theupdateCurrentUser
function.Fixed an issue in
@firebase/auth-compat
where the SDK tried to access fields from aundefined
variable.
Version 9.1.1 - September 30, 2021
Authentication
- Fixed a bug on iOS causing incorrectly formatted links to be sent in emails. See GitHub issue #5541.
Version 9.1.0 - September 24, 2021
Authentication
All browser persistence implementations such as
indexedDBLocalPersistence
are mapped toinMemoryPersistence
in Node.js to allow isomorphic code that works well with use cases like server-side rendering.emailVerified
field is now set in theUser
correctly. See GitHub issue #5430.Added missing phone
FACTOR_ID
static property to thePhoneMultiFactorGenerator
class. See GitHub issue #5480.Fixed wrongly-typed
tenantId
fields in requests to some endpoints.
Cloud Firestore
- Fixed a bug where
UpdateData
did not recognize union types or optional, dot-separated string fields.
Remote Config
- Added an
isSupported()
function. You can use this function to check if the current environment supports Remote Config, and only initialize Remote Config in supported environments.
Analytics
- Fixed an issue where
isSupported()
throws unexpected errors in certain environments.
App Check
Initialization no longer throws runtime errors in Node.js.
Debug mode check is delayed till
initializeAppCheck()
is called.
Cloud Messaging
- Fixed an issue where
isSupported()
throws unexpected errors in certain environments.
Performance Monitoring
- Fixed an issue where
isSupported()
throws unexpected errors in certain environments.
Testing SDK
Fixed typing issues where
Database
/Firestore
/Storage
compat instances returned byRulesTestContext
are not compatible with v9 modular APIs.Set
RTDB
namespace to be same asprojectId
by default instead of${projectId}-default-rtdb
. This fixes rules not being applied and other issues related to namespace mismatch.
Version 9.0.2 - September 9, 2021
Authentication
Fixed a bug where custom errors from blocking functions were being dropped. See GitHub issue #5386.
Removed
const enum
s from the public typings file.
Cloud Firestore
Improved the error handling when the SDK encounters a failure opening IndexedDB in a Firefox private browsing session. See GitHub issue #5377.
Fixed a deadlock during asynchronous initialization of both Cloud Firestore and Authentication. See GitHub issue #5402.
Fixed the behavior of
collection()
when passed multiple path segment strings. See GitHub issue #5431.Added a temporary workaround for a bug causing
initializeFirestore()
to throw errors when used in certain build pipelines, such as the default production build for Create React App. See GitHub issue #5384.
Cloud Functions for Firebase Client SDK
- The SDK now omits sending an App Check token header to the Cloud Functions endpoint if there is no valid App Check token to send.
Cloud Storage
- Fixed a bug that incorrectly threw an error when using
refFromUrl()
withconnectStorageEmulator()
. See Github issue #3715 in firebase-tools.
Version 9.0.1 - August 30, 2021
Fixed
.cjs
builds that caused errors in Node.js use cases, such as using SSR in AngularFire. See GitHub PR #5400.Fixed a typing issue in
@firebase/app-compat
. See GitHub issue #5382.Fixed incorrect import of
node-fetch
polyfill that caused uncaught exceptions when using Cloud Storage and thefirestore/lite
package from Cloud Firestore.
Authentication
- Fixed a typing issue caused by a missing constructor for
OAuthProvider
.
Cloud Firestore
Added export fields to make
firestore/lite
available in Node.js. See GitHub PR #5400.Fixed incorrect import of
node-fetch
polyfill that caused uncaught exceptions when usingfirestore/lite
.
Version 9.0.0 - August 25, 2021
- This release introduces the new modular API, which enables tree-shaking, bundle size reduction, and other benefits. See SDK versions 8 and 9 for more details. Users of version 8 will need to update their code in order for it to still work with version 9.0.0 and higher. We have provided a compat package to make this migration easier. See the upgrade guide for instructions for upgrading from version 8 or the setup guide for instructions for getting started from scratch with version 9+.
Cloud Messaging
- FCM now provides delivery data export to BigQuery as an Alpha feature. See Enable message delivery data export.
Cloud Firestore
- This release introduces Firestore Lite, a lightweight, standalone REST-only Firestore SDK that supports single document fetches, query execution, and document updates, at a fraction of the regular Web SDK size. See Cloud Firestore Lite Web SDK.
Version 8.10.0 - August 19, 2021
- Added or updated the
mockUserToken
option provided to theuseEmulator()
functions in Realtime Database, Cloud Firestore, and Cloud Storage. The details for each product are below.
Realtime Database
- Allow
useEmulator()
to also accept a string for itsmockUserToken
option.
Cloud Firestore
- Allow
useEmulator()
to also accept a string for itsmockUserToken
option.
Cloud Storage
Add an options object containing
mockUserToken
as a param foruseEmulator()
.Changed
ref()
so it does not throw if given a path string that contains..
.
Cloud Messaging
- Exposed the
messageId
property onMessagePayload
.
Testing SDK
- Fixed JWT encoding bug that broke interoperability with the Cloud Storage emulator.
Version 8.9.1 - August 10, 2021
App Check
- Fixed typings on params passed to
activate()
.
Version 8.9.0 - August 5, 2021
Analytics
- Fixed formatting of documentation comments and updated some event typings to correctly match Google Analytics 4 specs.
App Check
- Add
RecaptchaV3Provider
andCustomProvider
classes that can be supplied as params tofirebase.appCheck().activate()
.
Cloud Storage
- Added a browser CJS build as
./dist/index.browser.cjs.js
. This change was primarily to prevent breaking the Emulator UI.
Version 8.8.1 - July 29, 2021
- Added a missing dependency in the
@firebase/app-types
package.
Version 8.8.0 - July 22, 2021
Analytics
- Added
firebase_screen
andfirebase_screen_class
tologEvent()
overload forscreen_view
events. These fields are required to logscreen_view
events correctly to Analytics.
Realtime Database
- Fixed sending of Authentication tokens in Node.js. This bug affected Admin SDK users who have App Check enforced.
Cloud Firestore
The SDK no longer accesses IndexedDB during a page unload event on Safari 14. This aims to reduce the occurrence of an IndexedDB bug in Safari (https://bugs.webkit.org/show_bug.cgi?id=226547). See GitHub issue #4076.
Fixed an issue that prevented
Date
objects from being used viaupdate()
when connected to the Cloud Firestore emulator.
Cloud Storage
- Added Node.js support to Cloud Storage for Firebase. This release
changes the
main
field inpackage.json
to point to a Node-specific build. If you are building a bundle for browser usage, make sure that your bundler uses thebrowser
field (this is usually the default).
Version 8.7.1 - July 8, 2021
Realtime Database
- In Node.js, always send Authentication and App Check tokens when they are available.
Version 8.7.0 - July 1, 2021
App Check
Added a
getToken()
method that returns an App Check token asynchronously.Added an
onTokenChanged()
method that adds listeners to App Check token changes.Fixed an error causing
HTTP status 429
errors in debug mode. See GitHub issue #5052.
Authentication
- Fixed an issue where Cloud Firestore didn't detect Authentication, which led to permission denied errors. See GitHub issue #4932.
Version 8.6.8 - June 17, 2021
Authentication
- Fixed a bug where
linkWithPopup
,linkWithRedirect
,reauthenticateWithPopup
, andreauthenticateWithRedirect
weren't correctly picking up the emulator configuration. See GitHub issue #4879.
Cloud Firestore
- Fixed a bug that caused
Uncaught TypeError: e.auth.addAuthTokenListener is not a function
. See GitHub issue #5018.
Version 8.6.7 - June 10, 2021
Cloud Firestore
- Fixed a regression that prevented Cloud Firestore from detecting the Authentication service during initialization, which prevented some writes from being sent.
Version 8.6.5 - June 4, 2021
- Fixed an error where
firebase.SDK_VERSION
did not always contain the correct version number.
Cloud Firestore
- Fixed an issue where
FetchXmlHttpFactory
was not available.
Version 8.6.4 - June 3, 2021
Cloud Functions for Firebase Client SDK
- JavaScript
Date
objects are now serialized to an ISO string instead of an empty object.
Version 8.6.3 - May 27, 2021
Realtime Database
- Fixed an
"index not defined"
error that sometimes occurred during aget()
call on anorderByChild
query.
Cloud Firestore
- Added a warning message when
settings()
is used to override the original value ofhost
without also setting{merge: true}
.
Version 8.6.2 - May 20, 2021
Cloud Firestore
- Use
pagehide
event for page termination by default, instead ofunload
. See docs onpagehide
vsunload
.
Cloud Functions for Firebase Client SDK
- Fixed a bug in
httpsCallable()
when it is used in the same project as Cloud Messaging. See GitHub issue #4909.
Testing SDK
- Prevent
useEmulators()
from erroring when only thestorage
field is populated in the options parameter.
Version 8.6.1 - May 12, 2021
- Fixed a bug that caused crashes in Cloud Storage, Cloud Functions for Firebase Client SDK,
and Realtime Database when using the all-in-one
firebase
import, as inimport firebase from 'firebase'
.
Realtime Database
- Fixed an issue that could cause
once()
to fire more than once if the value was modified inside its callback.
Version 8.6.0 - May 11, 2021
App Check
- Published the App Check package.
Realtime Database
- Fixed typings for
useEmulator
.
Testing SDK
- Added support for Cloud Storage emulator.
Version 8.5.0 - May 5, 2021
Realtime Database
-
useEmulator
now accepts an optionalmockUserToken
.
Cloud Firestore
-
useEmulator
now accepts an optionalmockUserToken
.
Version 8.4.3 - April 29, 2021
Realtime Database
Fixed an issue that prevented the SDK from firing cancel events for Firebase Security Rules violations. See GitHub issue #4818.
Fixes a regression introduced in version 8.4.1 that broke
useEmulator()
. See GitHub issue #4811.
Version 8.4.2 - April 23, 2021
- Fixed outdated
peerDependencies
.
Cloud Firestore
Fixed an issue where errors from
grpc
are thrown directly to user code. Now they are wrapped inFirestoreError
.Fixed an issue where an empty
X-Firebase-GMPID
header is sent in the request whenappId
is not available. See GitHub issue #4795.
Cloud Storage
- Fixed the infinite recursion caused by the
FirebaseStorageError
message getter.
Version 8.4.1 - April 13, 2021
Realtime Database
- Fixed a build issue that caused SDK breakage.
Version 8.4.0 - April 12, 2021
Cloud Storage
- Added a
storage().useEmulator()
method to enable emulator mode for storage. This allows you to set a storage emulator host and port.
Cloud Firestore
- Fixed a bug where decimal inputs to
Timestamp.fromMillis()
were calculated incorrectly due to floating point precision loss.
Version 8.3.3 - April 08, 2021
- This update only includes internal refactoring.
Version 8.3.2 - March 31, 2021
- This update includes internal refactoring.
Version 8.3.1 - March 18, 2021
- Fixed a bug caused by an outdated version of the
tslib
dependency. See GitHub issue #4633.
Version 8.3.0 - March 10, 2021
Cloud Firestore
- Added support to remove the
FirestoreDataConverter
on aFirestore
reference by callingwithConverter(null)
Version 8.2.10 - March 4, 2021
Analytics
- Fixed typings for
analytics().logEvent()
so that theeventParams
argument is correctly typed as optional.
Version 8.2.9 - February 19, 2021
- API update for an internal package. There is no change in the public API.
Version 8.2.8 - February 18, 2021
Analytics
- Fixed a behavior causing
gtag.js
to be downloaded twice on Firebase Analytics initialization. See GitHub issue #2628.
Version 8.2.7 - February 11, 2021
Realtime Database
Fixed an issue with
Query.get()
whereQuery
filters were not applied to data in some cases.Added the missing type definitions for
startAfter()
andendBefore()
.
Cloud Firestore
Fixed a bug where local cache inconsistencies were unnecessarily being resolved.
Fixed the path to the react native memory-only build.
Version 8.2.6 - February 04, 2021
Authentication
- Fixed a bug where UTF-8 encoded strings were not decoded in
getIdTokenResult
. See GitHub issue #4174.
Realtime Database
- Fixed an issue with
startAfter
/endBefore
when used inorderByKey
queries.
Cloud Firestore
- Correctly handle
ignoreUndefinedProperties
inset({ merge: true })
. Previously this would behave as if the undefined value wereFieldValue.delete()
, which wasn't intended.
Version 8.2.5 - January 28, 2021
Realtime Database
- When issued for queries that are being listened to,
get()
calls no longer send backend requests.
Cloud Firestore
- Classes like
DocumentReference
andQuery
can now be serialized to JSON. See GitHub issue #4258.
Version 8.2.4 - January 21, 2021
Realtime Database
- Added
startAfter
andendBefore
filters for paginating Realtime Database queries.
Authentication
- Added the
useEmulator()
function andemulatorConfig
to thefirebase
package externs.
Cloud Firestore
- Fixed an error that caused
FirestoreDataConverter.fromFirestore()
to be called with an incorrectQueryDocumentSnapshot
object. See GitHub issue #4278
Version 8.2.3 - January 14, 2021
Realtime Database
- Fixed an issue that caused
refFromUrl()
to reject production database URLs whenuseEmulator()
was used.
Version 8.2.2 - January 7, 2021
Realtime Database
- Fixed an issue with multiple database instances when using the Realtime Database emulator. See GitHub issue #3681
Cloud Firestore
Updated an outdated error message to include
!=
andnot-in
as inequality operators. See GitHub issue #4253Fixed an issue in the Transaction API that caused the SDK to return invalid
DocumentReference
objects throughDocumentSnapshot.data()
calls. See GitHub issue #4226
Version 8.2.1 - December 17, 2020
Authentication
- Updated auth token logic to rely on device clock time instead of server time. This fixes an issue seen when a device's clock is skewed by a lot: see GitHub issue #3222
Cloud Firestore
- Fixed an issue that prevented the SDK from automatically retrieving
custom claims for a
User
. See GitHub issue #4175
Version 8.2.0 - December 11, 2020
Authentication
- Added an option to hide the banner in Auth when using the emulator.
Cloud Firestore
Released Firestore Bundles (pre-packaged Firestore data). For NPM users, this can be enabled via an additional import:
firebase/firestore/bundle
. For CDN usage, it is enabled by default.A write to a document that contains
FieldValue
transforms is no longer split up into two separate operations. This reduces the number of writes the backend performs and allows eachWriteBatch
to hold 500 writes regardless of how manyFieldValue
transformations are attached.
Performance Monitoring
- Changed to dispatch no more than 1000 collected performance events for each network request. Events over the cap will be queued and sent with the next dispatch.
Version 8.1.2 - December 3, 2020
Authentication
- Fixed an issue with IndexedDB retry logic causing uncaught errors.
Cloud Firestore
Fixed a bug that prevented usage of
FieldPath
objects with multiple special characters.Fixes an issue that returned invalid
DocumentReference
instances fromQuerySnapshot
objects. See GitHub issue #4125
Testing SDK
- Fixed
assertFails
not recognizingpermission-denied
errors from Realtime Database.
Version 8.1.1 - November 19, 2020
Realtime Database
- Added the missing type definition for
Query.get()
.
Cloud Firestore
- Fixed an issue that prevented
experimentalAutoDetectLongPolling
from working correctly.
Version 8.1.0 - November 19, 2020
Realtime Database
- We have identified an issue in the newly added
Query.get()
API. This causes data to be returned which doesn't match the Query filters. We are working on providing a fix. - Added a database query
get
method that returns server results when connected.
Cloud Firestore
- Fixed a regression introduced in v8.0.2 that returned invalid values for
DocumentChange.newIndex
. See GitHub issue #4071
Version 8.0.2 - November 12, 2020
Authentication
- The SDK now retries IndexedDB errors a fixed number of times to handle connection issues in mobile WebKit. Fixes GitHub issue #1926.
Cloud Firestore
- Fixed an issue that caused
DocumentReference
objects inDocumentSnapshot
instances to be returned with the custom converter of the originalDocumentReference
.
Version 8.0.1 - November 5, 2020
Cloud Messaging
- Fixed an issue where a silent-push warning was displayed along with
the message shown by
ServiceWorkerRegistration.showNotification
. Added a timeout for theonBackgroundMessage
hook so that silent-push warnings won't show ifServiceWorkerRegistration.showNotification
is called inside the hook within 1 second. See GitHub issue #3725.
Testing SDK
- Added a
withFunctionTriggersDisabled
method which runs a user-provided setup function with emulated Cloud Functions triggers disabled. This can be used to import data into the Realtime Database or Cloud Firestore emulators without triggering locally emulated functions. This method only works with Firebase CLI version 8.13.0 or higher.
Version 8.0.0 - October 26, 2020
Breaking change:
browser
fields in package.json files now point to ESM bundles instead of CJS bundles. Users who are using ESM imports must now use the default import instead of a namespace import.Before 8.0.0
import * as firebase from 'firebase/app'
After 8.0.0
import firebase from 'firebase/app'
Code that uses
require('firebase/app')
orrequire('firebase')
will still work, but in order to get proper typings (for code completion, for example) users should change theserequire
calls torequire('firebase/app').default
orrequire('firebase').default
. This is because the SDK now uses typings for the ESM bundle, and the different bundles share one typings file.
Cloud Firestore
Removed the undocumented
Firestore.logLevel
property.Breaking change: Removed deprecated
experimentalTabSynchronization
settings. To enable multi-tab synchronization, usesynchronizeTabs
instead.This release removes runtime type validations that are covered by TypeScript. Developers can use our TypeScript types to validate API usage.
Breaking change: Removed the
timestampsInSnapshots
option fromFirestoreSettings
. Now, Cloud Firestore always returnsTimestamp
values for all timestamp values.Added a
useEmulator(host, port)
method to Cloud Firestore.Removed excess validation of null and NaN values in query filters. This more closely aligns the SDK with the Cloud Firestore backend, which has always accepted null and NaN for all operators.
Cloud Storage
- This release removes runtime type validations that are covered by TypeScript. Developers can use our TypeScript types to validate API usage.
Realtime Database
- Added a
useEmulator(host, port)
method to Realtime Database.
Cloud Functions for Firebase Client SDK
- Added a
useEmulator(host, port)
method to the Cloud Functions for Firebase Client SDK.
Version 7.24.0 - October 15, 2020
Authentication
- Added the ability to configure the SDK to communicate with the Firebase Emulator.
Cloud Firestore
Added a new
experimentalAutoDetectLongPolling
toFirestoreSettings
. When enabled, the SDK's underlying transport layer automatically detects if long-polling should be used. This is very similar toexperimentalForceLongPolling
, but only uses long-polling if required.Fixed a potential issue in our internal queue that could have allowed API calls to be executed out of order.
Testing SDK
Changed to not delete the
uid
property from user auth object ininitializeTestApp()
. See GitHub issue #3920.Fixed the typing for custom claims.
Version 7.23.0 - October 8, 2020
Analytics
- The SDK now warns instead of throwing an error if it detects a browser environment where Analytics does not work.
Cloud Firestore
- The SDK now includes more information in the error message for failed IndexedDB transactions.
Performance Monitoring
- Moved the
loggingEnabled
check to wait until performance initialization finishes, which prevents the SDK from dropping custom traces right after getting theperformance
object. - Throws an exception when
startTime
orduration
is not a positive value in thetrace.record()
API.
Testing SDK
- Added stronger types to the
options.auth
option forinitializeTestApp()
.
Version 7.22.1 - October 5, 2020
Cloud Functions for Firebase Client SDK
- Fixed a bug introduced in 7.21.1 that causes callable functions to throw an error in some environments.
Version 7.22.0 - October 1, 2020
Cloud Functions for Firebase Client SDK
- Users can now set a custom domain for callable functions.
Version 7.21.1 - September 24, 2020
Cloud Firestore
Fixed an issue that prevented
waitForPendingWrites()
from resolving in background tabs when multi-tab is used. See GitHub issue #3816.Fixed a "Comparison with -0" lint warning for customers that build from source. See GitHub issue #3814.
Authentication
- Fixed an encoding issue in the Authentication CDN script for environments that require UTF-8, for example, Chrome extensions. See GitHub issue #414.
Version 7.21.0 - September 17, 2020
Cloud Firestore
- Added
not-in
and!=
query operators for use with.where()
.not-in
finds documents where a specified field’s value is not in a specified array.!=
finds documents where a specified field's value does not equal the specified value. Neither query operator will match documents where the specified field is not present.
- The SDK now uses
FirestoreError
instead ofError
inonSnapshot*()
error callbacks. - Fixed a bug where
CollectionReference.add()
calledFirestoreDataConverter.toFirestore()
twice instead of once. See GitHub issue #3742
Realtime Database
- Fixed detection of Admin SDK context.
Testing SDK
- Fixed a bug preventing users from testing Realtime Database with both the Admin SDK and the client JS SDK.
Version 7.20.0 - September 10, 2020
Analytics
- For apps using v7.20.0 and later,
Firebase dynamically fetches the
measurementId
when your app initializes Analytics. Having this ID in your Firebase config object is optional, but it does serve as a fallback in the rare case that the dynamic fetch fails. Learn more about this field in the Analytics getting started page.
Realtime Database
- The SDK can now infer a default database URL if none is provided in the config.
Cloud Firestore
- Fixed a bug where, if a user change happened while the network connection was disabled, the client did not raise snapshots from cache.
Cloud Messaging
- The SDK no longer opens non-origin links, fixing a potential security issue.
Version 7.19.1 - August 27, 2020
Cloud Firestore
- Added
merge
option tofirestore.settings()
, which merges the provided settings with settings from a previous call. This addresses GitHub issue #3354.
Testing SDK
- Fixed an issue with
assertFails()
. See GitHub issue #3671
Version 7.19.0 - August 20, 2020
Testing SDK
- Released
@firebase/rules-unit-testing
to replace the@firebase/testing
package. The new package is API compatible but has the following breaking behavior changes:assertFails()
now fails only onPERMISSION DENIED
errors, not any error.initializeAdminApp()
now relies onfirebase-admin
rather than imitating the Admin SDK.
Performance Monitoring
- Adds a check to silently prevent Performance Monitoring from initializing if
the required
indexedDB.open()
API is not available in the environment.
Cloud Firestore
terminate()
can now be retried if it fails with an IndexedDB exception. See GitHub issue #2755.Enabled fallback for auto-generated identifiers in environments that support
crypto
but notcrypto.getRandomValues
. See GitHub PR #3487.
Version 7.18.0 - August 13, 2020
Cloud Messaging
Added
onBackgroundMessage
, which is called regardless of whether or not a notification is displayed.getToken
now accepts an options object that includes an optional vapid key and an optional service worker registration.Deprecated
setBackgroundMessageHandler
. Use the new APIonBackgroundMessage
instead.Deprecated
useVapidKey
anduseServiceWorker
. UsegetToken
to set these values instead.Deprecated
onTokenRefresh
which is a no-op API currently.
Cloud Firestore
The SDK no longer crashes with the error "The database connection is closing". Instead, the individual operations that cause this error may be rejected. Addresses GitHub issue #3495.
Fixed a bug that caused slow retries for IndexedDB operations even when a webpage re-entered the foreground.
Analytics
-
analytics.isSupported()
now returnsPromise<false>
for extension environments.
Version 7.17.2 - August 6, 2020
Realtime Database
- Added interface
Database
which is implemented byFirebaseDatabase
. This allows consumer SDKs (such as the Firebase Admin SDK) to export Realtime Database types as an interface.
Cloud Firestore
- Upgraded to the latest version of Google Closure Library and Compiler. Developers will not need to make any changes to their code to handle this change.
Version 7.17.1 - July 24, 2020
Analytics
- Added an omitted dependency update that caused Analytics to error on initialization. Addresses GitHub issue #3469.
Version 7.17.0 - July 23, 2020
Analytics
- Added an
analytics.isSupported()
method which returns true if the current browser context supports Analytics. This can used in a conditional to prevent initialization of Analytics in environments that don't support it. This check also automatically runs when Analytics is initialized (firebase.analytics()
) and if it finds an unsupported environment, throws an error advising developers to useisSupported()
. Addresses GitHub issue #2393.
Cloud Storage
- Error messages for backend errors now include the backend's response message.
Version 7.16.1 - July 16, 2020
Cloud Firestore
The SDK no longer crashes if an
IndexedDB
failure occurs when unsubscribing from aQuery
.Removed a delay that prevented Firestore from immediately reestablishing a network connection if a connectivity change occurred while the app was in the background.
Realtime Database
- Instead of using production auth, the SDK will use test credentials to connect to the Emulator when Realtime Database is used via the Firebase Admin SDK. Fixes GitHub issue #3144.
Cloud Storage
- Updated the TypeScript types for all APIs using
Observer
s to allow callback omission. Fixes GitHub issue #3158.
Authentication
- Added the
browser
field in package.json.
Version 7.16.0 - July 09, 2020
Cloud Firestore
Added support for
set()
with merge options when usingFirestoreDataConverter
.Re-added the React Native bundle, which allows Cloud Firestore to be used without
btoa/atob
polyfills.Removed internal wrapper around our public API that was meant to prevent incorrect SDK usage for JavaScript users, but caused the SDK to stop working in IE11. See GitHub issue #3305.
FCM
Fixed an issue where we tried to update the token for every
getToken()
call because we don't save the updated token in theIndexedDB
.Fixed an RxJS incompatibility issue by adding support for
onMessage
so the internal callback can work with RxJS'sSubscriber
. See GitHub issue #3142.
Cloud Functions for Firebase Client SDK
- Clear timeout after a successful response or after the request is canceled. Fixes GitHub issue #3289.
Version 7.15.5 - June 25, 2020
Cloud Firestore
- Fixed a bug that sometimes caused Cloud Firestore operations to fail during an auth token change. See GitHub issue #3179
Version 7.15.4 - June 20, 2020
Cloud Firestore
- Removed the React Native entry point due to an issue in our internal library. For Cloud Firestore in React Native, use the browser build and add necessary polyfills. See GitHub issue #2667
Version 7.15.3 - June 19, 2020
Cloud Firestore
- Fixed an issue that prevented Cloud Firestore from working in React Native. See GitHub issue #2667
Version 7.15.2 - June 18, 2020
Realtime Database
- Added an internal HTTP header to the WebSocket connection.
Cloud Firestore
- Updated
grpc-js
to version^1.0.0
.
Version 7.15.1 - June 11, 2020
Cloud Firestore
Fixed an issue that prevented the client from connecting to the backend immediately after a user signed in. See GitHub issue #2923.
Fixed a regression introduced in PR #3048 that changed the
context.path
variable fromPath|null
toundefined|null
. See GitHub issue #3172.
Version 7.15.0 - June 04, 2020
Cloud Firestore
Added an
experimentalForceOwningTab
setting that can be used to enable persistence in environments withoutlocalStorage
, which allows persistence to be used in Web Workers. See GitHub issue #983.All known failure cases for
IndexedDB
-related crashes have now been addressed. Instead of crashing the client,IndexedDB
failures result in rejected operations (for example, rejectedWrites
or erroredQuery
listeners). If these rejections surface in your app, you can retry these operations whenIndexedDB
access is restored.IndexedDB
failures that occur due to background work are automatically retried.If you continue to see
IndexedDB
-related crashes, please provide feedback GitHub issue #2755.
Version 7.14.6 - May 29, 2020
Cloud Firestore
Fixed an issue that could cause Cloud Firestore to temporarily go offline when a Window visibility event occurred.
Added support for calling
FirebaseFirestore.settings
with{ ignoreUndefinedProperties: true }
. When this parameter is set, Cloud Firestore ignores undefined properties inside objects rather than rejecting the API call.
Version 7.14.5 - May 21, 2020
Realtime Database
- Fixed a Realtime Database URL parsing bug to support domains with more than 3 components.
Version 7.14.4 - May 14, 2020
Cloud Firestore
- Fixed a regression introduced in v7.14.2 that incorrectly applied
a
FieldValue.increment
in combination withset({...}, {merge: true})
.
Version 7.14.3 - May 07, 2020
Cloud Firestore
- Cloud Firestore now rejects
onSnapshot()
listeners if they cannot be registered inIndexedDB
. Previously, these errors crashed the client.
Version 7.14.2 - April 23, 2020
Cloud Firestore
Firestore now rejects write operations if they cannot be persisted in IndexedDB. Previously, these errors crashed the client.
Fixed a source of IndexedDB-related crashes for tabs that receive multi-tab notifications while the file system is locked.
FCM
- Changed to compare hostname instead of the entire URL to decide if there is a matching window client. See GitHub issue #390.
Version 7.14.1 - April 16, 2020
Cloud Storage
- Fixed an issue that occurred when users tried to retrieve data from multiple Cloud Storage instances.
Authentication
- Fixed a bug that occurred when users set persistence to
LOCAL
in a worker environment. See GitHub issue #2903.
Version 7.14.0 - April 9, 2020
Cloud Firestore
- Replaced
grpc
with@grpc/grpc-js
in the Node.js builds. As a result, the minimum supported NodeJS version is now8.13.0
.
Realtime Database
- Added
ServerValue.increment()
to support atomic field value increments without transactions.
Performance Monitoring
- Updated internal performance event transport mechanism.
Version 7.13.2 - April 2, 2020
Cloud Firestore
Fixed a regression introduced by a crypto change in 7.13.0 that breaks Firestore in IE 11. See GitHub issue #2827.
Fixed an issue that causes excessive reads in large changesets over slow connections. See GitHub issue #2683.
Fixed an issue causing
WriteBatch.commit()
to resolve one loop later than.set
and.update
. See GitHub issue #2822.
FCM
- Fixed an issue introduced in 7.7.0, when FCM switched to provide base64-encoded VAPID keys to PushManager for push subscription. For backward compatibility, the SDK has switched back to using VAPID keys in type ArrayBuffer. See Github issue #2712.
Version 7.13.1 - March 27, 2020
Cloud Firestore
- Removed a dangling comma in package.json.
Version 7.13.0 - March 26, 2020
Cloud Firestore
Added a memory-only
firestore
build. Instead of persisting data in theIndexedDB
, it keeps it in memory. This build is about 14% smaller than the full featured build because it doesn't haveIndexedDB
related code. If you don't care about persisting data across sessions, or your code runs in environments that don't supportIndexedDB
, use this build to reduce your application size. It is available under a special import path. You can import it this way:import * as firebase from 'firebase/app'; import 'firebase/firestore/memory';
// Don't change the format for any other products. import 'firebase/auth'; // etc.
Or if using the CDN:
<script src="https://www.gstatic.com/firebasejs/7.13.0/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/7.13.0/firebase-firestore.memory.js"></script> <!-- Don't change the format for any other products. --> <script src="https://www.gstatic.com/firebasejs/7.13.0/firebase-auth.js"></script> <!-- etc. -->
Analytics
- Added convenient enums and function overloads to support enhanced ecommerce events.
Version 7.12.0 - March 19, 2020
- Added two methods for logging:
firebase.setLogLevel()
, which sets the level above which Firebase log messages will be shown.firebase.onLog()
, which adds a user-specified callback run on each log event. The callback has access to log level, message, and name of the package (e.g. "@firebase/firestore") that generated the log message.
Cloud Firestore
- Fixed an issue where the number value
-0.0
would lose its sign when stored in Cloud Firestore.
Version 7.11.0 - March 12, 2020
Authentication
- Added multi-factor authentication support for Google Cloud Identity Platform projects.
Version 7.10.0 - March 5, 2020
Cloud Firestore
- Implemented
Timestamp.valueOf()
so thatTimestamp
objects can be compared for relative ordering using the JavaScript arithmetic comparison operators. Fixes GitHub issue #2632.
Version 7.9.3 - February 28, 2020
Cloud Storage
- Fixed an issue introduced in 7.9.2 where Cloud Storage could throw a CORS error (GitHub issue).
Version 7.9.2 - February 27, 2020
Cloud Firestore
- Fixed an issue where
OnlineState
value was mangled and was not being parsed correctly.
Version 7.9.1 - February 21, 2020
Cloud Firestore
- Fixed an issue introduced in 7.9.0 where minified Cloud Firestore Node and CJS bundles do not work.
Version 7.9.0 - February 20, 2020
Cloud Firestore
The minified version of the Cloud Firestore library, added as an experimental option in 7.8.0, is now the default Cloud Firestore bundle. The steps listed in the 7.8.0 release notes are no longer necessary to get the minified bundle. This minification currently reduces the total bundle size by approximately 15% as of this build.
Fixed an issue where auth credentials were not respected in Cordova environments. See Github issue #2626.
Fixed a performance regression introduced by the addition of
Query.limitToLast(n: number)
in Firestore 1.7.0 (Firebase 7.3.0). See Github issue #2620.
FCM
- Fix an issue where service workers do not reliably update after upgrading to a new version of Firebase. See Github issue #2590.
Version 7.8.2 - February 13, 2020
Cloud Firestore
- Fixed an issue where
CollectionReference.add()
would reject custom types when usingwithConverter()
. Github issue #2606.
Version 7.8.1 - February 6, 2020
Cloud Firestore
- Fix a bug causing intermittent errors when the same app is open in multiple tabs. Addresses Github issue #2555.
Version 7.8.0 - January 30, 2020
Cloud Firestore
Experimental: Added an alternative minified import for the
firestore
package. Users who want to try this experimental import can do it this way:import * as firebase from 'firebase/app'; import '@firebase/firestore/dist/index.cjs.min'; // Don't change the format for any other products. import 'firebase/auth'; // etc.
Or if using the CDN:
<script src="https://www.gstatic.com/firebasejs/7.8.0/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/7.8.0/firebase-firestore.min.js"></script> <!-- Don't change the format for any other products. --> <script src="https://www.gstatic.com/firebasejs/7.8.0/firebase-auth.js"></script> <!-- etc. -->
Version 7.7.0 - January 16, 2020
Cloud Firestore
Fixed an issue where auth credentials were not respected in some Firefox or Chrome extensions. See Github issue #1491.
Firestore previously required that every document read in a transaction must also be written. This requirement has been removed, and you can now read a document in a transaction without writing to it.
Performance Monitoring
- Updated internal transport protocol from proto2 to proto3.
Authentication
- Added missing constructor for
SAMLAuthProvider
type.
Version 7.6.2 - January 9, 2020
Cloud Functions for Firebase Client SDK
- Fixed a bug causing notification permissions requests to pop up when
using
functions.httpsCallable()
.
Realtime Database
- Reverted a change causing slow update performance as reported in Github issue #2487.
Cloud Firestore
- Fixed an issue where auth credentials were not respected in certain browser environments (Electron 7, IE11 in trusted zone, UWP apps). Addresses Github issue #1491.
Version 7.6.1 - December 18, 2019
Realtime Database
- Fixed an internal typing issue where the library
firebase-admin
, which depends on@firebase/database
, failed to compile.
Version 7.6.0 - December 12, 2019
Cloud Firestore
Added support for storing and retrieving custom types in Cloud Firestore. Added support for strongly typed collections, documents, and queries. You can now use
withConverter()
to supply a custom data converter that will convert between Cloud Firestore data and your custom type.Added a stronger environment check that specifically checks for the existence of
process.env
. Addresses Github issue #2404.
FCM
getToken()
now automatically requests notification permission if permission was set to "default".Temporarily suppressing errors occurring on reset of notifications permissions, pending a backend solution. Addresses Github issue #2364.
Testing SDK
- Fixed a bug where Testing SDK was unable to connect to the Cloud Firestore emulator. Addresses Github issue #2417.
Version 7.5.2 - December 6, 2019
Realtime Database
- Fixed an issue introduced in 7.5.1 where
@firebase/component
is not listed as a dependency. It caused "Cannot find module@firebase/component
" in thefirebase-admin
package, which depends on Realtime Database.
Version 7.5.1 - December 5, 2019
Fixed an issue where typing
undefined
in the IDE prompts to auto-import it from the firebase package. Addresses #2203 (GitHub link). Thanks camsjams for the contribution!Fixed a bug where RxFire's
objectVal
will return an empty object if the result ofsnapshot.val()
is not an object.
Remote Config
- Fixed a bug where the promises returned by
fetch()
andfetchAndActivate()
were not rejected with errors caused byindexeddb
operations. You can now handle these errors in the error handler of the returned promise.
Version 7.5.0 - November 21, 2019
Cloud Firestore
- Improved the performance of repeatedly executed queries when
persistence is enabled. Recently executed queries should see dramatic
improvements. This benefit is reduced if changes accumulate while the query
is inactive. Queries that use the
limit()
API may not always benefit, depending on the accumulated changes.
Version 7.4.0 - November 14, 2019
Authentication
- Added nonce support for sign-in with OIDC ID token credentials.
- Added the OAuth sign-in support for apps served from origins with the
ionic://
scheme for latest Ionic framework.
Analytics
- Fixed a bug where Analytics did not work with Google Tag Manager on the same page.
Cloud Firestore
- The
in
query operator now accepts nested arrays.
Version 7.3.0 - November 7, 2019
Cloud Firestore
- Added
in
andarray-contains-any
query operators for use with.where()
. Thein
operator finds documents where a specified field’s value is in a specified array. Thearray-contains-any
operator finds documents where a specified field is an array and contains any element of a specified array. - Added
Query.limitToLast(n: number)
which returns the lastn
documents as the result.
Version 7.2.3 - October 31, 2019
- Improved error handling in installations calls.
Cloud Firestore
- The client can now recover if certain periodic IndexedDB operations fail. Addresses #2232 (GitHub link).
Analytics
- Added missing overload signatures for
logEvent
when using standard event namesadd_payment_info
andpage_view
.
Version 7.2.2 - October 24, 2019
- Fixed a change detection bug in rxFire.
- Switched to
ref.isEqual
when comparing documents to support collection groups for Cloud Firestore in rxFire.
Cloud Firestore
- Improved iOS 13 support by eliminating an additional crash in our IndexedDB persistence layer.
Version 7.2.1 - October 16, 2019
Cloud Firestore
- Fixed a crash on iOS 13 that occurred when persistence was enabled in a background tab.
- Fixed an issue in the interaction with the Firestore Emulator that caused requests with timestamps to fail.
Version 7.2.0 - October 10, 2019
- The
Installations.getToken()
method now accept an optionalforceRefresh
parameter.
Remote Config
- Corrected the path of the
main
script inpackage.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 tologEvent()
is now optional.
Version 7.0.0 - September 26, 2019
- Breaking change: For TypeScript users, the required minimal TypeScript version is 2.8.0.
FCM
Breaking change: version 7.0.0 introduces a new service related to client app instance registration. If you are currently using FCM for web and want to upgrade to SDK 7.0.0 or later, you must enable the FCM Registration API for your project in the Google Cloud Console.
When you enable this service, make sure you are logged in to Cloud Console with the same Google account you use for Firebase, and make sure to select the correct project.
Please also make sure that
projectId
,apiKey
,appId
andmessagingSenderId
are present in your app config. See how to get your app config object.No other migration tasks are required; once the API is enabled, pre-7.0.0 apps will continue to function normally.
New projects adding the FCM SDK have this service enabled by default.
Version 7.0.0 introduces the targeting of web apps for FCM messages sent from the Notifications composer. You can now target web notification messages by browser type and version as well as operating system. See Send messages with the Firebase Console.
Analytics
- Added support for Analytics on web apps. See Get started with Google Analytics.
Remote Config
- Added support for Remote Config on web apps. See Get started with Firebase Remote Config on web.
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 callFirestore.clearPersistence()
to wipe persisted Firestore data from disk.
Version 6.4.2 - August 23, 2019
- Changed
fromRef
, 'fromDocRef' andfromCollectionRef
to accept anoption
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()
orgetRedirectResult()
.
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
orfirebase-database.js
.
Version 6.3.3 - July 26, 2019
Realtime Database
- Fixed a regression introduced in v6.3.2 causing errors when run in a browser environment.
Version 6.3.2 - July 25, 2019
Realtime Database
- Added an environment variable (
FIREBASE_DATABASE_EMULATOR_HOST
) that allows developers to point the database emulator SDK to a local database emulator instance.
Performance Monitoring
- The SDK has been updated to better handle errors when the
Performance Monitoring library is imported in an environment without a
window
object (such as the server side of an SSR app) or a Performance Monitoring instance is initialized in such an environment.
Version 6.3.1 - July 18, 2019
Cloud Firestore
Transactions are now more flexible. Some sequences of operations that were previously incorrectly disallowed are now allowed. For example, after reading a document that doesn't exist, you can now set it multiple times successfully in a transaction.
Fixed an issue where query results were temporarily missing documents that previously had not matched but had been updated to now match the query.
Version 6.3.0 - July 11, 2019
Performance Monitoring
- Fixed an issue causing errors during page load in browser environments that don't support IndexedDB (such as when cookies are disabled).
Version 6.2.4 - June 27, 2019
Performance Monitoring
- Fixed an issue where Performance Monitoring throws an exception in unsupported environments. Now Performance Monitoring will not initialize in unsupported environments.
Version 6.2.3 - June 24, 2019
Authentication
- Fixed a bug causing errors in Node.
Cloud Firestore
- Fixed an issue causing some queries to return no results.
Version 6.2.2 - June 21, 2019
- Reverted change to the way the React Native bundle imports
AsyncStorage
as it was causing errors.
Cloud Firestore
- Made error messages more informative for
AsyncQueue
errors on iOS.
Version 6.2.1 - June 20, 2019
Updated the React Native bundle to first try importing the
AsyncStorage
module from the recommended community package, if available, instead of the now-deprecated version bundled with React Native core.Fixed a bug in Firebase's environment check that can cause errors when Firebase is bundled into user code (using tools such as Rollup).
Cloud Firestore
- Fixed an issue causing errors in environments that are missing
window.addEventListener
, such as React Native with Expo.
Cloud Storage
- Fixed an incorrect type on
Reference.put()
params.
Version 6.2.0 - June 13, 2019
Cloud Firestore
Added
clearPersistence()
, which clears the persistent storage including pending writes and cached documents. This is intended to help write reliable tests.Added logging and a custom error message to help users hitting https://bugs.webkit.org/show_bug.cgi?id=197050 (a bug in iOS 12.2 causing the SDK to potentially crash when persistence is enabled).
Version 6.1.1 - June 6, 2019
- Did some internal refactoring to improve type safety and documentation generation.
Version 6.1.0 - May 28, 2019
Cloud Firestore
- Fixed an issue where an environment check fails in Node.js environments.
Cloud Storage
- Added the ability to list objects in a bucket.
Cloud Messaging
- Deprecated
requestPermission()
. Use the native browser APINotification.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 mainfirebase
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
andlinkWithCredential
to a promise that resolves with aUserCredential
instead of aUser
.Changed
reauthenticateWithCredential
to return a promise that resolves with aUserCredential
.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 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.off
andQuery.once
/Reference.once
.
Performance Monitoring
- This release contains the new Performance Monitoring Client SDK. Visit the Performance Monitoring for Web Getting Started guide.
Version 5.10.1 - April 25, 2019
Authentication
- Fixed an issue where duplicate auth events could cause errors
when using
signInWithPopup()
. - Fixed an issue where the SDK could fail to detect that it is in a service worker environment.
- Added an error message that appears when the client attempts to perform an admin-only operation.
Cloud Firestore
- Enabled the SDK to recognize older versions of iOS Safari and Android when checking if persistence can be enabled.
Version 5.10.0 - April 18, 2019
Authentication
- Added serialization and deserialization methods to AuthCredential classes.
Cloud Firestore
- Added an
experimentalForceLongPolling
setting that can be used to work around proxies that prevent the Firestore client from connecting to the Firestore backend.
Version 5.9.4 - April 11, 2019
Cloud Storage
- Fixed an incorrect type definition in
UploadTask.on()
params.
Version 5.9.3 - April 4, 2019
Cloud Messaging
- Refactored to use const enum for
ErrorCode
.
Version 5.9.2 - Mar 28, 2019
Cloud Firestore
- Added a missing type definition for
firestore.FieldValue.increment
.
Version 5.9.1 - Mar 21, 2019
Cloud Firestore
Increased a connection timeout that could lead to large writes perpetually retrying without ever succeeding.
Fixed an issue where transactions in a NodeJS app could be sent without auth credentials, leading to Permission Denied errors.
Fixed an issue with IndexedDb persistence that triggered an internal assert for Queries that use nested
DocumentReferences
inwhere()
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.
Cloud Storage
- Fixed an incorrect type definition.
Version 5.8.6 - Mar 7, 2019
Cloud Firestore
- Improved performance when querying over documents that contain subcollections.
Version 5.8.5 - Mar 1, 2019
- Added a warning that appears in the console at runtime if a Firebase browser bundle is loaded in a node environment.
Authentication
Added
OAuthCredential
type as an exposed type.Fixed
updateProfile()
so each property passed to it is optional.
Cloud Functions for Firebase Client SDK
- Added timeouts and ability to customize them to
HttpsCallables
.
Version 5.8.4 - Feb 21, 2019
Cloud Firestore
- Fixed an uncaught promise error occurring when
enablePersistence()
was called in a second tab.
Testing SDK
- Made rulesets that don't compile throw errors.
Version 5.8.3 - Feb 14, 2019
Cloud Firestore
- Improved error handling for
endAt
queries.
Version 5.8.2 - Jan 31, 2019
Added a missing file to the files array in package.json.
Fixed some errors in the documentation.
Version 5.8.1 - Jan 24, 2019
- Added the missing depenedency to auth-types and storage-types packages.
Testing SDK
- Added
clearFirestoreData()
to delete data between tests.
Version 5.8.0 - Jan 17, 2019
- Added a type definition file for all firebase components, so that they work with TypeScript with dynamic import.
Cloud Firestore
BREAKING: The
timestampsInSnapshots
setting is now enabled by default. Now, timestamp fields read from aDocumentSnapshot
will be returned asTimestamp
objects instead ofDate
. Any code expecting to receive aDate
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 toFirestore.settings()
. It must be set to a minimum of 1 MB. The garbage collection process can be disabled entirely by settingcacheSizeBytes
toCACHE_SIZE_UNLIMITED
.Updated gRPC version to support Node 11.
Version 5.6.0 - Nov 29, 2018
Authentication
- Added the ability to customize the dynamic link domain for email actions.
Version 5.5.9 - Nov 20, 2018
Updated mocha to version 5.2.0.
Corrected syntax errors for Realtime Database example in rxFire documentation.
Cloud Firestore
- Capped the amount of exponential backoff gRPC will use for reconnection attempts to 100ms.
Version 5.5.8 - Nov 8, 2018
Authentication
- Added a source map to facilitate easy debugging.
Version 5.5.7 - Nov 1, 2018
Cloud Functions for Firebase Client SDK
- Added the type definition for the
useFunctionsEmulator
method in the Cloud Functions for Firebase Client SDK.
Version 5.5.6 - Oct 25, 2018
- Changed to distribute component libraries in UMD format from the CDN.
Cloud Firestore
- Fixed an issue where the library is not compatible with IE 11.
Version 5.5.5 - Oct 18, 2018
Updated documentation to include examples for typescript and native es6 module in Node.js environment.
Fixed the import path for Authentication in rxFire documentation.
Version 5.5.4 - Oct 11, 2018
Authentication
- Fixed an issue where the
this
variable was changed to undefined incorrectly.
Cloud Firestore
- Removed fallback based on
eval()
for JSON parsing, allowing SDK to be used in environments that 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.hasPendingWrites
metadata flag. - Eliminated superfluous update events for locally cached documents that are known to lag behind the server version. Instead, we buffer these events until the client has caught up with the server.
Version 5.4.2 - August 30, 2018
Authentication
- Fixed an issue where the
navigator
global was unavailable in some environments.
Version 5.4.1 - August 23, 2018
Cloud Firestore
- Fixed a regression that prevented use of Cloud Firestore on ReactNative's Expo platform (#1138).
Authentication
- Fixed an issue in the IndexedDB implementation that was slow for some browsers.
- Fixed a memory leak in the IndexedDB implementation.
Version 5.4.0 - August 16, 2018
Cloud Firestore
- Fixed
get({source: 'cache'})
to be able to return nonexistent documents from cache. - Prepared the persistence layer to allow shared access from multiple tabs. While this feature is not yet available, all schema changes are included in this release. Once you upgrade, you will not be able to use an older version of the Firestore SDK with persistence enabled.
- Fixed an issue where changes to custom authentication claims did not take effect until you did a full sign-out and sign-in. (firebase/firebase-ios-sdk#1499)
Version 5.3.1 - August 3, 2018
Cloud Firestore
- Improved how Firestore handles idle queries to reduce the cost of re-listening within 30 minutes.
- Improved offline performance with many outstanding writes.
Version 5.3.0 - July 19, 2018
Authentication
- Fixed an issue where redirect results were being handled incorrectly for deleted Auth instances.
Cloud Firestore
- Fixed an issue where queries returned fewer results than they should, caused by documents that were cached as deleted when they should not have been (firebase/firebase-ios-sdk#1548). Because some cache data is cleared, clients might use extra bandwidth the first time they launch with this version of the SDK.
- Added
firebase.firestore.FieldValue.arrayUnion()
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
forEach
andforEachChild
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 copyingfirebase.User
objects between Firebase apps. - Updated the return type signature for
signInWithEmailAndPassword
,signInWithCustomToken
,signInAnonymously
andcreateUserWithEmailAndPassword
to return a promise that resolves with aUserCredential
instead of a user. - Removed
getToken
API in favor ofgetIdToken
andgetIdTokenResult
. - Deprecated
signInWithCredential
,linkWithCredential
,reauthenticateWithCredential
andfetchProvidersForEmail
in favor ofsignInAndRetrieveDataWithCredential
,linkAndRetrieveDataWithCredential
,reauthenticateAndRetrieveDataWithCredential
andfetchSignInMethodsForEmail
. - Improved detection of external auth state changes for synchronizing Auth state between different windows.
Realtime Database
- Removed the private
path
property fromfirebase.database.Reference
.
Cloud Firestore
- Merged the
includeQueryMetadataChanges
andincludeDocumentMetadataChanges
options passed toQuery.onSnapshot()
into a singleincludeMetadataChanges
option. -
QuerySnapshot.docChanges()
is now a method that optionally takes anincludeMetadataChanges
option. 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.
Cloud Storage
- Removed the previously deprecated
FullMetadata.downloadURLs
andUploadTaskSnapshot.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 reportsfalse
. - Fixed an issue where Firefox multi-tab/private mode browsing threw errors with our IndexedDB implementation.
- Exposes the new
getIdTokenResult
API forfirebase.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 makeDocumentSnapshot
s read timestamp fields back asTimestamp
s instead of Dates, you can set the newly added flagtimestampsInSnapshots
inFirestoreSettings
totrue
. Note that the current behavior (DocumentSnapshot
s 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()
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
getToken
was throwing errors in Worker environments. - General cleanup and hardening of the entire messaging codebase. added TypeScript types, additional tests, etc.
Cloud Storage
- Deprecated the
FullMetadata.downloadURLs
andUploadTaskSnapshot.downloadURL
properties 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
useServiceWorker
function 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
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
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 withsnapshot.metadata.fromCache
set totrue
if the SDK loses its connection to the backend. A new event withsnapshot.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()
andenableNetwork()
methods toFirestore
class, allowing for explicit network management. - For non-existing documents,
DocumentSnapshot.data()
now returnsundefined
instead of throwing an exception. A newQueryDocumentSnapshot
class is introduced for Queries to reduce the number of undefined-checks in your code. - Added
isEqual
API toGeoPoint
,Blob
,SnapshotMetadata
,DocumentSnapshot
,QuerySnapshot
,CollectionReference
,FieldValue
andFieldPath
. - 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.signInAndRetrieveDataWithEmailAndPassword
andfirebase.auth.Auth.prototype.signInAnonymouslyAndRetrieveData
which function the same as their counterparts but return a promise that resolves with afirebase.auth.UserCredential
instead 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
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 tofirebase.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 withpermission_denied
errors.
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_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 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
phoneNumber
property onprovideData
objects. - Fixed temporary error message when opening a popup for sign-in, prominent in some IE browsers.
- Refactored to not use
navigator.onLine
for offline detection in Cordova environments.
Realtime Database
- Fixed an issue where database references were missing a
toJSON
method.
Version 4.1.5 - July 25, 2017
Authentication
- Fixed an issue where authenticated realtime database access wasn't possible.
Version 4.1.4 - July 24, 2017
- Bundle size improvements for
firebase-app.js
,firebase-storage.js
,firebase-messaging.js
.
Realtime Database
- Refactored internal implementation to TypeScript.
Version 4.1.3 - June 21, 2017
- Fixed an issue where certain app names were invalid
Authentication
- Fixed an issue with the PhoneAuthProvider typings
- Fixed an issue where network errors from
signInWithRedirect
were cached even after the network connection stabilized. - Fixed an issue where Cordova OAuth redirects in iOS apps were failing due iOS bundle ID case sensitive checks.
Version 4.1.2 - June 6, 2017
- Fixed an issue where sourcemaps weren't pointing to the actual TypeScript source code.
- Fixed an issue where
FirebaseAppImpl.prototype
was being incorrectly patched. - Fixed an issue where loading the SDK from our CDN, while also
providing a chunked webpack build, was duplicating the
webpackJsonp
namespace.
Version 4.1.1 - May 31, 2017
- Fixed an issue where the default storage bucket was not being initialized correctly.
Version 4.1.0 - May 30, 2017
- Allow for lazy initialization of Firebase components (i.e. Authentication, Realtime Database, Cloud Storage, FCM).
Authentication
- Fixed an issue where the SDK could trigger an infinite loop when loaded in an iFrame on Safari.
Version 4.0.0 - May 17, 2017
Authentication for Servers
- Removed support for deprecated
serviceAccount
andcredential
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
- 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.onIdTokenChanged
method 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.updateProfile
was not triggering an update in password provider data. - Deprecated
firebase.User.prototype.getToken
in favor offirebase.User.prototype.getIdToken
. - BREAKING:
firebase.auth.Auth.prototype.onAuthStateChanged
now triggers on sign in and sign out. - BREAKING:
firebase.User.prototype.reauthenticate
has been removed in favor offirebase.User.prototype.reauthenticateWithCredential
. - BREAKING:
firebase.User.prototype.link
has been removed in favor offirebase.User.prototype.linkWithCredential
. - BREAKING:
firebase.AuthCredential.prototype.provider
has been removed in favor offirebase.AuthCredential.prototype.providerId
.
Version 3.9.0 - April 25, 2017
Authentication
- Deprecated
firebase.auth.authCredential.prototype.provider
in favor of thefirebase.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
- Added new APIs
reauthenticateWithPopup
andreauthenticateWithRedirect
for reauthenticating with an OAuth provider using a popup or a redirect. - Added the
operationType
property to thefirebase.auth.UserCredential
object to determine if the result was obtained from asignIn
,link
orreauthenticate
operation. - Added support for Cordova OAuth sign-in using the
signInWithRedirect
,linkWithRedirect
, andreauthenticateWithRedirect
methods. - Deprecated
firebase.User.prototype.link
in favor of thefirebase.User.prototype.linkWithCredential
method. - Deprecated
firebase.User.prototype.reauthenticate
in favor of thefirebase.User.prototype.reauthenticateWithCredential
method.
Version 3.7.8 - April 14, 2017
- Fixed an issue where
npm-shrinkwrap.json
was not being generated correctly.
Version 3.7.7 - April 14, 2017
- Fixed an issue where undefined symbols caused an error to be thrown in older browsers.
Version 3.7.6 - April 11, 2017
Authentication
- Fixed an issue where removal of a legacy options object broke older clients.
Version 3.7.5 - April 4, 2017
Cloud Storage
- Provide higher-granularity progress updates for object uploads.
Version 3.7.4 - March 28, 2017
Realtime Database
- Fixed an issue where
firebase.database().ref().push()
, would trigger an infinite loop if the returned.then()
function was called.
Authentication
- Fixed an issue where
firebase.User.reauthenticate()
was creating new users if passed an OAuth credential for a user that didn't exist.
Version 3.7.3 - March 21, 2017
Realtime Database
- Fixed error messaging for invalid calls to
Query.equalTo()
.
Version 3.7.2 - March 14, 2017
- Fixed an issue where some components erroneously allowed creation of multiple instances.
Version 3.7.1 - March 9, 2017
Authentication
- Updated
firebase.auth().signInWithPopup()
to work properly in Chrome extensions. - Improved session handling for prolonged usage of the Realtime Database.
Version 3.7.0 - March 1, 2017
Cloud Storage
- Added support for using multiple buckets within Cloud Storage.
Version 3.6.10 - February 21, 2017
Cloud Storage
- Fixed an issue where the
catch()
method didn't exist 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-specificstate
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 towindow
orself
ifglobal
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()
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
Cloud Storage
- Improved error messages when invalid metadata is passed to the
put
,putString
, orupdateMetadata
methods.
Version 3.6.4 - December 13, 2016
Realtime Database
- Added the missing
firebase.database.ServerValue.TIMESTAMP
property to the TypeScript type declarations (firebase.d.ts
).
Cloud Storage
- Fixed an issue where percent-encoded data in a data URL was not decoded.
Authentication
- Optimized offline detection to reduce the frequency of network timeouts.
Version 3.6.3 - December 6, 2016
- Changed the packaging of browser npm modules to fix an issue that occurred when using Cloud Storage with the Browserify and webpack module bundlers.
Version 3.6.2 - November 29, 2016
- Updated file attributes in the Firebase npm package to be compatible with the Yarn Package Manager.
- Updated the jsonwebtoken version used in the Firebase npm package.
Authentication
- Fixed an issue that prevented user authentication states from persisting when using Firebase Authentication with React Native versions 0.37 and higher.
Version 3.6.1 - November 15, 2016
Cloud Storage
- Reduced the SDK download size.
- Fixed networking issues affecting React Native on Android.
Authentication
- Added missing definitions for
setCustomParameters()
methods in the firebase.d.ts file for TypeScript users.
Version 3.6.0 - November 8, 2016
Authentication for Servers
- SDK authentication with a service account on Node.js, and the corresponding token minting and verification methods, has been deprecated in favor of a new Node.js Admin SDK. To learn more, go to Admin SDK Setup. To see the Node.js Admin API reference, go to Admin SDK API Reference.
Authentication
- Fixed an incorrect popup blocked error that occurred in the Chrome browser on iOS 7 and 8.
Version 3.5.3 - November 1, 2016
- Reduced the SDK download size.
Authentication
- Fixed issues with redirect and pop-up sign-in methods when using browsers that block third-party cookies and site data.
Version 3.5.2 - October 24, 2016
Authentication
- Increase the request timeout interval for mobile devices to improve performance on high-latency networks.
Version 3.5.1 - October 19, 2016
Cloud Messaging
- Added a check to validate the
gcm_sender_id
. - Fixed a race condition that occurs when using the Firefox web browser.
Version 3.5.0 - October 14, 2016
Authentication
- 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/move
for a child nodewalk
will cancel transactions at/
,/move
, and/move/walk
and in any child nodes under/move/walk
. But, it will no longer cancel transactions at sibling nodes, such as/move/run
.
Cloud Storage
- Improved network utilization for file uploads.
Version 3.4.0 - September 14, 2016
Realtime Database
- New
Query.isEqual()
method allows for comparing anyReference
orQuery
for 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-use
andauth/email-already-in-use
. - Modified the Facebook login and OAuth grant permissions screen to work better in popup-sized windows.
- This release has an issue with
signInWithPopup()
not working with Internet Explorer. You can continue to use version 3.3.0 or earlier until this is fixed in a future release.
Cloud Storage
- Fixed an issue where
contentType
in custom metadata was being ignored for string-format uploads.
Version 3.3.0 - August 16, 2016
Authentication
- Client Authentication APIs are now available in Node.js. When
you call
initializeApp()
, pass aserviceAccount
to use the Authentication for Servers APIs in your app, or pass anapiKey
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
, theonAuthStateChanged
observer now waits untilgetRedirectResult
resolves before triggering. (In older versions, the observer would trigger twice: once when the page loaded, and a second time whengetRedirectResult
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 anapiKey
.
Cloud 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
Cloud Storage
-
UploadTask
can now be used like a Promise, and resolves with its snapshot data when the upload completes.
Authentication
- Github login responsiveness.
- Missing display names in profile scope for some Google accounts.
Authentication for Servers
- Added
uid
to the decoded token returned 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.
Cloud Storage
- Allows use of
"gs://bucket"
instead of"bucket"
instorageBucket
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
andgetRedirectResult
).
Cloud Storage
- Generate more specific error message when quota is exceeded.
Version 3.0.3 - May 24, 2016
Authentication
- Improved error messages.
Authentication for Servers
- Global
Promise
object is no longer overwritten. - Added error message when initializing the Node.js SDK with an invalid service account.
Version 3.0.2 - May 19, 2016
- Browserify and webpack compatibility.
Version 3.0.1 - May 18, 2016
- Node.js version 0.10 support.
Version 3.0.0 - May 18, 2016
- 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
databaseAuthVariableOverride
option (Node.js) or when initializing the SDK. See Installation & Setup for Servers for more details. - Use the Web Migration Guide or to help you update your Node.js or Java code to the latest APIs.
Cloud Storage
- Initial release of Cloud Storage. Cloud Storage provides secure file uploads and downloads for your Firebase apps, regardless of network quality. You can use it to store images, audio, video, or other user-generated content. Cloud Storage is backed by Google Cloud Storage, a powerful, simple, and cost-effective object storage service.