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.

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.
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.
npm install metro-minify-terser
yarn add metro-minify-terser
pnpm add metro-minify-terser

Sets metro-minify-terser as the custom minifier in Metro's config with optional Terser options.

import metroMinifyTerser from 'metro-minify-terser';

// In metro.config.js:
module.exports = {
  transformer: {
    minifierConfig: { ecma: 8, module: true },
  },
  minifier: metroMinifyTerser,
};