fix(macos-init): add --legacy-peer-deps to npm install command#2785
Closed
ludwig-pro wants to merge 1 commit intomicrosoft:mainfrom
Closed
fix(macos-init): add --legacy-peer-deps to npm install command#2785ludwig-pro wants to merge 1 commit intomicrosoft:mainfrom
ludwig-pro wants to merge 1 commit intomicrosoft:mainfrom
Conversation
npm 7+ enforces strict peer dependency checking by default. When react-native-macos declares an exact peer dependency (e.g., react-native@0.79.6) but the user has a newer patch version installed (e.g., react-native@0.79.7), npm refuses to install the package. Adding --legacy-peer-deps makes npm behave like npm 6, ignoring peer dependency version mismatches. This is safe for patch version differences which are backward-compatible by semver convention. This fixes the installation error: Command failed: npm install --save --silent "react-native-macos@^0.79.0-0"
Collaborator
|
Sorry for the delay! We were working very hard on getting 0.81 out the door and I hadn't looked at other PRs. The strict peer dep is intentional, it's what we use to determine the right version of Hermes to use. So I'm not sure I want to take this fix but also I need to think about what we need to do to our unit flow to fix 🤔 |
This was referenced Mar 20, 2026
Saadnajmi
added a commit
that referenced
this pull request
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 #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. ## Test plan - [x] Created a new project with `npx @react-native-community/cli init testapp --version 0.81.6` - [x] Ran modified init — happy path: no peer dep warning, correct finish message - [x] Tested mismatch path (`react-native@0.81.5` vs required `0.81.6`) — warning fires before install with clear message - [x] TypeScript compiles cleanly - [x] Re-enabled CI integration test (no longer depends on Verdaccio) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Saadnajmi
added a commit
that referenced
this pull request
Mar 20, 2026
…2859) ## 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 #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 - [x] Created a new project with `npx @react-native-community/cli init testapp --version 0.81.6` - [x] Ran modified init — happy path: no peer dep warning, correct finish message - [x] Tested mismatch path (`react-native@0.81.5` vs required `0.81.6`) — warning fires before install with clear message - [x] TypeScript compiles cleanly - [x] Re-enabled CI integration test (no longer depends on Verdaccio) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Collaborator
|
Superseded by #2858 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes the installation failure when running
npx react-native-macos-initon projects with newer patch versions of React Native.Problem
When following the official Getting Started guide:
npx @react-native-community/cli init myProject --version 0.79 cd myProject npx react-native-macos-initThe last command fails with:
Root Cause
react-native-macos@0.79.1declares an exact peer dependency:"react-native": "0.79.6"react-native@0.79.7)--silentflag hides the actual error message, making debugging difficultSolution
Add
--legacy-peer-depsto the npm install command. This flag:Changes
packages/react-native-macos-init/src/cli.ts: Added--legacy-peer-depsflag to the npm install commandTest Plan
npx @react-native-community/cli init TestApp --version 0.79react-native@0.79.7(or newer patch) is installednpx react-native-macos-initwith this fixRelated
I'll open a separate issue to discuss using a caret range (
^0.79.0) instead of exact versions for the react-native peer dependency in release branches.