Instacart

Instacart's iOS app is a bright, grocery-aisle catalog engineered around a single repeated motion: add an item, watch the cart total climb, check out.

Back to all styles

Preview

Every style on this site is applied to the same sample page — same headline, same three columns, same footer. Only the stylesheet changes, so every difference you see below belongs to Instacart, not to the copy.

A live page, not a screenshot — the frame scrolls. Open full preview ↗

At a glance

18tokens
8type steps
1radius steps
8pxspacing base

Instacart, in one page

Instacart's iOS app is a bright, grocery-aisle catalog engineered around a single repeated motion: add an item, watch the cart total climb, check out. The canvas is pure white (#FFFFFF) with a barely-there gray surface (#F6F7F8) used to separate stacked content blocks, so product photography — produce, packaged goods, store logos — sits on a clean shelf with no visual noise. This is supermarket-as-software: thousands of SKUs need to scan fast, and the chrome gets out of the way so the photo and the price do the talking.

The accent system is anchored by Instacart Green (#0AAD0A) — a saturated, friendly grocery green used for every primary action: the "Add" buttons on product cards, the quantity stepper, the persistent green cart bar pinned to the bottom of the screen, and active tab state. A warm carrot orange (#FF7009) plays a deliberate secondary role for savings, deals, and "on sale" flags — a nod to the carrot in the Instacart logomark. The two colors never compete: green is the verb (add, buy, checkout), orange is the incentive (save, deal, coupon).

Typography is Inter — a clean, highly legible grotesque used at weights 400 / 600 / 700. The hierarchy is compact and utilitarian because the screen is dense with items: store names at 17pt weight 700, product titles at 15pt weight 400 (two-line clamp), prices at 15pt weight 700, and a recurring 13pt weight 400 secondary gray for unit pricing ("$0.42/oz"), delivery windows, and item counts. There are no hero headlines — the store card and the product grid are the headline, and every type size is tuned for a thumb scrolling a long list of groceries.

Key Characteristics:

Do's and don'ts

Do

  • Use pure white (#FFFFFF) as the canvas — the grocery catalog needs a clean shelf
  • Reserve Instacart Green (#0AAD0A) for actions: Add, stepper, cart bar, checkout, active tab
  • Use carrot orange (#FF7009) only for deals, savings, and sale prices — it's the incentive color
  • Render the quantity stepper as a green pill with white − n + and tabular numerals
  • Keep the green cart bar pinned and persistent once items are in the cart
  • Use tabular figures for all prices, quantities, and totals so columns align
  • Two-line clamp product titles; never let a title push the price out of alignment
  • Animate the "Add" pill morphing into the stepper on first tap
  • Surface the replacement preference inline on the cart row in green

Don't

  • Don't use a gray or tinted canvas — product photography needs white
  • Don't use green for decoration or non-action text — it's the verb color
  • Don't use carrot orange for primary buttons — orange is savings, green is action
  • Don't omit the persistent cart bar when the cart has items — it's the core loop
  • Don't use proportional figures for prices — columns will misalign
  • Don't stack more than two lines on a product title — truncate with ellipsis
  • Don't make the stepper a generic gray control — the green pill is the signature
  • Don't use heavy drop shadows — elevation is soft and cool-neutral on white
  • Don't hide unit pricing — "$0.42/oz" is a deliberate trust signal in #72757E

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 Instacart design language. Follow the measured tokens below — do not substitute your own palette.

Colors:
- Instacart Green: #0aad0a
- Green Pressed: #098f09
- Green Tint: #e6f6e6
- Carrot Orange: #ff7009
- Orange Tint: #fff0e6
- Canvas White: #ffffff
- Surface: #f6f7f8
- Divider: #e8e9eb
- Text Primary: #242529
- Text Secondary: #72757e

Type:
- families: Inter, Numerals, Fallback Stack, Non-Latin
- scale: 11, 12, 13, 15, 16, 17, 20, 26
- weights: 400, 600, 700

Shape:
- radius: 12

Spacing: 8, 11, 12

Rules:
- Use pure white (`#FFFFFF`) as the canvas — the grocery catalog needs a clean shelf
- Reserve Instacart Green (`#0AAD0A`) for actions: Add, stepper, cart bar, checkout, active tab
- Use carrot orange (`#FF7009`) only for deals, savings, and sale prices — it's the incentive color
- Render the quantity stepper as a green pill with white − n + and tabular numerals
- Keep the green cart bar pinned and persistent once items are in the cart
- Use tabular figures for all prices, quantities, and totals so columns align

Avoid:
- Don't use a gray or tinted canvas — product photography needs white
- Don't use green for decoration or non-action text — it's the verb color
- Don't use carrot orange for primary buttons — orange is savings, green is action
- Don't omit the persistent cart bar when the cart has items — it's the core loop
- Don't use proportional figures for prices — columns will misalign
- Don't stack more than two lines on a product title — truncate with ellipsis

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

The specification

Colour paletteRead the full spec

Primary

  • Instacart Green (#0AAD0A): Primary CTA, "Add" button, quantity stepper, cart bar background, active tab, selected toggle.
  • Green Pressed (#098F09): Active/pressed state for green buttons and the cart bar tap.
  • Green Tint (#E6F6E6): Light green wash behind "in cart" badges and success confirmation chips.

Secondary / Deal

  • Carrot Orange (#FF7009): Deal flags, "on sale" price color, savings badges, coupon callouts.
  • Orange Tint (#FFF0E6): Background wash for deal banners and promo strips.

Canvas & Text

  • Canvas White (#FFFFFF): Primary canvas, card backgrounds, sheets.
  • Surface (#F6F7F8): Section separators, search field fill, skeleton placeholders, grouped backgrounds.
  • Divider (#E8E9EB): Hairline dividers between list rows and card sections.
  • Text Primary (#242529): Product titles, store names, prices, primary UI text.
  • Text Secondary (#72757E): Unit pricing, delivery windows, item counts, metadata, placeholder text.
  • Text Tertiary (#A6A8AE): Disabled labels, very low-emphasis helper text.

Semantic

  • Sale Red (#D6203A): Strikethrough original price next to a discounted carrot-orange price (rare; orange is primary for deals).
  • Success Green (#0AAD0A): Order-placed confirmation, "Added" toast (same as primary).
  • Rating Star (#FF7009): Star rating fill on product reviews (shares the carrot tone).
  • Error Red (#D6203A): Out-of-stock warnings, payment failures, form validation.

Dark Mode (Limited Use)

Instacart's iOS app is effectively light-only — the grocery-catalog model depends on a white shelf for product photography. A dark variant exists for system-wide dark mode but the primary, designed experience is light.

  • Dark Canvas (#1A1B1E)
  • Dark Surface (#242529)
  • Dark Text (#FFFFFF)
  • Instacart Green and carrot orange remain identical — both read well on dark.
Type scaleRead the full spec

Font Family

  • Primary: Inter (used across the product as the brand grotesque)
  • Numerals: Inter tabular figures for prices, quantities, and totals (font-variant-numeric: tabular-nums)
  • Fallback Stack: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif
  • Non-Latin: System fallback for CJK / Cyrillic / Arabic — Instacart is North-America-centric but localizes

Hierarchy

RoleFontSizeWeightLine HeightLetter SpacingNotes
Screen Title (Large)Inter26pt7001.2-0.4pt"Stores", "Cart" nav large title
Section HeaderInter20pt7001.25-0.3pt"Buy it again", "Deals for you"
Store NameInter17pt7001.3-0.2ptStore card title
Item TitleInter15pt4001.350ptProduct card name, 2-line clamp
PriceInter15pt7001.20ptProduct price, tabular figures
Price (Sale)Inter15pt7001.20ptCarrot orange #FF7009
BodyInter15pt4001.450ptItem descriptions, instructions
Button (Primary)Inter16pt7001.00ptGreen "Add to cart", "Checkout"
Stepper ValueInter16pt7001.00ptThe "n" in the − n + stepper, tabular
Meta / Unit PriceInter13pt4001.30pt"$0.42/oz", "Delivery by 2pm"
Badge / DealInter12pt7001.20.2pt"SALE", "20% off", coupon flag
Tab LabelInter11pt6001.00.1ptBottom tab bar labels
CaptionInter11pt4001.30ptFine print, "EBT eligible"

Principles

  • Weight concentrated at 400 / 600 / 700: Regular for item names and body, semibold for emphasis, bold for prices, store names, and buttons
  • Prices are always bold and tabular: Right-aligned numerals must align across a list of items — tabular figures, weight 700
  • Two-line clamp on product titles: Item names truncate at two lines with ellipsis; never push the price out of alignment
  • Secondary gray for all metadata: Unit price, delivery windows, and counts use #72757E at 13pt to recede behind the product name and price
  • Deal color is type, not just background: A sale price is rendered in carrot orange #FF7009 — the color itself signals savings
Components and layoutRead the full spec

Buttons

Primary CTA ("Add to cart" / "Checkout" / "Continue")

  • Background: #0AAD0A
  • Text: #FFFFFF, Inter 16pt weight 700
  • Height: 52pt (full-width sheet CTA), 48pt (inline)
  • Corner radius: 12pt
  • Pressed: background #098F09, scale 0.98
  • Disabled: background #E8E9EB, text #A6A8AE

Compact "Add" Button (on product card, before any quantity)

  • Shape: pill, 32pt tall
  • Background: #FFFFFF, border 1.5pt #0AAD0A
  • Text: #0AAD0A, Inter 14pt weight 700, label "Add"
  • Pressed: background #E6F6E6
  • On tap: morphs into the quantity stepper (see Distinctive)

Secondary / Outline ("Save for later", "Edit")

  • Background: transparent
  • Border: 1.5pt solid #242529
  • Text: #242529, Inter 15pt weight 600
  • Padding: 11pt vertical, 20pt horizontal
  • Corner radius: 12pt
  • Pressed: background #F6F7F8

Text Button ("See all", "View details")

  • Font: Inter 14pt weight 700
  • Color: #0AAD0A
  • No underline, 44pt hit area

Icon Button (heart save, share, filter)

  • Size: 22pt glyph, 44pt hit area
  • Default: #72757E
  • Active (saved): #0AAD0A

Cards & Containers

Store Card (Home row)

  • Layout: horizontal — 56pt rounded store logo (12pt radius) → store name + meta column → trailing chevron
  • Height: ~88pt with 16pt vertical padding
  • Name: 17pt weight 700 #242529
  • Meta line: "Delivery by 2pm · $3.99 delivery" 13pt weight 400 #72757E
  • Background: #FFFFFF, divider #E8E9EB between rows
  • Pressed: background #F6F7F8

Product Card (Grid tile)

  • Width: ~150pt in a 2-up grid (12pt gap)
  • Structure: square product photo (1:1, 12pt radius) → price (15pt w700) → unit price (13pt w400 #72757E) → title (15pt w400, 2-line clamp) → Add button / stepper bottom-right overlapping the photo
  • Background: #FFFFFF
  • Deal flag: carrot-orange #FF7009 pill, top-left of photo, "20% off"
  • Tap: scale 0.97

Cart Row

  • Height: ~96pt
  • Layout: 64pt product thumbnail (12pt radius) → title + unit price + replacement preference link → trailing quantity stepper
  • Title: 15pt weight 400 #242529, 2-line clamp
  • Replacement line: "Replacement: Best match" 13pt weight 400 #0AAD0A (tappable)
  • Divider #E8E9EB between rows

Aisle / Department Tile

  • Square or 4:3 tile in a 2-up grid, 12pt radius
  • Photo with a label overlay bottom-left: 15pt weight 700 #FFFFFF on a subtle dark scrim
  • Used on the "Browse aisles" grid

Navigation

Bottom Tab Bar

  • Height: 56pt + safe area
  • Background: #FFFFFF, hairline top border #E8E9EB
  • Tabs: Stores, Buy it again, Lists, Account, Cart
  • Icon size: 24pt
  • Active color: #0AAD0A (filled icon + label)
  • Inactive: #72757E (outlined icon)
  • Labels: Inter 11pt weight 600, always shown
  • Cart tab carries a green count badge bubble when items > 0

Green Cart Bar (Signature)

  • Pinned above the tab bar (or bottom-anchored within a store), full width minus 16pt side insets
  • Height: 56pt
  • Background: #0AAD0A, corner radius 12pt
  • Left: white circular item-count badge ("8 items")
  • Center/Right: "View cart" + subtotal in white, Inter 16pt weight 700, tabular figures
  • Pressed: #098F09, subtle scale 0.99
  • Slides up from below when the first item is added; persistent thereafter

Top Nav / Search Header

  • Height: 52pt + safe area
  • Store/location selector top-left (17pt weight 700 + chevron)
  • Search field below: pill, 44pt, #F6F7F8 fill, leading magnifyingglass 18pt #72757E, placeholder "Search Wegmans"
  • Filter chip row beneath search (pill chips, 32pt tall)

Input Fields

Search Field

  • Background: #F6F7F8
  • Height: 44pt
  • Corner radius: 12pt
  • Leading SF Symbol magnifyingglass 18pt #72757E
  • Placeholder: 15pt weight 400 #72757E
  • Focus: 1.5pt border #0AAD0A, background #FFFFFF

Filter / Category Chip

  • Background: #F6F7F8 default / #242529 selected
  • Text: #242529 default / #FFFFFF selected, Inter 14pt weight 600
  • Padding: 8pt vertical, 16pt horizontal
  • Corner radius: 500pt (full pill)
  • Examples: "On sale", "EBT", "Organic", "Gluten-free"

Distinctive Components

Quantity Stepper (− n +)

  • The signature control. Pill, 32pt tall, background #0AAD0A
  • Layout: white "−" glyph (44pt hit) | white quantity (16pt weight 700, tabular) | white "+" glyph (44pt hit)
  • Tapping "+" on a fresh product morphs the compact "Add" pill into the stepper (width animates 64pt → 104pt over 200ms)
  • Decrementing to 0 morphs back to the "Add" pill
  • Pressed glyph: background flashes #098F09
  • Haptic .impactOccurred(.light) on every increment/decrement
  • Appears on product cards, cart rows, and the product detail sheet

Replacement-Preference Selector

  • A per-item choice surfaced on the cart row and in a bottom sheet
  • Three options as a radio list: "Best match" (default), "Pick specific replacement", "Don't replace this item"
  • Selected row: 1.5pt #0AAD0A border, green radio dot, 12pt radius
  • Unselected: #E8E9EB border, hollow radio
  • The chosen value renders inline on the cart row in green: "Replacement: Best match"

Add-to-Cart Fly-Up

Responsive behaviourRead the full spec

Device Sizes

DeviceWidthKey Changes
iPhone SE (3rd gen)375pt2-up grid with tighter 10pt gutter, ~140pt tiles
iPhone 13/14/15390ptStandard 2-up grid, ~150pt tiles
iPhone 15/16 Pro393ptDynamic Island clears the store/location selector
iPhone 15/16 Pro Max430pt~170pt tiles, larger product photos
iPad768pt+3-4 column product grid, store list in a 2-column master, cart as a side panel

Dynamic Type

  • Product titles, store names, body: full scale
  • Prices and stepper value: scale but stay tabular and right-aligned
  • Tab labels and deal badges: fixed (layout-sensitive)
  • Cart bar subtotal: scales to a max, truncates store name first

Orientation

  • Stores / Buy it again / Lists / Cart: portrait-locked on iPhone
  • iPad: supports landscape with a multi-column grid and persistent cart side panel

Touch Targets

  • Stepper − and + glyphs: 44pt hit area each despite the compact pill
  • "Add" pill: 32pt tall, full pill tappable
  • Store rows: full-row tappable, ~88pt
  • Cart bar: full 56pt bar tappable
  • Tab icons: 24pt glyph, 44pt effective hit

Safe Area Handling

  • Top: store/location selector + search respect the safe area and Dynamic Island
  • Bottom: green cart bar floats above the tab bar; both clear the home indicator
  • Sides: 16pt content insets throughout

Drop-in CSS variables

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

body.theme-instacart {--page-bg: #ffffff;
  --page-bg-gradient: none;
  --text-color: #242529;
  --heading-color: #242529;
  --link-color: #b84d00;
  --link-hover-color: #853800;
  --border-color: #d8d8d8;
  --card-bg: #ffffff;
  --card-shadow: 0 1px 2px rgba(36,37,41,0.06);
  --card-hover-shadow: 0 6px 18px rgba(36,37,41,0.12);
  --header-bg: #242529;
  --header-text-color: #ffffff;
  --header-shadow: none;
  --footer-bg: #ffffff;
  --footer-text-color: #717174;
  --button-bg: #ff7009;
  --button-text-color: #000000;
  --button-hover-bg: #d55900;
  --button-border: none;
  --button-border-radius: 12px;
  --button-secondary-bg: #f2f2f2;
  --button-secondary-text-color: #242529;
  --button-secondary-hover-bg: #e5e5e5;
  --button-secondary-border: 1px solid #d8d8d8;
  --prompt-bg: #f4f4f4;
  --prompt-text-color: #242529;
  --base-font: var(--font-inter);
  --heading-font: var(--font-inter);
  --card-border-radius: 12px;
}

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/instacart/DESIGN.md · 20.6 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.