Why Developers Should Give Next.js App Router Another Chance

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:

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:

(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.”

Group Created with Sketch.

 

 

 

 

Top