New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

Security News

Create React App Officially Deprecated Amid React 19 Compatibility Issues

Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.

Create React App Officially Deprecated Amid React 19 Compatibility Issues

Sarah Gooding

February 11, 2025


TL;DR

  • React 19 breaks Create React App (CRA) due to dependency mismatches.
  • CRA has been unmaintained for over two years, yet it's still widely recommended by old tutorials.
  • The React team is officially deprecating CRA, adding warnings in the CLI, README, and docs.
  • The CRA package will eventually be deprecated on npm, but not immediately.
  • Developers are encouraged to migrate to modern tools like Vite.

The Breaking Changes in React 19#

React 19 introduced breaking changes that cause create-react-app to fail when setting up new projects. The primary issue is a peer dependency mismatch between the React Testing Library (@testing-library/react) and React 19. Here's how it happens:

  1. CRA installs the latest available version of React by default—which, after React 19's release, means it installs React 19.
  2. CRA's default template includes React Testing Library v13, which expects React 18, not React 19.
  3. npm throws an error when it detects this mismatch, preventing the project from being set up properly.

“Starting with the release of React 19, users running create-react-app my-app began experiencing hard errors from npm during project setup.,” Redux maintainer Mark Erikson said, detailing in a recent GitHub issue how this causes “a perfect storm of incompatibility.”

A fix was proposed in PR #13738, which updates React Testing Library to a version that supports React 19. However, this is only a short-term fix—the bigger problem is that CRA is fundamentally outdated.

CRA is Outdated, But New Users Still Try to Use It#

Despite being unmaintained for years, CRA is still one of the most commonly recommended tools for setting up a React project. This is largely because:

  • Many old tutorials and articles still tell users to use CRA.
  • The old React documentation (now at legacy.reactjs.org) still lists CRA as the recommended tool.
  • A Google search for "create a new React app" still prominently features CRA.
  • Even LLMs (like ChatGPT 4, Claude, etc.) still suggest CRA as the primary method for setting up React projects.

“As an educator in the space, CRA's lack of deprecation notices are a constant stumbling block for new developers and inexperienced React users,” Theo Browne commented. “It's an unnecessary harm to the entire ecosystem and it's SO easy to mitigate.

“I’m sorry guys. There's really no excuse. It's time to mark this project as deprecated.”

The people most likely to run into these problems are beginners. Someone just starting with React might follow an old tutorial, try to use CRA, and get stuck with dependency errors right away.

The Solution: Official Deprecation of CRA#

Since CRA is no longer actively maintained, the React team is taking official steps to deprecate it:

  1. The CRA CLI will display a clear deprecation warning when running create-react-app, directing users to modern alternatives.
  2. The CRA README and documentation will be updated to reflect its deprecated status.
  3. SEO updates will be made to lower CRA’s visibility in search engines in favor of modern alternatives.
  4. Eventually, CRA will be marked as deprecated on npm, but not immediately.

“The CRA CLI should be updated to print a loud and clear ‘CRA is deprecated, see the React docs 'Start a Project' page for alternatives’ message (but, ideally, not throw an error for now),” Erikson commented.

“As a longer-term step, it's worth seriously considering if the CRA repo should be archived until there's any decision or forward motion on future changes such as turning CRA into a "meta-launcher" for creating a project.”

Why Not Deprecate the npm Package Right Away?#

Some users have suggested immediately marking CRA as deprecated on npm. However, React Core team member Rick Hanlon explained why that’s not happening yet:

  • Deprecating on npm makes it harder to find. If people search for create-react-app, they won’t see it in search results anymore.
  • Most users come from tutorials, not npm search, so a deprecation notice in the CLI is more effective.
  • Deprecation on npm is essentially a "soft deletion." It signals that the package shouldn’t be used, but doesn’t remove it.

“Deprecating an entire package on npm is basically deleting it,” Hanlon said. “We're not deleting Create React App yet.”

At the time of publishing, the package still gets 25K weekly downloads on npm.

What Should Developers Use Instead of CRA?#

The React team has been pushing for framework-based solutions like Next.js, Remix, and Gatsby for modern React projects. However, if you just want a simple SPA setup, the best alternative is Vite.

“Today, Vite is by far the best tool for creating a new basic React client SPA project,” Erikson said. “CRA projects can be straightforwardly migrated to Vite, Vite comes with basic React templates built into create-vite, and Vite also forms the basis for some React-based frameworks already.”

Vite is:

✅ Faster than CRA (hot reload is near-instant)
✅ Simpler to set up
✅ Maintained and actively developed
✅ Already the standard for modern React projects

Migrating from CRA to Vite is also relatively straightforward—guides and tools are available to help developers make the switch.

In Summary

Create React App is officially being deprecated due to:

  • Breaking changes in React 19
  • A lack of maintenance for over two years
  • Confusion among new users who still try to use it

While a temporary fix is being applied to allow CRA to work with React 19, the React team is actively discouraging its use and recommending developers migrate to Vite or other modern alternatives.

If you're still using CRA, now is the time to move on.

Next Steps for Developers

If you're starting a new project, use an alternative like Vite.
If you're using CRA, start planning your migration—there are guides to help you move to Vite, Next.js, or other frameworks.
If you have tutorials or documentation referencing CRA, update them to avoid misleading new developers.

For more details, check out the official discussion:
📌 GitHub Issue #17004

Subscribe to our newsletter

Get notified when we publish new security blog posts!

Try it now

Ready to block malicious and vulnerable dependencies?

Install GitHub AppBook a demo

Related posts

Back to all posts
SocketSocket SOC 2 Logo

Product

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc