{"id":21569,"library":"metro-minify-esbuild","title":"metro-minify-esbuild","description":"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.","status":"active","version":"0.2.0","language":"javascript","source_language":"en","source_url":"ssh://git@github.com/EvanBacon/metro-minify-esbuild","tags":["javascript"],"install":[{"cmd":"npm install metro-minify-esbuild","lang":"bash","label":"npm"},{"cmd":"yarn add metro-minify-esbuild","lang":"bash","label":"yarn"},{"cmd":"pnpm add metro-minify-esbuild","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency required for minification transformation.","package":"esbuild","optional":false}],"imports":[{"note":"This package is not imported directly. It's referenced via the minifierPath config option in metro.config.js.","wrong":"import minifier from 'metro-minify-esbuild'","symbol":"metro-minify-esbuild","correct":"No direct import; configure via require.resolve in metro.config.js"},{"note":"Must use require.resolve to get the absolute path; just passing the package name will fail.","wrong":"transformer.minifierPath = 'metro-minify-esbuild'","symbol":"transformer.minifierPath","correct":"transformer.minifierPath = require.resolve('metro-minify-esbuild')"},{"note":"Metro passes default uglify options that break esbuild; reset to an object with only esbuild options.","wrong":"transformer.minifierConfig = {}","symbol":"transformer.minifierConfig","correct":"transformer.minifierConfig = { /* esbuild options */ }"}],"quickstart":{"code":"// metro.config.js\nconst { getDefaultConfig } = require('expo/metro-config');\n\nconst config = getDefaultConfig(__dirname);\n\n// Use ESBuild as minifier\nconfig.transformer.minifierPath = require.resolve('metro-minify-esbuild');\n\n// Override default uglify options with esbuild options\nconfig.transformer.minifierConfig = {\n  // ESBuild transform options (optional)\n  // e.g., target: 'es2015',\n};\n\nmodule.exports = config;","lang":"javascript","description":"Configure metro.config.js to use ESBuild minifier (CommonJS)."},"warnings":[{"fix":"Reset transformer.minifierConfig to an object with only valid esbuild options in metro.config.js.","message":"Metro passes default uglify options to the minifier, including 'mangle', which is not valid for esbuild and causes 'Invalid option in transform() call: \"mangle\"' error.","severity":"gotcha","affected_versions":">=0.2.0"},{"fix":"Use require.resolve to get absolute path for minifierPath.","message":"Using require.resolve('metro-minify-esbuild') is required; a string without resolve will not resolve correctly.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Refer to esbuild transform API for valid options.","message":"ESBuild options like 'minify', 'sourcemap' may conflict or be unnecessary since minifier only transforms; esbuild documentation recommends using only transform options.","severity":"deprecated","affected_versions":">=0.2.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Set config.transformer.minifierConfig = {} (or a valid esbuild options object) in metro.config.js.","cause":"Metro passes default uglify options which include 'mangle'.","error":"error: Invalid option in transform() call: \"mangle\""},{"fix":"Run 'yarn add -D metro-minify-esbuild esbuild' and ensure the dependency is in package.json.","cause":"Package not installed or require.resolve path is incorrect.","error":"Error: Cannot find module 'metro-minify-esbuild'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}