Native iOS & Android Design System
Sprout Social • 2021-2024
Project Hero Image

Brief

Sprout's iOS and Android applications are built natively. However, until five years ago, both applications rarely used OS components, opting instead for custom UI that wasn't part of any design system. Over the past five years, I've taken the initiative to address these issues.

Task

I focused on creating a design system that integrates native components while aligning with Sprout's web app visuals.

iOS Problem

Technical Issues:

  • Heavy reliance on custom components instead of native iOS elements
  • Poor tablet optimization with stretched mobile interface
  • Non-native page transitions and animations
  • Complex custom color implementation making dark mode support difficult

iOS Iterative Improvements

Proposed a process to incorporate design system work into sprint planning to show value to product managers.

Design created an epic with tickets that could be picked up during sprints. This allowed us to update:

  • Avatar updates
  • Secondary Navigation updates
  • Open Externally action (5th most popular action)
  • Buttons Approval Detail Pages
  • Bottom sheet replacement
  • App bar
  • Divider clean up

Android Problem

Android app's appearance in 2019, had minimal implementation of Google Material Design.
Problems included:

  • Icons throughout the app had inconsistent sizing and spacing
  • The pull-to-refresh feature displayed Google Material's default purple color, failing to follow native theming
  • List controls lacked consistency, alternating between left and right positions
  • Colors weren't accessible and didn't align with Sprout Social's color system (while Sprout's primary color is blue, the app used green instead)


Android Design System

In mid-2023, I collaborated with the Android Engineering manager Ryan to create a design system. We leveraged spare time to build core components, aiming to showcase the system's benefits to our product manager while aligning with the team's Jetpack Compose migration.

Up front work

The upfront work phase showed impressive progress:

  • Achieved more in first two months than previous four years⁠
  • Developed 6-7 new components aligned with upcoming features by end of 2023


Key deliverables included:

  • Foundational styles
  • General UI components (buttons, controls, lists...) 
  • 2 Custom components (top application bars and bottom sheets)⁠

However, the team faced some challenges including documentation discrepancies and migration issues with Material Design⁠

Phase 1: Foundational & Out-of-Box Google Material 3

Implemented foundational styles and default Google Material 3 components to understand codebase behavior and address inconsistencies. We determined which components to use as-is or customize.

Using original component styling improved maintenance and utilized built-in accessibility and state features.

Phase 2: Stylize Components & Finishing Design Gallery

Stylized Components

Building on GM3 learnings, we incorporated Sprout's style into identified components. We integrated elements from Seeds, our web design system, for cross-platform consistency.


Design Gallery

This phase boosted engineer-designer collaboration. We secured a dedicated associate engineer for 1.5 quarters for the design system. Through regular meetings and reviews, we completed our initial design gallery, uncovering subtle Google Material 3 limitations. This teamwork enabled us to finalize most of the gallery.

Before & After Mockup Iterations

To address challenges with concurrent development and identify necessary components, I audited the existing Android app. This audit informed iterations on the app's new look and helped determine which components to utilize or custom-build in phase 3.

Android Design System Results

Components built from Google Material will replace 80% of Android's UI, with custom components covering the remaining 20%.

Initial results from 5 features using the new design system show:

  • 50,000+ lines of code removed
  • 50% reduction in build time
  • Improved team collaboration