Role
Product Designer
Team
3 Product designers
5 Engineers
1 Product manager
+ the entire product design team
Timeline
8 months
Platforms
React web, mobile web, iOS native, Android native
Challenge
Context
To successfully deploy a complete app redesign, product designers and engineers required a fully designed, documented, and built design system across native iOS and native Android (and we also needed to update the existing React web design system).
Research
To do so, the DS team sought to understand the loop from the perspective of different key stakeholders. Qualitative 30 min. interviews were conducted with: [3] Product Managers, [3] Designers, [2] Web Developers, [2] iOS Developers, [2] Android Developers and [1] Content Manager.
Through understanding our own system, a lot of problems began to uncover themselves. For example, it became clear that because not everything was built, there was a lot of wasted time between engineers and designers trying to juggle what they could and couldn't use.
Even doing a preliminary inventory of DS components painted bigger picture of what the system could and couldn't provide.
There was also a lack of documentation parity between what was provided in design libraries and in documentation of the built components. Because of this lack of parity, even if members of the design system team communicated to our product design partners what was available, the same information didn't hold true when passed down to engineering.
1. Piecemeal availability was hindering progress.
2. Existing DS design and developer documentation was fragmented.
3. Components and assets weren’t aligned with feature team needs and use cases.
Vision
Design roadmap
Design systems can start to feel like a mountain of small tasks, so as a design system team we took the time to properly prioritize our goals.
Priority #1
Identify key components to rework
Test with real use cases
Iterate and identify pitfalls
Priority #2
Assess how partners use documentation
Identify best fit for use case at BlockFi
Priority #3
Establish transparent DS working culture
Open developer tools to designers
Create new communication channels and ways of ingesting DS components
Priority #1
Lists were used in some capacity by different designers, all working with their own version. As pages such as Trading and Settings were built, they were going to rely heavily on Lists and the component needed to be thought through from end to end.
Compared to Lists, Headers were first defined by redesign designers. However, people were still using individual header components throughout flows, and as a global navigation component, Headers needed to be fully realized in order to be a functioning design system asset.
For example, in gathering use cases, I was able to understand what exactly helps shape BlockFi's needs out of a List component (these are only a few).
With Headers especially, it was key to identify all the properties that would make up a scalable component from the design side. Some of these would include:
Landing vs. Scroll Interactions
Components Available vs. New
iOS + Android Native prebuilds
Dark Mode Considerations
Spacing, Padding Adjustments
Icon Button Interaction Overrides
A11y Choreography
Changes for 320px, 375px, 360px
etc.
When building, in order to reflect how components would be used and built, both components followed an atomic architecture to support scalability and to develop parity between components in Figma libraries and components in the repositories.
Priority #2
Different components require different types of documentation. For example, Lists were more easily built through understanding variant states, while Headers needed more documentation around on-scroll behavior.
By documenting a lot of the accessibility requirements that we wanted to meet at the very beginning, the DS team signaled that a11y was a non-negotiable consideration when building components.
Covered in documentation: Voiceover Choreography, Large Screen Viewers, Dynamic Text Scaling, Color Contrast Checks
Priority #3
Half of design systems is actually getting things built, so as a design system team we looked to embed our design work as closely as we could to engineer workflows.
For example, we reorganized and articulated the full DS workflow for designers and engineers to align together on an agreed process.
In line with the Product QA step we aligned on, testing for development was done through Storybook for React Web, Testflight instances for iOS and Android APKs for Android.
Ex. WIP for Lists being built by the React team, demo'd through our staging Storybook.
Results
Impact on launch velocity (tracking JIRA statuses before & after)
Increase in code adoption, aka DS instances cited across newly merged cod branches
Figma library component inserts, across 90 days (guesstimated used in 96% of new features)
Reflection
A willingness to listen and developing open lines of communications creates a more resilient and flexible system. Taking the time to workshop blockers allows teams to arrive at a north star vision, solutions for tomorrow and solutions for today, which in turn gives design stakeholders autonomy and ownership allowed for a closer working, living, and breathing system.
Also, nested instances are great. The closer to code architecture and semantics, the better!