{"id":25937,"library":"metro-minify-terser","title":"Metro Minifier Terser","description":"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.","status":"active","version":"0.84.4","language":"javascript","source_language":"en","source_url":"https://github.com/facebook/metro","tags":["javascript","typescript"],"install":[{"cmd":"npm install metro-minify-terser","lang":"bash","label":"npm"},{"cmd":"yarn add metro-minify-terser","lang":"bash","label":"yarn"},{"cmd":"pnpm add metro-minify-terser","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for source map generation; peer dependency.","package":"metro-source-map","optional":true}],"imports":[{"note":"ESM-only since v0.84; no default export in older versions.","wrong":"const metroMinifyTerser = require('metro-minify-terser')","symbol":"default","correct":"import metroMinifyTerser from 'metro-minify-terser'"},{"note":"Named export for direct usage; consider Terser's own API for non-Metro use.","wrong":"import { minify } from 'terser'","symbol":"minify","correct":"import { minify } from 'metro-minify-terser'"},{"note":"TypeScript type export; available in v0.83.5+.","wrong":"","symbol":"MetroMinifyTerser","correct":"import type { MetroMinifyTerser } from 'metro-minify-terser'"}],"quickstart":{"code":"import metroMinifyTerser from 'metro-minify-terser';\n\n// In metro.config.js:\nmodule.exports = {\n  transformer: {\n    minifierConfig: { ecma: 8, module: true },\n  },\n  minifier: metroMinifyTerser,\n};","lang":"javascript","description":"Sets metro-minify-terser as the custom minifier in Metro's config with optional Terser options."},"warnings":[{"fix":"Upgrade Node to a supported version.","message":"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.","severity":"breaking","affected_versions":">=0.84.0 <0.85.0"},{"fix":"Switch to metro-minify-terser as the minifier.","message":"Metro 0.80+ has deprecated metro-minify-uglify in favor of this package. Terser provides better ES6+ support.","severity":"deprecated","affected_versions":">=0.80.0"},{"fix":"Upgrade to v0.83.5+ to restore TypeScript definitions.","message":"TypeScript types were missing in v0.83.0–v0.83.4 due to accidental removal.","severity":"broken","affected_versions":">=0.83.0 <0.83.5"},{"fix":"Validate Terser options using Terser's own API before passing to Metro.","message":"If using custom minifier config, ensure it's valid for Terser. Invalid options (e.g., mismatched ecma version) may cause silent failures.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Use import syntax or dynamic import() if needed.","message":"In Metro 0.84, the package became ESM-only. CommonJS require() will fail.","severity":"deprecated","affected_versions":">=0.84.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run 'npm install --save-dev metro-minify-terser' or 'yarn add --dev metro-minify-terser'.","cause":"Package not installed or missing in node_modules.","error":"Error: Cannot find module 'metro-minify-terser'"},{"fix":"Check version: v0.84+ uses default export as a function; for older versions, use destructured import: const { minifier } = require('metro-minify-terser')","cause":"Using default import incorrectly; package exported as a function in older versions.","error":"TypeError: metroMinifyTerser is not a function"},{"fix":"Import default: import metroMinifyTerser from 'metro-minify-terser' (v0.84+) or use: const metroMinifyTerser = require('metro-minify-terser').default (older CJS).","cause":"Attempting to import a non-existent named export.","error":"Module 'metro-minify-terser' has no exported member 'minify'"},{"fix":"Set minifierConfig.ecma to 8 or above, and ensure module: true if using ES modules.","cause":"Minifier config ecma version too low (e.g., ecma: 5) while code uses ES modules.","error":"Error: Terser minification failed: Unexpected token 'export'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}