Skip to content

fix(0.81, macos-init): improve init flow and drop chalk dependency#2859

Merged
Saadnajmi merged 3 commits intomicrosoft:0.81-stablefrom
Saadnajmi:0.81/improve-macos-init
Mar 20, 2026
Merged

fix(0.81, macos-init): improve init flow and drop chalk dependency#2859
Saadnajmi merged 3 commits intomicrosoft:0.81-stablefrom
Saadnajmi:0.81/improve-macos-init

Conversation

@Saadnajmi
Copy link
Copy Markdown
Collaborator

@Saadnajmi Saadnajmi commented Mar 20, 2026

Summary

  • Remove redundant dependency install (generate-macos.js was running npm i/yarn a second time after cli.ts already installed react-native-macos)
  • Show actual npm/yarn errors on install failure instead of swallowing them with --silent
  • Validate peer dependencies before install and warn on version mismatch
  • Fix finish message: remove nonexistent yarn start:macos, show correct pod install, npx react-native run-macos and npx react-native start
  • Replace chalk with Node's built-in node:util styleText (available since Node 20.12), add engines.node field
  • Re-enable integration test CI without Verdaccio (fixes ci: re-enable verdaccio dependent tests #2344) — installs local package directly via npm install <path>

Motivation

Users hitting npx react-native-macos-init frequently encounter silent failures from peer dependency mismatches (e.g. react-native-macos@0.81.4 requires react-native@0.81.6 exactly, but --version 0.81 installs the latest patch). The --silent flag hid the actual error. The finish message referenced a nonexistent yarn start:macos script.

Addresses the same root issue as #2785 and #2793 but with a broader fix.

Backport of #2858.

Test plan

  • Created a new project with npx @react-native-community/cli init testapp --version 0.81.6
  • Ran modified init — happy path: no peer dep warning, correct finish message
  • Tested mismatch path (react-native@0.81.5 vs required 0.81.6) — warning fires before install with clear message
  • TypeScript compiles cleanly
  • Re-enabled CI integration test (no longer depends on Verdaccio)

🤖 Generated with Claude Code

@Saadnajmi Saadnajmi requested a review from a team as a code owner March 20, 2026 05:32
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Mar 20, 2026

⚠️ No Changeset found

Latest commit: 691777a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@Saadnajmi Saadnajmi force-pushed the 0.81/improve-macos-init branch from 4bc094b to 2667352 Compare March 20, 2026 05:39
Comment thread packages/react-native-macos-init/package.json
@Saadnajmi
Copy link
Copy Markdown
Collaborator Author

@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"

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-init install behavior by surfacing real npm/yarn errors and warning early on peer dependency mismatches.
  • Replace chalk usage with node:util styleText and 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.

Comment thread packages/react-native-macos-init/package.json
Comment thread packages/react-native/local-cli/generator-macos/index.js Outdated
Comment thread packages/react-native-macos-init/src/cli.ts
@Saadnajmi Saadnajmi force-pushed the 0.81/improve-macos-init branch 5 times, most recently from acdeb9d to a2b95b6 Compare March 20, 2026 19:52
- 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>
@Saadnajmi Saadnajmi force-pushed the 0.81/improve-macos-init branch from a2b95b6 to 1d8a054 Compare March 20, 2026 21:24
Saadnajmi and others added 2 commits March 20, 2026 16:27
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>
@Saadnajmi Saadnajmi force-pushed the 0.81/improve-macos-init branch from 1d8a054 to 691777a Compare March 20, 2026 21:28
@Saadnajmi Saadnajmi merged commit b81e800 into microsoft:0.81-stable Mar 20, 2026
13 of 14 checks passed
@Saadnajmi Saadnajmi deleted the 0.81/improve-macos-init branch March 20, 2026 21:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants