← All work

Fuse

Senior iOS Engineer2021–PresentiOS · tvOS · visionOS

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

ONE SOURCEVARIES PER BRANDSHIPS ASShared coreCommandBuilderInteractor · RouterTemplateaccessibility,built in from the startDesign tokensFigma configBackend-drivenplacementno forks, no per-brand branchesiOSphone & tablettvOSfocus-engine navigationvisionOSspatial18 APPS · 2 BRANDS · ONE CODEBASE
Eighteen apps ship from one source because everything that differs between brands — tokens, Figma configuration, component placement — lives outside the core rather than in a fork of it.

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.