Metro Minifier Terser
raw JSON → 0.84.4 verified Fri May 01 auth: no javascript
Official Terser-based minifier plugin for Metro, the JavaScript bundler for React Native. Current stable version is 0.84.4, released ~monthly alongside Metro. Replaces the default metro-minify-uglify with modern ES6+ support via Terser. Key differentiator: integrates seamlessly with Metro's build pipeline, supports ES modules and modern syntax, and is the recommended minifier for React Native apps targeting ES6+ environments. Ships TypeScript type definitions since v0.83.5.
Common errors
error Error: Cannot find module 'metro-minify-terser' ↓
cause Package not installed or missing in node_modules.
fix
Run 'npm install --save-dev metro-minify-terser' or 'yarn add --dev metro-minify-terser'.
error TypeError: metroMinifyTerser is not a function ↓
cause Using default import incorrectly; package exported as a function in older versions.
fix
Check version: v0.84+ uses default export as a function; for older versions, use destructured import: const { minifier } = require('metro-minify-terser')
error Module 'metro-minify-terser' has no exported member 'minify' ↓
cause Attempting to import a non-existent named export.
fix
Import default: import metroMinifyTerser from 'metro-minify-terser' (v0.84+) or use: const metroMinifyTerser = require('metro-minify-terser').default (older CJS).
error Error: Terser minification failed: Unexpected token 'export' ↓
cause Minifier config ecma version too low (e.g., ecma: 5) while code uses ES modules.
fix
Set minifierConfig.ecma to 8 or above, and ensure module: true if using ES modules.
Warnings
breaking v0.84.0 dropped support for Node.js v21 and v23. Minimum Node version is now ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0. ↓
fix Upgrade Node to a supported version.
deprecated Metro 0.80+ has deprecated metro-minify-uglify in favor of this package. Terser provides better ES6+ support. ↓
fix Switch to metro-minify-terser as the minifier.
broken TypeScript types were missing in v0.83.0–v0.83.4 due to accidental removal. ↓
fix Upgrade to v0.83.5+ to restore TypeScript definitions.
gotcha If using custom minifier config, ensure it's valid for Terser. Invalid options (e.g., mismatched ecma version) may cause silent failures. ↓
fix Validate Terser options using Terser's own API before passing to Metro.
deprecated In Metro 0.84, the package became ESM-only. CommonJS require() will fail. ↓
fix Use import syntax or dynamic import() if needed.
Install
npm install metro-minify-terser yarn add metro-minify-terser pnpm add metro-minify-terser Imports
- default wrong
const metroMinifyTerser = require('metro-minify-terser')correctimport metroMinifyTerser from 'metro-minify-terser' - minify wrong
import { minify } from 'terser'correctimport { minify } from 'metro-minify-terser' - MetroMinifyTerser
import type { MetroMinifyTerser } from 'metro-minify-terser'
Quickstart
import metroMinifyTerser from 'metro-minify-terser';
// In metro.config.js:
module.exports = {
transformer: {
minifierConfig: { ecma: 8, module: true },
},
minifier: metroMinifyTerser,
};