0-1 Enterprise Design System

Enterprise design system pieces

MVP Enterprise SaaS design system for internal game management tools at Riot Games, creating a safer workflow and improving developer efficiency by designing solutions informed by the needs of developers.

#1

Lower Costs + Improved Scalability

#2

Faster + Safer Deployments

#3

Dense + Scannable Information

#1

Lower Costs + Improved Scalability

#2

Faster + Safer Deployments

#3

Dense + Scannable Information

Company + Project Intro

Riot Logo

Company TLDR

Riot Games

Global, multi-game studio where each product created countless one off solutions. Unifying design systems would reduce fragmentation, maintenance costs, and shipping times.

Riot Offices
Riot Logo

Company TLDR

Riot Games

Global, multi-game studio where each product created countless one off solutions. Unifying design systems would reduce fragmentation, maintenance costs, and shipping times.

Riot Offices
Riot Logo

Company TLDR

Riot Games

Global, multi-game studio where each product created countless one off solutions. Unifying design systems would reduce fragmentation, maintenance costs, and shipping times.

Riot Offices

Project Overview

Why would developers benefit from their own design system?

Value Proposition

Players and developers have distinct goals and needs, and Riot had a player facing system, but not one for internal tooling. A unified tooling design system could streamline development, ensure consistency across teams, reduce technical debt and reliance on external frameworks. 

Objectives

  • Create a unified design language speaking to the needs of our specific user base

  • Reduce design + technical debt across silos

  • Standardize workflows for faster deployments

  • Accommodate dense information for power users

  • Support both technical and non-technical user personas

  • Scale to support future internal tooling across Riot

  • Maintain developer confidence (safety patterns)

Context & Goals

Riot never had a standardized internal design system, and as a bottom up org, where workflows often were silo'd, multiple teams would spin up their own resources. Maintaining multiple design systems across organizations over time becomes increasingly costly and unscalable, despite having related user needs.

Our approach was guided by four core design principles. Rather than imposing top-down standards, we researched each team's unique constraints and built components that satisfied shared needs while allowing customization where needed.

Process & Solutions

Scalability

Riot suffered from bottom up, silo'd thinking across teams, which meant there was often duplicate work created on different teams which should have been shared to reduce overhead. With this project, we had the unique chance to create a single, broadly usable design system that worked appropriately across teams.

Show me how it was done...

Delivered Work

Portal Design System - Dark Buttons
Portal Design System - Light Buttons
Severity Colors
Portal Design System - Text Colors
Portal Design System - Icons
Portal Design System - Popovers
Portal Design System - Selections
Portal Design System - Typography
Portal Design System - Dark Buttons
Portal Design System - Light Buttons
Severity Colors
Portal Design System - Text Colors
Portal Design System - Icons
Portal Design System - Popovers
Portal Design System - Selections
Portal Design System - Typography
Portal Design System - Dark Buttons
Portal Design System - Light Buttons
Severity Colors
Portal Design System - Text Colors
Portal Design System - Icons
Portal Design System - Popovers
Portal Design System - Selections
Portal Design System - Typography

Information Density

These components helped developers display and interact with complex data.

  • Component: Dense Table Purpose: Optimized for high-row-count datasets. Sticky headers, sortable columns, filterable cells, pagination. Prioritizes information over whitespace.

  • Component: Collapsible Section Purpose: Progressive disclosure. Show summary by default, expand on click for details. Reduces cognitive load without hiding information.

  • Component: Multi-Select Filter Purpose: Complex filtering for large datasets. Users select multiple criteria, see results update in real-time. State persists per user.

  • Component: Severity / Status Badge Purpose: 5-level severity system (Dev, SEV1-5) using color + icon + text. Makes priority obvious at a glance.

  • Component: Data Summary Card Purpose: Show key metrics (count, average, percentage change). Used in dashboards for quick scanning.

I want to know why this was important...

Delivered Work

Input Fields
Input Field States
Table Data
Targeted search Fields
Tab Data Section
Data Dropdown
Table Data
Table Data Dropdown
Input Fields
Input Field States
Table Data
Targeted search Fields
Tab Data Section
Data Dropdown
Table Data
Table Data Dropdown
Input Fields
Input Field States
Table Data
Targeted search Fields
Tab Data Section
Data Dropdown
Table Data
Table Data Dropdown

Safety & Trust

How to make developers feel confident making changes?

These components helped developers feel confident and in control.

  • Visually distinct button styling making risk obvious.

  • Informative confirmation dialog/modals for destructive actions to reduce errors.

  • Reducing accidental deletions following Github "type to confirm" patterns.

  • Disabled form fields when actions aren't allowed, and descriptive tool tips.

  • Sortable history of actions on a resource, helpful for retracing prior actions.

Show me why this was invaluable to the goals...

Delivered Work

Destructive Modal
Warning Modal
Table Edit Dropdown
Confirmation Buttons
Destructive Modal
Warning Modal
Table Edit Dropdown
Confirmation Buttons
Destructive Modal
Warning Modal
Table Edit Dropdown
Confirmation Buttons

Key Insights

What we learned from discovery and research

Insight 1: Design systems are equal parts design and organizational alignment.

The hardest part wasn't designing components—it was getting five teams to agree on one system when they'd built five different ones. We needed stakeholder buy-in, clear value messaging, and proof of impact before anyone would adopt.

Insight 2: Customization is a feature, not a bug.

Teams wanted consistency, but they also wanted flexibility. The answer wasn't "use it exactly as shipped"—it was "use the base system, customize the tokens and theme for your team's needs." This balance made adoption possible.

Insight 3: Some developers are power users, some are new, or less familiar users.

We designed for both - Power users required granular code level customization. Less familiar users lack that same context, and would benefit from more of a guided experience.

Insight 4: Safety patterns unlock adoption.

Trust that we're building a system that lowers live incidents, confidence increases for users. Once they understand these tools despite being new to them, were built with their workflow improvements in mind, trust in a new system could be established, and built upon.

Final Outcomes

What was the result?

The launch of the design system was an initial success, but shortly after all the hard work was forced to be removed for an out of the box option.

  • The project started as a two team collaboration, though one quietly pulled back mid project.

  • Fewer resources led to inconsistent UI implementation, resulting in constant build breaks.

  • Despite our best efforts, by the time the problems were identified, it became less work to use an external framework than fix all the existing problems.

  • Despite replacing the custom UI with an external framework, we were able to retain the "How & Why" patterns that provided safety, trust, and information density required for our workflows.