frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Microlearning is the new way to learn

https://www.alexarvanitidis.dev/blog/microlearning-is-the-new-learning
1•alarvfm•34s ago•0 comments

AI robot dolls charm their way into nursing the elderly

https://restofworld.org/2025/korea-ai-robot-senior-care-hyodol/
1•sohkamyung•1m ago•0 comments

Show HN: A founder community with true anonymity(HMAC identities,no socialgraph)

https://foundermood.zorentia.com/
1•audaciousdelulu•2m ago•0 comments

Rich Pixels: writing pixel images and other colourful grids to the terminal

https://github.com/darrenburns/rich-pixels
1•ingve•3m ago•0 comments

AI Can't Start a Nuclear War – Or Can It?

https://www.politico.com/news/magazine/2025/09/02/pentagon-ai-nuclear-war-00496884
1•novateg•3m ago•0 comments

OrgChart: Coding Agent Organizations (Open Source)

https://gpeake.com/orgchart/
1•gepeake•3m ago•1 comments

NuShell, a shell where all data is structured

https://www.nushell.sh/
1•whx23•5m ago•0 comments

I made a CLI to stop manually copy-pasting code into LLMs

https://github.com/ILDaviz/aicontextator
1•AntonioBeltuono•9m ago•1 comments

Scientists stunned as strange islands & hidden springs appear in Great Salt Lake

https://www.sciencedaily.com/releases/2025/08/250831010526.htm
1•bookofjoe•10m ago•0 comments

Byte Interviews IBM's Philip D. Estridge (1983)

https://computeradsfromthepast.substack.com/p/byte-interviews-ibms-philip-d-estridge
2•rbanffy•12m ago•0 comments

Ask HN: How to protect own privacy under ChatControl?

3•wiznova•13m ago•0 comments

Apple iMac G3 made from Lego has a chance to become an official retail set

https://www.tomshardware.com/desktops/lego-imac-g3-has-a-chance-to-become-an-official-retail-set-...
1•rbanffy•16m ago•0 comments

Scale your business with Microsoft Dynamics 365

https://saxon.ai/dynamics-365-business-central/
1•saxon_ai•16m ago•0 comments

Google Merchant Center Is a Whiny Pain in the Arse

https://leejo.github.io/2025/08/26/hey_google/
2•leejo•17m ago•0 comments

Saxon AI Assistant

https://saxon.ai/ai-assistant/
1•saxon_ai•17m ago•1 comments

Show HN: Sqlalchemy-tenants – Because "oops, forgot WHERE tenant= " is not fun

https://github.com/Telemaco019/sqlalchemy-tenants
1•Telemaco019•18m ago•0 comments

How big are our embeddings now and why?

https://vickiboykis.com/2025/09/01/how-big-are-our-embeddings-now-and-why/
1•alexmolas•19m ago•0 comments

The Sudden Surges That Forge Evolutionary Trees

https://www.quantamagazine.org/the-sudden-surges-that-forge-evolutionary-trees-20250828/
1•rbanffy•19m ago•0 comments

Ask HN: Suggestions for a document with passwords etc. in case sth happens to me

1•mbork_pl•19m ago•0 comments

Toronto's Underground Labyrinth

https://www.worksinprogress.news/p/torontos-underground-labyrinth
2•bensouthwood•20m ago•0 comments

CVE-2025-43300: "an sophisticated attack against specific individuals"

https://nvd.nist.gov/vuln/detail/CVE-2025-43300
3•qrush•20m ago•1 comments

16callings: Sort Jobs by Personality Fit

https://www.16callings.com/
1•andai•21m ago•0 comments

Swiss AI Initiative

https://www.swiss-ai.org
1•sschueller•23m ago•0 comments

Apertus: An open, transparent, multilingual language model

https://www.swisscom.ch/en/about/news/2025/09/02-apertus.html
1•zeograd•24m ago•0 comments

Swiss AI Initiative

https://huggingface.co/swiss-ai
2•sschueller•24m ago•0 comments

Apertus LLM

https://huggingface.co/collections/swiss-ai/apertus-llm-68b699e65415c231ace3b059
1•sschueller•25m ago•0 comments

Claude Opus 4.1 and Opus 4 degraded quality

https://simonwillison.net/2025/Aug/30/claude-degraded-quality/
1•tosh•25m ago•0 comments

New Knot Theory Discovery Overturns Long-Held Mathematical Assumption

https://www.scientificamerican.com/article/new-knot-theory-discovery-overturns-long-held-mathemat...
2•baruchel•29m ago•1 comments

BMW, I am so breaking up with you

https://techcrunch.com/2025/09/01/bmw-i-am-so-breaking-up-with-you/
1•not_your_vase•31m ago•0 comments

Printable Cheatsheet for Gemini CLI

https://www.codeaidirectory.com/cheatsheets/gemini-cli-cheatsheet
1•hgarg•36m ago•0 comments
Open in hackernews

Next.js Is Infuriating

https://blog.meca.sh/3lxoty3shjc2z
348•Bogdanp•5h ago

Comments

pjmlp•3h ago
I don't get these kind of complaints, coming from Java and .NET web frameworks, Next,js is the only sane frontend framework followed by Angular.

Saying this as someone doing Web related development since 1998, glory days of Perl and CGIs.

Etheryte•3h ago
I don't think the post is an unreasonable complaint. The fact that you have to even think about how to get logs out of your application is insane, never mind all the hoops you need here. Logging should be a first class citizen in anything that goes to production.
pjmlp•2h ago
Interesting, because that is hardly so in most frameworks, logging requires additional libraries and configuration almost everywhere.
bob1029•3h ago
Angular is absolutely not a sane framework. I'd argue it used to be, but you can't build trust in anything after being rugpulled with 4+ major breaking refactors over the years. If you get it that wrong that many times, I start to wonder what the actual purpose of the framework is.
Klaster_1•2h ago
I kinda get what you are talking about (did those refactors too...), but which of major changes had such a high impact in your case?
pjmlp•2h ago
In consulting we don't do upgrades, we come, we deliver, and we leave, with maintenance contracts for existing deployed versions.

For an upgrade someone has to pay for it anyway, so whatever pains there are, they are reflected on project budget anyway.

More devs should do the math of work hours to money.

Tade0•2h ago
Angular isn't doing bad on the backwards compatibility front. Case in point: ParamMap was introduced at some point as a successor to Params, but the people revolted, so both are available without favouring one or the other:

https://github.com/angular/angular/pull/43529#issuecomment-9...

It's kind of funny in hindsight, but at least we didn't have to modify every project just to update such a minor thing which was working already anyway.

In this regard the thing that absolutely sucks is the migration tool. Your best course of action is to update the versions manually in package.json, read the documentation on breaking changes and act accordingly.

In my view Angular was always insane, but it's becoming saner with each subsequent version. We now have typed forms (that took a while), standalone components and, most importantly, signals, which do most of the stuff RxJS is doing, but without the junior-killing hidden state and memory leaks.

kumarvvr•1h ago
> Angular is absolutely not a sane framework

I have not worked with older versions, but with V20 & signals, it has been pretty good.

doganugurlu•1h ago
I’m guessing you enjoyed the nostalgia when you saw directory based path convention from the good old CGI days?
j-krieger•3h ago
It really is. I am a staunch react defender, I work with it daily and I found the change from class components to hooks to be a better programming model.

But whenever I work with Next, I feel like we lost the plot somewhere. I try a lot of frameworks and I like esoteric programming languages, but somehow Next.js, the frontier JavaScript framework embraced by React is the only experience where half the time, I have no idea what it’s error messages (if I get any to begin with) are trying to tell me. I can’t even count the hours I spent with weird hydration issues.

palmfacehn•3h ago
I'm not a React or Next.js user. Others will disagree, but personally I prefer to minimize my exposure to JS by decorating traditional HTML+CSS documents with vanilla JS as needed.

I was somewhat surprised when I noticed simple Next.js landing pages would break in Firefox. Worse yet, the failure mode was to overlay all of the content with a black screen and white text, "An application client side error has occurred". It was surprising in that a simple landing page couldn't render, but when I discovered that the cause was a JS frontend framework, I felt that it was par for the course.

