Skip to content
Tomorrowland

One app for every edition, all year round

Three or four Flutter apps became one React Native codebase, covering every Tomorrowland edition worldwide and carrying the old radio app's features into CarPlay and Android Auto. My work is the live radio surviving a bad network on both platforms, and the CMS-driven content system the festival screens are built from.

Tomorrowland ran three or four separate Flutter apps: Radio, an app per festival, and Account. They are one React Native codebase now, covering every edition worldwide, with the old radio app's features carried into CarPlay and Android Auto, a full store, and a festival map that has to hold up with tens of thousands of people on it at once. The point of consolidating was not tidiness. It was that a Tomorrowland experience should exist in the eleven months you are not at a festival.

The radio is where most of my time has gone, because a stream that dies on a train is a stream nobody trusts. It recovers from stalls on both platforms now, it knows the difference between a network that dropped and a person who pressed pause, and it stops fighting you when you walk back into signal. Getting there meant writing down how it fails before trying to fix it.

The other half is the content system behind the festival screens. Editorial teams shape what the app shows without waiting on a release, which matters when a lineup changes on the day.

What I shipped

  • Live radio stall recovery on both platforms
  • Playback that survives losing signal
  • CMS-driven festival screens
  • Content detail screens
  • Partners overview
Tomorrowland on iPhone
Tomorrowland on iPhone

BelgiumBrazilEditions worldwide, Belgium and Brazil among them

In the app

  • Every edition in one place, plus the eleven months you are not at one

    Every edition in one place, plus the eleven months you are not at one

  • Search across DJ sets and One World Radio shows

    Search across DJ sets and One World Radio shows

Where it landed

Flutter to RN

four codebases replaced by one, on Expo

2 platforms

live radio recovering from stalls on iOS and Android

No app-store release

needed for editorial teams to change what the app shows

What it taught me

Write down how a thing fails before you try to fix it. The radio only got better once the failure modes were on paper, because a stream that stalls, a network that dropped and a person who pressed pause look identical from the player and need three different answers. Guessing at that in code just moves the bug.