You're Wrong about Next.js
Regardless of what you think about Next.js, this post will make you want to argue with me, but you need to hear this.
So Next.js 14 just dropped with server actions being declared stable despite missing docs, and the memes have admittedly been hilarious.
But whether you like server actions, hate server actions, love Vercel, hate Vercel, there's one thing you probably fundamentally misunderstand about Next.js and where it's headed.
It's Not a JavaScript Framework Anymore
Yes, I can see you raising your eyebrow, but hear me out.
You know the complaints about how Next.js is hard to deploy outside of Vercel? Why do you think that is?
Because Vercel needs to stay in business
You're correct! And what is Vercel's business?
They're a website hosting platform
You're incorrect! Vercel has been increasingly positioning themselves as an all-in web application platform. The difference is subtle, but you can see it. Vercel is currently providing, among other things:
- Image optimization
- Custom open graph image generation (which happens to be built into Next's App Router)
- Cron jobs
- CDN
- Database solution
- Key-value solution
- Object storage
- Collaborative comments
- More stuff
Where am I going with this and what does it have to do with Next.js and the title of this post? Well
Have you noticed that Next Conf keynotes have had visible effort put into them to make them look like Apple keynotes?
✨ Ecosystem ✨
Vercel is trying to be more Apple-like in more ways than just keynote. Vercel's "vision" is that you would build your web app with their framework, on their platform, using their CDN, running their database, serving images via their image optimizer instead of Cloudflare, or Cloudinary or Uploadcare, using their cron jobs, etc. Kinda like you would use Apple's UI frameworks to build for Apple's platform.
Next.js is no longer a framework for building React apps. It's a framework for building Vercel apps. The sooner you realize it, the better.
"But Max, you handsome intellectual", I hear you say, "is it a good thing or a bad thing?"
Well, it's neither. It is Vercel's framework and it's well within their rights to build it in a way that plays best with their application platform. If you like Vercel - you'll enjoy the smooth first-party experience that comes with vendor lock-in. If you don't - maybe the framework from a company that's in the business of vendor lock-in isn't the best choice for you. I think OpenNext is a noble endeavor and Cloudflare sure is trying, but the further down this road we go, the more it's going to be "SwiftUI for WebAssembly".
Vercel is a business and they want to stay in business. They have achieved the perfect vendor lock-in zen that other platforms have been trying to achieve since their conception, and they should be commended for it methinks - it sure wasn't easy.
Hell, I don't even think vendor lock-in is a bad thing necessarily. If you like the vendor 🤷🏻♂️
But I would be remiss if I didn't bring up the fact that there has been growing discontent in the web dev community since Next 13 (partly for other reasons like performance, but still). Guillermo Rauch is one of the smartest people I've ever had the opportunity to work with, but I do believe he vastly underestimates the eagerness with which JavaScript developers will jump onto a new framework, should one come around. Though no one really talks about Remix anymore, so who's to say.
So
Where does this leave us?
Fuck if I know, I just wanted to say what I feel is a key point people are missing in this whole conversation. Do your own research, make your own choices, don't listen to Twitter tech influencers.
Use the tools you like using, stop arguing, start shipping.