Files
Dunqing 8ab883afaa fix(codegen): preserve property key annotations (#25766)
`@__KEY__` and `#__KEY__` are currently treated as normal comments. Codegen can drop them before a later property-mangling pass. The property may then be renamed while the annotated string keeps its old name.

This classifies the marker as a property-key annotation. Codegen keeps it next to string and no-substitution template literals when annotation comments are enabled, and the property mangler reads that classification instead of scanning source text. Final output still follows the normal comment options, so whitespace-minified or annotation-disabled output removes the marker.

## Example

Input:

```js
const object = { _field: 1 };
const key = /* #__KEY__ */ "_field";
object[key];
```

Before, an intermediate codegen pass could remove the marker:

```js
const object = { _field: 1 };
const key = "_field";
object[key];
```

After, the marker survives for the later property-mangling pass.

Verified with the affected crate suites, `just minsize`, workspace lint, docs, AST generation, and independent review. `just ready` is only blocked locally by existing Node-version and terminal-color snapshot differences.

Implemented with AI assistance (OpenAI Codex). I reviewed and understand the changes and remain responsible for this contribution under the repository AI usage policy.
2026-08-17 09:23:04 +00: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