For two years, my default stack was MongoDB + Express + React + Node. Then I built one project in Next.js and didn't look back.
The Express Boilerplate Problem
Every Express project starts the same way: set up CORS, helmet, morgan, body-parser, error handling middleware. An hour before writing a single business logic line.
Next.js API Routes (and now Route Handlers) eliminate all of that.
Full-Stack Type Safety
With Next.js + TypeScript, I share types between my frontend and backend. No more "undefined is not an object" because the API response shape changed.
Deployment Simplicity
`git push` and Vercel handles the rest. No EC2 instances, no nginx config, no PM2.
When I Still Use Express
Complex microservices that need fine-grained control. But for 90% of projects, Next.js is the right call.