Stride

Design system for the Apple Design Award-winning fitness tracking app. Built for everyone, not just athletes. Stride counts.

Apple Design Award 2023 Editor's Choice iOS + watchOS

Overview

Stride is a design-forward fitness tracker and social network created by Luke Beard. The app delivers workout stats in beautiful, shareable formats — dynamic charts, animated 3D maps, AR experiences, and gorgeous cards with the signature oval photo mask.

Brand Identity

Oval Mask
Photo Frame
Route View

The oval is the signature brand element — originally a photo mask for workout cards, it now appears throughout the identity. Combined with SF Symbols, SF Pro Rounded typography, and vibrant gradients, it creates a distinctive visual language.

Design Philosophy: "We wanted to create something almost contrary to the market incumbents that we genuinely enjoy using." Inclusive by design — celebrating dog walkers, stroller runners, and casual movers alongside athletes.

Key Visual Principles

Dark-First Design
Dark backgrounds with vibrant accent colors for high contrast and visual impact.
The Oval
Signature oval shape as recurring brand element in cards, masks, and identity.
🎨
Shareable Beauty
Every workout becomes a shareable, beautiful artifact with customizable layouts.
🔒
Privacy Controls
Granular eye-icon controls for exactly what metrics are shared with friends.

Colors

A dark-first brushwork with vibrant, activity-coded accent colors. The brand gradient (Flare) runs from orange to red.

Brand

Flare Gradient — #FF6B35 to #FF3B30
Flare Orange
#FF6B35
Primary brand accent
Flare Red
#FF3B30
Gradient end, intensity

Backgrounds

Black
#000000
Primary background
Dark Gray 900
#1C1C1E
Card backgrounds
Dark Gray 800
#2C2C2E
Elevated surfaces
Dark Gray 700
#3A3A3C
Tertiary surfaces
System Gray 6
#F2F2F7
Light mode background

Text

Primary Text
#FFFFFF
Headings, primary content
Secondary Text
#8E8E93
Labels, captions
Tertiary Text
#636366
Placeholders, timestamps

System Accents

System Blue
#0A84FF
Links, active states
System Green
#30D158
Success, completed goals
System Yellow
#FFD60A
Medals, achievements
System Purple
#BF5AF2
Premium, special achievements
System Teal
#64D2FF
Swimming, cool metrics
System Pink
#FF375F
Heart rate, intensity

Activity Colors

Running
#30D158
Cycling
#FF9F0A
Walking
#64D2FF
Hiking
#BF5AF2
Swimming
#0A84FF

Typography

Built on Apple's SF Pro family. SF Pro Display for headings, SF Pro Text for body, SF Pro Rounded for playful stat displays. Heavy use of SF Symbols throughout.

Designer Quote: "SF Symbols is the single greatest contribution to design Apple has ever made." — Luke Beard

Type Scale

stat-large
5.2
64px / 68px / 800 / -1px
hero
48px Hero
48px / 52px / 800 / -0.5px
display
Large Title
34px / 41px / 700 / 0.37px
title1
Title One
28px / 34px / 700 / 0.36px
title2
Title Two
22px / 28px / 700 / 0.35px
title3
Title Three
20px / 25px / 600 / 0.38px
headline
Headline Text
17px / 22px / 600 / -0.41px
body
Body text for primary content and descriptions.
17px / 22px / 400 / -0.41px
callout
Callout secondary body text
16px / 21px / 400 / -0.32px
subheadline
Subheadline supporting text
15px / 20px / 400 / -0.24px
footnote
Footnote text for timestamps and metadata
13px / 18px / 400 / -0.08px
caption1
Small caption label text
12px / 16px / 400 / 0px
caption2
Smallest badge text
11px / 13px / 400 / 0.07px

Font Weights

Regular 400 Medium 500 Semibold 600 Bold 700 Heavy 800 Black 900

Spacing

4px base unit with a consistent scale. Screen padding is 16px, card padding 16px, section gaps 24px.

Scale

1
4px
2
8px
3
12px
4
16px
5
20px
6
24px
8
32px
10
40px
12
48px
16
64px
20
80px
24
96px

Common Usage

TokenValueUsage
screenPadding16pxPaystreamtal padding for all screens
cardPadding16pxInternal card padding
sectionGap24pxVertical gap between sections
listItemGap12pxGap between list items
inlineGap8pxGap between inline elements

Borders & Shadows

Subtle borders with low-opacity whites. Dark mode relies on elevation through background lightness rather than heavy shadows.

Border Radius

8px small
12px medium
16px large
20px xlarge
24px xxlarge
50% oval
999px pill

Border Colors

TokenValuePreview
border-defaultrgba(255,255,255,0.1)
border-subtlergba(255,255,255,0.05)
border-emphasisrgba(255,255,255,0.2)

Shadows

Small
0 1px 3px rgba(0,0,0,0.3)
Medium
0 4px 12px rgba(0,0,0,0.4)
Large
0 8px 24px rgba(0,0,0,0.5)
Elevated
0 12px 40px rgba(0,0,0,0.6)
Glow
0 0 20px rgba(255,107,53,0.3)

Buttons

Primary actions use the brand orange. Secondary uses translucent white. Ghost uses system blue for text-only actions.

Variants

Sizes

Shapes

Button Tokens

