Assembly Line

Instead of Create React App: Vite

Create React App is deprecated, so move single-page React apps to Vite. The React team deprecated CRA in February 2025 because it had no active maintainers, and it names Vite first among the build tools to move to. For a brand-new app, the React team prefers a framework such as React Router or Next.js.

Old Create React App ★ 103k MIT JavaScript Pushed 2 years ago create-react-app.dev
Instead Vite ★ 84k MIT TypeScript Pushed today vite.dev

Both are for starting and building a client-side React app.

Why Vite is better

  • Vite is actively maintained and ships regular major releases. Create React App is in long-term stasis and prints a deprecation warning when you install it.
  • Vite serves your code over native ES modules during development, so the dev server starts without bundling the whole app. CRA bundles everything with webpack first, which gets slower as the app grows.
  • Configuration is open. You add plugins in a short vite.config file instead of ejecting, which in CRA is a one-way step that copies all of its build configuration into your project.
  • Vite 8 builds with Rolldown, a Rust bundler that the Vite team measures at 10-30x faster than Rollup.
  • A new project starts from a create-vite React template with React Fast Refresh already set up, in JavaScript or TypeScript.

When to keep Create React App

There is little reason to start anything new on CRA. An existing CRA app that works and rarely changes can stay as it is for now, since CRA still works in maintenance mode and has a release that supports React 19, but it will not get new features.

Switching

For a plain CRA app, install vite and @vitejs/plugin-react, add a vite.config file, move public/index.html to the project root and add a script tag pointing at your entry file, rename REACT_APP_ environment variables to VITE_ and read them from import.meta.env, and replace react-scripts in package.json. Ejected apps or apps with custom webpack config take longer, and Rsbuild is the smoother path for those.

Watch out

Vite does not type-check TypeScript, so add tsc to your build or CI. CRA ran tests through npm test with its own test runner. Vite has none, so most teams move tests to Vitest at the same time. Vite alone gives you no router or data loading, which is why the React team recommends a framework for new apps.

Also worth a look

  • React Router A React framework that the React team recommends for new apps; pick it when you want routing, data loading and code splitting decided for you, and it runs on Vite.
  • Next.js Vercel's React framework, also on the React team's list; pick it when you want server rendering or React Server Components.
  • Rsbuild A build tool on top of Rspack with an official Create React App migration guide; pick it for a CRA app that has been ejected into a big webpack config.

More newer, better JavaScript bundlers, compilers and build tools

Sources

Judged on 2026-11-06. See every javaScript bundlers, compilers and build tools, or all 66 replacements.