Perhaps it makes sense to the advocates, but for those of us not on the bandwagon, it can be sincerely baffling.

atemerev•2h ago
Next has enshittifed themselves some time ago. Everything that goes through the VC cycle does that eventually.

I am happy for them and their money, but I can't use this anymore. I take Vite as the default option now, but I would prefer something more lightweight.

Rauchg•3h ago
Heard and appreciate the feedback. We’re well aware of the DX papercuts in Middleware. With 15.5 we made a big step in supporting Node runtime[1] which addresses a slew of issues people have reported over time.

If I went back in time, I would have called it Routing Middleware or Routing Handler. A specific hook to intercept during the routing phase, which can be delivered to the CDN edge for specialized providers. It’s also a somewhat advanced escape hatch.

Since OP mentions logging, it’s worth noting that for instrumentation and observability we’ve embraced OpenTelemetry and have an instrumentation.ts convention[2]

[1] https://nextjs.org/blog/next-15-5#nodejs-middleware-stable

[2] https://nextjs.org/docs/app/api-reference/file-conventions/i...

throwaway150•3h ago
Appreciate the response. But ...

> Since OP mentions logging, it’s worth noting that for instrumentation and observability we’ve embraced OpenTelemetry and have an instrumentation.ts convention

That makes it sound as though the answer to a clumsy logging facility is simply to add another heavy layer of complexity. Surely not every application needs OpenTelemetry. Why can’t logger().info() just work in a sensible way? This can't be such a hard problem, can it? Every other language and framework does it!

rozumbrada•2h ago
If you finally decided to support proper server-side middleware, why is there still a limitation for only one middleware function and not a chain of middleewares as every other sane server implementation offers?
bestest•2h ago
Consider middleware.ts as a root middleware. Nothing is stopping you from creating your own chain (which is trivial) in there. I mean, that would eventually work the same if nextjs implemented that feature — there would be a root somewhere.
rs186•2h ago
That doesn't answer parent's question.

People expect "middleware" to mean a certain thing and work a certain way.

bestest•1h ago

  middleware = fn(req) → next(req).
express/koa give you the use() chain. next.js gives you one root, but nothing stops you from chaining yourself. same semantics, just manual wiring.

  type mw = (req: Request, next: () => Response) => Response;
  
  const logger: mw = (req, next) => {
  console.log(req.url);
  return next();
};

  const auth: mw = (req, next) => {
    if (!req.headers.get("x-auth")) return new   Response("forbidden", { status: 403 });
    return next();
  };
  
  function chain(mws: mw[]) {
    return (req: Request) =>
      mws.reduceRight((next, mw) => () => mw(req, next), () => new Response("ok"))();
  }
  
  export function middleware(req: Request) {
    return chain([logger, auth])(req);
  }
root is given, chain is trivial. that’s middleware.
rafaelmn•54m ago
Nothing trivial about that implementation in my mind - need to keep track of where middleware is registered, reduceRight is non obvious.

I expect these things to be standardized by the framework and all the sharp edges filed off - thats why I go to a framework in the first place.

foldr•40m ago
The reduceRight is just a bit of cute FP code golf. All it’s saying is that chaining an empty list of middleware yields an ‘OK’ response, and that the first middleware is passed a function which, when called, executes the remaining middleware chain, and so on. It would be obvious enough if written out as a for loop, or via direct recursion.

(My username has never been more appropriate!)

bestest•2h ago
Since you're here — I'll just pipe in.

Here in this article, the author, failing to comprehend the domain differences, is applying the same approach to call a function everywhere. Of course it won't work.

The fallacy of nextjs is attempting to blend function domains that are inherently different. Stop doing that and you will be fine. Documentation won't work, it will be just more confusing. Blending edge and ssr and node and client-side into one is a mess, and the attempt to achieve that only results in layers upon layers of redundant framework complexity.

arnorhs•1h ago
First off, since the sentiment here is really negative, I'd like to say that next.js is actually really good for what it does. You've done a great job at building the software that powers millions of websites at this point.

I think a big part of the negative sentiment derives from the fact that detailed documentation and reference documentation almost non-existant. The documentation mostly tells you what exists, but not how to use them, how they get executed, common pitfalls and gotchas etc etc.

The documentation is written to be easy and friendly to newcomers, but is really missing the details and nuances of whatever execution context a given api is in and does not touch on derived complexities of using react in a server environment etc.

This is a trend across a lot of projects these days - often missing all the nuances and details - writing good documentation is really hard. Finding the balance between making things user friendly and detailed is hard.

Keep it up

mhitza•45m ago
Don't you find it problematic, as a framework that's 8 years old to already have reached version 15.x? Assuming they follow semantic versioning and those are 15 different backwards incompatible upgrades?
icyJoseph•42m ago
> Finding the balance between making things user friendly and detailed is hard.

Thanks for the note! Indeed, it is also challenging when experience hides what things are not obvious or necessary to make further connections when reading the docs. It is an area of continuous improvement.

> The documentation is written to be easy and friendly to newcomers, but is really missing the details and nuances of whatever execution context a given api is in and does not touch on derived complexities of using react in a server environment etc.

I think on this particular topic, there had been an assumption made on the docs side, that, listing Edge runtime (when middleware was introduced), as its own thing, that might as well run in another computer, would also communicate that it does not share the same global environment as the underlying rendering server.

I'll do some updates to narrow this down again.

> The documentation mostly tells you what exists, but not how to use them, how they get executed, common pitfalls and gotchas etc etc.

Do you have anymore examples on this. I have been improving the revalidateTags/ Paths, layouts, fetch, hooks like useSearchParams, gotchas with Response.next, etc..

I know the OP post does talk about issues not being responded to, but that trend has been changing. If you do find/remember something as you describe, please do open a documentation issue, pointing to the docs page and the confusion/gotcha - we have been addressing these over the past months.

matt-p•53m ago
Will vercel/next come up with an official policy on pages roter/API routes, will they be supported long term? If I start a next project I still use pages/API routes, because of several really really bad experiences with the app router.
Jnr•3h ago
I like it. I have been involved in software development for 20+ years - Perl, PHP, Java, Pyhon. And Nextjs and React gave me back the joy to develop web frontend again.

There are a lot of gotchas and considerations with Nextjs, but it is a framework and it is not unexpected that unless it is developed by yourself, frameworks require some getting used to.

There are some things that could be better, especially in non-Vercel-hosted scenarios, and if the backend for frontend part becomes too complicated, I would switch to Nest.js, but overall I am satisfied with Next.

usernamed7•3h ago
as a Rails dev this makes me LOL. I would have expected the rube goldburg machine of JS frameworks to be more robust and ergonomic by now, but it looks more to be hacks built on top of hacks with no real vision or technical leadership.
b_e_n_t_o_n•3h ago
Like said in the article, most other JS frameworks are actually pretty good these days.
zwnow•3h ago
I work with Vue 2 and Vue 3, both options and composition APIs and both are pretty great. I dont know how it's like for very complex UI but it 100% fulfills my needs.

Also shout out to Pinia, I love you!

