Upgrading firebase 11 to 12
Breaking11.10.0 → 12.19.0Breaking16Security2Platform29Deprecated5New73Changed278Fixed52Other42
BreakingUpgrade verdict
15 breaking changes and 5 platform requirement changes and a security fix.
In plain terms
- The Imagen image-generation features are gone because the underlying service was shut down. Use Gemini Image models instead.
- App Check can no longer be initialized without specifying a provider, so existing calls that omit it will fail.
- Removes `updateEmulatorBanner()`.
- A helper function for showing the emulator banner is gone, so code that calls it will break.
Must act Top 5 of 26 that need code or config changes
Installs 85 packages in all (was 84).
What you must change
Breaking15
Removes Imagen methods and types because Imagen models have been shut down.
Removes the ability to call initializeAppCheck without a provider.
initializeAppCheckRemoves
updateEmulatorBanner().updateEmulatorBanner()Removes updateEmulatorBanner() from @firebase/auth@1.12.2.
updateEmulatorBanner()Removes updateEmulatorBanner() from @firebase/database@1.1.2.
updateEmulatorBanner()Removes updateEmulatorBanner() from @firebase/functions@0.13.3.
updateEmulatorBanner()Removes updateEmulatorBanner() from @firebase/storage.
updateEmulatorBanner()Removes the accidental
factory export from @firebase/ai.factoryRemoves GroundingAttribution.
GroundingAttributionRemoves
VertexAI APIs.VertexAIRemoves the
vertexai import path.vertexaiBeta API breaking change: changes the
Type string union to be a raw string.TypeDefers Firestore Pipelines user data validation from initialization to
execute() in the beta API.execute()Changes
functionCallingHandler in StartAudioConversationOptions to return a Promise<FunctionResponse>.functionCallingHandlerStartAudioConversationOptionsFunctionResponseConverts TypeScript enum exports in Firebase AI into const variables.
Security1
Fixes a ReDoS vulnerability in FirebaseError template replacement.
FirebaseErrorPlatform5
Adds @firebase/app as a peerDependency of compat packages.
@firebase/app@firebase/messaging-compat@firebase/installations-compat@firebase/database-compat@firebase/functions-compat@firebase/firestore-compatUpdates the peer dependency range for @react-native-async-storage/async-storage to support both v2 and v3.
@react-native-async-storage/async-storageUpgrades the react-native-async-storage peerDependency to v2+ in @firebase/auth.
react-native-async-storageUpdates the node "engines" version to a minimum of Node 20.
Updates the Node engines requirement to a minimum of Node 20 for @firebase/database-compat.
Deprecations to plan for
Deprecated5
Deprecates VertexAIBackend in favor of AgentPlatformBackend, which defaults to the global location instead of us-central1.
VertexAIBackendAgentPlatformBackendgetAI()Deprecates GoogleMaps.enableWidget following the announcement by the Grounding for Google Maps service.
GoogleMaps.enableWidgetDeprecates all Imagen models, which will shut down as early as June 2026.
Deprecates the
topK and temperature properties for hybrid inference mode.topKtemperatureDeprecates sendMediaChunks() and sendMediaStream() in favor of new LiveSession methods sendTextRealtime(), sendAudioReatime(), and sendVideoRealtime().
sendMediaChunks()sendMediaStream()LiveSessionsendTextRealtime()sendAudioReatime()sendVideoRealtime()API changes
Generated by DepDelta from published .d.ts files. Not mixed with prose notes.
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'
- added:
export * from '@firebase/firestore' - added:
export { pipelines }
- removed:
export * from '@firebase/ai'
- removed:
default firebase
- removed:
default firebase
- removed:
export * from '@firebase/data-connect'
- removed:
export * from '@firebase/database'
- removed:
export * from '@firebase/ai'
- removed:
export * from '@firebase/analytics'
- removed:
export * from '@firebase/app-check'
- removed:
export * from '@firebase/app'
- removed:
export * from '@firebase/app'
- removed:
export * from '@firebase/auth/cordova'
- removed:
export * from '@firebase/auth'
- removed:
export * from '@firebase/auth/web-extension'
- removed:
default firebase
- removed:
default firebase
- removed:
default firebase
- removed:
default firebase
- removed:
default firebase
- removed:
default firebase
- removed:
default firebase
- removed:
export * from '@firebase/data-connect'
- removed:
export * from '@firebase/database'
- removed:
export * from '@firebase/firestore'
- removed:
export * from '@firebase/firestore/lite'
- removed:
export * from '@firebase/functions'
- removed:
export * from '@firebase/installations'
- removed:
export * from '@firebase/messaging'
- removed:
export * from '@firebase/messaging/sw'
- removed:
export * from '@firebase/performance'
- removed:
export * from '@firebase/remote-config'
- removed:
export * from '@firebase/storage'
- removed:
export * from '@firebase/ai'
- removed:
export * from '@firebase/firestore'
- removed:
export * from '@firebase/firestore/lite'
- removed:
export * from '@firebase/functions'
- changed:
method firebase.auth.Auth.onAuthStateChanged(nextOrObserver: | firebase.Observer<any> | ((a: firebase.User | null) => any), error?: (a: firebase.auth.Error) => any, completed?: firebase.Unsubscribe): firebase.Unsubscribe → method firebase.auth.Auth.onAuthStateChanged(nextOrObserver: firebase.Observer<any> | ((a: firebase.User | null) => any), error?: (a: firebase.auth.Error) => any, completed?: firebase.Unsubscribe): firebase.Unsubscribe - changed:
method firebase.auth.Auth.onIdTokenChanged(nextOrObserver: | firebase.Observer<any> | ((a: firebase.User | null) => any), error?: (a: firebase.auth.Error) => any, completed?: firebase.Unsubscribe): firebase.Unsubscribe → method firebase.auth.Auth.onIdTokenChanged(nextOrObserver: firebase.Observer<any> | ((a: firebase.User | null) => any), error?: (a: firebase.auth.Error) => any, completed?: firebase.Unsubscribe): firebase.Unsubscribe - changed:
method firebase.messaging.Messaging.onBackgroundMessage(nextOrObserver: | firebase.NextFn<MessagePayload> | firebase.Observer<MessagePayload>): firebase.Unsubscribe → method firebase.messaging.Messaging.onBackgroundMessage(nextOrObserver: firebase.NextFn<MessagePayload> | firebase.Observer<MessagePayload>): firebase.Unsubscribe - changed:
method firebase.storage.UploadTask.then(onFulfilled?: | ((snapshot: firebase.storage.UploadTaskSnapshot) => any) | null, onRejected?: ((error: FirebaseStorageError) => any) | null): Promise<any> → method firebase.storage.UploadTask.then(onFulfilled?: ((snapshot: firebase.storage.UploadTaskSnapshot) => any) | null, onRejected?: ((error: FirebaseStorageError) => any) | null): Promise<any> - changed:
type firebase.EmulatorMockTokenOptions = (| { user_id: string } | { sub: string }) & Partial<FirebaseIdToken> → type firebase.EmulatorMockTokenOptions = ({ user_id: string } | { sub: string }) & Partial<FirebaseIdToken>
- added:
export * from '@firebase/firestore/lite/pipelines'
- added:
export * from '@firebase/firestore/pipelines'