Releases: react/metro
Releases · react/metro
Release list
v0.87.1
- [Feature]: Add
resolver.schemeResolversto resolve URI-scheme-prefixed specifiers (egfoo:bar) with custom resolvers (#1804 by @robhogan) - [Feature]: Resolve
metro:babel-runtime/<path>imports to Metro's own@babel/runtimedependency (8388f71 by @robhogan) - [Feature]:
metro-babel-transformer: PassinlinePlatformto Babel presets viacaller(6bbe095 by @robhogan) - [Fix]: Replace
image-sizedependency with vendored parsers, fix CVE alerts (#1860 by @robhogan) - [Fix]: Include
charset=utf-8in theContent-Typeof text assets and source files served by the dev server (#1888 by @robhogan) - [Fix]: Preserve
Platform.OSwrite targets during constant inlining (#1890 by @OskarEichler) - [Fix]: Inline the last duplicate key from static
Platform.selectobject literals (#1889 by @OskarEichler) - [Fix]:
FallbackWatcherno longer misses files written to a directory while it is being crawled (#1907 by @robhogan) - [Fix]:
HttpStore: Handle socket errors during writes, so they're retried rather than crashing the process (fad3b88) - [Fix]: Treat
CI=falseandCI=0as not-CI when defaultingwatch. CI is now detected fromprocess.env.CIonly, dropping theci-infodependency (61e4592 by @robhogan) - [Fix]: Fix Fast Refresh hitting undefined modules when using lazy (segmented) bundles in dev (c70d0ae by @robhogan)
- [Performance]:
FallbackWatcher: Dropwalkerdependency, reduce crawl RSS by ~34% and peak heap by ~41% (#1906 by @robhogan) - [Performance]: Don't emit redundant empty dependency map arrays for modules with no dependencies (#1858 by @robhogan)
- [Types]: Restore publishing of private (underscore-prefixed) fields in TypeScript declarations (#1876 by @robhogan)
- [Types]: Fix async functions being inferred as returning
void(notPromise<void>), egMetroServer#end(#1909 by @robhogan) - [Types]: Tidy up generated types, allow nullable props to be omitted in more places (#1885 by @robhogan)
NOTE: Experimental features are not covered by semver and can change at any time.
- [Experimental]:
metro-file-map: AddcrawlerFactoryto optionally replace the built-in Watchman / Node crawlers (68022f0 by @vzaidman) - [Experimental]: Add
serializer.unstable_inlineDependencyMapto inline module IDs at serialisation time (#1786 by @robhogan) - [Experimental]: Add
serializer.unstable_getAsyncDependencyPathto supply custompathsto framework-defined__loadBundleAsync(#1855 by @robhogan) - [Experimental]: Remove
transformer.unstable_renameRequire-requireis never renamed (42577f7 by @robhogan) - [Experimental]:
experimentalImportSupport: Fixexport * fromre-exporting the source module's default export (#1777 by @robhogan)
Full Changelog: v0.87.0...v0.87.1
v0.84.6
v0.84.5
v0.83.8
v0.87.0
- [Breaking]: Widen
Resolutionunion returned by resolvers to allowtype: 'virtualModule', pending implementation. (8336654 by @robhogan) - [Feature]:
allowOptionalDependenciesdefaults totrueto align with RN and Expo (#1775 by @robhogan) - [Fix]: Preserve accumulated and trailing config state when
mergeConfigencounters an async config in a config chain (#1754 by @durvesh1992) - [Performance] Don't rename
requirein bundle output, improve cold build time ~5%`(TBD by @robhogan)
NOTE: Experimental features are not covered by semver and can change at any time.
- [Experimental]:
experimentalImportSupport: Support namespace re-exports, such asexport * as Name from "module"(#1768 by @robhogan and @krystofwoldrich) - [Experimental]:
experimentalImportSupport: Fix exports renamed by destructuring, and support exports of rest spreads (#1772 by @robhogan) - [Experimental]:
experimentalImportSupport: Fix precedence so explicitexport defaultand named exports win overexport * from(#1773 by @robhogan) - [Experimental]:
experimentalImportSupport: Evaluateexport fromdependencies in the module prelude instead of within or after the module body (#1774 by @robhogan)
Full Changelog: v0.86.0...v0.87.0
v0.86.0
- [Breaking]: Metro now always emits whole-bundle source maps as index maps, and stores each module's map internally as a
VlqMap(#1764, #1765 by @robhogan). Custom serialisers/transformers must consume/provideVlqMapmappings, not tuples. - [Breaking]: Remove deprecated default exports from public entry points (#1759 by @robhogan)
- [Breaking]: Remove support for deprecated YAML and
.es6config files (#1752 by @robhogan) - [Breaking]: Remove long-deprecated
resolver.blacklistREconfig in favour ofblockList(#1758 by @robhogan) - [Fix]: Fix
HttpStorewrite retries incorrectly using the read endpoint's config (#1751 by @durvesh1992) - [Performance]: Source maps work makes Metro use 50% less memory and serve source maps 2x faster, for faster RNDT loads (#1741, #1742, #1743, #1760, #1763, #1764, #1765 by @robhogan)
Full Changelog: v0.85.0...v0.86.0
v0.85.0
- [Breaking]: Raise minimum supported Node.js version to 22 (#1715 by @huntie)
- [Feature]: Implement
PACKAGE_SELF_RESOLVEfor self-referencing imports in the resolver (#1721 by @robhogan) - [Fix]: Add ESM unwrapping to all CommonJS
requirecalls (#1675 by @kitten) - [Fix]: Fix Windows cross-drive path resolution in
metro-file-map(#1711 by @kitten) - [Fix]: Fix
"browser"-spec bare-specifier → relative path redirects for nested and first-partypackage.jsons (#1720 by @robhogan) - [Fix]: Gracefully reject illegal
"browser"-spec redirects of a bare specifier to an absolute path (e1f4d61 by @robhogan) - [Performance]: Avoid intermediate allocations in
matchSubpathFromMainFields, improving overall resolver performance ~5% (9341463 by @robhogan)
Full Changelog: v0.84.4...v0.85.0
v0.84.4
- [Feature]: Support
/[metro-watchFolders]/n/paths for.bundleand.maprequests (#1695 by @huntie) - [Fix]: Fix regression to allow scale assets to be resolved again for single asset requests (#1694 by @kitten)
- [Fix]: Treat
import().catch(), etc. as optional undertransformer.allowOptionalDependencies(#1697 by @robhogan) - [Performance]: Interleave resolution attempts with building node_modules candidate paths (#1680 by @kitten)
Full Changelog: v0.84.3...v0.84.4
v0.83.7
This release is on the 0.83.x branch
- [Feature]: Support
/[metro-watchFolders]/n/paths for.bundleand.maprequests (#1695 by @huntie) - [Fix]: Fix regression to allow scale assets to be resolved again for single asset requests (#1694 by @kitten)
- [Fix]: Treat
import().catch(), etc. as optional undertransformer.allowOptionalDependencies(#1697 by @robhogan) - [Performance]: Interleave resolution attempts with building node_modules candidate paths (#1680 by @kitten)
Full Changelog: v0.83.6...v0.83.7
v0.83.6
This release is on the 0.83.x branch
- [Feature]: Add keepalive "heartbeat" message to Fast Refresh connections (#1685 by @robhogan)
- [Feature]: Add
changeIdmetadata on HMRClientupdate-donemessages (1585e444284f by @huntie) - [Fix]: Include user-defined Babel config in transformer cache key to ensure correctness (#1638 by @EvanBacon)
- [Fix]: Detection of contents of directories moved or cloned into a watched location (#1660 by @robhogan)
- [Fix]: Correctly detect contents as removed when a watched directory is moved, on macOS without Watchman (c9e9fe64a77c by @robhogan)
- [Performance]: Optimize
PackageCache: useMap/Set, cache null results, eliminate per-hit allocations (877b64ea5967 by @robhogan) - [Types]: Restore type exports from
metrothat were previously TypeScript-specific (#1672 by @robhogan)
NOTE: Experimental features are not covered by semver and can change at any time.
- [Experimental]: Add
config.unstable_fileMapPlugins(567aa8b62b95 by @robhogan)