Next.js Compiler

The Next.js Compiler, written in Rust using SWC, allows Next.js to transform and minify your JavaScript code for production. This replaces Babel for individual files and Terser for minifying output bundles.

Compilation using the Next.js Compiler is 17x faster than Babel and enabled by default since Next.js version 12. If you have an existing Babel configuration or are using unsupported features, your application will opt-out of the Next.js Compiler and continue using Babel.

Why SWC?

SWC is an extensible Rust-based platform for the next generation of fast developer tools.

SWC can be used for compilation, minification, bundling, and more – and is designed to be extended. It’s something you can call to perform code transformations (either built-in or custom). Running those transformations happens through higher-level tools like Next.js.

We chose to build on SWC for a few reasons:

  • Extensibility: SWC can be used as a Crate inside Next.js, without having to fork the library or workaround design constraints.
  • Performance: We were able to achieve ~3x faster Fast Refresh and ~5x faster builds in Next.js by switching to SWC, with more room for optimization still in progress.
  • Community: The Rust community and ecosystem are amazing and still growing.

Jest

The Next.js Compiler transpiles your tests and simplifies configuring Jest together with Next.js including:

  • Auto mocking of .css.module.css (and their .scss variants), and image imports
  • Automatically sets up transform using SWC
  • Loading .env (and all variants) into process.env
  • Ignores node_modules from test resolving and transforms
  • Ignoring .next from test resolving
  • Loads next.config.js for flags that enable experimental SWC transforms

Leave a comment

Your email address will not be published. Required fields are marked *