On 31 March 2027 Firebase shuts down the Extensions service. Installed extensions keep running, but from that day you can no longer update, reconfigure or uninstall them from the console or the command line, and you can no longer retrieve their configuration. For each extension you use, you need to decide by then whether to migrate it to a function kit, uninstall it or at least export its configuration. Since 30 September Firebase has published official guides for the migration.
The dates
- 20 July 2026: the Firebase release notes announce the deprecation of Extensions and its closure on 31 March 2027.
- 28 September: firebase-tools 15.32.0 ships, the minimum version the guide requires. It introduces function kits (
functions:kits:install,functions:kits:uninstall,functions:kits:list) and the migration toolsext:migrate,ext:exportandext:list. - 30 September: Firebase announces that function kits are available and that deprecated extensions can be migrated. The same day 15.32.1 ships, with fixes and security updates.
What function kits are
A function kit is an npm package that installs ordinary 2nd gen Cloud Functions into your project. The code lands in the function-kits/ folder of your project and the configuration in an .env file for each Firebase project, and the kit is deployed with firebase deploy. You can run several instances of the same kit: each has an ID, and its functions start with kit-<instance-id>-.
There is no kit for every extension: each publisher decides whether to publish an official one, and the FAQ names only one, for Stream Firestore to BigQuery. Google does not vet unofficial kits. Extensions without a kit are open source, so you can fork one and rewrite it with the 2nd gen APIs, but that is development work and maintaining the code stays with you.
What changes for your project
Installed extensions keep working because they run directly on standard Google Cloud services (Cloud Functions, Eventarc, Cloud Run, Cloud Tasks). After 31 March, however, you cannot change parameters and environment variables, apply fixes and security patches or upgrade dependencies, or download the configuration for a later migration. A kit is updated by changing the version of its npm package and redeploying each instance.
Most extensions still use the 1st gen SDK, tied to older Node.js runtimes. According to Google Cloud's schedule, Node.js 20 is decommissioned on 30 October 2026 and Node.js 22 on 31 October 2027: after that you can neither create nor update functions with that runtime, and existing ones may be disabled.
How to migrate
- List the extensions from the Extensions page of the Firebase console or with
firebase ext:list --project <project-id>: the Replacement Kit column shows which ones have an official npm kit. - Uninstall the ones you no longer use. After 31 March 2027 the uninstall commands disappear, and functions, Secret Manager secrets, Cloud Tasks queues and custom service accounts have to be deleted by hand in the Google Cloud console.
- For the ones you keep without migrating, update them and save their configuration with
firebase ext:export --mode functions --project <project-id> --instance <instance-id>: after 31 March it will no longer be possible. - The ones to migrate need firebase-tools 15.32.0 or later and an account with the roles listed in the guide, including
roles/firebaseextensions.editorandroles/run.developer. - Run
firebase ext:migrate --project <project-id>, once per instance: the command has you pick the extension and the instance, updates the extension if needed, installs the kit with the same configuration and deploys it. It then asks whether to uninstall the extension straight away: answer no, which is the default. With--forcethe extension is deleted right after the deploy, with no checks. - After a few minutes (Eventarc takes a little while to be ready) trigger a test event and read the kit's logs with
firebase functions:log --only <function-name>. With the BigQuery export, rows in the tables do not prove the kit works: if the same event reaches both the extension and the kit, they are deduplicated. - When the kit works, uninstall the extension with
firebase ext:uninstall <instance-id> --project <project-id> --immediate. To back out before that point, just remove the kit.
.env.<project-id> file, if you pass --project to every command.Costs and effort
According to the FAQ, migration generally does not change billing, because you already pay for the Google Cloud resources the extensions use. During the overlap you may pay a little more, because each write is processed twice, so keep the window short.
For a project with a single extension that already has an official kit, we estimate half a day to a day of work, covering permissions, a trial on a test environment, checking the logs and production [illustrative estimate, to be confirmed against your own project]. Extensions without a kit need a rewrite that has to be estimated case by case, and anyone using a custom Docker repository or a customer-managed KMS key has to follow a manual procedure with gcloud, described in the FAQ.
What we check in a Firebase project
This deadline touches two of our services: internal platforms and cloud software, where we build multi-user platforms integrated with the systems already in use, and mobile app development, which includes backend integration. Firebase news matters for our own products too: SpaceClub, our nightlife platform, is built on Firebase and Google Cloud.
If you ask us for a review, we start from the list of installed extensions and the kits available, and we export the configuration of each one before touching anything. For the ones to migrate we propose a plan with a quote and a roadmap agreed before we intervene: a trial on a test project, a short overlap, checks in the logs and only then the uninstall. We do not estimate the rewrite of an extension that has no kit before we have read its code.
What we do not know yet
- Which other extensions will get an official kit: it depends on the publishers.
- When your extensions will stop working if you do not migrate: it depends on the Node.js runtime of each, and the FAQ does not give it extension by extension.
- When a CLI version will include the fix for
functions:lifecycle:run, the command the guide gives for rerunning a failed hook. The firebase-tools changelog says it did not recognise kit instances: the fix has been in the code since 6 October, while 15.32.1 dates from 30 September.
If you want us to look at your Firebase project starting from the list of extensions, get in touch: the work falls under our internal platforms and cloud software service.
Sources
- Firebase: Release Notes (entries of 20 July and 30 September 2026)
- Firebase: Firebase Extensions Deprecation FAQ
- Firebase: Migrate Firebase Extensions to function kits
- Firebase: Post migration best practices
- Firebase: Firebase CLI Release Notes (versions 15.32.0 and 15.32.1)
- GitHub, firebase-tools: src/commands/ext-migrate.ts (version 15.32.1)
- GitHub, firebase-tools: pull request 11240 (merged 6 October 2026)
- Google Cloud: Runtime support | Cloud Run functions