sensanaty•2h ago
I have a monstrosity of a Vue 3 project at work and I far prefer it to any "elegant" React codebase I've ever had the displeasure of working with. Boggles the mind that React still has any mindshare to me, Vue and Svelte are both superior to it in pretty much every way except for availability of component libraries (which isn't so relevant in my line of work), and a slight edge in terms of TypeScript support (mostly a problem with Vue's props).
zwnow•2h ago
Yea I would agree. I do not use component libraries ever as I prefer building my own. But I also know that stuff like shadcn also has Vue variants.
sfn42•40m ago
I think React is fine, the problem is that every single react app I've inherited is ass - people just do everything incorrectly and overcomplicate simple things. Components with like 5 different useEffects, huge global state causing all kinds of bugs, way too much frontend logic in general. The amount of JS code that exists just to mimic things you can do with HTML and CSS is staggering.

Everyone complains that react is so slow and horrible, it isn't. It's their code that's slow and horrible, react is snappy as hell when you use it properly.

zwnow•18m ago
> Everyone complains that react is so slow and horrible, it isn't. It's their code that's slow and horrible, react is snappy as hell when you use it properly.

Why use something that you have to use "properly" when there are things out there that enforce being used properly?

porridgeraisin•32m ago
Yeah, vue is really easy to work with, conceptually simpler and has so many more niceties.
thiago_fm•3h ago
Yet 95% of fresh companies raising funds use that cursed NextJS framework.
cpursley•2h ago
This feels a whole lot like when everybody with VC cash was using Mongo. And I see that as a competitive advantage if your competitor is using these types of technologies, it means you can out maneuver them and build a better product.
Tade0•2h ago
RoR wasn't picked up by e-commerce at this scale. Most of the craziness comes from attempting to squeeze out every last inch of performance so that the prospective client won't go "neeeih" and shop somewhere else.

A RoR app will just sit comfortably wherever you deploy it, slowly doing its job like a good, reliable tractor.

A typical Next.js app is smeared all across its origin, some geographically convenient Edge and the frontend. It's a very different use case.

usernamed7•1h ago
what do you mean? Shopify is the largest eCommerce platform and runs rails.
fredrikholm•1h ago
I think they mean that Shopify doesn't decide what happens or doesn't happen to Rails; Vercel decides what happens or doesn't happen to NextJS.
b_e_n_t_o_n•3h ago
Remix (cough react router 7 framework mode cough) is like the polar opposite of this, it's just a Request -> Response handler that you have to build your server around manually. Which I found kind of annoying at first but it does give you the freedom to do what you want.
adamddev1•3h ago
I have been frustrated with Next.js changing it's API so much in the last few years and making things more and more complex and confusing.

I am wondering about giving Remix a whirl for an upcoming forum/CMS rewrite with custom auth. Anybody else have experiences with Remix?

eknkc•2h ago
If you don't like changing APIs I'd stay away from the Remix guys. I know it is not like Next but I've used react-router, which had some API churn, later evolved to remix and then back to react-router... Backward incompatible changes are the signature of it. The documentation story is a problem too because of that. Completely different things are named the same and they are now building a new Remix, not even on React as far as I can tell.

Stick with a single version and you'd probably be happy though.

b_e_n_t_o_n•1h ago
I used it with Shopify's hydrogen framework. Wasn't a huge fan of hydrogen but Remix works fine, it mostly just got out of my way and worked. Dependency injection was trivial :)
thiago_fm•3h ago
Similar to Meteor.js, they've tried to abstract things that aren't really abstractable (is this even a word?).

It handles edge-cases extremely poorly, and when you have those scenarios, you either need to find a workaround (so code becomes ugly and painful to maintain) or give up.

I've worked with it for a project, gladly never again.

I'll extend my feedback about Node.JS backend. Look how many flavors: deno, bun... It's a mess.

Node.js a terrible platform for server-side in comparison to Java/C#(performance/stability) & Ruby/Python(dev speed).

The only reason it is successful is that everybody knows JS/TS. But just because everybody knows it is rarely a reason to use it.

The event loop is quite nice and easy to reason about, but that's all there's to it. It is single-threaded and comes with gotchas, with at the end being in my opinion a negative aspect of it.

Many other langs/platforms offer also an event loop for concurrency, but they aren't often used. In the end no matter how much we hate threads, they serve a great purpose that has been battle-tested for so many decades.

Unfortunately companies adopt programming languages based on hype and trends, rather than technical reasons.

Until when we will have people hyped up about writing web servers in CSS, even though it doesn't make any sense to?

TLDR: It isn't only Next.JS, but the whole NodeJS thing isn't that great.

balamatom•2h ago
>is this even a word

Everything can be a word if you know what you're trying to say. Don't let anyone tell you otherwise. If they try, say: фakdelengiчpolis!

Even though I'm a fan of looking for underlying motivations to what people do, I'd be wary of pointing out "only" reasons for anything. I know it's a rhetorical exaggeration, but still.

For example, I've found Node to do what Python does, only better. For example, Node does dependency resolution without involving the OS package manager. And ultimately, people end up using whatever they become comfortable with.

