←back to thread

Next.js is infuriating

(blog.meca.sh)
1033 points Bogdanp | 1 comments | | HN request time: 0s | source
Show context
pavel_lishin ◴[] No.45102328[source]
> Let's not skip over the fact that you can't have multiple middlewares or chain them either.

Surely this can't be right?

https://nextjs.org/docs/messages/nested-middleware > If you have more than one Middleware, you should combine them into a single file and model their execution depending on the incoming request.

By Talos, this can't be happening.

replies(2): >>45102832 #>>45105164 #
digianarchist ◴[] No.45105164[source]
I can’t help but feel some of these decisions are made because it’s what is best for Vercel and not what’s best for the framework.
replies(1): >>45105569 #
tshaddox ◴[] No.45105569[source]
I don't see how this particular case makes anything better or worse for Vercel. It's just a poor developer experience to need to come up with your own composeMiddlewares function (or find one of the many that people have posted in various threads).
replies(1): >>45105867 #
digianarchist ◴[] No.45105867[source]
They validated this on the thread. They made an architectural decision to run middleware only on edge.
replies(1): >>45107412 #
tshaddox ◴[] No.45107412[source]
That's unrelated to the complaint I'm responding to, which is simply that you can only provide a single middleware file. This is merely a DX problem. You absolutely can develop your own composeMiddlewares function and import different middleware functions from different modules. It's just on you to do that, and to reimplement some basic functionality for each composable middleware function (like matcher regexes).
replies(1): >>45119692 #
1. digianarchist ◴[] No.45119692[source]
From their blog post:

> Previously, Next.js middleware only supported the Edge Runtime, which provided better performance and isolation but had limitations when integrating with Node.js-specific libraries and APIs.

That's not something that can be resolved with a library abstraction. That was an architectural decision.