PropertyPrimarySecondaryGhost
Background#FF6B35rgba(255,255,255,0.1)transparent
Color#FFFFFF#FFFFFF#0A84FF
Border Radius12px12px12px
Padding14px 24px14px 24px14px 24px
Font Size17px17px17px
Font Weight600600600

Cards

The workout card is the core visual identity — a shareable summary with the signature oval photo mask, route map, and beautiful stat typography.

Workout Card

🏃 Running
Route Map
5.21
miles
42:18
Time
8'07"
Pace
156
BPM
🚲 Cycling
Route
24.8
miles
1:32:05
Time
16.2
MPH
842
CAL
🚶 Walking
Route
2.1
miles
38:22
Time
18'15"
Pace
4,612
Steps

Card Tokens

PropertyValue
Background#1C1C1E
Border Radius16px
Padding20px
Border1px solid rgba(255,255,255,0.1)
Hover TransformtranslateY(-2px)
Hover Shadow0 12px 40px rgba(0,0,0,0.6)
Stat FontSF Pro Rounded / 48-64px / 800
Oval Maskborder-radius: 50%

App UI Patterns

Key UI patterns from the Stride app: activity feed, goal rings, achievement medals, and the Andi mascot.

Activity Feed

Sarah M.
2h ago
5.2 mi
Distance
42:18
Time
8'07"
Pace
Alex K.
4h ago
8.4 mi
Distance
2:15:30
Time
1,842 ft
Elevation

Goal Rings

75% 15 / 20 mi
Distance
Weekly Goal
60% 1800 cal
Calories
Weekly Goal
90% 4.5 / 5 hrs
Time
Weekly Goal

Achievement Medals

🏆
100 Miles
🌎
Earth Day
💜
Women's History
❄️
Winter Challenge
🔥
Streak - 30 Days
Medals are rendered as 3D SceneKit objects with rotation animation on unlock (1200ms spring easing). Themed for seasonal events and milestones.

App Screen Mockups

Activity
You
Just now
3.1 mi
Dist
25:40
Time
8'17"
Pace
Jamie
1h ago
Morning hike — 4.8 mi
Goals
Distance
15 / 20 mi
Calories
1,800 / 3,000
Time
4.5 / 5 hrs
Profile
Runner123
Mkindred since 2023
247
ACTIVITIES
1,842
MILES
12
MEDALS
RECENT MEDALS
🏆
🌎
🔥

Layout

Mobile-first layout system. Activity feed uses single column; workout card gallery uses 2-column grid.

Breakpoints

NameValueUsage
phone375pxiPhone standard
phoneLarge428pxiPhone Pro Max
tablet768pxiPad portrait
desktop1024pxiPad landscape / desktop
wide1440pxWide desktop

Max Width

ContextValue
Exposure page content960px
App content area100% (screen width)

Z-Index Scale

LayerValue
base0
card1
sticky10
overlay50
modal100
toast200

Motion

Spring-based animations for interactive elements. Longer durations for 3D medal rotations and route fly-throughs.

Duration

TokenValueUsage
instant100msMicro-interactions, toggles
fast200msHover states, button presses
normal300msPage transitions, standard
slow500msElaborate animations
medal1200ms3D medal rotation on unlock
route3d2000ms+3D route fly-through animation

Easing

TokenValueUsage
defaultcubic-bezier(0.25, 0.1, 0.25, 1)Standard transitions
springcubic-bezier(0.34, 1.56, 0.64, 1)Bouncy interactions
easeIncubic-bezier(0.42, 0, 1, 1)Exit animations
easeOutcubic-bezier(0, 0, 0.58, 1)Enter animations
easeInOutcubic-bezier(0.42, 0, 0.58, 1)Symmetrical transitions

Interactive Demo

Hover over each box to see the easing curve in action.

ease 300ms
spring 500ms
ease-in-out 500ms

Key Animations

Medal Rotation
3D SceneKit rotation when achievement unlocked. 1200ms spring easing with subtle haptic feedback.
Route Fly-Through
Animated 3D camera path along workout route. 2000ms+ with smooth easing. Uses Metal for rendering.
Card Flip
Transition between workout card layout templates. Smooth flip with spring easing.
Pulse Glow
Subtle glow pulse on the recording indicator during active workout tracking.

Tailwind Mapping

The paired JSON export now includes a tailwind section with theme extensions and component recipes. Use these mappings instead of default Tailwind tokens when recreating this system.

// tailwind.config.js
import designSystem from './design-system.json';

export default {
  theme: {
    extend: designSystem.tailwind.theme.extend,
  },
};

// Also reuse designSystem.tailwind.componentRecipes for common surfaces.
ScopePrimaryBody FontRadiusShadowBreakpoint
Design SystemSF Pro Display12px0 4px 12px rgba(0, 0, 0, 0.4)375px
ScopeRecipeClass PatternNotes
Design SystembuttonPrimaryinline-flex items-center justify-center gap-2 rounded-button bg-brand-primary text-text-inverse shadow-small px-4 py-2 text-body font-semibold transition-colorsPrimary action button using exported brand, radius, and shadow tokens.
Design SystemsurfaceCardrounded-card bg-surface-base text-text-primary border border-border-subtle shadow-medium p-6Default surface/card treatment for high-visibility content areas.
Design SysteminputFieldrounded-button border border-border-subtle bg-surface-base text-text-primary px-3 py-2 text-body focus:outline-none focus:ring-2 focus:ring-focus-ringBase text input treatment aligned to the exported radius, border, and focus tokens.