The Next.js framework’s App Router debuted in 2022 but was only marked as stable for frontend development last year. It will eventually become the replacement for the Pages Router, but not everyone is happy with App Router.
“App Router is just a mess created by Vercel team,” wrote one developer on a GitHub discussion thread. “I just used it in a project and it is confusing every time with client or server components.”
Tom Occhino, Vercel’s vice president of engineering in frameworks, understands the criticism but told The New Stack it’s time for developers to give it another chance.
The Next.js App Router introduced a new model for building applications using React Server Components, streaming with Suspense, and server actions. It incorporated new approaches to routing, data fetching and caching. Still, it frustrated some developers. There were complaints about documentation and complexities of the app router and that it just wasn’t ready for production.
“I’ll be honest with you. I only joined Vercel a little over 18 months ago,” Occhino said. “The first time I used App router, I wasn’t happy with it. I had a couple of gripes.”
First, the Next.js team underplayed just how different it really was from Pages Router, he said.
“[App] Router was a Next.js rewrite, and it wasn’t really finished yet when the team made it available,” he said.
That may not have been a problem if Vercel hadn’t made App Router the default so early. In retrospect, it might have been better to delay until the app router was “unequivocally better” than Page Router, he admitted.
“The biggest gripe that I had was it wasn’t really ready yet for us to switch the default,” he said. “Definitely ready to share with the world and let people try, but we weren’t ready to switch the default.”
At the Next.js Conference in San Francisco last month, Occhino encouraged those who disliked the first versions of App Router to give it another try today.
“Now I actually do think — especially with our new code module that helps you very easily upgrade from a past version of Next.js to this one — I actually do think it’s time to give it another look, and I think they’ll be very impressed,” he said.
App Router in Next.js 15
The app router evolved in Next.js 15. Among the changes brought by Next.js 15 were:
Changing the caching defaults. Next.js App Router launched with opinionated caching defaults, which Vercel has stated were designed to provide the most performant option by default with the ability to opt-out when required. But based on feedback, the Next.js team “re-evaluated our caching heuristics and how they would interact with projects like Partial Prerendering (PPR) and with third-party libraries using fetch.” With Next.js 15, they changed the caching default for GET Route Handlers and the Client Router Cache from cached by default to uncached by default.
Backward compatibility for React 18 with the Pages Router. In version 15, the App Router uses React 19 RC. Vercel introduced backward compatibility for React 18 with the Pages Router based on community feedback. “If you’re using the Pages Router, this allows you to upgrade to React 19 when ready,” the team wrote. “Although React 19 is still in the RC phase, our extensive testing across real-world applications and our close work with the React team have given us confidence in its stability. The core breaking changes have been well-tested and won’t affect existing App Router users. Therefore, we’ve decided to release Next.js 15 as stable now, so your projects are fully prepared for React 19 GA.”
Faster Static Generation. “Static generation for the App Router is now significantly faster, especially for pages with slow network requests,” the team wrote. “This is achieved by reusing the initial render for both data generation and HTML rendering, eliminating the need for a second pass.” Static generation has been optimized to to improve build times, especially for pages with slow network requests, they added.
The Relationship Between Next.js and React
We also asked Occhino about the tight connection between React and Vercel’s Next.js. Before his tenure at Vercel, he oversaw the React team at Facebook.
There are 21 members of the React Core team now. It’s predominantly Meta engineers, which makes sense since Facebook created React. But four Vercel engineers are also among the 21, which makes the frontend cloud provider the second largest and almost the only other company on the React team. Dan Abramov, an ex-Meta employee who now works for social media site Bluesky, is the only engineer outside Meta and Vercel on the React Core.
“App Router was a Next.js rewrite.” – Tom Occhino, Vercel vice president of engineering, frameworks
That’s a novel situation for the open source industry, Occhino pointed out.
“You usually have open source that operates one of two ways: It is developed at one company and maintained and invested in by that one company, or it is developed by a community that doesn’t have a business associated with it, and then maybe a business will be bolted on top later, [or] maybe not,” he said.
But with React, Meta/Facebook had a massive investment in React and now Vercel also has dedicated employees not just working on Next.js, but also on React itself. That’s created what Occhino termed “a really high cohesion between Next.js and React.”
Vercel’s React Core team members are:
Andrew Clark, who previously worked for six years at Facebook;
Josh Story;
Sebastian Markbåge, who spent nine years at Meta; and
Sebastian Silbermann.
(Occhino himself isn’t on the core React team.)
React’s Original Facebook-Driven Purpose
React was born inside the context of Facebook’s infrastructure and was really only designed to deliver Facebook products, Occhino said.
He started Facebook as a new grad software engineer building user-facing products. He eventually moved into building developer tools at Facebook. One of those tools Facebook developed ended up being React, which was open-sourced for broader use.
“React was not really what you’d describe as batteries included,” Occhino told The New Stack. “We even called it a library. We didn’t call it a framework.”
Facebook used React on one portion of the page, with all this infrastructure around that portion of the page, he said. So React, for instance, didn’t have opinions about routing or data fetching, he said.
Next.js Built on Top of React
But developers wanted to use React for more than its intended purpose: They wanted to use it as a framework. That led to the birth of community solutions built on React but designed to fill in its gaps, including Next.js, which was created by a team that included Guillermo Rauch, now the CEO of Vercel. There were two immediate needs that Next.js answered, Occhino said: Data fetching and routing between multiple pages in an app.
The React team began to compare notes with Next.js and other solutions that emerged, he said. The Next.js framework authors began offering suggestions about how React could be tweaked to help them.
“We loved this, because if you’re using React in all these novel and interesting ways, it helps us make it better,” he said. “We’re innovating. We’re learning together. There’s more people using it in more different ways that we hadn’t even thought about.”
As members of the React team decided, for various reasons, to leave Facebook, they joined Vercel. Rauch recruited Occhino to join the frontend cloud platform when he wasn’t even sure he wanted to go back to work, Occhino added.
The high cohesion means that Next.js doesn’t have to document all the parts React handles — developers simply need to know React, Occhino said.
“The surface area that Next.js needs to document is only the stuff that gets added on top,” he said. “Here’s how you do data fetching, here’s how you do server-side rendering, here’s how you do all the stuff that kind of just works out of the box.”
TRENDING STORIES
YOUTUBE.COM/THENEWSTACK
Tech moves fast, don't miss an episode. Subscribe to our YouTube channel to stream all our podcasts, interviews, demos, and more.
Loraine Lawson is a veteran technology reporter who has covered technology issues from data integration to security for 25 years. Before joining The New Stack, she served as the editor of the banking technology site Bank Automation News. She has...