Uber Eats

Uber Eats' iOS app is a bright, photo-first marketplace built on a pure white canvas (#FFFFFF) where food photography does the selling.

Back to all styles

A live page in this style is not built yet — the CSS variables and the prompt below are enough to reproduce it.

At a glance

20tokens
12type steps
2radius steps
8pxspacing base

Uber Eats, in one page

Uber Eats' iOS app is a bright, photo-first marketplace built on a pure white canvas (#FFFFFF) where food photography does the selling. The interface is intentionally clean and high-contrast: white surfaces, near-black type, and a single confident green accent. Restaurant cards are large, image-led tiles — a wide hero photo with the name, rating, ETA, and delivery fee stacked underneath in tight, legible rows. The whitespace is generous so the food imagery never competes with chrome, and elevated elements (the sticky cart bar, sheets) lift off the white with soft, low shadows rather than borders.

The accent system is a single green. Uber Eats Green (#06C167) — the brand's fresh, slightly cool green — owns every primary action: the "Add to cart" button, the sticky cart bar, active filter pills, the "Track order" CTA, and selected states. Near-black (#000000) carries titles and the secondary "Schedule" / outline actions, and a mid gray (#6B6B6B) handles metadata (ratings, ETA, fees). There is no second brand hue — against full-color food photography and a white canvas, the green reads instantly as "order." A dark mode is fully supported (inverting to a near-black canvas) but the default and primary experience is light.

Typography is Uber Move (Uber's brand typeface), rendered here with an Inter fallback that keeps its tight, confident, slightly geometric character. The hierarchy is compact and commercial: 11-30pt at weights 400 / 500 / 700. There are no decorative display fonts — the food photos and prices are the visual interest. Type merchandises: restaurant names at 17-18pt weight 700, section headers at 20-22pt weight 700, metadata (4.8 · 25 min · $0.99 Delivery Fee) at 13-14pt weight 400 in gray, the price/CTA in 16pt weight 700. The most expressive type moment is the restaurant header, where the name sits at 24-30pt weight 700 over the hero photo's darkened lower edge.

Key Characteristics:

Do's and don'ts

Do

  • Use a pure white canvas (#FFFFFF) by default — photo-first, gallery-like whitespace (dark mode inverts neutrals only)
  • Reserve Uber Eats Green (#06C167) for primary actions and selected states — cart bar, Add, Track, active pill
  • Keep the same green (#06C167) in dark mode — only neutrals invert
  • Let restaurant cards sit borderless and shadowless on white — the food photo provides the framing
  • Keep ratings monochrome (near-black star) — quiet merchandising so green = action stands out
  • Keep the sticky cart bar persistent with count + total + "View cart" while browsing a menu
  • Make the live map the post-order hero — green courier marker easing along a near-black route
  • Use a friendly 12pt radius on buttons/photos and 16pt on sheets — Uber Eats is softer than most
  • Make the active tab near-black/white (NOT green) — green is for action surfaces only

Don't

  • Don't default to a dark canvas — the brand is bright and photo-first (dark mode is a supported alternate, not the default)
  • Don't add a second accent hue — the single green is the entire action language
  • Don't color the rating star yellow — Uber Eats keeps it monochrome and quiet
  • Don't put borders/shadows on restaurant cards — they sit flat on white; the photo frames itself
  • Don't use thin or black weights — Uber Move here is 400 / 500 / 700 only
  • Don't make the active tab green — that dilutes green's "this is an action" meaning
  • Don't use sharp corners on buttons/photos — the friendly 12pt radius is part of the brand feel
  • Don't hide the cart total while browsing — the running tally must stay on screen
  • Don't over-animate the map — the courier marker eases smoothly (≈1s), it doesn't jump or bounce

Copy this into your AI builder

Paste it as-is. Every value below was measured from the original site, not guessed.

Assembled from the measured tokens — the source document has no prompt block.

Build a page in the Uber Eats design language. Follow the measured tokens below — do not substitute your own palette.

Colors:
- Uber Eats Green: #06c167
- Green Pressed: #05a658
- Green Tint: #e7f8ef
- Canvas: #ffffff
- Surface: #f3f3f3
- Surface 2: #eeeeee
- Divider: #e8e8e8
- Text Primary: #000000
- Text Secondary: #6b6b6b
- Text Tertiary: #a6a6a6

Type:
- families: Uber Move, Fallback Stack, Numerals
- scale: 10, 11, 12, 13, 14, 15, 16, 17, 20
- weights: 400, 500, 700

Shape:
- radius: 12, 16
- elevation: Shadow above it: `rgba(0,0,0,0.12) 0 -2px 12px`

Spacing: 8

Rules:
- Use a pure white canvas (`#FFFFFF`) by default — photo-first, gallery-like whitespace (dark mode inverts neutrals only)
- Reserve Uber Eats Green (`#06C167`) for primary actions and selected states — cart bar, Add, Track, active pill
- Keep the same green (`#06C167`) in dark mode — only neutrals invert
- Let restaurant cards sit borderless and shadowless on white — the food photo provides the framing
- Keep ratings monochrome (near-black star) — quiet merchandising so green = action stands out
- Keep the sticky cart bar persistent with count + total + "View cart" while browsing a menu

Avoid:
- Don't default to a dark canvas — the brand is bright and photo-first (dark mode is a supported alternate, not the default)
- Don't add a second accent hue — the single green is the entire action language
- Don't color the rating star yellow — Uber Eats keeps it monochrome and quiet
- Don't put borders/shadows on restaurant cards — they sit flat on white; the photo frames itself
- Don't use thin or black weights — Uber Move here is 400 / 500 / 700 only
- Don't make the active tab green — that dilutes green's "this is an action" meaning

Keep every value literal. If a token is given, use that exact value.

The specification

Colour paletteRead the full spec

Primary

  • Uber Eats Green (#06C167): Primary "Add" / "Place order" CTA, sticky cart bar, "Track order" CTA, active filter pill, selected radio/checkbox, in-cart badge.
  • Green Pressed (#05A658): Pressed/active state for green CTAs and the cart bar.
  • Green Tint (#E7F8EF): Subtle success/selected backgrounds (selected option row, "Saved" toast).

Canvas & Surfaces (Light — default)

  • Canvas (#FFFFFF): Primary app background — pure white, photo-first.
  • Surface (#F3F3F3): Card fills with no photo, search bar, skeleton loaders, pressed list rows.
  • Surface 2 (#EEEEEE): Higher elevation neutral — chip default, segmented control track.
  • Divider (#E8E8E8): 1pt separators between menu items and list rows.

Text (Light)

  • Text Primary (#000000): Restaurant names, screen headers, prices, primary labels.
  • Text Secondary (#6B6B6B): Ratings, ETA, delivery fee, descriptions, metadata.
  • Text Tertiary (#A6A6A6): Disabled labels, placeholder text, very low-emphasis captions.

Dark Mode (Supported)

  • Dark Canvas (#000000): Primary dark background.
  • Dark Surface (#1C1C1E): Cards without photo, search bar, sheets.
  • Dark Surface 2 (#2C2C2E): Higher elevation, chip default.
  • Dark Divider (#2C2C2E): Hairline separators.
  • Dark Text Primary (#FFFFFF), Dark Text Secondary (#A6A6A6)
  • Uber Eats Green stays #06C167 — the green reads well on both light and dark; only neutrals invert.

Semantic

  • Rating Star (#000000): The star glyph in "4.8" is filled near-black (not yellow — Uber Eats keeps ratings monochrome and quiet).
  • Promo Green (#06C167): "$0 Delivery Fee" / offer text reuses the brand green.
  • Surge / Busy Amber (#FF8A00): "Busy — longer wait" notice on a restaurant.
  • Error Red (#E11900): Form errors, payment-failed, item-unavailable.
Type scaleRead the full spec

Font Family

  • Primary: Uber Move (Uber brand typeface) — tight, confident, slightly geometric grotesque
  • Fallback Stack: 'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif
  • Numerals: Tabular figures for prices, ratings, ETA, and order totals

Hierarchy

RoleFontSizeWeightLine HeightLetter SpacingNotes
Restaurant HeaderUber Move30pt7001.1-0.4ptRestaurant name on its detail header
Screen Title (Large)Uber Move28pt7001.15-0.4pt"Account", "Cart" large nav title
Section HeaderUber Move22pt7001.2-0.3pt"Featured", "Popular near you"
SubsectionUber Move20pt7001.2-0.3ptMenu category ("Burgers")
Restaurant Name (card)Uber Move17pt7001.25-0.1ptName under a restaurant card photo
Menu Item TitleUber Move16pt5001.3-0.1ptItem name in a menu row
BodyUber Move15pt4001.450ptItem description, restaurant info
Price / CTAUber Move16pt7001.00pt"$12.49", "Add to cart" label
MetadataUber Move14pt4001.30pt"4.8 · 25 min · $0.99 Delivery Fee"
Pill / TagUber Move14pt5001.00ptCategory pill label
CaptionUber Move13pt4001.30pt"$0.99 Delivery Fee", small notes
Label (UPPER)Uber Move11pt7001.20.6pt"DELIVERY · 25 MIN" eyebrow
Button (Primary)Uber Move16pt7001.00.2ptGreen "Add" / "Place order"
Tab LabelUber Move10pt5001.00.2ptBottom tab bar labels
Cart BadgeUber Move12pt7001.00ptItem count on cart bar/icon

Principles

  • Weights concentrated at 400 / 500 / 700: Regular for body/metadata, medium for menu items/pills, bold for names, headers, prices, and CTAs — no thin, no semibold-as-light, no black
  • Commercial clarity: No decorative display type; food photography and prices are the visual interest
  • Negative tracking on big type, neutral on small: -0.4pt at 30pt easing to 0pt at body
  • All-caps only for eyebrows: "DELIVERY · 25 MIN" — never for restaurant names or menu items
  • Monochrome ratings: the rating star and number are near-black, not colored — Uber Eats keeps merchandising quiet so green = action stands alone
Components and layoutRead the full spec

Buttons

Primary CTA (Add / Place Order — The Green Button)

  • Shape: Rounded rectangle, height 52pt, full-width within content margins
  • Background: #06C167
  • Text: #FFFFFF
  • Corner radius: 12pt (Uber Eats uses a friendlier radius than most)
  • Font: Uber Move 16pt weight 700, letter-spacing 0.2pt; may show "Add to cart · $12.49" with price right-aligned
  • Shadow: none by default; the sticky cart-bar variant uses rgba(0,0,0,0.12) 0 -2px 12px above it
  • Pressed: background #05A658, scale 0.98, with .impactOccurred(.light) haptic

Secondary Button ("Schedule" / "Add to favorites")

  • Background: #FFFFFF (light) / #1C1C1E (dark)
  • Text: #000000 (light) / #FFFFFF (dark)
  • Border: 1pt solid #E8E8E8 (light) / #2C2C2E (dark)
  • Height: 52pt, corner radius 12pt
  • Font: Uber Move 16pt weight 700
  • Pressed: background #F3F3F3, scale 0.98

Quantity Stepper (− 1 +)

  • Pill, height 36pt, background #F3F3F3
  • − / + glyphs near-black 18pt at 36pt circular hit zones; count centered 16pt w700
  • + tap: green flash on the count + cart-count bump elsewhere

Icon Actions (Heart/favorite, Share, Info)

  • Size: 22pt glyph, 44pt hit area
  • Default: #000000 (light) / #FFFFFF (dark)
  • Active: favorite filled #06C167
  • Often placed top-right over the restaurant hero photo on a rgba(255,255,255,0.9) 36pt circle

Text Button ("See all")

  • Font: Uber Move 14pt weight 700
  • Color: #000000 with a trailing chevron, 44pt hit area, after each section header

Cards & Containers

Restaurant Card (photo-first)

  • Width: full-width minus 16pt margins (feed) or 280pt (horizontal "Featured" rail)
  • Hero photo: 16:9, corner radius 12pt; optional ♥ top-right and a promo ribbon top-left ("$0 Delivery Fee" in #06C167)
  • Below the photo (no card border, sits on white):
  • Restaurant name 17pt w700 #000000
  • Metadata row: ★ 4.8 (near-black) · "25 min" · "$0.99 Delivery Fee" — 14pt w400 #6B6B6B, "$0 Delivery Fee" segment in #06C167
  • Press: photo scales 0.98, subtle; whole card tappable

Category Pill Row

  • Horizontal scroll directly under the search bar
  • Pills: icon + label, height 40pt, background #F3F3F3 default / #06C167 selected (white text + green fill)
  • Corner radius: 500pt (full pill), 8pt gap, peek last pill at the right edge

Menu Item Row

  • Height: auto (~ 96-112pt)
  • Layout: left text column (item name 16pt w500, description 14pt w400 #6B6B6B 2-line clamp, price 15pt w400) → right 88pt × 88pt rounded item photo (12pt radius) with a + 28pt circular button overlapping its bottom-right corner
  • Background: #FFFFFF; pressed #F3F3F3
  • Divider: 1pt #E8E8E8 between rows

Sticky Cart Bar

  • Pinned to the bottom above the tab bar (or above the home indicator on the menu screen)
  • Full-width green #06C167 bar, height 56pt, corner radius 12pt with 16pt side margins
  • Left: white circular count badge "3"; Center: "View cart"; Right: total "$28.40" — all #FFFFFF, Uber Move 16pt w700
  • Appears with a slide-up + spring when the first item is added; total animates on change
  • Shadow above it: rgba(0,0,0,0.12) 0 -2px 12px

Promo Banner

  • Full-bleed rounded card in the feed, 16pt radius, brand-tinted (#E7F8EF or a photo) with bold offer copy ("$0 Delivery Fee on your first order") and a green inline CTA chip

Restaurant Header

  • Full-bleed hero photo, height ~ 240pt, darkened at the bottom (rgba(0,0,0,0) → rgba(0,0,0,0.45))
  • Restaurant name 30pt w700 #FFFFFF bottom-left over the photo
  • Below (on white): rating · delivery time · fee row, then an info chip row ("More info", "Group order")

Navigation

Bottom Tab Bar

  • Height: 52pt + safe area
  • Background: rgba(255,255,255,0.96) (light) / rgba(0,0,0,0.96) (dark) with .regularMaterial blur, hairline top divider #E8E8E8
  • Tabs: Home, Browse, Search, Cart, Account
  • Icon size: 24pt
  • Active color: #000000 (light) / #FFFFFF (dark) — the active tab is near-black/white, NOT green (green is reserved for action surfaces)
  • Inactive: #A6A6A6
  • Cart tab: green count badge #06C167 with white number when items present
  • Labels: Uber Move 10pt w500, always shown
  • Active tab icon: filled SF Symbol; inactive: outlined

Top Bar (Home)

  • Address selector pill top-left ("Deliver to · Home ▾", 16pt w700) — tappable
  • Profile avatar (28pt circular) top-right
  • Below: a full-width search bar (#F3F3F3, 48pt, 12pt radius, leading magnifyingglass)

Live Map Order Tracking (signature)

  • Full-screen map (light map style) with: the route polyline in near-black, a green courier marker that animates along it, the restaurant pin and the destination pin
  • A draggable bottom sheet (corner radius 16pt, white) over the map: ETA headline ("Arriving in 12 min", 22pt w700), a green progress stepper (Preparing → Picked up → On the way → Delivered), courier card (avatar + name + vehicle + message/call buttons), and order summary
  • The courier marker eases between location updates; ETA text updates in place

Input Fields

Search Bar

Responsive behaviourRead the full spec

Device Sizes

DeviceWidthKey Changes
iPhone SE (3rd gen)375ptFeatured rail cards 240pt; full-width feed cards
iPhone 13/14/15390ptStandard 280pt featured cards
iPhone 15/16 Pro393ptDynamic Island accommodated above the address/search bar
iPhone 15/16 Pro Max430ptLarger hero photos; map sheet peek taller
iPad768pt+2-column feed grid; map screen = map left + tracking panel right (split)

Dynamic Type

  • Restaurant names, menu item titles, descriptions, ETA headline: full scale
  • Metadata / pill labels / delivery-fee captions: scales but clamps at +2 steps (single-line layout-sensitive)
  • Primary CTA label: scales to 18pt max; button height fixed at 52pt
  • Tab labels, cart badge, map ETA chip: fixed (never scale)

Orientation

  • Home / Browse / Search / Restaurant / Cart: portrait-locked
  • Live map tracking: portrait (map fills, sheet draggable)
  • iPad: supports landscape split (feed/menu + detail; map + tracking panel)

Touch Targets

  • Primary CTA / cart bar: 52-56pt height, full-width — impossible to miss
  • Restaurant cards: full-card tappable
  • + add button / quantity stepper: 36-44pt circular hit
  • Map sheet grabber: 44pt drag zone
  • Tab bar icons: 24pt icon, 44pt effective hit

Safe Area Handling

  • Top: address/search bar respects safe area / Dynamic Island
  • Bottom: tab bar floats above home indicator; the sticky cart bar sits just above the tab bar (or above the home indicator on menu screens); the map sheet respects the home indicator at its peek
  • Sides: 16pt content margins; featured rails bleed to the right edge intentionally

Drop-in CSS variables

The same values as a theme block. Add the class to <body> and the site repaints.

body.theme-uber-eats {--page-bg: #ffffff;
  --page-bg-gradient: none;
  --text-color: #000000;
  --heading-color: #000000;
  --link-color: #af5e00;
  --link-hover-color: #7c4300;
  --border-color: #d1d1d1;
  --card-bg: #ffffff;
  --card-shadow: 0 1px 2px rgba(0,0,0,0.06);
  --card-hover-shadow: 0 6px 18px rgba(0,0,0,0.12);
  --header-bg: #000000;
  --header-text-color: #ffffff;
  --header-shadow: none;
  --footer-bg: #ffffff;
  --footer-text-color: #595959;
  --button-bg: #ff8a00;
  --button-text-color: #000000;
  --button-hover-bg: #cc6e00;
  --button-border: none;
  --button-border-radius: 16px;
  --button-secondary-bg: #f0f0f0;
  --button-secondary-text-color: #000000;
  --button-secondary-hover-bg: #e0e0e0;
  --button-secondary-border: 1px solid #d1d1d1;
  --prompt-bg: #f2f2f2;
  --prompt-text-color: #000000;
  --base-font: var(--font-sans);
  --heading-font: var(--font-sans);
  --card-border-radius: 16px;
}

Download theme.css

Visually close to

Measured with a deterministic colour + geometry comparison across 958 styles. Not a hand-picked list.

Where this came from

Source document
ios/design-md/food/uber-eats/DESIGN.md · 23.7 KB
Repository
Meliwat/awesome-ios-design-md
Licence
MIT

Source text is reproduced under its original licence. Tokens, similarity scores and page structure are ours.