- so many rendering modes - SSG, SSR, ISR, streaming SSR, PPR, client and server components.
- de facto Vercel lock in: edge runtime, middleware, image optimization, ISR, and lots more are massively complex to set up or less performant off Vercel.
- fragmented ecosystem between app and page router.
- so much boilerplate with the app router: layout.js, loading.js, error.js, page.js
Not everything here is bad - in fact some parts are excellent. There's just so much of it, so many ways of doing any single thing and already so much legacy code in a system that's only a few years old, and it's growing in complexity with every release.