DEV Community

Alex
Alex

Posted on

Next.js at refactor or extinct situation.

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.

Cypress github stats

47600 stars / 14600 bugs = 34 quality

Cypress's successor - Playwright

Playwright github stats

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

Next.js github stats

128_000 stars / 3000 bugs = 42 quality

Let's see React.js repo for context

React.js github stats

230_000 stars / 754 bugs = 305 quality

And Remix.js repo (SSR framework from react-router team)

Remix.js github stats

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)

Collapse
 
arslanovngc profile image
Ismatillo

Did you find a solution to that useParams hook that was returning a random wrong values?

Collapse
 
asmyshlyaev177 profile image
Alex

No, just passed it as prop all the way down, not pretty but works.