fix(0.81, macos-init): improve init flow and drop chalk dependency#2859
Conversation
|
4bc094b to
2667352
Compare
|
@copilot update the engines field in the react-native-macos-init package json per the below comment, and update the lock file. "We need the engines field to ensure users have a recent enough version of Node for styleText" |
There was a problem hiding this comment.
Pull request overview
This PR updates the macOS init/generation flow to reduce redundant installs, improve user-facing install diagnostics, and remove the chalk dependency by switching to Node’s built-in node:util styling.
Changes:
- Remove the second dependency installation step from the macOS generator path.
- Improve
react-native-macos-initinstall behavior by surfacing real npm/yarn errors and warning early on peer dependency mismatches. - Replace
chalkusage withnode:utilstyleTextand update the post-generation “next steps” instructions.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/react-native/local-cli/generator-macos/index.js | Drops chalk, removes dependency-install helper, updates finish message output styling. |
| packages/react-native/local-cli/generator-common/index.js | Replaces chalk-styled logging with styleText. |
| packages/react-native/local-cli/generate-macos.js | Stops invoking a redundant dependency installation step. |
| packages/react-native-macos-init/src/cli.ts | Switches to styleText, adds peer-dep validation warning, improves install error output handling. |
| packages/react-native-macos-init/package.json | Removes chalk dependency and adjusts devDependencies for Node typings. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
acdeb9d to
a2b95b6
Compare
- Remove redundant dependency install (generate-macos.js was running npm i/yarn after cli.ts already installed react-native-macos) - Show npm/yarn errors on install failure instead of hiding them with --silent flag - Validate peer dependencies before install and warn on mismatch - Auto-run pod install after template generation (non-fatal on failure) - Fix finish message: remove nonexistent yarn start:macos, show correct npx react-native run-macos and npx react-native start commands Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
a2b95b6 to
1d8a054
Compare
Drop the chalk dependency in favor of Node's built-in styleText API (available since Node 20.12). Add @types/node@^22 as a devDependency for proper type resolution. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the Verdaccio-based integration test with a simpler approach that installs the local react-native-macos package directly via npm install <path>. This avoids the Verdaccio hang issue (microsoft#2344) while still testing the full init flow end-to-end: project creation, template application, pod install, and macOS build. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1d8a054 to
691777a
Compare
Summary
generate-macos.jswas runningnpm i/yarna second time aftercli.tsalready installedreact-native-macos)--silentyarn start:macos, show correctpod install,npx react-native run-macosandnpx react-native startchalkwith Node's built-innode:utilstyleText(available since Node 20.12), addengines.nodefieldnpm install <path>Motivation
Users hitting
npx react-native-macos-initfrequently encounter silent failures from peer dependency mismatches (e.g.react-native-macos@0.81.4requiresreact-native@0.81.6exactly, but--version 0.81installs the latest patch). The--silentflag hid the actual error. The finish message referenced a nonexistentyarn start:macosscript.Addresses the same root issue as #2785 and #2793 but with a broader fix.
Backport of #2858.
Test plan
npx @react-native-community/cli init testapp --version 0.81.6react-native@0.81.5vs required0.81.6) — warning fires before install with clear message🤖 Generated with Claude Code