# SWC > SWC is an extensible Rust-based platform for the next generation of fast developer tools. It's used by tools like Next.js, Parcel, and Deno, as well as companies like Vercel, ByteDance, Tencent, Shopify, Trip.com, and more. ## Docs - [Getting Started](/docs/getting-started.md) - [@swc/cli](/docs/usage/cli.md) - [@swc/core](/docs/usage/core.md): These are the core SWC APIs mainly useful for build tool authors. - [Flow](/docs/usage/flow.md): SWC can parse Flow syntax and strip Flow type-only constructs during transform. This guide covers the most common ways to use Flow support: .swcrc@swc/core@swc/cli - [@swc/wasm-web](/docs/usage/wasm.md): This modules allows you to synchronously transform code inside the browser using WebAssembly. - [@swc/jest](/docs/usage/jest.md): To make your Jest tests run faster, you can swap out the default JavaScript-based runner (ts-jest) for a drop-in Rust replacement using SWC. - [swc-loader](/docs/usage/swc-loader.md): This module allows you to use SWC with webpack. For Rspack users, you can use Rspack's builtin:swc-loader, without the need to install the swc-loader package. - [@swc/html](/docs/usage/html.md) - [Bundling (swcpack)](/docs/usage/bundling.md): Please use one of the bundlers instead. SWC is able to bundle multiple JavaScript or TypeScript files into one. This feature is currently named spack, but will be renamed to swcpack in v2. spack.config.js will be deprecated for swcpack.config.js. View a basic example of bundling. - [Configuring SWC](/docs/configuration/swcrc.md): SWC can be configured with an .swcrc file. - [Compilation](/docs/configuration/compilation.md): Compilation works out of the box with SWC and does not require customization. Optionally, you can override the configuration. Here are the defaults: - [Supported Browsers](/docs/configuration/supported-browsers.md): Starting with v1.1.10, you can now use browserslist to automatically configure supported browsers. - [Modules](/docs/configuration/modules.md): SWC can transpile your code using ES Modules to CommonJS or UMD/AMD. By default, module statements will remain untouched. - [Minification](/docs/configuration/minification.md): swcMinify with the Terser Webpack PluginSWC Minify Webpack Plugin which is a standalone tool if you only want minification. SWC Minifier makes small amount of assumptions to make the minification efficient. This is similar to other minifiers. .toString() and .valueOf() don't have side effects, and for built-in objects they have not been overridden.undefined, NaN and Infinity have not been externally redefined.arguments.callee, arguments.caller and Function.prototype.caller are not used. These are not valid in strict mode. The code doesn't expect the contents of Function.prototype.toString() or Error.prototype.stack to be anything in particular.Getting and setting properties on a plain object does not cause other side effects (using .watch() or Proxy).Object properties can be added, removed and modified (not prevented with Object.defineProperty(), Object.defineProperties(), Object.freeze(), Object.preventExtensions() or Object.seal()).document.all is not null.Assigning properties to a class doesn't have side effects and does not throw.Acesssing declared top-level identifiers do not have side effects. If you declare a variable on globalThis using a getter with side-effects, SWC Minifier will likely break it. TDZ violation does not exist. TDZ violation will be ignored and not preserved. Arithmetic expression may not have side effects. This assumption means that you can't rely on the exception thrown by the JS engine when adding a bigint and a number. If you execute this code, the JS engine will throw an exception. But SWC Minifier will ignore it. Related: terser - compiler assumptions Starting with v1.2.67, you can configure SWC to minify your code by enabling minify in your .swcrc file: - [Bundling Configuration](/docs/configuration/bundling.md): Please use one of the bundlers instead. SWC is able to bundle multiple JavaScript or TypeScript files into one. This feature is currently named spack, but will be renamed to swcpack in v2. spack.config.js will be deprecated for swcpack.config.js. View a basic example of bundling. - [Selecting the version](/docs/plugin/selecting-swc-core.md): Currently, the Wasm plugins are not backwards compatible. So you need to select an appropriate version of swc_core for your plugin. We provide a simple webapp to help you select the version of swc_core. See: https://plugins.swc.rs You can select the framework and the version of framework you are using, and the Wasm plugins compatible with it will be shown. Please use the webapp instead. The page documents the version of swc_core you can use for each runtime. - [Implementing a plugin](/docs/plugin/ecmascript/getting-started.md) - [Plugin cheatsheet](/docs/plugin/ecmascript/cheatsheet.md): You may find documentation at https://rustdoc.swc.rs/swc useful, especially if you are dealing with a visitor or Id issue. - [Compatibility for wasm plugin](/docs/plugin/ecmascript/compatibility.md): In the past, SWC Wasm plugins were not compatible between @swc/core versions. This meant that developers using Wasm plugins often had to update them with each new release of @swc/core to ensure compatibility, and the Wasm plugins maintainers should also update their swc_core Rust dependencies. This created friction, added maintenance overhead, and could disrupt development workflows. However, starting from @swc/core v1.15.0, our Wasm plugins are now compatible between @swc/core versions to some extent. This document explains from the implementation perspective why Wasm plugins were not compatible before, and how you can make your plugins compatible in the new version. - [Publishing plugins](/docs/plugin/publishing.md): If you prefer reading codes, you can refer to the repository for official plugins. - [Registering plugins on plugins.swc.rs](/docs/plugin/registering-plugins.md): If you want your Wasm plugin to appear on plugins.swc.rs, submit a pull request to swc-project/crawl-core-version. The crawler reads plugin definitions from pkgs/plugins/*.yml. - [String Management](/docs/contributing/commons/string-management.md) - [Variable Management](/docs/contributing/es-commons/variable-management.md): SWC uses a very unique way to manage variables. - [Profiling](/docs/contributing/es-minifier/profiling.md) - [Debugging Next.js App](/docs/contributing/es-minifier/debugging-nextjs-app.md) - [Debugging size difference between SWC and Terser](/docs/contributing/es-minifier/debugging-size.md): you can use dbg-swc to spot input files that is larger with SWC minifier than terser. - [The Team](/docs/team.md): SWC is a community-driven project. - [Development Roadmap](/docs/roadmap.md) - [Sponsors](/docs/sponsors.md): SWC is a widely used open source project. It is used by many companies and organizations. We are grateful to all of our sponsors for their support. If you found SWC useful, please consider sponsoring us. GitHub SponsorsOpen Collective - [Customers](/docs/customers.md): SWC is used by many companies - [Benchmarks](/docs/benchmarks.md): These benchmarks are used to evaluate the performance of SWC on every commit, as well as against other libraries like Babel or esbuild. You can view the benchmark source code here. - [@swc/wasm-typescript](/docs/references/wasm-typescript.md) - [Migrating from Babel](/docs/migrating-from-babel.md): SWC's compilation is intended to support all ECMAScript features. The SWC CLI is designed to be a drop-in replacement for Babel: SWC supports all stage 3 proposals, and preset-env, including bugfix transforms. - [Migrating from tsc](/docs/migrating-from-tsc.md): If you are Migrating from TypeScript Compiler(tsc), there are a few things to keep in mind. - [@swc-node/* vs @swc/*](/docs/swc-node-vs-swc.md): @swc-node is a package that wraps @swc/core and supports tsconfig.json. Both packages are actively maintained. ## Playground - [SWC Playground](/playground/index.md) ## Others - [Performance Comparison of SWC and Babel](/blog/perf-swc-vs-babel.md): Benchmark and performance comparison of SWC and Babel. - [Introducing SWC 1.0](/blog/swc-1.md): SWC (Speedy Web Compiler) is a super-fast JavaScript and TypeScript compiler.