You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
0.72: Extending @react-native/metro-config is recommended, but falls back if users have not updated their metro.config.js, logging a warning.
0.73 (this diff): Updating metro.config.js to the new format is required — log warning and (later on) fail.
Changelog: [Breaking] Remove fallback flow for Metro config defaults (React Native 0.73)
Test Plan
Using rn-tester configured with a locally yarn linked copy of RN CLI.
✅ Correct config logs no warning and builds successfully
✅ Incorrect config logs updated warning and fails
⬇️ FYI @cortinico@kelset, in case you have opinions for better DevX. It is marginally restrictive that we require a reference to @react-native/metro-config in the immediate metro.config.js file — perhaps if we detect this more strongly we can fail rather than warn. However I can't think of a simple way to do this — and we will have had the 0.72 release cycle for people to update their projects by this point.Addressed with more visible warning.
This ties the move of the cli-plugin-metro effort to the core with v0.73, right? Maybe we should start merging those changes to a parallel branch with the plugin removal?
@thymikee It does — I was aiming to stack a sequence of simplification changes, including this PR, here in the CLI repo first. This is to slightly reduce the surface area that we are migrating into the RN repo (and from TypeScript into Flow 🙈).
A change like this also gets better visibility in this repo for now.
@kelset Sidenote: I'm looking to merge this change ahead of work to migrate and collapse cli-plugin-metro back into the React Native repository, with the intent being to minimise the number of files/surface area before this migration.
With some over-the-weekend reflection — the flow in this PR should probably hard-error (helpful in particular to pin down this error cause in CI) ➡️ update incoming.
For the user, it might be better if we allowed the entire metro.config.js file to be optional (but reinsertable, for standalone metro commands) (especially after react/metro#977 ships). We can look at this post-migration, since it'll be possible to refer to @react-native/metro-config in the same repo.
This check remains a warning, but is made much more visible (as lack of this config will break builds except for rare advanced usages). cc @motiz88 for wording sign off.
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
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 follows up the
@react-native/metro-configsetup added in React Native 0.72. It removes the fallback to a replicated internal copy of Metro config defaults incli-plugin-metro, effectively reverting #1896.Rollout plan recap:
@react-native/metro-configis recommended, but falls back if users have not updated theirmetro.config.js, logging a warning.metro.config.jsto the new format is required — log warning and (later on) fail.Changelog: [Breaking] Remove fallback flow for Metro config defaults (React Native 0.73)
Test Plan
Using
rn-testerconfigured with a locallyyarn linked copy of RN CLI.✅ Correct config logs no warning and builds successfully
✅ Incorrect config logs updated warning and fails
⬇️ FYI @cortinico@kelset, in case you have opinions for better DevX. It is marginally restrictive that we require a reference toAddressed with more visible warning.@react-native/metro-configin the immediatemetro.config.jsfile — perhaps if we detect this more strongly we can fail rather than warn. However I can't think of a simple way to do this — and we will have had the 0.72 release cycle for people to update their projects by this point.