build: nx build caching, dependency-cruiser deps lint, ts emits#9100
build: nx build caching, dependency-cruiser deps lint, ts emits#9100mikehardy wants to merge 9 commits into
Conversation
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 introduces significant improvements to the monorepo build infrastructure by integrating Nx for local computation caching and formalizing the package dependency graph. These changes, combined with new dependency-cycle linting and TypeScript declaration maps, enhance build reliability, developer productivity, and IDE support. The PR also includes comprehensive documentation for these new tooling decisions and a benchmark script to validate the performance gains. Highlights
Ignored Files
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 introduces monorepo tooling enhancements for React Native Firebase, including the integration of Nx local caching, deterministic build ordering via devDependencies, dependency-cycle linting with dependency-cruiser, and TypeScript declaration maps. Additionally, AI test mock fetching is moved to a gated Jest global setup to ensure build determinism, and a benchmark script is added. The review feedback is highly constructive and should be fully addressed: it suggests replacing the glob in the dependency linter to support Windows, hardening the Jest global setup argument parsing to prevent redundant mock fetches, replacing deprecated perl invocations with Node.js in the benchmark script, and using standard array indexing instead of .at(0) for backward compatibility.
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.
44344e8 to
68d318a
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9100 +/- ##
============================================
- Coverage 58.66% 58.64% -0.02%
+ Complexity 1617 1616 -1
============================================
Files 503 503
Lines 39180 39180
Branches 5807 5743 -64
============================================
- Hits 22981 22973 -8
+ Misses 14800 14743 -57
- Partials 1399 1464 +65
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Summary
yarn lerna:prepareruns through the Lerna/Nx runner with scoped inputs, declared outputs, and CI.nx/cache(no Nx Cloud); devDependency graph enforces build order across 17 packages.lint:deps— cycles, relative-distimports, and hub/satellite import boundaries are linted in CI viayarn lint.declarationMapfor IDE go-to-definition intolib/sources.--testPathPatternshandled.scripts/benchmark-prepare.shcaptures cold install, full rebuild, no-op, and single-package edit scenarios.Prepare benchmark (macOS,
scripts/benchmark-prepare.sh)*Scenario D first run is a cache miss (~5.3s); median uses warm cache hits on iterations 2–3.
Test plan
yarn lerna:preparedeterministic (Nx cache hits on repeat)yarn lint(incl.lint:deps),yarn tsc:compile,yarn compare:types,yarn tests:jest