Client
DirecTV
Year
2023-2025
Context
DirecTV Stream is service for live TV and aggregated streaming apps. The interface had recently been redesigned around a content-forward UI. An inherited component library existed, but the system meant to govern it did not.
Role
Design Systems Lead. Owned the architecture, the foundations, the component rebuild, the documentation library, and the governance model end to end.
Contents
· Frame
· The Problem
· The Approach
· Key Decisions
· Outcomes
· What's Outstanding
· Closer


Frame

There was a component library. There was no system.

An inherited library held most of the product's components; the rest were scattered across working files. Variants belonging to the same component lived in different files than their parents. Page organization mixed atomic levels and functions arbitrarily. There was no documentation beyond a few dev-handoff annotations, no contribution process, and no shared logic for how any of it fit together.

A design system is only as real as its structure and documentation. Without them, you have a pile of parts in active use, slowly decaying. That was the inherited library; I was brought in to make it a system.

The Problem

The inherited library had three structural absences, and they compounded.

No documentation. No reference layer at all. Designers had no place to check how a component was meant to be used; engineers had no source of truth for states, specs, or behavior. Every usage question was answered by asking a person or guessing.

No coherent structure. Components were grouped into buckets like "Elements," "Components," and "Content" — categories that mixed atomic levels and functions with no consistent logic. Overlays, action bars, and sliders all lived on an "Elements" page. A "Components" page held menus, labels, and assorted CTAs. Nothing had a predictable address. Finding a component meant knowing where someone had happened to put it.

No governance. No contribution model, intake process, versioning discipline, or onboarding. Components got added wherever was convenient; variants drifted into working files and never came back. The library couldn't take on new work in an orderly way, which is why the scatter kept growing.

Underneath all three: teams were actively using the library while it sat in this state. This couldn't be a greenfield rebuild done in isolation and swapped in.

The Approach

The system had to be replaced piece by piece, and nothing could be carried over on faith. An inherited system encodes arbitrary past decisions, and the only defensible way to replace them was to re-derive each choice from evidence. Every category ran the same evidence-driven cycle (industry research and comparative analysis against systems like Material, Carbon, Fluent, and Atlassian, then audit, consolidation, rebuild, documentation, and governance), applied per sprint rather than as one upfront pass.

The hardest calls were about restraint. Coming off building the Cast design system at Google, I'd worked alongside the Material team and knew its highly flexible component model and semantic token structure well. My first instinct was to port that sophistication wholesale. The overreach showed up first in component configuration. The instinct to consolidate: collapse similar components into shared, flexible variant sets, proved unfitting. Many DIRECTV components were highly specialized and tied to specific product features. The system needed specificity, not customization. Two content cards that are always used in two distinct media carousels and have different layout and property needs did not belong in the same variant set; merging them would make accurate properties configuration long and tedious, exactly where selection errors enter. So consolidation became a usage-driven judgment call: merge where components genuinely overlapped, keep them separate where feature-specificity made a shared set a liability.

The same overreach showed up in token and style semantics. Material's paired color roles earn their complexity when components sit on many backgrounds and carry many surfaces; DIRECTV's didn't, and porting the full apparatus produced ambiguity instead of clarity. The semantic instinct is to call a field "second line of text" so it scales, but when that line is always marketing copy on a card that only appears in one component, naming the prop "marketing copy" leaves no room for guessing.

The structural rebuild was the foundation everything else sat on. The move was to replace the inherited buckets with a taxonomy where a component's place was determined by what it was and what it did, so its location followed from the structure itself.

The rebuild also had to stay invisible to the people relying on it: nothing could break a live instance. That meant a strict building-and-migration discipline — a consistent standard for how components were built, with a migration method that preserved component connectivity as they moved into the new library.

Then came the missing layer: documentation, the structured reference that turns a component file into a system teams can actually learn and use.

No items found.
Measurable Impact

Key Decisions

Atomic-and-functional page architecture. Foundations separated cleanly. Components ordered atomic-to-composite, with a naming convention that gave every variant a predictable address. Structure as findability.

A semantic color and role layer. System palettes, text roles, interaction states, semantic status colors, calibrated to the product's needs rather than a larger system's full apparatus.

Variant consolidation. Scattered and incomplete variants unified in feature and function — consolidated by usage, missing variants built net-new or migrated in.

Ways of Working . A formal standard for how components were built (naming, sizing, auto-layout, property discipline) and a defined migration method that took components through the correct, safe path, preserving instance links in working files without breaking them.

The Net New documentation library — every component category and foundation with a dedicated document structure: Overview, Usage Guidelines, Specifications, Best Practices. Authored in Figma, co-located with the components, then mirrored into Confluence.

A governance operating model. A controlled intake and contribution model that let the system absorb new work in order instead of accreting scatter — including a holding-tank staging page where components were vetted before entering the system.

Outcomes

The system became the live foundation for the redesigned DIRECTV STREAM 10-foot experience, adopted across 12 consuming teams. At handoff the system held 53 published component sets (223 library components), 337 styles, and 267 variables across 4 variable collections.

Detaches held in the low double digits across the entire year, against a library taking roughly 7,000 component and token insertions a week. Heavy daily use with almost no break-away is the signal that mattered — the components were trusted, the structure held.

The scatter resolved: duplicated and incomplete sets collapsed into a coherent published library, every component at a predictable address. The documentation went live as the system's reference, giving designers and engineers a single place to learn how the system was meant to be used.

Considerations

What's Outstanding

Tokenization came late. There were no variables or tokens when I arrived, and for most of my engagement the token layer was held out of scope by the XD director, a deliberate resourcing call. Toward the end of my time I built the four existing collections that exist now, enough of a foundation that the team could carry the tokenization forward when time and resourcing allowed.

The Confluence migration was likewise in progress at handoff: foundations and the full Actions category live, the remaining categories staged or underway. The online hub was on its way to being the complete public-style reference.

The system was scoped to 10-foot surfaces. Budget and timeline meant the redesign shipped for television first. But the foundations were built to scale, with tokenized values and responsiveness — so extending the system to mobile, tablet, and web was a matter of applying the existing structure to new surfaces, not rebuilding it.

What Made It a System

Component optimization was a great step forward to a mature and effective system. What made the biggest difference was the documentation that made the components teachable, the structure that made them findable, and the governance that made them safe to change. That's what separates a component file from a design system.

Building the operating layer allowed the design system survive its own use — the intake, staging, versioning, and review models that lets it absorb work from across the org. Onboarding closed the last gap: no one had been trained in design-system practice, so I brought the IXD team up to speed on building against the system and walked engineering through dev-mode and the specs.

The real lesson was recalibration. A design system has to fit the team it serves, not the gold standard it's measured against.

( More Work )