Fuse
Eighteen streaming apps, two brands, three Apple platforms — and one codebase that has to survive every team that touches it.
- Role
- Senior iOS Engineer
- Client
- Warner Bros. Discovery, via Robosoft
- Platforms
- iOS · tvOS · visionOS
- Scale
- 18 apps · 2 brands
- Coverage
- 90%+
- Since
- 2021
The problem
A shared codebase behind eighteen shipping apps changes what a decision is. Every choice is made on behalf of teams you will never meet, on schedules you do not control, for brands whose requirements arrive after your code does.
The question stops being "does this work" and becomes "what does this cost whoever inherits it". A shortcut that saves an afternoon here is paid for eighteen times, by people who cannot see why it was taken.
The decisions
Per-brand variation lives outside the core
What differs between brands is small and bounded: design tokens, a Google service plist, the app plist and ATT entries, assets and localisations. Everything else is shared. The moment a brand requirement is satisfied by editing the core, the next brand pays for it — and the fork that follows is permanent.
One owner per computed value
Any number computed twice will disagree eventually. When a bug needs four fixes at four call sites, that is not a hard bug — it is a value with no owner. Across eighteen apps that disagreement is not a display error; it is eighteen support threads.
Coverage past 90% as the price of speed, not a target
The number was never the goal. It was what made it possible to change shared code on a Friday and still sleep — which, on a codebase this many teams depend on, is the difference between shipping weekly and shipping carefully once a quarter.
Accessibility built in, not retrofitted
It was built across the whole platform from the start. Retrofitting it later would have meant doing it eighteen times, against eighteen release schedules, by which point the shortcuts are load-bearing.
The remote is a first-class input
tvOS navigation runs through UIFocus Environment rather than being approximated. A focus engine is not a mouse and pretending otherwise produces a TV app that is technically usable and actually miserable.
The result
- 18Apps from one codebase
- ~1 dayTo stand up a new brand
- 90%+Test coverage
- 2 — Beam & TVEBrands shipped
Eighteen apps across two brands — Beam and TVE — shipping on iOS, tvOS and visionOS from a single codebase, held at 90%+ test coverage.
Standing up a new brand is now about a day's work. That is the whole return on the architecture: because the deltas are bounded and none of them live in the shared code, a new app is configuration rather than engineering — and it stays that way as the count grows.