3 ms·
I'm curious how this compares to Next.js. Next.js has had fast refresh for a while, and works great as an all-in-one solution for React websites. I think the m
by lucasmullens 6y ago
I'm curious how this compares to Next.js. Next.js has had fast refresh for a while, and works great as an all-in-one solution for React websites.
I think the main difference is CRA has the concept of "ejecting", allowing you to avoid interacting with config files until you really need to customize how the build works.
- andyfleming 6y agoNext.js is more opinionated, has more features, and provides server-side rendering. You might choose one or the other for different use cases.
- dbbk 6y agoNext.js is severely restricted by its proprietary router. CRA has the downside of not supporting server rendering, but you can at least use the standard react-router.
- bhl 6y agoBoth the standard react router and nextjs framework are open source.
- cercatrova 6y agoSo what? If NextJS doesn't support another router, you're not gonna patch it in unless you want to continually be out of sync with the main branch.
- SahAssar 6y agoThat does not mean that it is proprietary, see https://en.wikipedia.org/wiki/Proprietary_software https://en.wikipedia.org/wiki/Proprietary_software
- cercatrova 6y agoThe weird proprietary was used colloquially, not to mean "not open source". In this case, it means something that is only used in relation to one other thing, which is NextJS.
- dbbk 6y agoI obviously did not mean it literally.
- chrstphrknwtn 6y agoI'm curious about restrictions of the next.js router compared to the standard react-router, are there specific serious restrictions you've experienced? I've found the next router pretty easy to deal with, and have been writing less code to achieve the same things over time as next.js matures.
- dbbk 6y agoNext doesn’t support nested routes and layouts. So if you have, for example, a page that has a a sidebar for a master/detail view, when you load the nested page it blows away the whole DOM and has to render the whole page again, meaning you lose your scroll positions and anything else you want to persist across pages. React Router on the other hand lets you render subroutes directly into an ‘outlet’, maintaining the DOM state outside of it. This is a super common pattern when you’re building something like an admin dashboard app which I do often.
- flak48 6y agoYep. Lack of support for nested routes is what's keeping me away from Next.js too. A tab view that doesn't rerender the whole page requires jumping through many unofficial hoops with Next.js. Even standard patterns like having seperate components for page header, sidebar that doesn't rerender the main content section feels very hacky with Next.js, and that too after digging through many people's blogs to read how they accomplished that. I guess next.js really wants you to ditch the whole SPA idea atleast when it comes to routing. I hope folks also explore more moderate patterns like server rendering only the first page load (either with react dom or using state hydration) or exploring better separation of client bundles too, and figure out what works best for them. Rather than sticking to whatever next.js or CRNA are set up for by default