Is metadata streaming really SEO armageddon?

This blog post called Next.js 15.1+ is unusable outside of Vercel has been doing the rounds this past week.

Starting with version 15.1.8, Next.js might break metadata handling for non-Vercel deployments, potentially devastating your search rankings.

It's about metadata streaming, which is this new TTFB optimisation where Next can load in meta tags asynchronously after the initial page load. The post presents this feature as an SEO doomsday scenario. It has a tinge of "Hackers Can Turn Your Home Computer into a BOMB" energy.

I'm not convinced. We've had this version of Next running in production at work for months. We have asynchronous generateMetadata functions all over the place. Not running on Vercel. No SEO doomsday has materialised as of yet.

I spent a good while rereading the article and the linked GitHub issues and couldn't find anything suggesting that metadata streaming behaves differently depending on whether you host your app on Vercel or elsewhere either. The claim that this new feature represents an escalation to a new level of vendor lock-in seems to be based on vibes as far as I can tell.

There was also this part about static sites.

Here's where it gets absurd. Even with static builds, metadata tags aren't included in the HTML head anymore. They're bundled with React Server Components and require JavaScript execution. Your static site server now needs crawler detection logic just to serve basic HTML metadata.

This claim seemed both unlikely and easy to check. So I created a quick test app by running create-next-app and then configuring it to be a static build and adding an asynchronous metadata fetch. You can load the resulting webpage yourself and see the result in its source code.

<title>Example Title</title><meta name="description" content="Example Description"/>

Metadata tags are indeed still included in the HTML head in static Next sites. The claim seems to simply be false.

There's plenty to dislike about React and Next. Even though I've been paying my bills by writing JSX for the better part of a decade, Heydon Pickering's What Is React? sums up my feelings about the whole thing fairly well.

This is the dominant web development tech stack of our time and it's flawed in lots of really fundamental ways. There's so much that's problematic about it that I don't think we need to stretch quite this hard in search of new complaints. Metadata streaming itself seems to embody everything that's become so silly about contemporary React, always growing ever more complex in order to solve increasingly niche problems. But it does at least seem to work.

Ubuntu 25.04 on a 2014 Macbook Air

The old MacBook Air I'd been running k8s on had become a bit problematic. The battery's gone very bad, and newer versions of macOS have begun to run very poorly on it. After macOS Tahoe, Apple's ending support for these old Intel Macs completely too. Time to make a change!

It makes sense to deal with the battery later once we've shown we can save the rest of the hardware, so step one was to install Ubuntu. Harder than expected!

First thing I did was to download ubuntu-25.04-desktop-amd64.iso. This boots to GRUB, where you get these four options.

  1. Try or Install Ubuntu
  2. Ubuntu (safe graphics)
  3. Boot from next volume
  4. UEFI Firmware Settings

Couldn't get further than this, though. Options 1 and 2 both just led to a black screen of death. Through Googling I found various forum posts suggesting different boot flags to try. None of that helped either.

I've been away from desktop Linux for about 15 years and I'm very out of date with the modern troubleshooting techniques. One new thing I learned this time is that YouTube videos have become a key source of information for this kind of thing. In a video by someone called "Level 2 Jeff" titled Resurrecting my ancient MacBook Air with Ubuntu Linux I saw the exact same problem resolved by booting from an older Ubuntu ISO.

Starting again with ubuntu-20.04.6-desktop-amd64.iso and choosing Ubuntu (safe graphics) proved successful. From there, it was a matter of following the upgrade instructions to upgrade to the latest version.

So far so good! And Linux looks a lot better than I remember. With any luck this could be the first step in a journey out of a dependence on proprietary American tech!