Skip to content

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.

  • 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.
Top 5 of 26 that need code or config changes

Installs 85 packages in all (was 84).

Breaking15
Removes Imagen methods and types because Imagen models have been shut down.
Removes the ability to call initializeAppCheck without a provider.
initializeAppCheck
Removes 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.
factory
Removes GroundingAttribution.
GroundingAttribution
Removes VertexAI APIs.
VertexAI
Removes the vertexai import path.
vertexai
Beta API breaking change: changes the Type string union to be a raw string.
Type
Defers Firestore Pipelines user data validation from initialization to execute() in the beta API.
execute()
Changes functionCallingHandler in StartAudioConversationOptions to return a Promise<FunctionResponse>.
functionCallingHandlerStartAudioConversationOptionsFunctionResponse
Converts TypeScript enum exports in Firebase AI into const variables.
Security1
Fixes a ReDoS vulnerability in FirebaseError template replacement.
FirebaseError
Platform5
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-compat
Updates the peer dependency range for @react-native-async-storage/async-storage to support both v2 and v3.
@react-native-async-storage/async-storage
Upgrades the react-native-async-storage peerDependency to v2+ in @firebase/auth.
react-native-async-storage
Updates 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.
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.enableWidget
Deprecates all Imagen models, which will shut down as early as June 2026.
Deprecates the topK and temperature properties for hybrid inference mode.
topKtemperature
Deprecates sendMediaChunks() and sendMediaStream() in favor of new LiveSession methods sendTextRealtime(), sendAudioReatime(), and sendVideoRealtime().
sendMediaChunks()sendMediaStream()LiveSessionsendTextRealtime()sendAudioReatime()sendVideoRealtime()

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'