[REQUIRED] Environment info
- firebase-tools: 15.11.0 (also reproduced with 15.10.1)
- Platform: macOS (local) / Ubuntu (GitHub Actions)
- Node.js: 22.22.1 (also reproduced with 20.19.3)
- Framework: SvelteKit 2 + @sveltejs/adapter-node
First observed: March 19, 2026 at approximately 12:00 UTC (9 PM KST). The same deployment pipeline last succeeded at approximately 09:00 UTC (6 PM KST) on the same day — no project or CI configuration changes were made between the two runs.
[REQUIRED] Test case
SvelteKit project deployed to Firebase Hosting with webframeworks experiment enabled. firebase.json:
{
"hosting": {
"target": "app",
"source": "./",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"frameworksBackend": {
"region": "asia-northeast3"
}
}
}
[REQUIRED] Steps to reproduce
- Enable
FIREBASE_CLI_EXPERIMENTS=webframeworks
- Run
npx firebase-tools hosting:channel:deploy <channel> --only app --expires 7d --project <project-id>
- Also fails with
firebase deploy --only hosting (live channel)
[REQUIRED] Expected behavior
Hosting deployment succeeds, Cloud Run service is updated with the new revision and traffic tag.
[REQUIRED] Actual behavior
Cloud Functions create/update succeeds, but immediately after, hosting: finalizing version fails:
✔ functions[...<ssr-function-name>(<region>)] Successful create operation.
i hosting[<site-name>]: finalizing version...
Error: Failed to replace Run service projects/<project-number>/locations/<region>/services/<ssr-function-name>
Debug log shows:
PUT https://run.googleapis.com/v1/projects/<project-number>/locations/<region>/services/<ssr-function-name>
HTTP 409: Revision named '<ssr-function-name>-00002-xxx' with different configuration already exists.
Root cause analysis
- Cloud Functions deployment creates revision
00001 with a specific configuration
- Hosting finalize then calls
ReplaceService (PUT) to add a traffic tag (fh-xxxx) to the same service
- This PUT request tries to create revision
00002 but with a different image digest/configuration than what Cloud Functions just built
- Result:
409 ALREADY_EXISTS
Reproduction rate
100% — fails on every attempt across:
- Local CLI and GitHub Actions
- Node.js 20 and 22
- firebase-tools 15.10.1 and 15.11.0
asia-east1 and asia-northeast3 regions
- Both
hosting:channel:deploy and firebase deploy --only hosting
- Both fresh function creation and existing function update
[REQUIRED] Environment info
First observed: March 19, 2026 at approximately 12:00 UTC (9 PM KST). The same deployment pipeline last succeeded at approximately 09:00 UTC (6 PM KST) on the same day — no project or CI configuration changes were made between the two runs.
[REQUIRED] Test case
SvelteKit project deployed to Firebase Hosting with
webframeworksexperiment enabled.firebase.json:{ "hosting": { "target": "app", "source": "./", "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], "frameworksBackend": { "region": "asia-northeast3" } } }[REQUIRED] Steps to reproduce
FIREBASE_CLI_EXPERIMENTS=webframeworksnpx firebase-tools hosting:channel:deploy <channel> --only app --expires 7d --project <project-id>firebase deploy --only hosting(live channel)[REQUIRED] Expected behavior
Hosting deployment succeeds, Cloud Run service is updated with the new revision and traffic tag.
[REQUIRED] Actual behavior
Cloud Functions create/update succeeds, but immediately after,
hosting: finalizing versionfails:Debug log shows:
Root cause analysis
00001with a specific configurationReplaceService(PUT) to add a traffic tag (fh-xxxx) to the same service00002but with a different image digest/configuration than what Cloud Functions just built409 ALREADY_EXISTSReproduction rate
100% — fails on every attempt across:
asia-east1andasia-northeast3regionshosting:channel:deployandfirebase deploy --only hosting