Registry / devops / metro-minify-esbuild

metro-minify-esbuild

JSON →
library0.2.0jsnpmunverified

ESBuild-based minifier plugin for Metro bundler, primarily used in React Native and Expo projects. Version 0.2.0 requires esbuild as a peer dependency. It replaces the default uglify-es minifier to improve bundle times — up to 3x faster in large projects — while producing comparable bundle sizes (typically within 7KB of uglify-es). Unlike full transpilation with ESBuild, this plugin only handles minification, preserving compatibility with Babel plugins (e.g., Reanimated, decorators). Released by Evan Bacon and used in Expo tooling. Active maintenance with infrequent releases.

npm install metro-minify-esbuild
INSTALL
IMPORT
SIG · METRO-MINIFY-ESBUI
M
metro-minify-esbuild
devopsjavascriptv0.2.0
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18223 runs
build_error
glibc
node 18223 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

metro-minify-esbuild
No direct import; configure via require.resolve in metro.config.js
import minifier from 'metro-minify-esbuild'
This package is not imported directly. It's referenced via the minifierPath config option in metro.config.js.
transformer.minifierPath
transformer.minifierPath = require.resolve('metro-minify-esbuild')
transformer.minifierPath = 'metro-minify-esbuild'
Must use require.resolve to get the absolute path; just passing the package name will fail.
transformer.minifierConfig
transformer.minifierConfig = { /* esbuild options */ }
transformer.minifierConfig = {}
Metro passes default uglify options that break esbuild; reset to an object with only esbuild options.

Configure metro.config.js to use ESBuild minifier (CommonJS).

// metro.config.js const { getDefaultConfig } = require('expo/metro-config'); const config = getDefaultConfig(__dirname); // Use ESBuild as minifier config.transformer.minifierPath = require.resolve('metro-minify-esbuild'); // Override default uglify options with esbuild options config.transformer.minifierConfig = { // ESBuild transform options (optional) // e.g., target: 'es2015', }; module.exports = config;
Debug
Known issues
gotchaMetro passes default uglify options to the minifier, including 'mangle', which is not valid for esbuild and causes 'Invalid option in transform() call: "mangle"' error.
fix
Reset transformer.minifierConfig to an object with only valid esbuild options in metro.config.js.
affects: >=0.2.0
gotchaUsing require.resolve('metro-minify-esbuild') is required; a string without resolve will not resolve correctly.
fix
Use require.resolve to get absolute path for minifierPath.
affects: >=0.1.0
deprecatedESBuild options like 'minify', 'sourcemap' may conflict or be unnecessary since minifier only transforms; esbuild documentation recommends using only transform options.
fix
Refer to esbuild transform API for valid options.
affects: >=0.2.0
Errors
Common errors & fixes
error: Invalid option in transform() call: "mangle"
Metro passes default uglify options which include 'mangle'.
fix
Set config.transformer.minifierConfig = {} (or a valid esbuild options object) in metro.config.js.
Error: Cannot find module 'metro-minify-esbuild'
Package not installed or require.resolve path is incorrect.
fix
Run 'yarn add -D metro-minify-esbuild esbuild' and ensure the dependency is in package.json.
Upgrade
Version history
0.2.0latest on npm
Audit
Dependencies
esbuildrequiredPeer dependency required for minification transformation.
Agent activity
2 hits · last 30 days
node
2
Resources
metro-minify-esbuild — npm install metro-minify-esbuild · libregistry