My role
Sr. Product Designer — Design Systems, Systems thinking, Visual Design, Iconography, Interaction design
Timeline
14 months—Launched in August 2023
Team
Bethany Schwanke, Director of Product Design
Kelly Hanner, Lead Product Designer
Joyce Leung, Sr. Staff SWE
Raymond Eng, SWE
Victor Perez, SWE
Jordan Benning, SWE
Overview
In 2022, Realtor.com launched the redesign of its mobile app and saw growth in usage. As a result, the website and app differed in look and feel—and users noticed.
I along with the design systems team led the end-to-end design direction of the web experience. We launched the third version of our design system, scaled its coverage, and leveraged it to deliver the redesign of Realtor.com
The website's launch saw revenue from sales rise by 7%, and rental revenue by 1.5%. User saved searches increased by 18% on for sale properties, 9.7% in searches, and 2.2% on listings. The new version of the design system increased its adoption by 80%.
Context
Establishing a design system team
The problem
A disjointed app and web experience
Pain Points
Besides the mismatched experience between the website and app, there were other points of friction with the current design system:
Product inconsistency
Component and visual inconsistency across the web experience.
Accessibility issues
Components built by teams missed accessibility requirements.
Misaligned code and design
Design assets and code were misaligned in functionality and style.
Poor guidance
Users struggled to discover the full capabilities of our components.
Low adoption
Teams created custom components, leading to bloat in Storybook and Figma.
Over complex
Many components were too complex, lacked functionality needed, or were no longer used.
Goals
The design system overhaul provided an opportunity to improve process, advance accessibility, provide written guidance, and increase adoption of the design system. Our full set of goals included:
Establish tokens
Bring stored values from the app and apply them to the web.
Improve accessibility
Meet WCAG 2.1 AA accessibility standards and integrate them into components.
Mirror design and code
Match nomenclature, functionality, and styling between coded components and design assets.
Better support users
Support designers and developers through written guidance, office hours, and feedback
Increase system adoption
Increase the percentage of system usage in product development
Component clarity
Craft components that better met the need of our users.
The approach
To accomplish the web uplift, the work was separated into several phases: design, engineering, testing, and roll-out.
Specifically, the foundations I owned were:
Typography, Iconography, Brand assets, Documentation templates
Within this, I took lead on components and patterns like:
Cards, Tables, Skeleton loading states, Toast messages, Inline messages, Breadcrumbs, Pagination, Tags, Global navigation, Global footer, Global banner
The work flow
Auditing component usage
I started by taking inventory of where and how a component was used in the product. Through this, I could identify how teams relied on the component, how they were used, unconventional uses and any inconsistencies in styling.
Interviewing designers to identify component need
I interviewed designers across teams to understand their component needs. These needs varied from component guidance, missing or additional behavior, asset controls, and training.
Usability and accessibility improvements
With a goal of meeting WCAG 2.1 AA requirements, I outlined existing issues with the legacy components. These ranged from missing or inconsistent interaction states, insufficient text sizes, contrast issues, and inadequate touch targets.
Designing new components
I built each component and its variants out in Figma using auto-layout, our new token set, variables, and robust controls. My goals were as follows:
Visual testing components
I then took components through visual testing. I tested their limitations, the behaviors, the controls, and eventually found out what didn't work. Afterwards I reviewed the components with my design team.
Documentation
After testing and revisions, I documented how to use the component. I included references to best practices and created visual examples of it in use within the product experience.
Hand-off
Then, I handed off components to our engineering team so they could begin development. When a demo was ready for review, I would test each component’s functionality, usage of proper tokens, interaction states, and review their documentation for engineering. We followed this process, one component at a time, instead of redesigning the entire system in one go.
Establishing foundations
We began by creating tokens based on the app’s monochromatic theme. Color, iconography, elevation, radius, border, and typography were accounted for. This would make designing the web components easier.
A Monochromatic theme
Design Tokens
New typography
Iconography
Redesigning components
With the foundations of our new design system in place, we moved onto redesigning our component library. I focused on all permutations of our cards, messaging components, tables, skeletons, and more.
Cards
Inline message
I also worked on new additions to the system, like the inline message. This component is intended to communicate contextual information in a neutral, warning, or negative way. I noticed that designers created variants of something similar to an inline message, but with inconsistent styling. I wanted to establish this as a known pattern and reinforce our use of color as status within our system
Toast message
I worked on our toast messages with a similar goal as the inline message. Toasts would follow the new color tokens and reinforce color with semantic meanings.
Tables
Our system lacked a table component. However, I discovered that our Storybook had a pattern similar to a table. So, within Figma, I designed the table to be as modular as possible. But Figma had its own limitations with tables. With code, more functionality was possible. So I wrote documentation to reflect the capabilities of tables in code. This documentation illustrated to designers that more was possible.
Skeletons
I redesigned our skeleton component as a system of subcomponents. Now, users would be able to use shapes as skeleton text to the exact line-height of our type tokens.
Rollout
Testing the system
Revenue-affecting components
Sandboxing the new visual look and feel
Launch
Reflection
Narrow scope on component functionality
It's tempting to fill out a component's function to all "standard" use cases. When the case arises then expand function, but never before.
Revisit tokens after all components are created
One con of the piecemeal approach is that small style inconsistencies made it to launch
Engineers and designers interact with components differently. How you build controls for those should be tailored to them.







