The framework decision, not the platform decision
Technology
Next.js is the framework decision, Vercel is the platform one. You can run either without the other, though most of our client work pairs them. The App Router put server and client code in the same component tree and made rendering a per-route decision: static, revalidated, or fully dynamic, instead of one choice for the whole app.
We have built on Next.js since before the App Router existed, spoke on ecommerce at enterprise scale at Next.js Conf, and migrated MacStadium's marketing site onto it with a component system that scored well across Core Web Vitals. It is still our default for anything with real client state.
View TechnologyWhy
What the framework actually gives you
- Server Components changed the rendering unit
Before the App Router, the line between server and client ran through the whole page. Now it runs through each component: one that never needs interactivity stays on the server and ships no JavaScript, one that does gets marked as a client boundary. That is a decision at the file level, not the page level.
- Rendering strategy is a per-route decision
Static generation, incremental revalidation, and server rendering all live in the same app, chosen route by route instead of once for the whole project. A marketing page can be fully static while the dashboard next to it renders on every request. Getting this wrong is the most common Next.js performance bug we see.
- You inherit React's complexity budget too
Hooks rules, hydration mismatches, and client bundle discipline do not go away because the framework is opinionated about routing and data fetching. A team that has not internalized React's own footguns will hit them inside Next.js just as often as outside it. The framework does not fix React, it structures it.
- The edge runtime narrows what you can do
Middleware and edge functions run in a restricted runtime, not full Node. No native modules, a different set of web APIs, and code that behaves differently depending on where it executes. We plan for that split up front, not when a dependency fails to build for the edge.
- The ecosystem is the real advantage
React's hiring pool, component libraries, and integrations dwarf every alternative on this page. We have built on Next.js since before the App Router existed and spoke on enterprise ecommerce at Next.js Conf. That maturity is worth more in practice than most framework-level technical arguments.
- Legacy Pages Router debt still shows up
Plenty of the production codebases we inherit are still on the Pages Router, or halfway migrated with both patterns coexisting in the same app. That migration is real work, not a weekend refactor, and we scope it as its own project instead of pretending the upgrade is free.




