Registry / devops / craco-esbuild

craco-esbuild

JSON →
library0.6.1jsnpmunverified

craco-esbuild is a CRACO plugin that replaces Babel and Terser in Create React App with esbuild for significantly faster compilation, development, and test runs. Version 0.6.1 is stable but sees infrequent releases. It swaps babel-loader for esbuild-loader, TerserPlugin for ESBuildMinifyPlugin, and optionally OptimizeCssAssetsWebpackPlugin for esbuild's CSS minifier. Jest tests can use esbuild-jest instead of babel-jest. Requires @craco/craco ^7.0.0 and react-scripts ^5.0.0. Unlike alternatives like react-app-rewired or custom CRA forks, craco-esbuild integrates via CRACO's plugin system and does not require ejecting or maintaining a separate Webpack config.

npm install craco-esbuild
INSTALL
IMPORT
SIG · CRACO-ESBUILD
C
craco-esbuild
devopsjavascriptv0.6.1
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18223 runs
build_error
glibc
node 18223 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

CracoEsbuildPlugin
const CracoEsbuildPlugin = require('craco-esbuild');
import CracoEsbuildPlugin from 'craco-esbuild';
craco-esbuild is a CommonJS package; ESM import may cause errors. Use require() in craco.config.js which is typically not transpiled.

Install craco-esbuild with @craco/craco, configure the plugin in craco.config.js, and update scripts to use craco instead of react-scripts.

// 1. Install: npm install --save-dev @craco/craco craco-esbuild // 2. Create craco.config.js: const CracoEsbuildPlugin = require('craco-esbuild'); module.exports = { plugins: [{ plugin: CracoEsbuildPlugin }], }; // 3. Update package.json scripts: { "scripts": { "start": "craco start", "build": "craco build", "test": "craco test" } } // 4. Run: npm start
Debug
Known issues
breakingcraco-esbuild may not work with react-scripts versions other than 5.x. Using older react-scripts (e.g., 4.x) will cause webpack configuration conflicts.
fix
Ensure react-scripts is version 5.x. Check compatibility with @craco/craco version (requires ^7.0.0).
affects: >=0.0.0
breakingIf your project uses TypeScript, you must configure esbuildLoaderOptions with loader: 'tsx' in craco.config.js. Missing this results in build failures because esbuild defaults to JSX loader.
fix
In craco.config.js, set esbuildLoaderOptions: { loader: 'tsx' }.
affects: >=0.0.0
gotchaCracoEsbuildPlugin replaces babel-loader for all files, including those that might need Babel plugins (e.g., for polyfills or custom transforms). esbuild does not support Babel plugins.
fix
If you rely on Babel plugins (e.g., import/export, class properties), consider using esbuild's built-in transforms or replace the plugin with a custom solution that combines esbuild and Babel.
affects: >=0.0.0
gotchaWhen skipEsbuildJest is false (default), esbuild-jest replaces babel-jest for test files. This may cause issues with test files that use JSX or TypeScript without proper loader configuration.
fix
Set skipEsbuildJest: true in plugin options to revert to babel-jest for tests, or configure esbuildJestOptions with appropriate loaders.
affects: >=0.0.0
Errors
Common errors & fixes
Module not found: Error: Can't resolve 'esbuild' in '...'
esbuild is not installed as a dependency. craco-esbuild does not automatically install esbuild.
fix
Install esbuild: npm install --save-dev esbuild
ValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
CRACO plugin configuration is incorrect, often due to missing or misspelled options.
fix
Check craco.config.js: ensure plugin object has { plugin: CracoEsbuildPlugin } and options are properly structured (e.g., esbuildLoaderOptions, not esbuildLoader).
TypeError: CracoEsbuildPlugin is not a constructor
Using an incorrect import style (e.g., default import via ES module) when the package is CommonJS.
fix
Use require('craco-esbuild') instead of import. In craco.config.js, const CracoEsbuildPlugin = require('craco-esbuild');
UnhandledPromiseRejectionWarning: Error: No known conditions for './package.json' specifier in 'esbuild' package
Version mismatch between craco-esbuild and esbuild. esbuild >=0.8.0 changed module resolution.
fix
Install a compatible esbuild version: npm install esbuild@0.7.22 or check craco-esbuild peerDependencies.
Upgrade
Version history
0.6.1latest on npm
Audit
Dependencies
@craco/cracorequiredCore peer dependency: craco-esbuild is a plugin for CRACO, which is required to override CRA webpack config.
react-scriptsrequiredPeer dependency: craco-esbuild targets CRA projects using react-scripts v5.
Agent activity
4 hits · last 30 days
node
4
Resources
craco-esbuild — npm install craco-esbuild · libregistry