NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2732 most downloaded on npm
🚇 Config parser for Metro.
Last release 21 days ago
13 Sep 2026
Release timing varies
gaps range from 9 days to 5 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
150 releases · first in 2018
[Feature] : Add resolver.schemeResolvers to resolve URI-scheme-prefixed specifiers (eg foo:bar ) with custom resolvers ( #1804 by @robhogan )
resolver.schemeResolvers to resolve URI-scheme-prefixed specifiers (eg foo:bar) with custom resolvers (#1804 by @robhogan)metro:babel-runtime/<path> imports to Metro's own @babel/runtime dependency (8388f71 by @robhogan)metro-babel-transformer: Pass inlinePlatform to Babel presets via caller (6bbe095 by @robhogan)image-size dependency with vendored parsers, fix CVE alerts (#1860 by @robhogan)charset=utf-8 in the Content-Type of text assets and source files served by the dev server (#1888 by @robhogan)Platform.OS write targets during constant inlining (#1890 by @OskarEichler)Platform.select object literals (#1889 by @OskarEichler)FallbackWatcher no longer misses files written to a directory while it is being crawled (#1907 by @robhogan)HttpStore: Handle socket errors during writes, so they're retried rather than crashing the process (fad3b88)CI=false and CI=0 as not-CI when defaulting watch. CI is now detected from process.env.CI only, dropping the ci-info dependency (61e4592 by @robhogan)FallbackWatcher: Drop walker dependency, reduce crawl RSS by ~34% and peak heap by ~41% (#1906 by @robhogan)void (not Promise<void>), eg MetroServer#end (#1909 by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
metro-file-map: Add crawlerFactory to optionally replace the built-in Watchman / Node crawlers (68022f0 by @vzaidman)serializer.unstable_inlineDependencyMap to inline module IDs at serialisation time (#1786 by @robhogan)serializer.unstable_getAsyncDependencyPath to supply custom paths to framework-defined __loadBundleAsync (#1855 by @robhogan)transformer.unstable_renameRequire - require is never renamed (42577f7 by @robhogan)experimentalImportSupport: Fix export * from re-exporting the source module's default export (#1777 by @robhogan)Full Changelog: v0.87.0...v0.87.1
One column per quarter.
[Breaking] : Widen Resolution union returned by resolvers to allow type: 'virtualModule' , pending implementation. ( 8336654 by @robhogan )
Resolution union returned by resolvers to allow type: 'virtualModule', pending implementation. (8336654 by @robhogan)allowOptionalDependencies defaults to true to align with RN and Expo (#1775 by @robhogan)mergeConfig encounters an async config in a config chain (#1754 by @durvesh1992)require in bundle output, improve cold build time ~5%`(TBD by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
experimentalImportSupport: Support namespace re-exports, such as export * as Name from "module" (#1768 by @robhogan and @krystofwoldrich)experimentalImportSupport: Fix exports renamed by destructuring, and support exports of rest spreads (#1772 by @robhogan)experimentalImportSupport: Fix precedence so explicit export default and named exports win over export * from (#1773 by @robhogan)experimentalImportSupport: Evaluate export from dependencies in the module prelude instead of within or after the module body (#1774 by @robhogan)Full Changelog: v0.86.0...v0.87.0
[Breaking] : Remove deprecated default exports from public entry points ( #1759 by @robhogan )
VlqMap (#1764, #1765 by @robhogan). Custom serialisers/transformers must consume/provide VlqMap mappings, not tuples..es6 config files (#1752 by @robhogan)resolver.blacklistRE config in favour of blockList (#1758 by @robhogan)HttpStore write retries incorrectly using the read endpoint's config (#1751 by @durvesh1992)Full Changelog: v0.85.0...v0.86.0
[Breaking] : Raise minimum supported Node.js version to 22 ( #1715 by @huntie )
PACKAGE_SELF_RESOLVE for self-referencing imports in the resolver (#1721 by @robhogan)require calls (#1675 by @kitten)metro-file-map (#1711 by @kitten)"browser"-spec bare-specifier → relative path redirects for nested and first-party package.jsons (#1720 by @robhogan)"browser"-spec redirects of a bare specifier to an absolute path (e1f4d61 by @robhogan)matchSubpathFromMainFields, improving overall resolver performance ~5% (9341463 by @robhogan)Full Changelog: v0.84.4...v0.85.0
This release is on the 0.84.x branch
This release is on the 0.84.x branch
This release is on the 0.84.x branch
Full Changelog: v0.84.4...v0.84.5
[Feature] : Support /[metro-watchFolders]/n/ paths for .bundle and .map requests ( #1695 by @huntie )
/[metro-watchFolders]/n/ paths for .bundle and .map requests (#1695 by @huntie)import().catch(), etc. as optional under transformer.allowOptionalDependencies (#1697 by @robhogan)Full Changelog: v0.84.3...v0.84.4
[Feature] : Add keepalive "heartbeat" message to Fast Refresh connections ( #1685 by @robhogan )
changeId metadata on HMRClient update-done messages (1585e444284f by @huntie)config.server.tls now sets Metro to be exposed as an https server (#1657 by @vzaidman)PackageCache: use Map/Set, cache null results, eliminate per-hit allocations (877b64ea5967 by @robhogan)metro that were previously TypeScript-specific (#1672 by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
config.unstable_fileMapPlugins (567aa8b62b95 by @robhogan)Full Changelog: v0.84.2...v0.84.3
[Types]: Restore publishing of TypeScript types to npm
Full changelog: https://github.com/facebook/metro/compare/v0.84.1...v0.84.2
[Fix] sync bundling progress between Metro cli and app hints (34ca6a6f621521a0780a54eeb32384b4f9c2f8ff by @vzaidman)
config.server.tls now sets Metro to be exposed as an https server (35ff94bec847b3ef6ea5f9d81a368cff4df64926 by @vzaidman)Full Changelog: https://github.com/facebook/metro/compare/v0.84.0...v0.84.1
[Breaking]: Drop support for Node v21, v23, and LTS minors released before v20.19
Full Changelog: https://github.com/facebook/metro/compare/v0.83.4...v0.84.0
This release is on the 0.83.x branch
This release is on the 0.83.x branch
Full Changelog: v0.83.7...v0.83.8
This release is on the 0.83.x branch
This release is on the 0.83.x branch
/[metro-watchFolders]/n/ paths for .bundle and .map requests (#1695 by @huntie)import().catch(), etc. as optional under transformer.allowOptionalDependencies (#1697 by @robhogan)Full Changelog: v0.83.6...v0.83.7
This release is on the 0.83.x branch
This release is on the 0.83.x branch
changeId metadata on HMRClient update-done messages (1585e444284f by @huntie)PackageCache: use Map/Set, cache null results, eliminate per-hit allocations (877b64ea5967 by @robhogan)metro that were previously TypeScript-specific (#1672 by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
config.unstable_fileMapPlugins (567aa8b62b95 by @robhogan)This is a hotfix on the 0.83.x branch.
This is a hotfix on the 0.83.x branch.
config.server.tls now sets Metro to be exposed as an https server (#1657 by @vzaidman)Full Changelog: v0.83.4...v0.83.5
[Feature]: Inline Platform.OS/Platform.select for variables bound to require('react-native').
Platform.OS/Platform.select for variables bound to require('react-native'). (https://github.com/facebook/metro/pull/1641 by @thymikee)content-type for /symbolicate (https://github.com/facebook/metro/pull/1630 by @MorvanL)Full Changelog: https://github.com/facebook/metro/compare/v0.83.3...v0.83.4
[Feature]: Accept functions as arguments to mergeConfig.
mergeConfig. (https://github.com/facebook/metro/pull/1580 by @robhogan)mergeConfig handling of 2+ partial configs. (https://github.com/facebook/metro/commit/a99067f6918831411bb8a721f65ca9c1cae8d355 by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.83.2...v0.83.3
[Fix] Replaced the deprecated url.parse with URL and correctly encode and decode source urls and source map urls
metro.config.js / metro.config.mjs (https://github.com/facebook/metro/pull/1557 by @robhogan).config/metro.js (etc.), as well as metro.config.js (https://github.com/facebook/metro/pull/1558 by @robhogan)metro.config.ts files when using Node.js/Bun versions that natively support it (https://github.com/facebook/metro/pull/1560 by @robhogan)globalPrefix to getRunModuleStatement (https://github.com/facebook/metro/pull/1566 by @robhogan)module.verboseName (dev builds only) now uses posix separators regardless of the OS the bundle is built on (https://github.com/facebook/metro/pull/1568 by @robhogan)hot param (https://github.com/facebook/metro/pull/1567 by @robhogan)url.parse with URL and correctly encode and decode source urls and source map urls (https://github.com/facebook/metro/pull/1548 by @vzaidman)Full Changelog: https://github.com/facebook/metro/compare/v0.83.1...v0.83.2
[Feature] Restore support for Node.js >= 20.19.4
[Feature] Restore support for Node.js >= 20.19.4 (https://github.com/facebook/metro/pull/1537 by @robhogan)
Full Changelog: https://github.com/facebook/metro/compare/v0.83.0...v0.83.1
[Breaking]: Require Node.js >= 22.14.0. (https://github.com/facebook/metro/pull/1531 by @robhogan) _(NOTE: Lowered to 20.19.4 in Metro 0.83.1)_
transformer.workerPath config. (https://github.com/facebook/metro/commit/49f7aac38c63e44f7238fa6cb95410e4938fb08d by @robhogan)/src/, make all non-root exports semver-private, except metro-runtime. (https://github.com/facebook/metro/commit/ae6f42372ed361611b5672705f22081c2022cf28 by @robhogan)Metro.runServer - return an object containing httpServer rather than the server instance directly. (https://github.com/facebook/metro/commit/95867cedbf65acbd434f09494b9f01d2df354dd9 by @robhogan)metro-babel-register, buck-worker-tool, metro-cache-key: Used named exports instead of exporting a default function. (https://github.com/facebook/metro/commit/f225bf1f6cf2033daf5c24acb6e719d5c3d3e1b8, https://github.com/facebook/metro/commit/69bde938d50f495a073c9d7d892565ecc825f53e, https://github.com/facebook/metro/commit/343003684b8303258793767ca745f30e2eb92a6f by @robhogan)metro-memory-fs will no longer be published. (https://github.com/facebook/metro/commit/02104f833a03462468f9b2c07c12b4f16c2806df by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.82.5...v0.83.0
[Feature]: Allow reuse of ReactRefresh instance across multiple module systems by prefixing more globals and IDs
ReactRefresh instance across multiple module systems by prefixing more globals and IDs (https://github.com/facebook/metro/pull/1513 by @jbroma)"type": "UnableToResolveError" to JSON server responses on resolution failures. (https://github.com/facebook/metro/commit/6f0093c4cdc597dbbde8b22b159b9cb0b7912865 by @robhogan)JsonReporter from metro's package root. (https://github.com/facebook/metro/commit/6f0093c4cdc597dbbde8b22b159b9cb0b7912865 by @robhogan)runBuild API / build CLI - Avoid a second graph traversal when enumerating assets. (https://github.com/facebook/metro/pull/1511 by @tido64)$RefreshReg$, e.g. when multiple module systems are overlayed. (https://github.com/facebook/metro/pull/1510 by @jbroma)NOTE: Experimental features are not covered by semver and can change at any time.
Full Changelog: https://github.com/facebook/metro/compare/v0.82.4...v0.82.5
[Feature] runBuild: Add optional bundleOut and sourceMapOut arguments to exactly specify output paths
runBuild: Add optional bundleOut and sourceMapOut arguments to exactly specify output paths (https://github.com/facebook/metro/commit/a6f2bdc6143e0963cfecc943d0c3396b6a6ce78b by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.82.3...v0.82.4
[Feature]: runBuild: add assets option to return an asset listing
assets option to return an asset listing (https://github.com/facebook/metro/commit/3b4f50333ba0931f6740f2cde30fc5129edb22ab by @robhogan)export from files triggering _interopRequireDefault is not a function (https://github.com/facebook/metro/pull/1498 by @byCedric)Full Changelog: https://github.com/facebook/metro/compare/v0.82.2...v0.82.3
[Feature]: Support proxy and socketPath in remote cache HttpStore
proxy and socketPath in remote cache HttpStore (https://github.com/facebook/metro/commit/cc7316b1f40ed5e4202a997673b26d55ff1b4ca5 by @robhogan)application/json body parsing in /symbolicate (https://github.com/facebook/metro/pull/1475 by @huntie)type for missing import errors in HMR client (https://github.com/facebook/metro/pull/1487 by @EvanBacon)Full Changelog: https://github.com/facebook/metro/compare/v0.82.1...v0.82.2
[Fix]: Fix wildcard pattern precedence in package.json imports/exports resolution
Full Changelog: https://github.com/facebook/metro/compare/v0.82.0...v0.82.1
[Breaking/Feature]: Enable support for package.json#exports resolution by default.
package.json#exports resolution by default. (https://github.com/facebook/metro/pull/1448 by @robhogan)metro/src/DeltaBundler/Transformer must now pass an options object with getOrComputeSha1 (https://github.com/facebook/metro/pull/1451 by @robhogan)metro/src/node-haste/DependencyGraph.getSha1 has been removed, prefer getOrComputeSha1 (https://github.com/facebook/metro/pull/1451 by @robhogan)watcher.unstable_lazySha1: false (https://github.com/facebook/metro/pull/1451 by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.81.3...v0.82.0
*This is a hotfix on the `0.81.x` branch.*
This is a hotfix on the 0.81.x branch.
This release fixes two issues with unstable_enablePackageExports, which is experimental and opt-in in Metro 0.81.
NOTE: Experimental features are not covered by semver and can change at any time.
export from files triggering _interopRequireDefault is not a function (https://github.com/facebook/metro/commit/5f79ce82ed5be99aaf691d555b83f8b26bc2a8c1 by @byCedric)Full Changelog: https://github.com/facebook/metro/compare/v0.81.4...v0.81.5
*This is a hotfix on the `0.81.x` branch.*
This is a hotfix on the 0.81.x branch.
This release fixes a number of issues with unstable_enablePackageExports.
NOTE: Experimental features are not covered by semver and can change at any time.
unstable_conditionNames: ['import'], fix _interopRequireDefault is not a function (https://github.com/facebook/metro/commit/8277623d56974c2a05096fefef532361c80bbad8 by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.81.3...v0.81.4
[Feature]: Add support for package.json#imports
package.json#imports (https://github.com/facebook/metro/pull/1302 by @jameslawson)isESMImport to ResolutionContext to distinguish resolution based on whether the dependency is a require() or static/async import (https://github.com/facebook/metro/pull/1376 by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
unstable_enablePackageExports, assert exactly one of the conditions import/require according to source syntax. (https://github.com/facebook/metro/pull/1477 by @robhogan)unstable_lazySha1 (https://github.com/facebook/metro/commit/42ec821da720073a717d95afbe24eedbfa9e148d by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.81.2...v0.81.3
[Deprecated]: Deprecate deep src imports e.g. metro/src/x.js across all metro* packages, pending removal from the stable API.
metro-runtime via new public package.json#exports paths. (https://github.com/facebook/metro/commit/f390cdf4c703fe615a5e6e131c0fa3d69e450585 by @robhogan)this with globalThis in runtime prelude for service worker compatibility. (https://github.com/facebook/metro/pull/1438 by @exzos28)get-dependencies command: gracefully shutdown on errors. (https://github.com/facebook/metro/commit/b8e9e64f1de97a67234e223f5ee21524b160e8a5 by @yungsters)src imports e.g. metro/src/x.js across all metro* packages, pending removal from the stable API. (https://github.com/facebook/metro/pull/1441 by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
config.watcher.unstable_autoSaveCache. (https://github.com/facebook/metro/pull/1434 by @robhogan)watcher.unstable_lazySha1 to defer SHA1 calculation until files are needed by the transformer. (https://github.com/facebook/metro/pull/1435 by @robhogan)metro/src/x.js as metro/private/x) as explicitly private (non-semver). (https://github.com/facebook/metro/pull/1441 by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.81.1...v0.81.2
[Feature]: Always include source file content sources in HMR source maps. Fixes https://github.com/facebook/react-native/issues/49069 (breakpoints are
module/require/exports/global declarations to avoid conflicts with injected args or generated code. (https://github.com/facebook/metro/pull/1385 by @robhogan)os.availableParallelism instead of os.cpus. (https://github.com/facebook/metro/pull/1378 by @screetBloom)Full Changelog: https://github.com/facebook/metro/compare/v0.81.0...v0.81.1
[Breaking]: Drop support for Node.js < 18.18.
context.redirectModulePath from default resolver, use a fixed browser field spec implementation. (https://github.com/facebook/metro/commit/5e96d176e3c14f1b56c8a75807b8901aa7eabf7d by @robhogan)ResolutionContext.fileSystemLookup for performing file and directory existence checks and resolving real paths. (https://github.com/facebook/metro/commit/3b3e0aaf725cfa6907bf2c8b5fbc0da352d29efe by @robhogan)onClose option to Metro.runServer configuration to provide a callback called when Metro is fully torn down. (https://github.com/facebook/metro/commit/b3f141f1a7b864773fa10b4ce07227c16ba9ba7c by @vzaidman)metro-memory-fs: Respect force in rmSync. (https://github.com/facebook/metro/commit/a792d85ffde3c21c3fbf64ac9404ab0afe5ff957 by @robhogan)getDefaultConfig. (https://github.com/facebook/metro/commit/bfd9473f60830b5479d478d5f3346c1c93a725ee by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
unstable_enableSymlinks - symlink support is stable and always-on. (https://github.com/facebook/metro/commit/e52b5ffb24d0388c26441457bb695b53f44a6960 by @robhogan)transformer.unstable_memoizeInlineRequires to optimise inlined access. (https://github.com/facebook/metro/pull/1346 by @robhogan).unstable_server_log, unstable_server_menu_updated, and unstable_server_menu_cleared reporter events (https://github.com/facebook/metro/commit/616f437432848abaff45c10a4a6da677fb85ddcd by @huntie)Full Changelog: https://github.com/facebook/metro/compare/v0.80.11...v0.81.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
*This is a hotfix on the `0.80.x` branch.*
This is a hotfix on the 0.80.x branch.
Full Changelog: https://github.com/facebook/metro/compare/v0.80.11...v0.80.12
[Fix]: Resolver: Only consider directory candidates when resolving path specifiers ending in a /
/ (https://github.com/facebook/metro/commit/1e1dfe173bd793f4d718cd08fa6af15659b0516c by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
[Experimental]: Resolution: Replace context.unstable_getRealPath with context.unstable_fileSystemLookup (https://github.com/facebook/metro/commit/9fc9bf004d389a40ce80ba2b8c880446980444ba by @robhogan)
Full Changelog: https://github.com/facebook/metro/compare/v0.80.10...v0.80.11
[Deprecation]: JsonReporter: Deprecate printing message and stack as top-level properties when a reportable event has an error property
message and stack as top-level properties when a reportable event has an error property (95a6063351071b6b8aca75633a0c3f5b726f7d06)/[metro-project]/ and /[metro-watchFolders]/{index}/ (273481c3a60dfe1819fe14d3719ff7f60d7ba6d8 by @motiz88)sourcePaths=url-server bundle parameter (788ff0dfc258ddc1f764e2b9c8c644686e0f3ca5 by @motiz88)server_listening reporter event, exposing bound port, address and family (https://github.com/facebook/metro/pull/1274 by @robhogan)message, stack, cause, and errors (where present) under error when a reportable event has an error property (95a6063351071b6b8aca75633a0c3f5b726f7d06 by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
[Experimental]: Fix subtrees of the project root missed from require.context when using an ancestor of the project root as context root (https://github.com/facebook/metro/pull/1281 by @robhogan)
[Experimental]: Add require.unstable_importMaybeSync (https://github.com/facebook/metro/pull/1296 by @rubennorte)
Full Changelog: https://github.com/facebook/metro/compare/v0.80.9...v0.80.10
[Feature]: Allow configuring HttpStore's read and write paths separately. (3e647a6775c8e39f47433c611beb5bdde9a9ee61 by @gijsweterings)
HttpStore's read and write paths separately. (3e647a6775c8e39f47433c611beb5bdde9a9ee61 by @gijsweterings)additionalSuccessStatuses option to HttpStore. (f8f7d5556bb9d2196081985997cc1efe6af2968e by @motiz88)reporter instead. (15815d0490cfc973740ef78d9b7847184e8c0c70 by @motiz88)NOTE: Experimental features are not covered by semver and can change at any time.
unstable_renameRequire transformer option. (https://github.com/facebook/metro/pull/1230 by @evanbacon)Full Changelog: https://github.com/facebook/metro/compare/v0.80.8...v0.80.9
[Fix]: Guard against invalid symbolication in Chrome DevTools by terminating each module's source map with a null mapping (96c6b893eb77b5929b6050d7189
NOTE: Experimental features are not covered by semver and can change at any time.
Full Changelog: https://github.com/facebook/metro/compare/v0.80.7...v0.80.8
[Fix]: Fix startup time regression when using Watchman on Windows with a warm cache.
Full Changelog: https://github.com/facebook/metro/compare/v0.80.6...v0.80.7
[Performance]: Improve resolution performance by optimising normal->absolute path conversion
projectRoot (https://github.com/facebook/metro/pull/1210 by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.80.5...v0.80.6
[Feature]: Add server.forwardClientLogs config option, to allow suppressing client console logs in Metro output.
server.forwardClientLogs config option, to allow suppressing client console logs in Metro output. (https://github.com/facebook/metro/pull/1192 by @huntie)constant-folding-plugin: Don't fold optional function calls (foo.?()). (https://github.com/facebook/metro/pull/1178 by @Gamote)inline-plugin: Don't replace __DEV__ in invalid Babel AST locations. (https://github.com/facebook/metro/pull/1195 by @kitten)metro-minify-terser dependency to fix resolution under isolated node_modules (pnpm, etc). (https://github.com/facebook/metro/pull/1199 by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
unstable_enablePackageExports and unstable_enableSymlinks. (https://github.com/facebook/metro/pull/1198 by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.80.4...v0.80.5
[Fix]: Remove special handling of paths containing .zip/
.zip/ (https://github.com/facebook/metro/commit/9212156011ebdb680f12ad7fa6597a0935b8b84a by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.80.3...v0.80.4
[Feature]: Pass dev option to resolver
dev option to resolver (https://github.com/facebook/metro/pull/1134 by @EvanBacon)Full Changelog: https://github.com/facebook/metro/compare/v0.80.2...v0.80.3
[Fix]: Fast Refresh breaks on encountering a garbage cycle with async/weak dependencies
serverRoot with HMR serializer chunks (https://github.com/facebook/metro/pull/1137 by @EvanBacon)NOTE: Experimental features are not covered by semver and can change at any time.
"exports" field is now considered for Haste packages (which could include local monorepo packages) (https://github.com/facebook/metro/pull/1136 by @kraenhansen)Full Changelog: https://github.com/facebook/metro/compare/v0.80.1...v0.80.2
[Fix]: Add React JSX runtime to default exceptions for inline requires.
windows / macos. (https://github.com/facebook/metro/pull/763 by @acoates-ms)NOTE: Experimental features are not covered by semver and can change at any time.
unstable_workerThreads options to transformer and watcher configuration. (https://github.com/facebook/metro/commit/20df4ecd6456f994511290375d1fa6f13b902267 by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.80.0...v0.80.1
[Breaking]: Remove metro-runtime/src/modules/fast-refresh and react-refresh dependency - now owned by RN's Babel preset.
metro-runtime/src/modules/fast-refresh and react-refresh dependency - now owned by RN's Babel preset. (https://github.com/facebook/metro/commit/855796816a941ca14e025df3f5a80fcd63bfbc21 by @robhogan)metro-babel-register: Switch to Hermes parser, only apply Flow transforms to .js. (https://github.com/facebook/metro/commit/ca0f89c26d27604e0dfdab857823a99378db7b48 by @pieterv)metro-babel-register: Support export-namespace-from and Flow enums. (https://github.com/facebook/metro/commit/ca0f89c26d27604e0dfdab857823a99378db7b48 by @pieterv)NB: metro-react-native-interop-tools has been removed and will receive no further updates. (https://github.com/facebook/metro/commit/c084066d35492dd39227e03442d6c3a4e0299dd9 by @GijsWeterings)
Full Changelog: https://github.com/facebook/metro/compare/v0.79.1...v0.80.0
[Fix]: metro-babel-register: prevent arbitrary transformation of Babel plugins during registration.
metro-babel-register: prevent arbitrary transformation of Babel plugins during registration. (https://github.com/facebook/metro/commit/e8f468d5e4f1b88f1b99c66656cec004d4079831 by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.79.0...v0.79.1
[Breaking]: Disable global package resolution (resolver.enableGlobalPackages) by default
resolver.enableGlobalPackages) by default (https://github.com/facebook/metro/commit/0df1541e9890bc758ba0c328bfece180e9bc515b by @robhogan)unstable_enableSymlinks) (https://github.com/facebook/metro/commit/9e7cec1b80ba4e843f3260437be04c3896299916 by @robhogan)customTransformOptions and customResolverOptions to bundle_build_started log event so as to refine the bundling message (https://github.com/facebook/metro/pull/1061 by @EvanBacon)In Metro v0.78.0, we removed builtin Inspector Proxy creation as a breaking change.
metro-cache's Cache.set to allow handling underlying async store errors (https://github.com/facebook/metro/commit/284516057349dff91d7e97b1f6b004068d428bfa by @robhogan)InspectorProxy.createWebSocketListeners (https://github.com/facebook/metro/commit/8522db1c4221d4b582acc0e89c4278fa75885642 by @huntie)[!NOTE] v0.78.1 will be the final release of
metro-inspector-proxy, which is being relocated into the React Native repo. In Metro v0.78.0, we removed builtin Inspector Proxy creation as a breaking change.
- For React Native integrators: The
@react-native/dev-middlewarepackage will provide a batteries-included integration point replacingmetro-inspector-proxy. We're working closely with Expo on the API for this which should be ready within the next two weeks — usage will be documented in the package README.- Please reach out to @huntie (https://twitter.com/alxhnt) if you need support around this change.
This is a significant breaking change — _Metro will no longer start a built-in Inspector Proxy_.
metro-react-native-babel-transformer and metro-react-native-babel-preset, which will be published as @react-native/metro-babel-transformer and @react-native/babel-preset going forward. (https://github.com/facebook/metro/commit/799aa0a546e39546e2d0463f3fb1a963dc102bdf by @dmytrorykun)runInspectorProxy option from server. (https://github.com/facebook/metro/commit/2b0b15d733c47768304569c800b3aceca3ef5b1f by @huntie)
InspectorProxy instance externally, and provide the relevant handlers to Metro.runServer(). For reference:
inspectorProxy.processRequest to ServerOptions.unstable_extraMiddleware.inspectorProxy.createWebSocketListeners to ServerOptions.websocketEndpoints.@react-native/dev-middleware package, which will provide a batteries-included integration point for the above.DependencyGraph.resolveDependency now takes a dependency object instead of a string. (https://github.com/facebook/metro/commit/fbdd295c5820152487f3331852ce91824808ce81 by @motiz88)inlineRequires and nonInlinedRequires to Babel transformers. (https://github.com/facebook/metro/commit/e339c8fae4c2e925aedbd3755e18a4a780bd0fb7 by @motiz88)metro.config.cjs. (https://github.com/facebook/metro/commit/692293339e3b9f542f7b83c04bdccf46fef05766 by @huntie)asserted-states is not iterable when using older Watchman versions. (https://github.com/facebook/metro/commit/3ef5fc83b911bac8e972c9dd8d2f63212eb6952c by @robhogan).native as a standalone file extension. (https://github.com/facebook/metro/pull/1045 by @EvanBacon)[Breaking]: Increase minimum Node version from 16 to 18.
metro-minify-uglify from metro dependencies. (https://github.com/facebook/metro/commit/7a8fcd5ecf5ccbe760c22be7fa924f9cb7c2fe1e by @robhogan)blockList on Windows. (https://github.com/facebook/metro/commit/2eecfc767095f32bbea35a62c2dc85dcc9c4f839 by @motiz88)blockList patterns with inconsistent regex flags. (https://github.com/facebook/metro/commit/c80904b64b8fa5d152da176ce668b77fa3e0ba25 by @motiz88)metro versions are installed. (https://github.com/facebook/metro/commit/6d46078e74ae9a43aa90bed46dbd6610e2696cd0 by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
metro-file-map: Normalize root-relative paths for cross-platform cache compatibility. (https://github.com/facebook/metro/commit/d282a0818b840f1d5b0a2086051ec2c7febf1986 by @motiz88)require.context is used on a directory with infinite path expansions. (https://github.com/facebook/metro/commit/14d652f411fd055c950f820d2de3087e2a791acd by @robhogan)Full Changelog: https://github.com/facebook/metro/compare/v0.76.7...v0.77.0
*This is a hotfix release on the `0.76.x` branch.*
This is a hotfix release on the 0.76.x branch.
metro-minify-terser dependency to fix resolution under isolated node_modules (pnpm, etc).(https://github.com/facebook/metro/pull/1199 by @robhogan)inline-plugin: Don't replace __DEV__ in invalid Babel AST locations. (https://github.com/facebook/metro/pull/1195 by @kitten)constant-folding-plugin: Don't fold optional function calls (foo.?()). (https://github.com/facebook/metro/pull/1178 by @Gamote)metro versions are installed. (https://github.com/facebook/metro/commit/6d46078e74ae9a43aa90bed46dbd6610e2696cd0 by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
"exports" field is now considered for Haste packages (which could include local monorepo packages) (https://github.com/facebook/metro/pull/1136 by @kraenhansen)sourceMappingUrl in HMR payloads when using unstable_serverRoot (https://github.com/facebook/metro/pull/1137 by @EvanBacon)Full Changelog: https://github.com/facebook/metro/compare/v0.76.8...v0.76.9
[Feature]: Widen config search paths to include metro.config.cjs.
metro.config.cjs. (https://github.com/facebook/metro/pull/1055 by @huntie)Full Changelog: https://github.com/facebook/metro/compare/v0.76.7...v0.76.8
[Feature]: metro-babel-transformer and metro-react-native-babel-transformer will return metadata from Babel transform results. (42fdbc2b20c29ca4cfad40
metro-babel-transformer and metro-react-native-babel-transformer will return metadata from Babel transform results. (42fdbc2b20c29ca4cfad404a4c222c65077c6f5e by @robhogan)TerminalReporter for Reporter implementations. (417e6f276ff9422af6039fc4d1bce41fcf7d9f46 by @colinta)Full Changelog: https://github.com/facebook/metro/compare/v0.76.6...v0.76.7
[Deprecation] Deprecate server.enhanceMiddleware option
Server types to use broader types from connect package (https://github.com/facebook/metro/commit/d20d7c80217ba2319379472fec0e345f58c569c6 by @huntie)createConnectMiddleware export (https://github.com/facebook/metro/commit/06682f8775bb4447583fa1944126b3701da540bc by @huntie)server.enhanceMiddleware option (https://github.com/facebook/metro/commit/22e85fde85ec454792a1b70eba4253747a2587a9 by @huntie)NOTE: Experimental features are not covered by semver and can change at any time.
unstable_extraMiddleware option to runServer API (https://github.com/facebook/metro/commit/d0d554381f119bb80ab09dbd6a1d310b54737e52 by @huntie)Full Changelog: https://github.com/facebook/metro/compare/v0.76.5...v0.76.6
[Feature] Support URLs for both bundling and symbolication requests using //& instead of ? as a query string delimiter
//& instead of ? as a query string delimiter (https://github.com/facebook/metro/commit/bd357c8206205f70051a7a85a645a9595c650002 by @robhogan)NOTE: Experimental features are not covered by semver and can change at any time.
babel/runtime issue when using Package Exports (https://github.com/facebook/metro/commit/905d773454cdff9d7a25403f549b40ba54558792 by @huntie)Full Changelog: https://github.com/facebook/metro/compare/v0.76.4...v0.76.5
[Feature]: Support the `x_google_ignoreList` source map extension.
x_google_ignoreList source map extension. (https://github.com/facebook/metro/pull/973, 82bd64a9720174a9e2a02fb73bbef292153e20f1 by @motiz88)Full Changelog: https://github.com/facebook/metro/compare/v0.76.3...v0.76.4
[Deprecated]: The transformer.asyncRequireModulePath config option is deprecated. Use `__loadBundleAsync` instead.
__loadBundleAsync implementations in the default asyncRequire function. See the lazy bundling RFC for more details. (https://github.com/facebook/metro/commit/ac3adced45a6ca32286dda9e9470eab6eb4218bf, https://github.com/facebook/metro/commit/f07ce5c455a76b63d47c5ccec9611fc8cd66cd0e by @motiz88)lazy parameter in bundle requests. See the lazy bundling RFC for more details. (https://github.com/facebook/metro/commit/4ef14f9a2f6c0b566df86f9caebb5a98bb7ba52a by @motiz88)transformer.asyncRequireModulePath config option is deprecated. Use __loadBundleAsync instead.(https://github.com/facebook/metro/commit/c7b684f0ae90ec22f7cddf82858dcaa8aa4bc64a by @motiz88)NOTE: Experimental features are not covered by semver and can change at any time.
server.experimentalImportBundleSupport config option. (https://github.com/facebook/metro/commit/4ef14f9a2f6c0b566df86f9caebb5a98bb7ba52a by @motiz88)Full Changelog: https://github.com/facebook/metro/compare/v0.76.2...v0.76.3
Your coding agent can read these notes before it upgrades. Set up the MCP server →