Sunsetting Create React App
128 points by acemarke 4 months ago | 146 comments- CSDude 4 months agoVite is a direct replacement for CRA but corporate speak makes it sound you need a framework and that corporate speak is funded/influenced by Vercel.
No you do not need NextJS or any other server side JS for most of the projects. Let's not pretend SPA is dead. Most of you do not need server side rendering and all the complexity it brings.
Just use Vite. You can decide whether to add Tailwind etc later. React should be left bare bones, and it can recommend frameworks, not make them sound default.
npm create vite@latest my-app -- --template react-ts
- madeofpalk 4 months agoYes, I find it disapointing how much they're pushing developers who might not know better that React is NextJS, which is not true. They're pushing people into the complex option first without understanding the tech along the way.
- voidr 4 months agoA lot of teams using NextJS end up creating things that are effectively SPAs where some part of the code run on the server, they gain no benefits but end up dealing with relatively long compilation times and have to deal with the confusing issues around client vs server components.
- number6 4 months agoMost stuff ends up beeing Client Components - since what else do you really need react for?
- voidr 4 months agoIf you want to optimise for SEO you might want your content to be rendered on the server, however: rendered on the server is not the same as being sent down in the initial HTML payload. Server components are not convenient to use, because they cannot be interactive, even code that you would expect to work does not work on the server.
There are good parts like server actions, however they are plagued with very strange limitations making them not so useful.
If you want to statically generate websites and want to use React, NextJS can be a good choice, however for complex web applications I find that it's not ambitious enough to justify even the extra compile time that I get from its tooling compared to Vite.
- voidr 4 months ago
- number6 4 months ago
- codingllama 4 months agoRsbuild is another nice replacement for CRA. They even provide guide to migrate from create react app. I used it for a small CRA application migration and it worked without any hassles.
- floydnoel 4 months agoTotally agreed. I ended up building my own router so I could just use React, Vite, and my router and have everything required to ship a SPA, while adding support for SEO. It's tiny compared to the competition: https://github.com/nerds-with-keyboards/routerino
- nsonha 4 months agoVite is in the same category as webpack. Is CRA in the same category as webpack? I don't think so, it's a webpack wrapper, not a bundler.
- rk06 4 months agoIn theory, yes Vite is webpack replacement. CRA is a different beast. So, what is CRA’s replacement? Vite + vite-plugin-react.
But that is quite a mouthful, so people shorten it to Vite. So, when they say switch to Vite, Vite-react plug-in is implied. No one is recommending rolling your own Vite plug-in for react
- nsonha 4 months agoCRA does much more than just supporting jsx, which any bundler should be able to do without a "plugin".
What else does that plugin do? HMR? Equivalence to CRA is next, which is a set of opinionated loaders and config. But next also has the router and some react utils on top.
- nsonha 4 months ago
- rk06 4 months ago
- greenchair 4 months agospa is defintely dying. a lost 10 years.
- madeofpalk 4 months ago
- acemarke 4 months agoPleased to say I had a meaningful hand in this :) As some background, this finally happened because:
- React 19 broke CRA
- I griped about it loudly on Bluesky (https://bsky.app/profile/acemarke.dev/post/3lggg6pk7g22o) and that started a long debate
- I filed an umbrella issue describing the specific breakage and recommending an actual official deprecation announcement (https://github.com/facebook/create-react-app/issues/17004)
- The React team finally took action to fix the CRA breakage, then wrote the blog post, updated the setup docs page, and redid the docs SEO to get Google to stop showing the legacy docs as a search result.
So, kudos to the React team for making meaningful changes here!
(It's not _exactly_ what I was hoping for, and I gave them some additional review feedback that they didn't include, but gotta give credit for the actual changes and steps forward!)
- ianschmitz 4 months agoThey are still going out of their way to not say Vite or similar SPA tooling is a completely viable path for a lot of projects. SEO is not critical for all projects like they make you think it is. I’m pretty disappointed by the direction they took in this post.
I was given word back in 2019 while I was working on CRA that the React team was cozying up to the Next team and was going to be pushing Next as the future of React. That never sat well with me and I stopped contributing the following year.
This post took way too long to be sent to the community, but I’m glad they finally did something. It’s been dead for years.
- 0xblinq 4 months agoThanks a lot for your effort and all the work you did to get this done.
May I ask about the feedback you provided and they didn't include?
- acemarke 4 months agoSome of the main points I had:
- At least _mentioning_ Vite directly on the "Create a Project" page _is_ genuinely a step in the right direction. That said, they're going out of their way to still not just directly say "creating a basic SPA with Vite is a valid option for using React", and at this point it just looks pretty ridiculous. (Someone pointed out that the Svelte docs start with "Use SvelteKit"... and then the very next thing is "or add Svelte to a basic Vite project with this template". That's what's needed here.)
- I get the _intent_ of the "Build Your Own Framework" phrasing (ie, "choosing to self-install a router, data fetching lib, etc, results in a poor self-created framework"). That said, the "BYOF" page is the opposite of what's needed. It needs to be concrete steps to guide beginners into setting up an app with Vite or Parcel and recommending specific tools to add and techniques to use. Instead, it's "Step 1: Install Vite or Parcel"... and then multiple sections of "Look how hard routing, data fetching, and rendering are, you'll _never_ get this right yourself, use an existing framework instead, DON'T DO IT YOURSELF!". The content would be great if it was on a page titled "Web App Perf Basics", or "Framework Capabilities". But given that this is linked from the "Create" page with the hint of "follow steps here to get going DIY", this is the wrong content entirely.
- Similarly, the repeated use of "framework" to mean "a pre-existing thing someone else built" vs "a set of libs you added yourself" is confusing. Along with that, the overall tone generally comes across as "we don't want to acknowledge the breadth of ways that people use React in practice, and we're going to keep repeating the word 'framework' because we don't trust users to know how to make decisions themselves and we know what's best for you".
- I understand why they tried to emphasize "Next/RR/Expo can all export plain SPAs with no server needed!". That knowledge is genuinely not widespread. But, I don't think a bright green callout with that info should be the _first_ thing on the "Create a Project" page. _Somewhere_ on the page, sure, but it's not the most critical thing to show right away.
So, actual genuine improvement... and yet still kinda frustrating to read and see the phrasing and messaging so far off from what it _ought_ to be.
- iuvcaw 4 months agoThe React team really does not like SPAs, which I think is a bit of a shame. I'm not a big fan of the mish-mash approach of client and server components that Next et al now encourage.
For the type of app that React excels at, or at least the type I like to build, the performance issues with a SPA aren't a big deal.
- codinhood 4 months agoThis perfectly captures my thoughts about the situation.
I don't know why they're so resistant to do treat SPAs as a completely valid way to use React in 2025. The majority of devs still use React primarily as a SPA. Recent State of React has it at 85% for SPA and 63% for SSR (1). Probably they know their answer is unpopular and thus we get a lot of deflection and phrases like "you should only consider a SPA if you have unusual constraints" whatever that's suppose to mean.
I've said it before, but changes don't happen when random devs like me complain, because I'm easy to ignore. So I really appreciate you specifically bringing this topic up, it really helps to get things going.
- bananadonkey 4 months agoAgreed on the BYOF page. I excitedly clicked expecting some new nuggets of wisdom from the core team but was quite disappointed.
- ianschmitz 4 months agoThank you Mark for all the hard work you’ve put in to the React community over the years.
- iuvcaw 4 months ago
- acemarke 4 months ago
- worthless-trash 4 months agoYet i got told here that CRA is not react https://news.ycombinator.com/item?id=42613221#42620021
Seems like they are responsible for it, so .. it react.
- thiht 4 months agoYou can say it in 10 threads if you want, that’s still not true. CRA is a template using React. The team working on React can work on a React template, that doesn’t mean they’re the same thing. It doesn’t even make sense.
- worthless-trash 4 months agoI've learned today the reccomended toolchain isnt part of the base react ecosystem. Thanks for the education.
- worthless-trash 4 months ago
- madeofpalk 4 months agoIf CRA is dead, does that mean React is dead?
I don't think so, so CRA is not react.
- thiht 4 months ago
- ianschmitz 4 months ago
- mmoustafa 4 months agoThe article kindly phrases the alternative as “use a framework” and links to a page that has only one actual framework: NextJS.
I don’t support React pushing a wholesale shift to NextJS as a starting point for every project, given it’s mostly directed by a single private company (Vercel) that have positioned themselves as the default deployment platform for NextJS apps, publish the documentation, and do not shy away from claiming it as their own.
It has become extremely difficult to distinguish between NextJS features that are community-driven vs profit-driven e.g. api route functions (putting your backend in your React project, so now you will pay them for compute) and NextJS image optimization (famously expensive, and NextJS literally throws warnings if you don’t use it).
- jbreckmckye 4 months agoThe close relationship between React (open source) and Vercel (VC funded hosting co) has made people uncomfortable for a while now.
- littlecranky67 4 months agoOn top of that, NextJS doesn't even support the <Image/> component (and thus all their image optimization) when exporting to static output (unlike Gatsby). So you will be pushed even closer to pay them.
- leerob 4 months agoThis is not accurate: https://nextjs.org/docs/app/building-your-application/deploy...
- littlecranky67 4 months agoIn your very link you can see that you can only add a handle to a third party loader. Their built in image optimization that works in vercel does not if you static export and host elsewhere.
- littlecranky67 4 months ago
- leerob 4 months ago
- gcau 4 months agoVite is the replacement for CRA, I usually create new projects with their preact-ts template. Its very fast and just works. I would personally strongly advise against nextjs, but use whatever you prefer.
- leerob 4 months agoAll Next.js features work when self-hosting, including APIs and image optimization: https://nextjs.org/docs/app/building-your-application/deploy...
- kouroshp 4 months agoThe article mentions React Router (v7) which is a framework, so it is not just Next.js.
- jbreckmckye 4 months ago
- Chance-Device 4 months agoThe complexity of frontend development now makes me want to return to a “back to basics” approach. I just want a server side rendered platform, serving templated html pages to the client, with minimal JS for interactivity. Most projects don’t really require more than this, and the level of unnecessary complexity that has developed over the whole stack, from devops to backend to frontend, is staggering and obviously more a social artefact than a technical necessity.
- woutr_be 4 months agoYou might be interested in Astro (https://astro.build/), I've build my first project with it, and it's great to somewhat go back to basics, but without needing to set up my own server with templating and tasks for static assets, etc...
- napolux 4 months agoupvoting astro :)
some basics and nothing else to start. then you can go as deep as you want down the rabbit hole :)
but it's completely on you
- shepherdjerred 4 months ago+1, Astro is absolute magic
- napolux 4 months ago
- jbreckmckye 4 months agoAs the number of replies to a React article rises, the chance of a subthread bemoaning SPAs increases to 1
- 8n4vidtmkvmk 4 months agoTBF, React isn't exclusively for SPAs. I use it in my MPA.
- 8n4vidtmkvmk 4 months ago
- curtisblaine 4 months agoIf you need minimal js, there's no need to use frameworks. I don't understand why we came to think the opposite, but you absolutely don't need state managing, effects and a build chain if your goal is to merely show some content on the web.
If you need to write a web application, on the other hand, you absolutely need all these things, because your mutable state will become a mess after a short while, your event handlers will call your components in a thousand tangled ways and you will want to navigate your code and your types using your IDE. But, again, if you just want to show content with minimal javascript, you don't need to worry about that. Leave all that stuff to web application developers, instead of looking at that stuff, concluding it's too complex for you and ranting against it on the Internet. It's not made to solve your problem.
- Chance-Device 4 months agoThe problem is not that the tools exist, or that complexity exists. The problem is that the community view, enforced by various incentives and supported by the creators of these tools, creates a situation where technology choices are driven by what sounds good or is trendy rather than solving the problem at hand in the most effective way.
Technology choices are institutional decisions. They are reached largely via defensibility to non-technologists, to whom (and indeed to most technologists) boils down to appeals to authority rather than to reason.
Nobody is trying to stop this, and indeed many are trying to increase it so they can sell products with more features that virtually none of their customers need.
Blogs, influencers and educational platforms push what is new so that they have more content.
All of this is self reinforcing and we suffer because of it.
- austin-cheney 4 months ago> I don't understand why we came to think the opposite
The DOM is scary.
- krapp 4 months agoChildren learned how to use it in the 90s from basic web tutorials and reading source code, it isn't that scary.
The real reason is that the web started to become serious business, and that meant javascript had to become a serious language, which led to all of the nonsense it accreted over the years from startups and enterprise. Everyone uses frameworks and compilers and a package manager because a serious language uses frameworks and compilers and a package manager, and all of these look good on a resume.
- curtisblaine 4 months agoIt is, and, worse, it's mutable. But nobody needs to manipulate it just to put some content on the Web.
- krapp 4 months ago
- Chance-Device 4 months ago
- madeofpalk 4 months agoI really like React as a server-side templating language.
- williamdclt 4 months agoSame. I replaced handlebars with server-side generated JSX (not Next or anything like that, just renderToStaticMarkup) and it’s an infinitely better dev experience than any other templating language I’ve used before (hbs, jinja, django…).
I’m getting more and more jaded about React and would rather stick with server side rendered html, but I’d definitely stick with JSX at least.
- pier25 4 months agoI don't like JSX but I enjoy how React/Svelte/Vue/etc do code colocation and composition compared to traditional templating systems with partials etc.
I've found dotnet with Razor and Blazor to be the exact SSR experience I was looking for. And the performance vs JS is so much better. I did a benchmark recently and got about 7x improvement.
- williamdclt 4 months ago
- qaq 4 months agoThats what I switched for all personal projects: Go + a-h/templ + htmx
- globular-toast 4 months agoIf that's all you need then React was never the right solution. What makes you realise this now?
If you're used to React/JSX you'll hate templates, though. Look for a HTML component rendering library instead.
- RobotToaster 4 months agoHe's hardly alone in this, half the SPAs I see could have been pure HTML/CSS.
- timc3 4 months agoI disagree with hating templates. I am used to both, I find templates are much easier to deal with depending on the templating language.
- RobotToaster 4 months ago
- rk06 4 months agoSo, like using vue/alpine with a script tag?
- sebazzz 4 months agoHonestly, that why I use Blazor. It just keeps simple.
- woutr_be 4 months ago
- EdwardDiego 4 months agoOkay, I'm verrrry out of date with frontend dev, but didn't React used to be a framework?
Now they're recommending you use frameworks? That are presumably built on top of React?
So what is React exactly these days? Feels like it's a shadow DOM renderer that's become a defacto API?
Like, you could use a component written for one React based framework, in another React based framework, and it'll just work?
Does React still provide routing and/or state management? Or has that been devolved to frameworks?
Wait a minute, has React become the J2EE of front-end?
- MarcelOlsz 4 months agoReact is primarily for intimidating the piss out of new employees and flexing on your teammates with esoteric hooks and composables. In essence, React is the job security framework.
- invaliduser 4 months agoNot primarily, as primarily it was just "we're the V in MVC", and people were using classes. The hooks came when the react team got on the "functional programming" wagon, and suddenly everything was about immutability, side effects, etc. and very little about giving control to the developers on their components life cycle.
- korm 4 months agoReact was literally first created in ML out of the author's dislike of MVC, who preferred functional programming and immutability[0]. For a long time, react aspired for its future to be in ReasonML.
Hooks came as no surprise to anyone who paid attention, as the recommended way to write components since at least 2016 was in the stateless functional style whenever possible, and many of us used recompose[1] to simulate hooks long before their introduction.
[0] https://github.com/reactiflux/q-and-a/blob/master/jordan-wal...
- korm 4 months ago
- 4 months ago
- sergiotapia 4 months agoResume driven development driven to the absolute extreme. React is terrible
- invaliduser 4 months ago
- gcau 4 months agoReact has never been a "framework", it's a "view library" that can be included in a framework. The benefit is you can pick your own pieces, like building your own computer. Also, React doesn't handle routing (I recommend wouter), and yes it does state management (I recommend zustand for additional state management). You seem pretty opinionated on something you don't know a whole lot about.
- rahkiin 4 months agoYour opinions here are the core of my gripe with React: everybody has their own favorite package for some functionality that comes in standard frameworks. You’re mentioning libraries I didnt know existed. This makes every react app different, annoyingly for docs, help resources, and people.
No surprise NextJs gets more popular
- rahkiin 4 months ago
- 0x1ceb00da 4 months ago> I'm verrrry out of date with frontend dev
How many days?
- EdwardDiego 4 months agoWhen was JQuery winning against Mootools and Prototype etc.?
Roughly that many days.
- askonomm 4 months agoYeah, I was around back then, and the difference from then to now is equivalent to the difference between inventing the wheel and going to the moon. Not necessarily in a good way.
- askonomm 4 months ago
- EdwardDiego 4 months ago
- kouroshp 4 months agoReact itself was never a framework, just a library to render user interfaces. Routing, data fetching etc. have always been separate libraries (or built into frameworks).
- esperent 4 months agoThis way of stating things leaves out the central position that React has in any setup.
You'll always be using a React routing library, a React data fetching library, a React state management system, and so on.
- TiredOfLife 4 months ago> You'll always be using a React routing library, a React data fetching library
That's like saying "you will always use js in backend" while ignoring every other backend language.
- floydnoel 4 months agodevelopers often want those things, but they are certainly not required.
i certainly don’t use a react data fetching library, i just use fetch. i don’t use special react state management, just use redux. i did build a router that works primarily with React in order to support JSX in the components, but it wouldn't be any harder to adapt it to another framework or setup.
the problem is exactly the same as those memes making fun of people asking on stack overflow "how do i add two numbers with jQuery?" eg 'how do we add two numbers with React'
the problem is there are always new developers making silly mistakes, and making that an indictment of some technology is a fallacy.
- TiredOfLife 4 months ago
- EdwardDiego 4 months agoIt wasn't like that when it first came out, from my experiments with it when it was first released.
- esperent 4 months ago
- _kidlike 4 months agoand yet, every time I have a discussion about this with my frontend colleagues, they are soooooo far gone into the React pill, that it's impossible to talk to them. And they all happily migrate from one hype to the next, as the React gods dictate, burning funds for no reason. Funnily enough, the more time passes, the more bugs and regressions our frontend has.
- lakomen 4 months ago[dead]
- lakomen 4 months ago
- MarcelOlsz 4 months ago
- curtisblaine 4 months agoI know this is highly controversial, but I don't understand all this sentiment against js frameworks. You can still write vanilla html + js if you don't need hashed assets, css isolation, routers, linting, types, complex state, etc. It won't scale much, but maybe you don't need to scale, you just need to show some simple content with a login page and a "back to top" button. You can absolutely do that without frameworks, and you're better off without.
Here comes the controversial part: I feel all this sentiment against "frontend complexity" is essentially non-frontend developers wanting cool, highly interactive web apps for their backend and getting bummed when they discover it's hard, specialized work. It is, the browser is a beast, all the layers are backwards compatible and web apps are essentially i/o heavy programs responding to a huge number of async events, trying to render a complex state in response on millions of slightly incompatible platforms. There's no silver bullet for that: it's complex, and the complexity shows in the tooling. But if you don't need that complexity because you just need the browser's lower-interactivity presentation layer, nobody in the world forces you to write an SPA. The problems normally start when you want to "just add a comment section" to your content but then you don't want to reload the page and you discover that it becomes complex soon and writing SPAs comes at a cost.
Sorry for the rant.
- lelanthran 4 months ago> I feel all this sentiment against "frontend complexity" is essentially non-frontend developers wanting cool, highly interactive web apps for their backend and getting bummed when they discover it's hard, specialized work.
Maybe it is hard and specialised, but from the viewpoint of someone who just wants to deliver an app, exactly what would I need a client side router for? Or a virtual DOM?
Until I am in need of an interface that has the needs of Facebook, I need convincing that these things are adding value.
> But if you don't need that complexity because you just need the browser's lower-interactivity presentation layer
That's sufficient for 999 out of every 1000 web apps. In practice I see the opposite ratio.
Just this past month I yanked out the entire reacy front end from a project and replaced it, functionally, with plain html, js and CDs and the junior tasked with working on it was able to iterate much faster than he had been doing before.
At a previous larger contract I just kept the react and powered through, but I kept having the team run into problems because like it or not, the cognitive burden of react very often outweighs any benefits it brings.
- curtisblaine 4 months agoAgree with the wrong ratio, and the explanations I can find are two: 1) When starting a project, product people always exaggerate the scope, so tech people set it up for scaling from day 0 2) React is industry standard, so it's easier to say "here, this is a React component, you know how it works" rather than re-inventing your "component" pattern that mutates the DOM. That said, complexity is a spectrum: scaling up and down is equally painful. Understanding how to calibrate efforts comes only after a lot of experience.
- curtisblaine 4 months ago
- averageRoyalty 4 months ago> You can still write vanilla html + js if you don't need hashed assets, css isolation, routers, linting, types, complex state, etc. It won't scale much
Why won't it scale? The point of static content/client side work is that the load server side is minimal. It will scale as high as the webserver supports.
> The problems normally start when you want to "just add a comment section" to your content but then you don't want to reload the page and you discover that it becomes complex soon and writing SPAs comes at a cost.
We've had `XMLHttpRequest` since the early 2000s. It would be incredibly easy to add this in vanilla JS.
You could build 95% of websites out there on a standard LAMP stack from 2004 using vanilla JS or at a push jQuery.
The sentiment against frontend complexity (from my observation) seems to be mostly from greybeards who look at big, bloated, high dependency and complex to build solutions for simple web content.
Although I don't personally feel forced, the way markets and industries work you may be "forced" based on what the status quo is in industry at the time.
- curtisblaine 4 months agoIt won't scale in complexity. At a certain point, your mutable state will become really hard to maintain, so you will need some form of state manager. Then your code will grow and accumulate a lot of bad practices, so you will need a linter. You won't be able to keep the whole codebase in your mind, so you will need more help from your IDE, and you'll end up using Typescript. Your teams will keep overriding each other's CSS, so you will introduce CSS Modules in your build step. The product managers will ask about deeplinking without reloading the page, so you will install a router. Your mutable DOM manipulation code will become full of ifs and special cases, so you will feel the need of abstracting out your components in a declarative way etc. I'm not saying you need all of this from the start, but you will need parts of it pretty soon if your application is heavily interactive.
- curtisblaine 4 months ago
- lelanthran 4 months ago
- WuxiFingerHold 4 months agoNot using React anymore, but it's generally not an easy decision whether to use a framework for a SPA or not. Currently I'm torn between Nuxt and Vue with Vue Router. Nuxt has many fun QoL features, but adds a significant layer of potential issues (bugs, maintainability, leaky abstractions over the core library).
My tendency is to have an easier life in the future. So I'd probably prefer not using an universal rendering framework like Next, Nuxt, SvelteKit or SolidStart in client side mode and just use the core SPA framework. In case of Vue, it's even easier (but without those QoL features Nuxt provides).
- pinoy420 4 months agoBackend dev who wanted to try “full stack” (whatever that means)
Give svelte(kit) a go, I enjoy it
- pinoy420 4 months ago
- emoII 4 months agoIt’s not clear to me how using a framework replaces cra, or why cra is a hassle to maintain? I’ve always thought of cra as a way for beginners to quickly wire necessary stuff up to get a working, ”vanilla” react project, something that could be a done in a simple shell script
- dminik 4 months agoCRA existed to remove the setup/maintenance burden of webpack (software straight out of hell ...). It's biggest issue was that it was entirely unconfigurable. You took what was offered in CRA, or you ejected and now had to maintain a huge and brittle webpack config.
The webpack (and CRA) mess started countless attempts at improving the situation. Of which, Vite (+ rollup/rolldown) seems to have won. It's easy to use, fast, supports basically every framework/library in the JS ecosystem.
It's also particularly why Next exists. It gives you a mostly easy to use react setup with Server Side Rendering. Of course, Vercel being Vercel they don't use Vite. Instead, it's a choice between webpack or it's rewrite Turbopack. This is why you get rust-level build times for an interpreted language. Incredible achievement.
- steve_adams_86 4 months agoMy understanding is that features of react now require a meta framework to function. The main feature being React Server Components. There’s a bit of wiring things up required that doesn’t happen off the shelf when you add react as a dependency.
To keep CRA working, this would need to be added. Rather than go down that road, I guess the react maintainers preferred to recommend Next.js which offers RSC support.
I’m probably missing some details. This is my general understanding
- 8n4vidtmkvmk 4 months agoReact Server Components won't work without a server component, but you don't need that.
- steve_adams_86 4 months agoOf course, but it seems to be why Next is pushed as the meta framework of choice. Many simpler options exist, but most don’t support RSCs.
- steve_adams_86 4 months ago
- 8n4vidtmkvmk 4 months ago
- 8n4vidtmkvmk 4 months agoWhile you can run React without a compiler (at least last time I checked), it's really no fun without TSX/JSX, so you need a compiler. There's a bunch of choices in that category, and a bunch of loaders/plugins you can pile on top of that. Compilers and bundlers are not so fun to maintain.
- dminik 4 months ago
- captainmuon 4 months agoI guess it is a good thing that they are now clear about the state of create-react-app. I used it about a year ago because it was still recommended on the React page, and got a lot of deprecation warings. After a lot of googling I realized that people now recommend vite, so that is what I went with (thinking popular = more likely to be supported in future and having more information on the net).
But TBH I'm not really happy with vite. It seems to be made with a big flagship SPA in mind. If you just want one page, or if you want to include some react in a plain website, it is overkill. It creates dozens of files with potentially hundreds of configuration options. I guess this is typical for the entire JS ecosystem. But sometimes I wish the stuff around React was simpler and more opinionated: Just throw the .tsx files in src, run reactc, and include the output script in your HTML. Maybe add a flag to watch for code changes / hot reload.
- lentil 4 months agoCRA has been a maintenance burden for my team for the last couple of years due to security vulnerabilities and incompatibilities in old packages.
We have several React apps (created with CRA) to support, embedded deep inside ASP.NET Web Forms apps (its legacy all the way down).
We decided to switch from CRA to Vite. It has worked great so far.
I am happy to see these docs recommend Vite as an option for adding React to existing apps, because at the time this decision was made on my team, it wasn’t very clear what the correct path was for replacing CRA. I don’t think we could have as easily switched to a framework like Nextjs.
If you are in a similar situation, I would recommend Vite.
- askonomm 4 months agoPretty sure CRA was dead a long time ago already and it's very upsetting how little the React team cares about its users. The unwillingness to act on the CRA being broken, the forceful promotion of a pretty locked-in framework Next.js (which is crap without Vercel, so clearly against the open source spirit) as the de-facto way of doing React (is it really? according to stats I've seen, most uses of React are for SPA's).
I think at work when the next project comes along I'll try and see if we can not do React anymore. I hear good things about Vue.
- p_ing 4 months agoWhy is Next.js crap without Vercel? My devs have been using it in a non-Vercel context for a few years, but I just run the web servers.
- p_ing 4 months ago
- wiseowise 4 months agoMind boggling that you need a tool to start using a tool.
- mock-possum 4 months agoThe state of front end tool chains is absolutely nauseating these days. Sometimes I feel like most of what I’m getting paid for is simply my ability to jump through hoops, not to actually design or build stuff.
- zxor 4 months agoIsn't that what all of software development is? It's tools all the way down
- 0x1ceb00da 4 months agoMe? I know who I am! I'm a tool making a tool using another tool.
- mock-possum 4 months ago
- sureglymop 4 months agoThis is still a maintenance burden and really a testament to how short lived "the standard way of doing things" in this ecosystem can be.
I really really hope Astro will not go because that's what I chose to invest in for a while now... but the fear is real.
- DandyDev 4 months agoSo now you need a framework on top of React - itself a framework. Has React really become so complex that mere mortals cannot comprehend it without another abstraction layer on top?
And the first suggestion for this extra abstraction layer is NextJS, developed by a company with a vested interest to make it hard to run your app on anything else than their own service.
Seems to me that the time is ripe to disrupt frontend development yet again and introduce a simpler stack.
- gcau 4 months ago>So now you need a framework on top of React - itself a framework.
You definitely do not need any framework for react, you don't even need a build step. And react is not a framework. Not that it has objective meaning, but I think these frameworks are not abstraction layers on react, they are tools sitting along side it to make things easier or give more features. You still interface the same with writing the same old jsx.
- sureIy 4 months ago> you don't even need a build step
You're not going to be popular if you write React code with React.createElement() instead of JSX. I know this from experience.
- 8n4vidtmkvmk 4 months agoHahaha... you actually tried this?
- 0x1ceb00da 4 months agowindow.rce = React.createElement
- 8n4vidtmkvmk 4 months ago
- sureIy 4 months ago
- curtisblaine 4 months agoNope, you can use React just including it in your html page. All the added complexity is to give you a better dev experience if you need a highly interactive web application. Routing, linting, types, server rendering, state managing, static files, etc. You don't need all this if you're not developing web applications. You can write html and js and be happy.
- globular-toast 4 months agoReact is a user interface library. It doesn't do anything to dictate how you structure your code or help with your larger application.
- Izkata 4 months ago> Has React really become so complex that mere mortals cannot comprehend it without another abstraction layer on top?
Wrong purpose. The extra layer provides things React never had, like URL routing.
- GrumpyNl 4 months agoNobody knows how to write react anymore.
- GrumpyNl 4 months ago
- gcau 4 months ago
- firecall 4 months agoI genuinely thought CRA had been deprecated and development had ended a couple of years ago?
Edit:
Maybe it just stopped being a recommendation in the React Docs?
- Zealotux 4 months agoThe state of React is so frustrating: plain React doesn't make much sense, but at the same time Next.js is a complete pain in the neck to use. Remix is promising, but young... At that point backend development is much more straightforward.
- ianschmitz 4 months agoIf one of the authors are here, can you please add Ian Sutherland to the thank you note at the bottom? He spent just as much or more of his personal time as Brody and myself. He deserves credit. Thanks
- harimau777 4 months agoIt feels a little strange to have a framework for your framework. I guess that's just how things are now?
- slmjkdbtl 4 months agoSo is there still an officially recommended way to create a simple static react web page without big fullstack frameworks now?
- penguin_booze 4 months agoMajor frontend framework mandates another framework to use the framework. Framework, framework, framework. Framework.
- 8s2ngy 4 months agoInterestingly, the Creating a React App page (https://react.dev/learn/creating-a-react-app) does not mention Remix.
- kouroshp 4 months agoThat’s because Remix is now React Router v7 (https://remix.run/blog/incremental-path-to-react-19) which is mentioned.
- 4 months ago
- kouroshp 4 months ago
- aftbit 4 months agoWell it had a good run I guess. Frontend churn is so fast.
- obiefernandez 4 months agoJust use Ruby on Rails. Problem solved.
- tmvnty 4 months agoThis type of comment doesn't contributing to anything. Rememebr most devs just code for work, and don't want to learn a new language/ecosystem _just_ so they can use a different framework.
- tmvnty 4 months ago
- 4 months ago