Next.js become a hype of the day (or year), but it's slowly suffocating under the weight of technical debt.
There are many big enough pain points with Next.js:
- Slow and painful dev mode, if you changed something and need to check more than 1 route, you need to wait till route compiled. Next.js server also uses few gigabytes of RAM. Turbopack complaining about perfectly working TS code, and struggle to understand
:global
in CSS modules, still not production ready. - Whole workflow is intended to be used mostly with server components, but in real world applications big chunks of applications use client side JS, because it's way faster and more responsive.
- Routing is a mess, pages router was good enough, but App Router it's just a wrapper around it, that lead to more bugs and complexity.
- Vercel service is good, but if popularity of your project going parabolic, costs will follow - 96k bill
Just stumbled upon a bug when useParams
hook periodically returning dead wrong values.
Searched for existing issues, didn't find any, tried to open issue on their GitHub, can't do than without providing reproducible example. Repository is private, I can't share all of it. And I can't pinpoint the exact condition for a bug to appear in a big enough codebase.
Similar situation was with Cypress
testing framework. For years people opened issues about flaky tests and memory leaks, all of them were closed, because can't properly reproduce them. Easy to make something works in a TODO app, real challenge is a big and complex application. Usually, people work under NDA and can't just share the whole repository.
After some time Playwright came and Cypress isn't relevant any more.
Let's see approximate quality ratio, by calculating stars to bugs for Cypress.
47600 stars / 14600 bugs = 34 quality
Cypress
's successor - Playwright
67_700 stars / 692 issue = 97 quality
I'm aware that many bugs issues it's just misunderstanding or duplicates, still, if something confusing in a documentation/example, it is a con of software.
Let's see about Next.js
128_000 stars / 3000 bugs = 42 quality
Let's see React.js
repo for context
230_000 stars / 754 bugs = 305 quality
And Remix.js
repo (SSR framework from react-router
team)
30_300 stars / 295 bugs = 102 quality
All of this just my opinions, but it's backed by years of experience with different frameworks/libraries and observations.
Top comments (2)
Did you find a solution to that useParams hook that was returning a random wrong values?
No, just passed it as prop all the way down, not pretty but works.