Which is not an exact science and people resist it being made into one. (Maybe if it was, it'd be much easier to sell people on working with the "least worst" tooling that is not actually good for anything.)

But the important thing is that on the backend they're all different. The baseline is the CPU, and you get to choose between real tools with real histories of real tradeoffs. Even if the tradeoff is "run JS" or "be written in C++" or smth else.

On the frontend, the baseline is JS, and whatever the browsers bolt to JS, and as us few sane keep pointing out, JS land is already such an "OS-within-an-OS" that there is very little point to building entire freaking frameworks between that and the application, just for the sake of having to swim through someone else's moat instead of invoking the APIs directly (which are also better designed for the most part).

So, in order to differentiate the market, one would need to build at least 1 "layer of layers" on top of JS, some products in which are gonna more pointless, while others are gonna be less pointless (all of this to all different people of course). That way the user gets to choose between what sucks more vs what sucks less, and one gets to feed on the attention paid to the choice of lesser evil; or -- if insufficient attention is paid -- to entirely direct the choice in whatever direction. It's a win-win.

ollysb•3h ago
When they transitioned to the app router it was like they'd given some bootcamp graduates a crack at "improving" on the express apis - which are mature and roughly align with the composable russion doll approach taken in servlets, rack, plug and any other server interface I've ever seen.

Aside from the abysmal middleware api you also have the dubious decision to replace having a request parameter with global functions like cookies() and headers().

Perhaps there is some underlying design constraint that I'm missing where all of these decisions make sense but it really does look like they threw out every hard fought lesson and decided to make every mistake again.

arend321•3h ago
I believe the obsession with streaming is a major factor in the new constraints. Together with supporting the lowest common denominator, edge runtimes.
Etheryte•2h ago
And the reason they're all in on streaming to begin with is because they're sending massive amounts of data back and forth all the time. Like Sean Goedecke said in his API design writeup [0], a technically poor product can make it nearly impossible to build an elegant API. I believe we're seeing the same thing with Next.js, all of these wonky interfaces derive from the underlying architectural issues.

[0] https://www.seangoedecke.com/good-api-design/

solatic•3h ago
Half these issues stem from a relative misunderstanding of exactly where the code is running. Next.js has layers upon layers upon layers due to the interplay between the browser, middleware, edge vs. node, SSR... It's an enormous amount of complexity and it really only fits under the following set of circumstances:

  * You sell a B2C product to a potentially global audience, so edge semantics actually help with latency issues
  * You're willing to pay Vercel a high premium for them to host
  * You have no need for background task processing (Vercel directs you to marketplace/partner services), so your architecture never pushes you to host on another provider.
Otherwise, just tread the well-trod path and stick to either a react-vite SPA or something like Rails doing ordinary SSR.
vendiddy•3h ago
And even if you fall under the first category, I find it hard to believe that the performance bottleneck is solved by using Vercel and SSR.

With all the other crazy shit people are doing (multi-megabyte bundle sizes, slow API calls with dozens of round-trips to the DB, etc) doing the basics of profiling, optimizing, simplifying seems like it'd get you much further than changing to a more complex architecture.

b_e_n_t_o_n•2h ago
Yeah this is basically it. Vercel is trying to solve for optimised performance by using a combination of React Server Components, Partial Pre-rendering, Edge servers, streaming, etc. A lot of their seemingly weird design and API decisions basically come down to that. If you need it, it's good that it exists. But you can also go pretty far with doing some ssr in an edge function too.
cluckindan•1h ago
I would be more inclined to believe it’s an end product of years of simultaneous resume and job security driven development.
boppo1•1h ago
LIRPslop, as Brad Troemel would put it.
pjmlp•2h ago
As mentioned somewhere else, these are the kinds of layers SSR frameworks have had for decades, maybe people should learn not to do SPAs for everything.
oDot•2h ago
I wouldn't say I agree with those circumstances, but even if they did indicate a match with Next.js, they are not worth the reduction in productivity and maintainability that comes with it.

I use Gleam's Lustre and am not looking back. Elm's founder had a really good case study keynote that Next.js is basically the opposite of:

https://www.youtube.com/watch?v=sl1UQXgtepE

tajd•2h ago
this is a really interesting talk - thank you for sharing!
mvdtnz•2h ago
> Otherwise, just tread the well-trod path and stick to either a react-vite SPA or something like Rails doing ordinary SSR.

Just write your SPA the grown up way. Write your APIs in a language and framework well suited to such work (pick your poison, Rails, Spring, whatever Microsoft is calling this year's .NET web technology). And write your front-end in Typescript.

There's absolutely no reason to tightly couple your front-end and backend, despite how many Javascript developers learned the word "isomorphic" in 2015.

b_e_n_t_o_n•1h ago
Agreed. It's a bit insane that updating a button padding redeploys your entire backend.
matt-p•55m ago
Not the same problem though is it? You can have a express backend and react-vite frontend both in typescript and in a mono repo.
zarzavat•1h ago
I don't agree. Having front-end and backend in the same language is so convenient I would never go back to doing it the old way. I'd rather compile the frontend to WASM than introduce a mismatch.

I used to use Django and there were so many issues that arose from having to duplicate everything in JS and Python.

matt-p•57m ago
Having front-end and backend in the same language and mono repo is such an outrageous productivity booster for me. Obviously the opposite may still be true if you've got big, separate frontend and backend teams but if you just want to ship.. I wouldn't have it any other way.
webdevladder•10m ago
Full-stack rich schemas, not the poor lossy JSON Schema or other language-agnostic ones, are so nice for long-term quality and development velocity. You get to categorically avoid bugs that drag teams down. Zod 4, ArkType, and Valibot are all great.
nchmy•4m ago
or dont even write a SPA. Send hypermedia from your backend language/framework, use HTMX + Alpine or Datastar, and call it a day.
h4ck_th3_pl4n3t•2h ago
> Half these issues stem from a relative misunderstanding of exactly where the code is running.

If I take a look at other languages, these kind of multi-threading issues are usually represented by providing a separate context or sync package (that handle mutexes and atomics) in the stdlib.

And I guess that's what's completely missing in nodejs and browser-side JS environments: An stdlib that allows to not fall into these traps, and which is kind of enforced for a better quality of downstream packages and libraries.

christophilus•1h ago
This has nothing to do with multithreading, though?
cookiengineer•1h ago
Not OP but wasn't the article about lots of async/await context issues?

If the handle() method of the middleware API would have provided, say, a context.Context parameter, most of the described debugging issues would have been gone, no?

arnorhs•1h ago
Absolutely correct. Those are runtime execution context-issues. There are other frameworks that do force you do deal with those (and in other languages, probably), but I believe in next.js the difficulies are at another level - because of poor documentation and the built in abstractions to allow for running next.js both in development, node.js server, and edge.
ncphillips•1h ago
> Half these issues stem from a relative misunderstanding of exactly where the code is running.

I used to think Javascript everywhere was an advantage, and this is exactly why I now think it's a bad idea.

My company uses Inertia.js + Vue and it a significantly better experience. I still get all the power of modern frontend rendering but the overall architecture is so much simpler. The routing is 100% serverside and there's no need for a general API. (Note: Inertia works with React and Svelte too)

We tried Nuxt at first, but it was a shit show. You end up having _two_ servers instead of one: the actual backend server, and the server for your frontend. There was so much more complexity because we needed to figure out a bunch of craziness about where the code was actually being run.

Now it's dead simple. If it's PHP it's on the server. It's JS it's in the browser. Never needing to question that has been a huge boon for us.

jbreckmckye•1h ago
Notice that nearly everyone pushing edge-execution JS has some infrastructure to sell you.

It's positioned as a ramp up for companies where frontend and backend devs work at loggerheads and the e-commerce / product teams need some escape hatch to build their own stateless backend functions

9dev•4m ago
Vercel is the cancer of the modern web. The claw into every framework ecosystem and abuse them as sales funnels for their paid plans, pretending they care about open source, competition, and the web.
divingedm•3h ago
Looks like we're all joining the anti next.js train especially as more and more vibe coded apps seem to be building on next.js!
balamatom•2h ago
It's the designed-for-vibe-coding framework, same as its creators are the designed-to-be-replaced-by-AI cohort.
Vinnl•3h ago
The direction React and Next.js have been moving is to give you very granular control over where your code runs, and when.

The previous model was that you simply have code that runs on a server when a request comes in, sends a response to the client, and then the code in that response is run on the client. Instead, now we have a situation where some bits run on the server, some of them on the client, which call out to some bits on the server again, and all of this can happen either before or after the server started sending the response. And then on e.g. Vercel, you also have edge functions as an additional permutation.

Which is kinda neat, but also massively complicates the mental model.

eknkc•3h ago
I have a tendency to use different stuff on new projects for the sake of it. I've built apps with express + react on client, angular, vue, next, nuxt.. Used go, .net, node, php etc on the server. I always find good and bad parts and appreciate different aspects of different solutions.

Not Next though. We built a pretty large app on Next and it was painful from start to finish. Every part of it was either weird, slow, cumbersome or completely insane.

We still maintain the app and it is the only "thing" I hate with a passion at this point. I understand that the ecosystem is pretty good and people seem to be happy with the results given that it is extremely popular. But my own experience has been negative beyond redemption. It's weird.

DanielHB•3h ago
When I first saw Next.js I was immediatelly reminded of Meteor.js. I did invest a bit in learning into it and did some personal projects. But quickly realized it was both over-abstracted and inflexible which made it really hard to get it past prototypes.

But these solutions keep coming up because they bring one thing: Self-contained / "batteries included". Just the other day there was a thread in hackernews about Laravel vs Symphony and it was the same thing: shit breaks once complexity comes in.

If you compare those solutions with the old model that made NodeJS / React SPA get so popular, so fast: Buffet-style tooling/libraries. You basically build your own swiss army knife out of spare parts. Since all the spare parts are self-contained they have to target really low abstraction levels (like React as a component library, HTTP+Express as a backend router, Postgres as DB).

This approach has many disadvantages but it really keeps things flexible and avoids tower-of-babel style over-engineering. As in a lot of layers stacked on top of each other. Not that the complexity goes away, but instead you have a lot of layers sibling to each other and it is more doable to replace one layer with another if things aren't working well.

It is understandable why "batteries included" is so popular, it is really annoying to stitch together a bunch of tools and libraries that are slightly incompatible with each other. It definitely needs people with more experience to set up everything.

bapak•1h ago
> it is really annoying to stitch together a bunch of tools and libraries that are slightly incompatible with each other

This is my job. We're a small team and my job is to keep things up to date. Insanely time consuming. Packages with hard dependencies and packages that stopped being supported 5 years ago.

DanielHB•38m ago
Yep, been there. It is a lot better these days for React SPAs but it is still a pain.

Fact is the only way around this in the frontend without a monolitic "batteries-included" all-encompassing all-knowing all-mighty framework is through standardization which can only be pushed by the browsers. Like if browsers themselves decided how bundlers should work and not have them be extensible.

And this tooling-hell is not only a browser frontend problem only either, it is also quite common in game development. Where you also have these monstrosities like Unreal Engine that "includes batteries" but makes it really hard to troubleshoot problems because it is so massively big and complex. A game engine is basically a bundler too that combines assets and code into a runnable system to be run on top of a platform.

myflash13•1h ago
Nah, Laravel is proof that over engineered abstraction can sometimes be done right. Laravel works beautifully in production and I have never regretted using it.
UK-Al05•3h ago
Next.js is marketing to get you locked into vercel hosting.
lmm•3h ago
They're trying to do something that's fundamentally very hard. Unifying server-side and client-side code was always going to cause confusion when the difference becomes relevant.

Personally I'd rather go in the direction of having code that's explicitly server-side, explicitly client-side, or explicitly shared utilities. But you'd need more of a type-safe mentality to take that approach, and you'd probably scare off the majority who prefer runtime errors over build-time errors.

palmfacehn•2h ago
Your observations apply generally. Debugging "magic" frameworks is often more complex than starting with simple basics and a coherent design. As a bonus there are less dependencies, less build issues and lighter pages or binaries.
tiku•3h ago
Through a customer I've come into contact with InertiaJS. React with Laravel made my work so much simpler. Routing through Laravel was easier for me. The data sharing from Laravel to the frontend is painless.

I also like the server side, PHP works better for me than a Javascript server. I've had some weird bugs with nodemon, pm2 and other server tools.

42lux•2h ago
Can't wait for the opinionated fork that gets abandoned in 3 weeks.
anonzzzies•2h ago
As much as I don't like most things about nextjs (I could write a vastly larger blogpost about it but won't as I like to keep my heartrate down), it feels like claude was trained specifically for it. In our experience, claude code is better at nextjs than other frameworks.
latentsea•2h ago
That seems like the most unfortunate of reasons to choose it as a framework for new projects, though. I hope that doesn't become the deciding factor in the future.
anonzzzies•1h ago
Yes, we try not to do that. But I know very many people do.
jjani•17m ago
Significantly better than just React and a Node backend? I doubt it, what's the comparison here?
markusstrasser•2h ago
the interesting web problems (collaborative tools, creative software, scientific computing) have to fight against a framework ecosystem designed for the blandest landing pages.

Nextjs and most web frameworks assume you're building an e-commerce site that has to only differentiate on loading speeds.

chvid•2h ago
React server components and server side rendering should never have been in react but instead should have lived its life as a separate project.
csomar•2h ago
Anyone who is running back-end code in Next.js has no idea what they are doing. It could be acceptable if it is a toy project and you want to get something quickly but even for a small operation or MVP, the whole thing is not coherent.

I've wrote previously about nextjs: https://omarabid.com/nextjs-vercel My opinion remains the same: Most of the issues in Nextjs are not a bug but a feature. A feature that only functions and locks you in Vercel platform.

Since their routing/SEO/content features are also now less functional, there is really very little reason to use Nextjs especially with React Server Components.

999900000999•2h ago
Modern development in a nutshell.

You want to use something full of abstractions to the point you have no idea how it actually worked.

You did this to save time.

Then when issues occur it's someone else's fault.

That said, let me pass in a flag to get my dev logs in prod. That's ultimately what the author wants.

willvarfar•2h ago
reminds me of this talk https://www.youtube.com/watch?v=SxdOUGdseq4 :)
parham•2h ago
I didn’t fully read the post, but pretty sure they have a good point. I inherited next.js on a project it is the absolute worst framework.

I don’t need/want to elaborate.

sarreph•2h ago
I convinced myself to hate App Router before even trying it because of all the negative sentiment on HN.

After using it in three production-scale projects now, I think it's a great isomorphic JS / TS framework. It's as close to a "batteries included" (such as Rails or Phoenix) system that the JS ecosystem has.

And yet, people generally like to shit on Next.js I sense because they haven't taken the small amount of time investment required to actually just understand it: which I fear is especially true if they came from Pages Router. This kind of fallacy appears to hold true in the OP -- bemoaning that you "can't have multiple middlewares or chain them either"... yes, you can? Sure, it's different from the Express way of doing things, but you absolutely can get it to do what you want.

Was Express ever _that_ easy before you actually understood it and knew what you were doing?

coxmi•2h ago
Deno Fresh seems like it has the right approach. It’s not complicated, the docs are refreshingly simple, and it handles both server and client logic without getting confused.

It’s just a shame it’s Deno-only (although I completely understand why)

nobleach•32m ago
I had a project slated to use this framework. The pilot went fairly well. Fresh has the right ideas on static vs dynamic islands. In the end, we deployed with Astro - which also has similar ideas. In the end, I just wasn't able to get full buy-in on Deno.
epolanski•2h ago
I had it uninstalled when they messed with the fetch prototype which resulted in our team wasting days to find the actual reason file uploads above 100kbs failed.

Imho next attempts to do too much, moves too fast, every few months the wheel gets reinvented and never perfected.

pzmarzly•2h ago
> SvelteKit is a Vercel product

While Vercel acqui-hired many developers behind SvelteKit and Nuxt.js, I was under the impression that they weren't interested in running these projects hands-on, or even making them similar to each other. Can anyone correct me here or explain what their long-term game seems to be?

Sammi•2h ago
Rich Harris answered this question on Reddit a year ago: https://www.reddit.com/r/sveltejs/comments/19ac6lp/concern_a...

Seems Svelte is still mostly managed as an independent open source project.

throw-the-towel•56m ago
Given that Svelte's marketing and docs now treat Svelte itself as a minor implementation detail of SvelteKit, this doesn't exactly inspire confidence.
kumarvvr•2h ago
Recently started developing a client side web app using Angular v 20. The app is quite complex, with about 40 components many of them nested, about 7 to 8 "pages", data dashboards, multiple forms, continuously updating data from server, etc. There substantial amount of data flow in the application.

So far, the experience has been absolutely wonderful, particularly, given the context of myself as a developer in the whole process, which is,

1. I am a seasoned developer, mainly doing python stuff, back-end servers, desktop applications, data applications, etc. Very little exposure to front-end tech.

2. I keep myself updated with the concepts, patterns & architecture of front-end systems, because I am extremely into design and good UI.

3. I am at a stage where I can do basic web apps with Vue, React, Angular & vanilla HTML and JS.

With Angular Signals and concept of Stores, Services and Dependency Injection, I am able to handle data flow very easily, am able to add features to the app in a consistent manner, able to debug and trace errors with relative ease.

I have earlier read NextJS docs, Remix Docs and read tutorials about developing react apps using Vite. It has always been a confusing maze of stuff. Perhaps I am getting old (about to touch 40), but I have been programming for about 25 years now and I was able to carve out the architecture I want in an Angular app with ease.

Also, this app is going to be a production app, and is critical for my work, so its an impactful decision, which, thankfully, I have been happy and pleasantly surprised with.

It could be that I could have chosen React, and end up with the same thing, but, somehow, in the extensive tech stack selection process that I took up before committing to Angular (which involved testing out core mechanisms of the application in React, Vue & Angular), I felt very much at home with Angular way of things.

EMM_386•15m ago
I've worked on many very large Angular applications I've always loved working with it. I have worked with plenty of React but I avoid Next.js like the plague after reading through documentation / examples / blog posts.

I was in the trenches pre-ES6 with JavaScript and JS/CSS since the year they came out, so of course I do love KISS-style bare-bones websites when that is the proper tool for the job. But certainly not for anything at scale. Angular, being a framework and not a library, is perfect for those purposes. I prefer that it IS opinionated (no "what router does this project use?"), and I also would not develop anything these days without TypeScript (even small sites).

To each their own.

Byamarro•2h ago
What I've found is that NuxtJS is miles ahead in DX. In NextJs it feels like their architecture stands in your way while in NuxtJS everything just works.
w3news•2h ago
Next.js is indeed not very open for feedback. Next.js is also opinionated. So if you are using Next.js, you can use what they have and do it their way. If there is something, just wait...

For me, it isn't a framework I want to use in any production environment. Your system is too much depending on something you have no influence on. Like in your own code, it is good to decouple, don't make things depend too much on something, not in your own code, but also on external code like frameworks and libraries.

That is why I prefer to build things like I can (kind of) easy drop my dependencies, for what reason, and use something else, or build it in my own codebase. If some framework doesn't allow it, and you have to work it their way, and is the base of everything, that should be a big red flag.

platelminto•2h ago
I was about to start a new project with Next.js... is anyone willing to give me some advice?

I'm about to start building an e-commerce site (30-50k poster print designs, i.e. no inventory), and was leaning towards a Django backend (because I know it) and... some sort of SSR frontend. I'm not really a frontend guy, but taking this as an opportunity to learn it. This article obviously does not inspire confidence in me choosing Next.js - would someone have any suggestions/pros and cons of what to use?

I currently see the options for doing SSR as:

- Next.js: well-represented in AI training data (though recent versions had breaking changes? I'm not sure), but annoying to actually use (according to this article/general sentiment I've found online), and pushes you into Vercel? (I barely know what that means)

- SvelteKit: best DX and nice to use, but might be less present in AI training data?

- Django templates + HTMX: possibly limiting? Less maintainable once you get to a certain size? I'm not sure.

- Other options?

palmfacehn•1h ago
Use what you know. Build the backend first. You probably won't know what the frontend requires before this.

Once you know what is actually going to be on your site, you can style the output with CSS and add the necessary interactivity with JS. Browser APIs have mostly standardized as compared to the bad old days. Using them directly instead of libraries or frameworks will keep your site lean and fast.

All of your CSS, HTML and browser API knowledge will continue to serve you for the years to come. In a few years, people will be arguing about a new magic framework.

komali2•1h ago
In my opinion (9 years FE exp) you should build your ecommerce site in shopify or wordpress + woocommerce or some other off the shelf tool. It will be up before the evening's out and you won't be spending that much extra than you would have anyway, and everything will Just Work (tm) and look pretty good (chuck out 50$ for a nice wordpress theme and you're golden).

If you insist on rolling your own, Django + templates should be plenty. Lots of existing code for integrating Stripe or whatever. AI will be fine at it. You could potentially investigate medusajs or prestashop. Here's a list that could be fun to investigate: https://github.com/awesome-selfhosted/awesome-selfhosted?tab... but keyword is fun. You should build it in wordpress because that is a bombproof solution running like half the internet and will save you endless amount of time.

If you're doing this as an exercise to learn a new tool, leave the AI to the side as you're robbing yourself an opportunity to delve into docs and gain more domain knowledge. And absolutely do not touch nextjs with a 10 foot pole, it's an absurdly overwrought tool. The only people that should learn nextjs are people working at dev houses that churn out a shitload of full stack apps for clients that have the budget to shell out for vercel's hosting costs. And even then imo they should just be using django + react + vite + tanstack MAYBE.

HTMX is cool but I'm not sure the point, again if for fun why not, but I would ask yourself: you get your site up and running and you spend the next year scrambling around putting things in boxes and printing shipping labels, and then in 2026 Thanksgiving right before the holiday rush something breaks in your app and you want to fix it but HTMX/nextjs/whatever have gone through 2 breaking change upgrades and so have 4 different libraries they rely on and actually the most up to date version of two libraries you rely on are not interoperable right now because they depend on different node versions or some other bullshit, and now what do you do?

Just use wordpress.

platelminto•1h ago
I was 100% on board with WordPress/WC at first, and had already started building with it, but was immediately coming into issues. Just Work (tm) was my expectation, and was most definitely not what I found.

- I used the product variations feature, 18 variations per product, and all of a sudden the "Duplicate" button took 15 seconds! I learned this is because each variation is it's own thing, so it was making 18 new things (still insane it took that long, on my beefy dev pc). I can't imagine 30-50k products * 18 variations * metadata stuff working fast in any way.

- In avoiding product variations, there's plugins for adding product fields, and plugins for pricing rules, but clicking around to do stuff, or maybe writing php that integrates with plugins that I'm clicking around in... it's not the way I want to spend my time developing. It especially integrates terribly with AI tools, which at this point are an important development tool for me.

- I don't want to have a 1-to-1 mapping between products and pages. This doesn't fit the WC model well (or Shopify for that matter).

Generally, I can imagine an experienced wordpress/PHP dev being able to overcome these issues, but if I'm learning something anyway, I'd personally rather learn a proper frontend framework (be it any of the options you mentioned). Leveraging AI tools also matters.

I appreciate your response! Gives me more confidence in maybe sticking to Django + templates. But from what I've seen, and also in discussions with other developers, I think wordpress is out for this project. Thanks again :)

rahkiin•1h ago
This is the real advice.

Do what gets the actual job done: focus on the selling, not the tech of the shop. Grab a template and adjust it to fit your marketing.

Actual useful tech is integration with a printer/printshop. Or getting packaging labels automatically for orders. Or using AI to make new posters.

skorpen•1h ago
Sonnet 4 and gpt5 are both good at SvelteKit. You might have to specify that you want to use Svelte 5 in the llm instructions for your editor.

Use Context7 mcp to get Svelte 5 docs if the agent messes up something you know should work.

The new experimental remote functions solved a big pain point with sveltekit, so I no longer have any reasons not to recommend svelte and sveltekit to people.

christophilus•1h ago
Vanilla Django would get my vote. Your description doesn’t sound like it needs a heavy frontend. Sprinkle in some scripts as needed. If you really want to learn front-end, Next is really just the worst place to start or finish or anything in between.
xdanger•1h ago
You should really try Nuxt (a vue framework, like Next.js but better).
Aldipower•19m ago
I had to use a webpage built with Nuxt recently. This thing was completely messed up.
gg2222•43m ago
SolidStart
Zanfa•43m ago
If already know Django, go with Django and sprinkle in some HTMX as necessary. You’ll get 95% of the benefits with a fraction of the effort compared to a modern Javascript SPA. And it’ll be a breeze to maintain. You’ll also save so much time never needing to debug a bundler, minifier or ESM/CJS issues.
ddanieltan•2h ago
A bit of a tangent, but how do you implement the feature when I highlight text on this blog, I get an option to generate a unique link directly to what I highlighted?
OtherShrezzing•1h ago
Each paragraph/element has a unique ID, starting at 0, incrementing by 1. You originally land at the page https://blog.meca.sh/3lxoty3shjc2z . When you create a link, you're linking instead to a different page at https://blog.meca.sh/3lxoty3shjc2z/l-quote/64_25-65_174#64 . The format of the extra link metadata is `64_25-65_174#64`, which means:

- Start the highlight on the 64th element/paragraph. Inside of that paragraph, start from the 25th character.

- End the highlight on the 65th element. Inside of that element, end at the 174th character.

- Scroll the user to element #64 on page load.

They've then got some code on the page to add a highlighted span starting and ending at those points.

If the site maintainer is here: For me, the links are currently broken, as they should link to https://blog.meca.sh/3lxoty3shjc2z/l-quote/64_25-65_174#64, but currently link to https://blog.meca.sh/3lxoty3shjc2z/l-quote/64_25-65_174#64_2..., and `64_25` isn't a valid id on page-load.

divan•2h ago
For the past 5 years, my main stack is Flutter+gRPC+Go, and I read articles like this in horror and satisfaction simultaneously.

For many years I'm advocating the community to be very open about the history of web stack (and JS in particular) and be honest about it's suitability for the modern software development. The level of accidental complexity in this stack is insane and people seem to embrace it add more and more layers of it.

Personally, I try to avoid using it as much as possible. And it works beautifully. Of course, tradeoffs are everywhere, and the sheer scale of the web development community has its own benefits. For example I miss the wide choice of alternative design systems in Flutter (compared to web), but hey, flutter now decoupling it's core from design systems in 2026. But the net effect of not using fundamentally flawed tools for your products is huge.

kumarvvr•2h ago
> my main stack is Flutter+gRPC+Go

For web apps? How is the performance? How is the developer experience?

divan•26m ago
Yes, web build comes as a nice bonus, and I've been using it from the early days of Flutter web renderer support. Now I'm using it for client-side web apps exclusively.

Developer experience is... well, I usually develop app while running it locally as a MacOS desktop app build. Just much easier to use with hot-reload and Flutter dev tools. Often using DevicePreview [1] wrapper to check against different sizes, dark/light mode, font scaling etc. Unless I'm working on something platform-dependent (like push notifications or a QR code scanner that uses camera/ML frameworks from OS), I don't even test it on mobile devices or web - I know that it will look pixel-perfect. There are optimization caveats like "emojis are not included in the web build by default to decrease the size", but otherwise web build looks the same way pixel-to-pixel as MacOS or mobile view. Test I run with maestro in iOS simulator.

Centering widgets ("<divs>") is never a problem, haha. Having a properly designed layout system is a no-brainer and thousands of times better experience than that pile of hacks on top of hacks called CSS.

Still, my main issue with the current Flutter design is the tight coupling of two main design systems (Material Design and Cupertino) and the core, and the lack of a wide choice of alternative design systems. Just to make it clear - it's extremely easy to create your own widgets/themes/look-and-feel in Flutter app. But having a well-thought-out design system is a different beast. Luckily, decoupling is on the way [2] and I hope it will lead to a boom of nice design systems implementations.

Also, because Flutter originally was targeting mobile development, and expanded to desktop/web almost accidentally, the majority of the widgets are optimized for mobile UI. For example, if you want a date input field that feels native to a desktop user, with masking and yet a calendar picker – good luck finding one. And as I create desktop/mobile apps 50/50, I settled for now with forui [3] design system, heavily inspired by shadcn.

Performance has been the last of my concerns with Flutter, because the engine was originally heavily optimized to hit <15ms frame rendering and modern web renderer is using Wasm and shader precomilation and some dark magic I don't even want to know about. And to be honest, my own experience with "web apps" is so bad, that I don't think any non-native-to-browser rendering pipeline can make it worse. Like, having UI glitches and unresponsive components, bad state management, need to refresh the page (which is essentially a "restart an app" in web), mess with forms/fields it's just such a normal experience in web. I don't have any of that with Flutter web apps. They might feel a little bit "non-native" to HTML-based web apps, but I never heard real users caring about that.

[1] https://pub.dev/packages/device_preview

[2] https://docs.google.com/document/d/189AbzVGpxhQczTcdfJd13o_E...

[3] https://forui.dev

YuukiRey•2h ago
I 100% agree. I've ran into the same issues, and I would never use Next.js for anything, and I will encourage every team at work to use something else.

In general Next.js has so many layers of abstraction that 99.9999% of projects don't need. And the ones that do are probably better off building a bespoke solution from lower level parts.

Next.js is easily the worst technology I've ever used.

christophilus•1h ago
Second worst for me. I’ve used Sharepoint.
mcny•1h ago
Third worst if you have used Lotus Notes mail. I still don't understand how an email and calendar client can slow down a computer like that (going by memory, the last time I used it was at work in 2013 so pre-SSD days).
Etheryte•11m ago
What do you mean you don't want to step through scripts with a debugger just to understand how to use the official APIs? I'm sure it's better these days, but Sharepoint was one of the platforms I worked with when I was younger and it still gives me bad flashbacks whenever it comes up.
berkes•1h ago
Many of the abstractions and nextjs tools do things that my OS does better, cleaner and more predictable too.

I suppose the overly complicated ENV/.env loading hierarchy is (partly) needed because Windows doesn't (didn't?) have ENV vars. Same for inotify, port detection, thread management: *nix does it well, consistent ish. But when you want an interface or feature that works on both *nix and windows, in the same way, you'll end up with next.js alike piles of reinvented wheels and abstractions (that in the end are always leaking anyway)

rcxdude•1h ago
>Windows doesn't (didn't?) have ENV vars

