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

Role: Staff Product Designer,

MobileTimeline: 2021–2024

Scope: iOS & Android apps, 10+ core components

Impact: 50,000+ lines of legacy code removed · ~50% faster Android build times · ~80% of UI migrated to system components

Problem

The issue wasn’t just visual inconsistency — it was speed. Sprout’s mobile apps relied on so much custom UI that dark mode and tablet layouts routinely broke, engineers spent weeks maintaining legacy code, and design debt slowed down new features. At the same time, our iOS and Android apps felt disconnected from each other and from Sprout’s web brand.

Without a unified, native design system, we risked slower delivery, higher maintenance costs, and a fragmented user experience.

Before

Goals

  • Replace brittle custom UI with reusable, native components.
  • Align Sprout’s brand identity across iOS, Android, and web.
  • Improve accessibility, dark mode reliability, and tablet support.
  • Reduce engineering overhead and speed up feature delivery.

Approach

iOS: Iterative Improvements in Sprints

I embedded design-system work directly into sprint planning through an “Iterative Improvements” epic. Instead of pausing product development for a big-bang overhaul, I shipped steady progress: refreshing avatars, refining secondary navigation, updating buttons and bottom sheets, and modernizing the app bar. Each release replaced legacy UI with system components while giving PMs visible value.

Android: Foundations → Components → Gallery

With the Android Engineering Manager, I scoped a Material 3 foundation of color, typography, and spacing. We built and branded core components, then created a gallery as a single source of truth. Timing this work with our Jetpack Compose migration allowed us to move features directly onto the system rather than in parallel.

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

Phase 2: Stylize Components & Finishing Design Gallery

Material 3 limitations. This teamwork enabled us to finalize most of the gallery.

Documentation & Governance

I partnered closely with engineers through regular syncs to ensure alignment on component behavior, platform nuances, and migration strategy. Alongside this collaboration, I created dedicated Figma design systems for both iOS and Android, which included usage guidelines, component variants, and do/don’t examples. These design libraries gave engineers a clear reference point and reduced ambiguity during handoff, helping us retire legacy components and adopt new ones with confidence.

Results

  • ~80% of Android UI migrated to system components.
  • 50,000+ lines of legacy UI removed, reducing maintenance and regression risk.
  • Android build times cut by ~50%, accelerating engineering delivery.
  • Dark mode and tablet support stabilized, improving accessibility and usability.
  • Improved design-engineering collaboration through shared documentation and a component gallery
  • Introduce cross-platform tokens to keep brand expression consistent across iOS, Android, and web.
  • Add automated screenshot testing in CI to catch regressions during OS or framework updates.
  • .

What Came Next

  • Tablet & foldables: Expand adaptive patterns for iPad, Android tablets, and foldables.
  • Message Cells integration: Build on the design system foundation to standardize Message Cells across mobile and web, ensuring consistency in one of Sprout’s most critical UI surfaces.
  • Widgets: Create system-aligned mobile widgets (iOS and Android) that reuse DS components, keeping entry points lightweight but branded.
  • macOS support: Extend the system to macOS (desktop app) so engineers can share primitives and tokens across platforms, speeding development while keeping design language cohesive.
  • Expand the system for tablet and foldable layouts
  • Add automated screenshot testing in CI to catch regressions during OS or framework updates.