Next.js 13 introduces layouts, React Server Components, and streaming in the app directory, as well as Turbopack, an improved image component, and the brand new font component.
The recent release of Next.js 13, mixed with a lot of hype and promotions, has sparked an interesting discussion about the trend of reviving PHP programming in modern web development. It all starts with its file-system based routing which is directly influenced by PHP, till the recent support of React Server Component and Streaming as continuous refinements to its SSR capability and commitments to better user experience. When looking at the landscape of React, what Next.js has done to the ecosystem and the new possibilities it unlocks are beyond impressive. But in the meanwhile, all the hypes may seem nothing besides confusing for web devs who primarily work with traditional web frameworks that come with similar features out of box. Especially when taking Lindy Effect into account.
It’s fair to argue that there’re clear nuances between those technologies, just like all technologies come with trade offs, not to mention the different run time (server vs client) environment they’re targeting at. But it’s also hard to deny that the line between client and server becomes increasingly vague over the years as Next.js or React continues to evolve towards a closer resemblance with other traditional web frameworks, and the byproduct of it - a more sophisticated and volatile (although faster) build system, becomes not easy to match elsewhere.
Don’t get me wrong in thinking that I’m an opponent of Next.js as I may sound a bit critical. The fact is that I am not, its seamless CICD integration with Vercel, well crafted developer experience and abundant ecosystem for plug-ins makes it a hard to beat choice for a wide range of customers (from indie hackers to large corps) to build businesses on top of it. I also have tremendous respect for all the talented engineers behind those technologies and their allied mission in pushing the web forward. What I really want to do is taking a step back by zooming out the timeline and looking at things in retrospect, so that I can get a better understanding about what Alex Russel called a “lost decade”. Or make it simple, to reflect if we can justify all the complexities and costs the Next.js and React community gears toward with tangible benefits (e.g. more coherent DX and UX to build better software), just like we can easily justify the long-term benefits that Typescript or ES Modules brings to the web development space bearing all the downsides (complexities, fragmentations etc during the transitional period) they had to introduce, because it used to be a mess w/o them.
Is it becoming better or worse? Is it spiraling upward or downward? Maybe only time can tell.