Nope, windows has had perfectly standard environment variables since the DOS days

ohdeargodno•48m ago
Windows has had envvars since before Linux existed. It also has FindFirstChangeNotification (or ReadDirectoryChangesW if you hate yourself) since before inotify existed, etc.

Windows has pretty much everything you can dream of (although sometimes in the form of complete abominations), it's just that the people employed by Vercel don't give a shit about using native APIs well, and will map everything towards a UNIX-ish way of doing things.

delfinom•15m ago
Damn, I didn't know someone could be so clueless about Windows or operating system history in general. What the hell do they teach in computer science these days
lysecret•1h ago
What did you use instead?
YuukiRey•33m ago
It's hard for me to give a blanket answer to this. I tend to mostly work on services that offer GraphQL APIs these days, and not so much on client side rendering. For APIs I stick with Go because it's what I'm most familiar with. But I'd also be happy to work on a Django or FastAPI service. Anything is fine really, as long as it's mostly boring technology.

If I had to create something that has a UI I'd just go with a bog standard server rendered multi page app, built using really boring technology as well. If you like Javascript and friends, go with Express. Nowadays you can run Typescript files directly and the built-in test runner is quite capable.

If a single page application makes sense, then go with vanilla React. For a highly interactive application that's potentially behind a log in anyway, you probably don't need React Server Components.

