Aurora Design System

Creating a design system that can scale with Iterable's cutting-edge mar-tech suite of software

Overview

Aurora is Iterable’s design system, built to unify and scale design and development across the platform. It serves as a shared language between designers and engineers, ensuring consistency, efficiency, and accessibility in every product experience. Inspired by best practices in design systems and tailored to Iterable’s unique needs, Aurora empowers teams to build high-quality, reusable UI components while maintaining flexibility for innovation.

The challenge

Prior to Aurora, Iterable faced several challenges that slowed down development and created inconsistencies in the product experience:

  • Code and component duplicity: Multiple teams were building similar UI elements with slight variations, leading to maintenance overhead

  • Inconsistent styles and properties: Components in Figma and code had mismatched properties, making design-to-development handoff inefficient

  • Reliance on overrides instead of scalable variants: Engineers often used styled-component overrides instead of leveraging a structured component system, reducing reusability and scalability

My role

As the lead designer and product owner of Aurora since April 2022, I have driven its strategy, implementation, and adoption. I also routinely contribute and merge component code, ensuring that the system remains cohesive across design and engineering.

The work so far

Component Development & Documentation

  • Built a comprehensive Figma library with props, variants, and design variables aligned with frontend repository variables

  • Authored 179 documentation pages detailing component guidelines, usage, and best practices (Aurora Documentation)

Code Contributions & API Integrations:

  • Integrated Figma Code Connect APIs into our library, enabling engineers to copy-paste code snippets directly from Figma into their development environment. This solved the common question of “Does this component exist?” and streamlined the design-to-code handoff process

  • Implement an automated token pipeline using Figma, Supernova, and GitHub—allowing style changes in Figma to directly generate production-ready code

  • Contributed 150+ PRs to enhance UI quality, accessibility, and polish within Iterable


Collaboration & Governance

  • Defined Aurora’s governance process, drawing inspiration from Brad Frost’s model but tailored for Iterable’s needs

  • Hosted bi-monthly roundtables with designers to discuss patterns, collect feedback, and align on best practices

  • Conducted design sign-off reviews to ensure all projects meet Aurora’s standards before development

Communication & Adoption

  • Maintained, managed, and prioritized the design system backlog and roadmap

  • Provided weekly updates in a public Slack channel, keeping stakeholders informed on design system progress and updates

Lastly, I think the impact of design system work can likely go overlooked—not by design systems designers alone, but to all the members that use and contribute back to the system. I like to create fun ways for the team to interpret this work, as seen in the prototype below!

Aurora continues to evolve as Iterable AI becomes a more prominent piece of Iterable's story

A comprehensive documentation site about Aurora can be found at aurora.iterable.com

The Aurora Design System supports over 200 different engineers and designers building products for Iterable, making it notably complex and detailed.

I post updates (if available) every Thursday in an #aurora channel, to keep the team informed of changes.

Results & Impact

While the initial automation and library projects were time-boxed, the design system continues to evolve.

Being the product owner, I get to define the roadmap for the Aurora Design System and where the supporting engineers and I will focus our efforts next. Our current process is rather anecdotal and subjective, so I've enlisted engineers to help us collect metrics on our code components around usage, complexity (how many nested child components are there in a broader composition)—with this quantitative data our prioritization can be more objective, and we can understand the potential complexity and scope that certain projects may entail.

We've started to implement micro-interactions that help the product feel alive, refining accessibility standards, and exploring AI-driven design solutions to further optimize the workflow for designers and engineers.

With my technical background and systems mindset, I’ve helped Iterable establish a scalable, efficient design system that empowers my design, engineering, and product colleagues to deliver a consistent Iterable experience anywhere on the platform.


Reflections & future ideas


  • Expanding automation: Further automating Figma-to-code workflows to reduce manual implementation effort

  • Refining governance: Continuously improving contribution and adoption processes to balance flexibility and consistency

  • Scaling component libraries: Introducing more complex patterns and microinteractions to further enhance Iterable’s user experience

  • Measuring impact: Implementing clearer metrics to track Aurora’s effectiveness in reducing design debt and improving product cohesion

Aurora is a strategy for scaling Iterable’s product experience. Through continued refinement, collaboration, and innovation, it will remain a key driver of consistency, efficiency, and quality across the platform.

Many, many incredible designers have contributed their skills, feedback, and support of this incredible design system. I won't list them all here, but if we worked together on this and you're reading this—thank you for all of your effort and skills 🙏


© Dylan Mahler 2025

© Dylan Mahler 2025