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

Security News

React Team Updates CRA Migration Guidance After Community Pushback

React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.

React Team Updates CRA Migration Guidance After Community Pushback

Sarah Gooding

February 19, 2025


Last week, the React team officially announced the sunsetting of Create React App (CRA), marking the end of an era in React development. Our initial report, published four days prior to the announcement, covered the declining maintenance activity that led the React team to sunset the project, along with important notes on why the create-react-app npm package is not yet being deprecated.

The deprecation of CRA isn’t controversial. It’s widely supported, but the announcement on the React blog sparked an intense discussion within the developer community about the future of React tooling and the team's recommendation of frameworks over standalone build tools.

React's Framework Push Sparks Community Criticism#

The React team's initial blog post recommended frameworks like Next.js as the preferred way forward for new React applications. Many developers were frustrated that the React team did not explicitly recommend Vite as the go-to replacement for CRA. While the post acknowledged Vite as a tool for building React apps from scratch, it primarily steered developers toward full-fledged frameworks. This stance triggered immediate pushback from the community.

In a post on X that received more than 1.1K likes and 82 retweets, Vue.js and Vite creator Evan You reacted to the migration recommendations in the post.

“Recommending current CRA users migrating directly to a framework is just bad advice,” You said. “You are pushing them towards a lot more complexity than their current setup and greatly increases migration cost and risk.

“This also cannot be justified by 'they should use frameworks because routers and data fetching,' because if they need these they likely already have implemented it on top of CRA with their chosen solutions. Instead of migrating that to frameworks that likely handle these concerns quite differently, the most obvious and straightforward path is to replace CRA with something similar in scope but more modern and performant.

“I want to give React team benefit of the doubt, as I always do, but I truly believe this is terrible advice for existing CRA users.”

The community's response highlighted a perceived disconnect between React's leadership and developers' practical needs. Many expressed strong reactions to the announcement failing to support diverse React use cases beyond full-stack web applications.

“Yeah, I'll go ahead and use the privilege I have as a ‘nobody’ and say the less diplomatic thing,” software engineer Samuel Bednarz said. “This is not just bad advice. This is a clear instance where they are avoiding recommending Vite for reasons of underlying stubbornness or bias.”

You also commented on the GitHub PR for proposed changes based on community feedback.

“Saw this PR a bit late but I want to point out the ‘unusual constraints’ phrasing here is among those that makes users who find Vite + React just fine feel that their preference is being invalidated - when in fact there are massive amount of users falling into this category,” he said.

“Another point I want to make is this section is talking about "Migration" - a term that mostly applies to existing applications. Most existing CRA apps likely already have their routing / data fetching implemented in some way (e.g. with older versions of React Router). Moving to something like Vite is the most proven and safe path to adopt modern tooling, without the risk of having to refactor their (currently working) routing and data fetching logic.”

React Team Responds with Updated Migration Guidance#

In a commendable display of responsiveness, the React team, led by Rick Hanlon, quickly incorporated community feedback through a series of updates on GitHub. They updated the announcement and documentation to add instructions for migrating from CRA to build tools like Vite, and to clarify when frameworks and build tools are recommended.

The changes addressed several key concerns:

  • Migration Guidance: The team added explicit links to migration guides for build tools, acknowledging that frameworks aren't always the best fit.
  • Terminology Changes: The "Build a Framework" documentation was retitled to "Build a React App from Scratch," reflecting that not all custom solutions need to be full frameworks.
  • Tone Adjustments: Perhaps most significantly, the team revised language that seemed dismissive of non-framework approaches.

During the revision process, Hanlon reached out directly to Evan You, asking, "What's the best guide for migrating from CRA to Vite?" You responded that the Vite team will work on an official one and send a PR.

Hanlon’s transparency about the initial omission was notable. "Thanks! To be honest, not having clear and official guides (and I hadn't actually tested these, like i have the framework guides) were the only reason I didn't include this section in the original draft," he explained. "That clearly sent the wrong message, and I needed to add this quickly, so it would be nice to get more official guides."

“The goal isn't to invalidate preferences, because the goal isn't to document preferences at all,” Hanlon said in response to You’s feedback on the PR.

“The goal is to encourage users to use a setup that will allow them to build the best user experience possible, which means allowing them to integrate data fetching into routing easily, and to opt in to server features if they want instead of getting locked into a network-waterfall prone bloated CSR bundle that requires a lot of work to fix later (fwiw, this isn't a critique of Vite, since solving these problems are for frameworks and not a build tool).”

Moving Forward from CRA#

The React team's revised documentation now presents a more balanced view. While still recommending frameworks for most use cases, it explicitly acknowledges valid reasons for building from scratch with tools like Vite, Parcel, or Rsbuild.

For developers currently using Create React App, the path forward is now clearer:

  • For new projects, frameworks remain the recommended choice for apps needing integrated routing and server features.
  • For existing CRA projects, multiple migration paths are available, including both framework adoption and transition to modern build tools.
  • CRA itself will continue in maintenance mode and has been updated for React 19 compatibility.

The CRA deprecation may mark the end of an era, but it also points to a maturing ecosystem where developers have more choices than ever.

Despite the React team's perceived reluctance to endorse Vite, the tool has emerged as a popular choice for React development, with You noting that Vite's React user base nearly matches that of Next.js. This episode demonstrates the React ecosystem's ability to adapt through community dialogue, even if the initial messaging struck a nerve. As React continues to evolve, the balance between flexibility and opinionated tooling will likely remain a key discussion point, shaping how developers adopt and build with React in the years ahead.

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