jbreckmckye•1h ago
My experience with Next.js are that its rough edges are a feature, not a bug. Everything is geared towards you giving up and just using Vercel's hosting
hoppp•13m ago
Same. Feels like it's a lure into a vendor lock

Better use something else

heldrida•1h ago
A lot of companies have Nextjs as a requirement, you can see it in the job posts. It's almost like React = Nextjs, where they don't even mention React. There are developers out there who are highly invested in Vercel's business. Ultimately, the dev teams are responsible for making these decisions.

I've encountered issues based on Nextjs in a few projects where the best approach was to eliminate it.

The outcome was nicer and higher development satisfaction.

If you dare to say that you had to get rid of Nextjs from a particular project, during a job interview, you're done!

christophilus•1h ago
It would be a point in your favor if I was interviewing you. In fact, telling that anecdote may be a good way to weed out koolaid-drinking companies.
doganugurlu•1h ago
Similar experience here.

Next.js is 8 years old and still under-documented, and you will still get lost if you veer off the beaten path - of which sometimes there is none.

Frankly, I was mad at myself for not recognizing the hubris and their ignorance of web dev history when I noticed that they brought back directory based path convention from the 90s. That should’ve been the red flag that stopped me but I fell for Vercel’s fonts and web design.

Investing in an implicit and inflexible routing pattern such directory based routing that was used when we didn’t have nice things is like being a rich hippie. Oh it doesn’t stop there. Isn’t it cool that you get to (jk, you HAVE TO) name your files like ‘[path-that-takes-arg].tsx’? You may think that I used brackets as a placeholder signifier, but I didn’t! Brackets are part of the filename and they indicate that this route takes params.

