Skip to content

docs(delete-user-data): kit/extension parity – manual setup deploys to us-east1, README says us-central1 #3252

Open

Description

@CorieW

delete-user-data kit/extension parity. Priority: medium. The README says the wrong region for manual setups, so functions handle user data in an unexpected region.

Difference

  • Extension: functions deploy to the location chosen at install, us-central1 by default. I tested europe-west1 and that worked too.
  • Kit: the README says the functions deploy to "your codebase's default (us-central1 unless you have changed it)". In practice, firebase-tools 15.31 puts all three functions in us-east1. Pub/Sub and Auth triggers with no region resolve to DEFAULT_GLOBAL_TRIGGER_REGION = "us-east1" (firebase-tools services/index.ts).

Not pinning a region is already an accepted kit difference. What's wrong is the documentation. The CLI install paths avoid this: firebase functions:kits:install and ext:migrate generate an entry file that sets setGlobalOptions({ region }) from FUNCTION_DEFAULT_REGION, and a migrated instance landed in its extension's region. Only the README's manual setup hits us-east1.

Reproduced

A deploy with no region set created kit-<id>-clearData, -handleSearch and -handleDeletion in us-east1. The extension instances deployed to us-central1 and europe-west1, as configured.

An earlier test suggested that from us-east1, a large recursive delete in a nam5 database timed out and left data behind. A retest didn't reproduce this. With FIRESTORE_PATHS=rec/{UID}, recursive mode and 20,000 docs under rec/<uid>/items, 4 runs each:

Extension (us-central1) Kit (us-east1) Kit (us-central1)
Items left 0 0 0
Recursive delete time 49–56s 40–41s 40s

So the problem here is the documentation, not a measured failure. Data is still processed outside the region a reader would expect.

Code

Resolution

Correct the README: say functions land in us-east1 unless a region is set, and point readers to firebase functions:kits:install, which prompts for FUNCTION_DEFAULT_REGION. Document calling setGlobalOptions({ region }) before the kit loads, the same way the CLI's kit init template uses FUNCTION_DEFAULT_REGION. In an ES module, import / export … from load the kit before the rest of the entry file runs, so the call belongs in a separate module imported first.

Activity

  1. added
    type: bugSomething isn't working
    and removed
    documentationImprovements or additions to documentation
    on Oct 20, 2026
  2. changed the title [-]docs(delete-user-data): kit/extension parity – README says us-central1, kit functions deploy to us-east1[/-] [+]fix(delete-user-data): kit/extension parity – manual setup deploys to us-east1, README says us-central1, large deletes time out[/+] on Oct 20, 2026
  3. changed the title [-]fix(delete-user-data): kit/extension parity – manual setup deploys to us-east1, README says us-central1, large deletes time out[/-] [+]fix(delete-user-data): kit/extension parity – manual setup deploys to us-east1, README says us-central1[/+] on Oct 20, 2026
  4. changed the title [-]fix(delete-user-data): kit/extension parity – manual setup deploys to us-east1, README says us-central1[/-] [+]docs(delete-user-data): kit/extension parity – manual setup deploys to us-east1, README says us-central1[/+] on Oct 20, 2026
  5. added
    documentationImprovements or additions to documentation
    and removed
    type: bugSomething isn't working
    on Oct 20, 2026
  6. self-assigned this
    on Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions