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-esbuildVerified import paths — ran on the pinned version, not inferred.
Install craco-esbuild with @craco/craco, configure the plugin in craco.config.js, and update scripts to use craco instead of react-scripts.
Ensure react-scripts is version 5.x. Check compatibility with @craco/craco version (requires ^7.0.0).
In craco.config.js, set esbuildLoaderOptions: { loader: 'tsx' }.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.
Set skipEsbuildJest: true in plugin options to revert to babel-jest for tests, or configure esbuildJestOptions with appropriate loaders.
Install esbuild: npm install --save-dev esbuild
Check craco.config.js: ensure plugin object has { plugin: CracoEsbuildPlugin } and options are properly structured (e.g., esbuildLoaderOptions, not esbuildLoader).Use require('craco-esbuild') instead of import. In craco.config.js, const CracoEsbuildPlugin = require('craco-esbuild');Install a compatible esbuild version: npm install esbuild@0.7.22 or check craco-esbuild peerDependencies.