Look, we all tried and maybe had a little too much fun inventing and sometimes reinventing clever patterns we shouldn’t have, but few of us doubled down and just ran with it for so long.

Luckily, you can get around the pattern above pretty easily by just using the one route as a router file and adding your own indirection. Obviously you miss out a bit on tree-shaking and probably some other optimizations they designed to rely on their implicit conventions but your codebase remains greppable.

ramon156•1h ago
Next js is magic just like laravel, it's nice when you expect magic and not nice when you like to understand what's going on.
dominicrose•1h ago
Laravel is easy to learn and use and get started with. No compiler. No javascript on the back-end. Eloquent is a good ORM. There's not much magic, no async/await. Or course you should not use Livewire. It's really terrible!
quadhome•1h ago
AsyncLocalStorage.enterWith is the wrong method; .enterWith changes the logger for across the *synchronous* execution. This doesn't matter if there's only one request happening at time-- like when you're testing locally. But that's why it didn't work on the actual project.

Use .run.

  return LoggerStorage.run(requestLogger(), () => {
      logger()?.debug({ url: request.url }, "Started processing request!");
      return NextResponse.next();
  });
dminik•1h ago
Nope, this doesn't work either.
komali2•1h ago
I feel like I'm being gaslit every time nextjs is discussed. I picked it up and learned it for a couple different projects because clients heard about it and wanted it. I kept finding shit like this in the OP post, making issues, asking around about it, and being told by nextjs experts that I was Doing Everything Wrong. Fine, I'll deploy on vercel, but wait this client wants to try cloudflare edge because he knows the ceo and wants to pitch for his investment firm having better access or whatever tf, so I need to get it running on that, so now I can't use some xyz version of some library, and I have to use some bleeding edge version of nextjs and... etc.

Every day that went by I wondered if I was going insane for thinking we should just go back to building apps in straight vanilla javascript. Or like, just react SPAs pointing at fastapi apps deployed on s3, which has never failed me.

rvz•1h ago
There you go. We are now past the honeymoon period of yet another web framework.

This one has been the most over-hyped, vendor locked-in and completely vulnerability ridden web framework I have ever seen.

xkcd1963•1h ago
The slow response time on hithub is most likely due to layoffs
wg0•1h ago
Genuine question - What are the alternatives?

React Router + Express?

Or something else?

cluckindan•1h ago
React Router v7 is actually awesome and can do SSR if you need it.
nobleach•25m ago
We do React Router 7 (previously Remix) with Fastify for a couple of our apps. Both external and internal. I'm really happy with the dev experience. We also have plenty of NextJS floating around here too. Most teams use it as a "better Create React App". There's little use of any of its features. I'm the only one that's used any server-side stuff.

For my team, React Router 7 just gets out of the way. If you use it in framework mode (SSR) you will have loaders and actions, which are things that run on your server. I find it SO much less convoluted. The logger example from the article above is childs play in React Router. Either import your logger and run it in your loader. (You may want to add .server.ts to make it explicitly ONLY server) or inject the logger via context.

