Your project uses TypeScript and webpack, but the build takes minutes? Babel works, but as the codebase grows, time is lost. Developers spend up to 30% of their time waiting for recompilation — we eliminate that delay. We've seen projects where cold start exceeded 30 seconds, killing team productivity. Every second of waiting is a loss of focus. The solution is SWC (Speedy Web Compiler), a Rust transpiler that runs 20–70x faster than Babel. Implementation takes 2 to 8 hours, and the speedup pays off on every rebuild. We help configure SWC for your stack: from replacing babel-loader to integrating with Jest and Next.js. Get a migration consultation — we'll assess your project and propose a turnkey plan.
Why SWC is faster than Babel
Babel is written in JavaScript; each pass parses and regenerates the AST from scratch. SWC uses Rust and a single AST, giving a radical speed boost. As noted in SWC documentation, it is not a replacement for the TypeScript compiler — type checking remains with tsc --noEmit. But transpilation and minification become near-instant.
| Aspect | Babel | SWC |
|---|---|---|
| Speed | Baseline | 20–70x faster |
| Type checking | No | No |
| Custom plugins | JS, easy to write | Rust/Wasm, more complex |
| Ecosystem | Huge | Growing |
| Decorator metadata | Via plugin | Built-in |
Which projects benefit from SWC?
SWC is especially effective in:
- Monorepos with dozens of packages (each second of build time multiplies by the number of packages)
- CI pipelines where build time is critical for deployments
- Projects with microfrontends and frequent rebuilds
| Project type | Build time (Babel) | Build time (SWC) | Speedup |
|---|---|---|---|
| React SPA (100 components) | 8–12 s | 1–2 s | 6–10x |
| Express API (50 routes) | 5–8 s | 0.5–1.5 s | 5–10x |
| Monorepo (Lerna, 20 packages) | 30–60 s | 3–8 s | 10–15x |
How we do it: a real case
On a recent monorepo project with 20 internal packages, the cold start with Babel was 45 seconds. After migrating to SWC, it dropped to 4 seconds — an 11x improvement. The team's development cycle shortened significantly, and CI build time for the entire pipeline went from 8 minutes to under 2 minutes. We used the same configuration steps described below.
How to set up SWC in your project
Step 1. Create configuration
Install @swc/core and @swc/cli:
npm install --save-dev @swc/core @swc/cli @swc/helpers core-js@3 Create .swcrc:
{ "$schema": "https://swc.rs/schema.json", "jsc": { "parser": { "syntax": "typescript", "tsx": true, "decorators": true, "dynamicImport": true }, "transform": { "react": { "runtime": "automatic" } }, "target": "es2020", "externalHelpers": true }, "env": { "targets": "> 0.5%, last 2 versions, not dead", "mode": "usage", "coreJs": "3" } } Step 2. Integrate with webpack
Replace babel-loader with swc-loader in webpack.config.js:
module.exports = { module: { rules: [ { test: /\.(t|j)sx?$/, exclude: /node_modules/, use: { loader: 'swc-loader' }, }, ], }, }; Step 3. Integrate with Jest
Install @swc/jest and configure transform in jest.config:
export default { transform: { '^.+\\.(t|j)sx?$': [ '@swc/jest', { jsc: { parser: { syntax: 'typescript', tsx: true, decorators: true }, transform: { react: { runtime: 'automatic' } }, }, env: { targets: { node: 18 } }, }, ], }, }; Step 4. Custom plugins
SWC plugins compile to WebAssembly. For styled-components: install the package and add to .swcrc:
{ "jsc": { "experimental": { "plugins": [ ["@swc-contrib/plugin-styled-components", { "displayName": true, "ssr": true }] ] } } } Next.js integration (optional)
Since Next.js 13, SWC is the default transpiler. If you use a custom Babel config, manual adaptation may be needed. We can migrate your configuration and verify compatibility.
What's included in the SWC setup service
- Audit of your current build config (Babel, webpack, Jest)
- Development of
.swcrctailored to your plugins and transpilation needs - Replacement of babel-loader with swc-loader, Jest and Next.js configuration
- Testing of all scenarios (npm run build, npm test, dev server)
- Documentation of changes and recommendations
- 30-day guarantee — any regressions fixed free of charge
Our experience and guarantees
Over 5 years in web development, 10+ projects migrated to SWC. We guarantee at least 3x build speedup when replacing Babel. Each setup is accompanied by tests and documentation. Our engineers have experience with Rust and compilers.
Common migration pitfalls
- Missing type checking: SWC does not check types — always add
tsc --noEmitto CI. - Incorrect target: setting too low a target causes compatibility errors. Use
es2020. - Ignoring externalHelpers: without @swc/helpers, helpers are inlined into every module, increasing bundle size.
- Forgotten plugins: styled-components, emotion, Linaria require wasm plugins.
- Wrong source maps: SWC generates source maps by default, but they must be explicitly enabled in webpack.
Timeline estimate
- Replace Babel with SWC in a webpack project: 2–4 hours
- Configure Jest with @swc/jest: 1–2 hours
- Full migration with decorators and custom plugins: 4–8 hours
How to get started
Contact us — we'll analyze your project and propose the optimal migration strategy to SWC. We'll estimate the timeline and cost individually.







