Files
Armano a17de58e30 feat(minifier): process of return/throw in non last position and fix async * inlining (#26214)
This Pr brings couple optimizations and refactor,

- Disable merging: `if (a) return x; return;` and `if (a) return; return
x;` when is descendant of `async* function`
- Handle empty chains: `if (a) return; return;` → `a; return;`
- Process returns/throw anywhere in block via handler merge `if (a)
return; return; var b` → `a; return; var b`

fixes #26255
ref #24331
2026-09-03 23:05:40 +08:00
..
…

Oxc Minifier

Next-generation JavaScript/TypeScript minifier achieving best-in-class compression.

Inspiration

  • Closure Compiler: Advanced size optimizations
  • Terser/UglifyJS: Comprehensive battle-tested transforms
  • esbuild: Efficient algorithms and architecture
  • SWC: Modern Rust performance

Key Features

  • Maximum compression through exhaustive optimizations
  • 100% correctness with comprehensive testing
  • Fixed-point iteration for optimal size
  • Arena allocation for performance

Current Performance

See tasks/minsize for compression benchmarks.

  • Matching/beating esbuild on many libraries
  • Full test262, Babel, TypeScript conformance

Usage

use oxc_minifier::{Minifier, MinifierOptions};

let options = MinifierOptions::default();
let minifier = Minifier::new(options);
let result = minifier.minify(&mut program);

Testing Infrastructure

  • just minsize - Track compression benchmarks
  • cargo coverage - Conformance tests (test262, Babel, TypeScript)
  • tasks/e2e - Real-world E2E testing

Development

  • just test - Run all tests
  • cargo run -p oxc_minifier --example minifier - Try the minifier

Key Dependencies

Documentation