yasserf•1h ago
I agree it’s pretty frustrating, but I do really like the SSR capabilities

I’m divide my frontend and backend via pikku, that way I can continue using normal server side functions but optionally spin up a seperate api service if needed.

Haven’t really tested it on vercel as much, but it ignores middleware on the nextJS side unless it’s for frontend code.

https://pikku.dev/docs/runtimes/nextjs-app

Disclaimer: I’m the pikku core developer

vincirufus•1h ago
may the title of this should say Next.js middleware /logging is infuriating
nesarkvechnep•1h ago
JS devs having Stockholm syndrome is no news.
francisduvivier•1h ago
I recently migrated 2 projects away from Next.js to Vite. It was a lot of work, Next.JS handles quite a lot of stuff: translations, authentication, bundling, css stuff, caching... But it was very much worth it for lowering my daily infuration. I don't think I'll be using NextJS again if I don't have to.
cpcallen•1h ago
You know what else is infuriating? Pages that won't load (at all—just show a blank page, or in this case a too many redirects error—if you do not have cookies and local storage enabled.
jpereira•1h ago
Agh, sorry about this! I'm one of the people building leaflet.pub, which this blog is running on. Just pushed a fix for this (ironically on nextjs/vercel). The redirect loop is to handle sharing auth between our "main" domain, and people's various custom subdomains. Auth, via the ATProtocol, is used for things like subscribing and commenting!
8cvor6j844qw_d6•1h ago
I'm involved in starting up a project with Next.js. Can experienced devs let me know your opinion or any potential pitfalls?

Long story short it's a proof of concept demo/exploratory project.

Currently, using Next.js app router, multi-root routes for stuff like (marketing), (app), (login), etc.

Db is Neon for the branching, will probably include Vercel AI SDK for AI stuff since its likely I'll be asked to include some AI functionality.

The only worry is I'm unsure with how this serverless layer/backend? interact with user authentication / authorization when used with the BetterAuth.

Currently hosting on Vercel, I feel like Next.js is married with Vercel for hosting. Although maybe because I'm unfamiliar with it, since Next.js made it quite simple and straightforward to do host quick proof-of-concepts on Vercel.

masto•37m ago
I don’t know if this counts as experienced, but I’ve spent about a year exploring Next.js, the last 6 months of which transitioning from exploring to building a serious project.

I understand the author’s frustrations. I have had similar ones when it comes to middleware and other parts of Next.js. I’ve also had those kinds of frustrations with every piece of software and framework I’ve ever used. A lot of times they stem from trying to shove a square peg into a round hole, and it only gets better when I finally develop the right mental model for how the thing works.

As a web developer going back to CGI scripts in the 90s, all this server and client side rendering, edge runtimes, etc., is quite foreign. But when I find myself screaming “why won’t it let me do this?”, the answer is often “because it doesn’t make sense to do that”. Auth is one of the places where that happened, and going through the process of “but why can’t I look the user up in my database from middleware” was a big part of wrapping my head around the parts of Next.js that I had been ignoring.

As far as being married to Vercel for hosting, not at all, if you don’t choose to use all their stuff. The sample Docker build they have works just fine to deploy anywhere, in my experience.

Maybe I’m speaking mostly out of ignorance of not having tried dozens of other modern TS web frameworks (I was on a big tech island for a decade and not in touch with what the cool kids were up to), but I rather like Next.js. I may feel differently when I want to start adding native mobile apps and realize I was lulled into omitting a clean API layer, but for now, adding features has been pretty smooth.

paradite•1h ago
I've came to the pain conclusion on Next.js:

It's a bad framework for building full stack apps, but it's better than anything else.

https://x.com/paradite_/status/1941016421934551477

fatchan•1h ago
I always use a custom server (even express will work) with next.js, because I found the middleware and edge stuff a load of overcomplicated BS. Client side works like regular react app, SSR for any pages where the initial props are just populated from the server site is easily controlled, and the whole system is simple to reason about. There are other frameworks out there to do this now, but I'm comfortable with this and it just works, so no reason to change.
lagrange77•1h ago
I can only recommend vike.dev .
matt-p•59m ago
Do you know what, it uses to be OK in the early days with pages and not too much magic/abstraction.

These days vite is far far nicer.

graphememes•50m ago
I think Edge infra and SSR irks me the most out of everything.
gg2222•48m ago
For people wanting to try something else, I recommend SolidJS and SolidStart. Personally I never tried Next.js exactly because it feels like too many decisions are being made for me without having any choice. And I don't trust frameworks like that.

Depending on the project, just write an SPA with an API server, or if it is a static website just prerender it and serve on Cloudflare. I don't get the appeal of all the complexity. If you need SSR for SEO, then SolidStart is a nice and simple solution.

fkarg•47m ago
we started a purely-frontend project with nextjs but moved to react-router pretty soon. Sure, it can be convenient (when it works), but you can't really see or understand how or how to control it, and black magic breaking is the least of what you want. Much happier now.
rossant•46m ago
There are so many frameworks in this fast-moving space that I need mnemonics to keep track of which ones are well-regarded and which aren’t. Looks like this one is easy. Next.js? Next.
dzonga•39m ago
remember a while back when they was "rails is a ghetto" piece.

now that rather seems sane compared to next.js stuff n other javascript things.

if you gotta use typescript while not use java and at least benefit from the ecosystem of the jvm ?

for me I will stick with Rails - that's what I know

celicoo•36m ago
Reading through all these comments gives me hope. Finally people are speaking up about what we have all been experiencing in isolation — the gradual enshittification of Vercel/Next.js in service of Vercel's business model.

The middleware issues the OP describes are not bugs, they are symptoms. When you can't get basic logging to work, when you can't use WebSockets, when you are forced to deploy on edge runtimes that don't support Node.js APIs — these are all deliberate choices to push you toward Vercel's platform. Guillermo and his team have prioritized their cap table over the open web.

This is why I started https://github.com/openuiai/next.js last month. The web is humanity's greatest collaborative achievement. We are building toward a global, decentralized network that should enable unrestricted computation and storage for everyone. And for that to actually happen, we need frameworks with the power and flexibility that Next.js used to have. But instead we are all watching Vercel carve it up to lock developers into their platform

Next.js used to be great. Now it's a trojan horse for vendor lock-in. The fact that so many developers are comparing it to SharePoint and Lotus Notes should be a wake-up call.

To everyone frustrated: you are not wrong. The framework is ACTIVELY working against you unless you are on Vercel.

I'm working on OpenNext.js every single day — still climbing the learning curve of the massive spaghetti codebase, but fully committed. We are already running OpenUI on a fork with full Node.js middleware support and native WebSockets. These will merge into OpenNext.js once I have properly cleaned out the cruft (their CI/CD alone has cost me $400 just figuring out how to untangle it). But I'm taking the time to do this right.

Guillermo: Vercel/Next.js shouldn't dictate where we can deploy. It should respect the open nature of the web. You know this, but you chose the money instead.

ale•31m ago
To be fair Next.js is just following the natural progression of what their product always has been: holding devs' hands in all things deployment at the expense of vendor lock-in. Being aware of Vercel's limitations is not about the open web, it just means you should be setting up servers yourself at this point.
Lucasoato•35m ago
> we of course have no idea what actually happened since the default logging is only enabled during development

Wait, if you have issues with logging, why don’t you set up opentelemetry? It’s really easy to add into a project [1], and if you don’t want to manage it, you can easily find some cost efficient solutions like Grafana Labs [2].

[1]: https://nextjs.org/docs/app/guides/open-telemetry

[2]: https://grafana.com/

867567838694•24m ago
Next.js is a cancer. I wish more people would see it sooner before Vercel completely destroys ReactJS.
QuadrupleA•21m ago
Every time I hear about modern JS/TS frameworks, I'm amazed at the unnecessary complexity.

In python / bottle.py this would just be a print statement to stderr in before_request() or before_response(). One additional LOC.

Havoc•6m ago
Honestly I feel like this about the entire node/js ecosystem. Seems pretty cursed from top to bottom to me. And each attempt to un-curse it just adds more frameworks and layers and abstraction and new paradigms