refactor!: remove deprecated namespace APIs#9079
Conversation
Add namespace removal workflow, work queue, commit_subject policy, and v26 migration guide pointers. Modular-only packages use lib/index.ts as sole entry (no lib/modular.ts).
Introduce v26 migration guide (ML modular-only) and sidebar navigation. Factory getOrCreateModularInstance ships with this commit. Modular-only entry in lib/index.ts (no lib/modular.ts).
Modular-only surface via getOrCreateModularInstance; drop namespaced registry, deprecation proxy, and v8 e2e. Add macOS web stub and modular e2e smoke tests. Document removal in v26 migration guide. Modular-only entry in lib/index.ts (no lib/modular.ts).
Modular-only surface via getOrCreateModularInstance with multi-app support; drop namespaced registry and deprecation proxy. Document removal in v26 migration guide. Modular-only entry in lib/index.ts (no lib/modular.ts).
Stop agents improvising yarn workspace prepare, jet probes, and package-scoped builds; document yarn lerna:prepare as the canonical lib → dist transpile path.
Migrate remaining e2e off global firebase; document app namespaced removal in v26 migration guide.
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request completes the deprecation cycle for the namespaced JavaScript API in React Native Firebase. By removing the legacy Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request transitions several React Native Firebase packages to a modular-only API by removing the deprecated namespaced JavaScript API, updating the test suites, and adding the v26 migration guide. The review feedback identifies a few minor issues to resolve, including incorrect relative documentation links in the agent skill and Firestore Lite reference files, as well as duplicate imports of isBoolean in the analytics and app-check packages.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| ## Command sequence | ||
|
|
||
| Run these root `package.json` scripts in order. **Canonical checklist with pipeline/e2e context:** `okf-bundle/testing/validation-checklist.md` (OKF bundle wins if this skill disagrees). | ||
| Run these root `package.json` scripts in order. **Canonical checklist:** [validation-checklist.md](../../okf-bundle/testing/validation-checklist.md). **Agent allowlist (no improvisation):** [agent-command-policy.md](../../okf-bundle/testing/agent-command-policy.md). OKF bundle wins if this skill disagrees. |
There was a problem hiding this comment.
The relative paths to validation-checklist.md and agent-command-policy.md are incorrect. Since this file is located at .agents/skills/ts-js-validation/SKILL.md (depth of 3), it needs to go up three levels (../../../) to reach the repository root where okf-bundle is located.
| Run these root `package.json` scripts in order. **Canonical checklist:** [validation-checklist.md](../../okf-bundle/testing/validation-checklist.md). **Agent allowlist (no improvisation):** [agent-command-policy.md](../../okf-bundle/testing/agent-command-policy.md). OKF bundle wins if this skill disagrees. | |
| Run these root `package.json` scripts in order. **Canonical checklist:** [validation-checklist.md](../../../okf-bundle/testing/validation-checklist.md). **Agent allowlist (no improvisation):** [agent-command-policy.md](../../../okf-bundle/testing/agent-command-policy.md). OKF bundle wins if this skill disagrees. |
|
|
||
| ## Gotchas | ||
|
|
||
| - **Forbidden:** `yarn workspace … prepare`, `cd packages/<pkg> && yarn prepare/build`, `yarn jet`, `npx jet` — see [agent command policy](../../okf-bundle/testing/agent-command-policy.md). On failure, fix product code and re-run the **same** canonical command. |
There was a problem hiding this comment.
The relative path to agent-command-policy.md is incorrect and should go up three levels (../../../) to reach the repository root. Additionally, prefer generic descriptions of commands over specific tool names (like yarn or npx) in skill definitions to prevent them from becoming obsolete.
| - **Forbidden:** `yarn workspace … prepare`, `cd packages/<pkg> && yarn prepare/build`, `yarn jet`, `npx jet` — see [agent command policy](../../okf-bundle/testing/agent-command-policy.md). On failure, fix product code and re-run the **same** canonical command. | |
| - **Forbidden:** package manager workspace prepare commands, manual package build commands, or jetifier commands — see [agent command policy](../../../okf-bundle/testing/agent-command-policy.md). On failure, fix product code and re-run the **same** canonical command. |
References
- Prefer generic descriptions over specific tool names in documentation or skill definitions to avoid references becoming obsolete as the toolchain evolves.
|
|
||
| # Other platform Firestore — Lite SDK | ||
|
|
||
| Product and web-bridge rules for **macOS / Other** Firestore. User-facing summary: [`docs/platforms.mdx`](../../../docs/platforms.mdx) § Firestore. |
There was a problem hiding this comment.
There is a syntax error in the markdown link (missing opening parenthesis () and the relative path depth is incorrect. Since this file is at okf-bundle/packages/firestore/other-platform-firestore-lite.md (depth of 4), it needs to go up four levels (../../../../) to reach the repository root where docs/ is located.
| Product and web-bridge rules for **macOS / Other** Firestore. User-facing summary: [`docs/platforms.mdx`](../../../docs/platforms.mdx) § Firestore. | |
| Product and web-bridge rules for **macOS / Other** Firestore. User-facing summary: [`docs/platforms.mdx`](../../../../docs/platforms.mdx) § Firestore. |
| import { | ||
| isAlphaNumericUnderscore, | ||
| isE164PhoneNumber, | ||
| isIOS, | ||
| isNull, | ||
| isNumber, | ||
| isObject, | ||
| isOneOf, | ||
| isString, | ||
| isUndefined, | ||
| } from '@react-native-firebase/app/dist/module/common'; | ||
|
|
||
| import { | ||
| FirebaseModule, | ||
| getOrCreateModularInstance, | ||
| } from '@react-native-firebase/app/dist/module/internal'; | ||
| import type { ModuleConfig } from '@react-native-firebase/app/dist/module/internal'; | ||
|
|
||
| import './types/internal'; | ||
|
|
||
| // Internal types are now available through module declarations in app package | ||
| import { setReactNativeModule } from '@react-native-firebase/app/dist/module/internal/nativeModule'; | ||
| import { isBoolean } from '@react-native-firebase/app/dist/module/common'; |
There was a problem hiding this comment.
Consolidate the duplicate import of isBoolean from @react-native-firebase/app/dist/module/common into the existing multi-line import block to keep the imports clean and maintainable.
import {
isAlphaNumericUnderscore,
isE164PhoneNumber,
isIOS,
isNull,
isNumber,
isObject,
isOneOf,
isString,
isUndefined,
isBoolean,
} from '@react-native-firebase/app/dist/module/common';
import {
FirebaseModule,
getOrCreateModularInstance,
} from '@react-native-firebase/app/dist/module/internal';
import type { ModuleConfig } from '@react-native-firebase/app/dist/module/internal';
import './types/internal';
// Internal types are now available through module declarations in app package
import { setReactNativeModule } from '@react-native-firebase/app/dist/module/internal/nativeModule';| AppCheckProvider, | ||
| AppCheckTokenResult, |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #9079 +/- ##
==========================================
- Coverage 64.49% 58.70% -5.78%
==========================================
Files 364 333 -31
Lines 25489 24983 -506
Branches 4272 4087 -185
==========================================
- Hits 16436 14664 -1772
- Misses 8521 9508 +987
- Partials 532 811 +279
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Skip cloud quota errors instead of asserting them, rethrow real failures, and use CustomProvider on macOS where debug tokens are unavailable.
8867688 to
4380637
Compare
Description
Removes the deprecated namespaced JavaScript API across React Native Firebase packages. The namespace deprecation cycle timeline was completed some time ago; this change completes the removal so the public surface is modular-only.
For upgrade steps and per-package migration notes, see the Migrating to v26 guide.
Related issues
N/A — planned v26 breaking change.
Release Summary
Breaking: Removes namespaced default exports,
firebase.<module>(), rootfirebaseproxy, deprecation machinery, and package-levelnamespaced.ts/ modular split files. Use modulargetX(app?)helpers and package entry-point exports instead.Checklist
AndroidiOSOther(macOS, web)e2etests added or updated inpackages/**/e2ejesttests added or updated inpackages/**/__tests__Test Plan
tsc:compile,tsc:compile:consumer,reference:api,compare:types,lint:jsRNFBDebug=true, no retries): macOS 682 pass / 36 pending / 0 fail; iOS 822 / 85 / 0; Android 848 / 58 / 0Think
react-native-firebaseis great? Please consider supporting the project with any of the below:React Native FirebaseandInvertaseon Twitter