BF6 Countdown - A Launch Timer With a Shelf Life
A live countdown and tracker for Battlefield 6's beta weekends and release, streamed 24/7 on YouTube. Around half a million interactions across the site and the stream, then obsolete by design the day the game shipped.
~500k interactions
- Astro
- React
- Tailwind
- Cloudflare Pages
- YouTube Live
Defunct, on Purpose
Battlefield 6 came out on 10 October 2025, and the entire point of this site was counting down to that. It still resolves, but it’s a monument to a date that’s been and gone. I’m leaving it here because “built something, shipped it, watched it expire on schedule” is a legitimate kind of project.
The Problem Statement
There wasn’t one, really. The open beta was announced, I wanted to know exactly how long until it started, and the existing answers were forum posts with timezone maths done badly. So I built the version I wanted: one enormous timer, correct in your local time, that you could leave open in a tab.
It went up in about a week in August 2025, in the window between the beta announcement and the beta itself - which was the only window in which anyone would ever care.
What It Did
- A big animated countdown to each open beta weekend and then to launch, with a chromatic-aberration glitch treatment on the digits, because a Battlefield countdown that looks tasteful is a Battlefield countdown that looks wrong.
- Beta recaps and weapon-meta articles written between the two beta weekends - the best guns from weekend one, the shotgun meta that took over weekend two - as an MDX content collection.
- A 24/7 livestream of the site itself on YouTube, so the countdown ran as an ambient channel you could leave on a second monitor.
- Fully static on Cloudflare Pages, because a page whose only job is a timer should cost nothing to run and should not fall over when it gets linked somewhere.
The Stream Was the Distribution
Streaming the page turned out to matter more than building the page.
A countdown is a terrible thing to visit and a great thing to leave running. Once the timer existed as a live channel, people stopped bouncing off a tab they’d checked once and started parking it - and YouTube kept surfacing it to the audience actively searching for exactly this, in the weeks when that audience was at its largest.
Across the campaign the site and the stream together did roughly half a million interactions. For a static page built in a week with no marketing budget, effectively all of that came from being in the right place with the right thing at the right moment, in a format people were happy to leave open.
It also meant the countdown had to be correct in a way a normal page doesn’t. A quietly broken timer on a website is a bug a few people notice; a quietly broken timer being broadcast continuously is broken in front of everyone at once, permanently.
What I Actually Got Out of It
Disposable projects are a good place to try things you wouldn’t risk on something you have to maintain. The glitch and chromatic text effects were React islands doing per-character animation inside an otherwise completely static Astro site, which was a genuinely useful lesson in how little client JavaScript you need to make something feel alive.
The bigger lesson was the stream. I’d have told you beforehand that the build was the project and distribution was something you worry about afterwards, and that’s backwards: the same page without the livestream would have been a fraction of the reach. Picking the format the audience actually wants to consume was worth more than anything I did in the codebase.
It also validated the whole build-fast-on-a-deadline shape: announcement to shipped in a week, half a million interactions, purpose expires, no ongoing obligation. Not every project needs to be a going concern.
The Stack
- Astro (static output) on Cloudflare Pages.
- React islands for the timers and the glitch/chromatic text effects.
- MDX content collection for the articles.
- Tailwind CSS and Alpine.js for everything that didn’t need React.