On one hand, as a web dev, I love Vercel for its ease of use. IMHO it's truly revolutionary. I've been doing web stuff since Netscape 2.0, and deploying a live website from code has never been this easy. It's 1000x easier than having to manage your own Linux, Nginx/Apache/Express, database, and application code (I'd say LAMP, but that feels too old-fashioned now). And compared to closer-to-the-metal cloud VMs like EC2, it's still 100x easier, and even compared to other highly-abstracted services like Google App Engine or AWS Amplify, it's still 10x easier. `git push`, click a few buttons in their UI, and you have a live website about 2 minutes later that will easily scale to meet demand. Zero maintenance and very little config, extremely fast (for the user), great logging, analytics, dashboard, etc. It's all just such a revolutionary leapfrog compared to how antiquated AWS feels. I don't think I'd ever go back to using AWS directly again if I can help it.

On the other hand, I also worry that Vercel is heading further and further down the road to vendor lock-in. I was already a little worried about this when Next.js first started getting popular back in the Page Router days, when Vercel wasn't that much more than a wrapper layer around Node.js. But as they added more and more features (like incremental static regeneration at first, then the App Router and fetch caching later on, along with middleware, preview toolbar commenting, live edits, etc.) it got harder for third party hosts to support all the functionality of Next.js. As of a year or two ago when I last checked, for example, Cloudflare Pages didn't fully support Next (just the basic features), and Netlify had to create their own Vercel-emulating runtimes that had some bugs. As far as I can tell, those non-Vercel hosts are going to just fall further and further behind Vercel because they can't compete with the first party features. It reminds me of the situation with Nvidia and GeForce Now, where it so completely dominated competitors (like Stadia or Xbox Game Streaming) because Nvidia is the only one who could both make the Nvidia GPUs and provide the hosting for them directly. Vercel is the only one who can determine the future of Next and optimize hosting for it directly, before any competitor even sees the latest features.

The thing with old-schools CDNs is that they were mostly framework-agnostic, since for the most part they just hosted static files. But Vercel blurred that line by tying their hosting closely to Next.js, and vice versa – there are Next.js things that only work right on Vercel, some of which is undocumented, and you only find out the hard way when you try to host your Next project elsewhere.

Now Vercel is also adding a bunch of other services (or whitelabeling & integrating other vendors' solutions) like a database, KV, blobs, etc. It's almost like we went full circle, from bare-metal monoliths to cloud monoliths to cloud microservices to cloud frontends and now back to frontend clouds (but with other services thrown in alongside it). It's beginning to feel more and more like a monolith again.

It's still an ease-of-use improvement in that we've gone from a bunch of self-managed on-server daemons to a bunch of cloud services connected together via APIs that you don't have to maintain yourself. That's nice, but that means that the further you go into the Vercel ecosystem, the harder it is to move to any other provider.

I guess that's the danger of having the most popular JS framework made by a hosting company. Next.js is open-source, but it very clearly favors Vercel over other hosts, and new versions and features won't always work elsewhere. It's a smart business move on their part, but a slightly worrisome choice for their customers like me...

Would I still choose Vercel? For now, yes. They really are exceptionally good at what they offer. I just really hope they don't become evil or enshittified like every other big tech company. For a while they were the indie darling, but I guess in our industry, benevolence never lasts... =/