Swiggy

Swiggy's iOS app is appetite-driven commerce.

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

24tokens
11type steps
3radius steps
2pxspacing base

Swiggy, in one page

Swiggy's iOS app is appetite-driven commerce. The entire visual language exists to do one thing: make you hungry, then make ordering feel instantaneous. The canvas is white (#FFFFFF) in light mode and a near-black charcoal (#121212) in dark mode, but the canvas is almost never what you notice — what you notice is the *food*. Every screen is photo-forward: 16:10 restaurant hero images with a dark bottom scrim that holds an offer in bold white type ("60% OFF UPTO ₹120"), square dish thumbnails with a floating green "ADD" button, and a relentless rhythm of cards that pull the eye down the list.

The signature screen is the restaurant list (the "Swiggy" / Food home tab): a sticky location header ("Home ⌄" with the delivery address beneath it), an orange-iconed search pill ("Search 'biryani'"), a horizontally-scrolling filter chip row (Filter, Under 30 mins, Rating 4.0+, Pure Veg, Offers), and then the restaurant cards themselves. Each card is a complete decision unit: photo + offer overlay, restaurant name in heavy 18pt, a green rating chip (#48C479 with the score and a star), delivery-time and distance metadata, cuisine tags, and a dashed-divider footer carrying a free-delivery or coupon line in Swiggy Orange. The second signature surface is the restaurant menu / dish list — vegetarian/non-veg marks (the green-dot-in-a-square, red-triangle-in-a-square), dish name, price, a green in-card rating, a description, and a square food image with the bottom-overlapping "ADD" button + customisation "›" hint.

The color system is built around a single, unmistakable hero: Swiggy Orange #FC8019. It is warm, energetic, slightly tangy — engineered to read as "fresh food, fast." It is the primary CTA, the active tab, the search/location icons, the footer accent, and the brand wordmark plate. Supporting it: the rating green #48C479 (high ratings) and rating amber #DB7C38 (lower ratings) for the trust signal Swiggy users scan first; Instamart magenta-purple #982C61 for the grocery vertical; and Dineout red #D7385E for table-booking. Offers are rendered as gradient chips (orange→red) or bold scrim text. The palette is deliberately small and loud — Swiggy is not a calm app, it is a *crave-and-tap* app.

Typography is a clean grotesque. Swiggy's brand face is a proprietary/Proxima-Nova-lineage sans (the product historically uses ProximaNova and a Basis-Grotesque-style UI face); on iOS it falls back to SF Pro when a bundled face is unavailable. The hierarchy is heavy and confident: screen titles at 32pt/800, restaurant card names at 18pt/800, body at 16pt/400. Weight does the work — Swiggy leans on 700/800 to make food names and prices unmissable.

Key Characteristics:

Do's and don'ts

Do

  • Use Swiggy Orange (#FC8019) as the single hero accent — CTA, active tab, icons, footer
  • Lead every restaurant card with a large 16:10 photo + dark bottom scrim + bold white offer text
  • Put a green/amber rating chip (#48C479 / #DB7C38) immediately before the ETA — it's the first thing users scan
  • Show veg/non-veg marks on every dish (green-dot-square / red-triangle-square)
  • Make the dish "ADD" button green-outline, bottom-overlapping the square image, with a shadow so it floats
  • Use uppercase + tracking on primary CTAs and ADD
  • Separate card footers and dish rows with dashed hairlines, never nested boxes
  • Float an orange cart bar above the tab bar when items exist
  • Use tabular numerals for prices, ETAs, and ratings
  • Re-theme accents per vertical (Instamart purple #982C61, Dineout red #D7385E) while keeping the same layout grammar
  • Keep dark mode near-black (#121212) with full-saturation food photography

Don't

  • Don't introduce a second loud brand colour competing with Swiggy Orange
  • Don't shrink food photography or crop it square on list cards — 16:10 hero is the standard
  • Don't hide or restyle the rating chip — it must be the green/amber pill with a star, left of ETA
  • Don't omit veg/non-veg marks on dishes — it's a hard requirement in this market
  • Don't make the ADD button a plain text link — it's a green-outline, shadowed, overlapping control
  • Don't box every section in heavy cards — Swiggy uses dashed dividers and whitespace
  • Don't use pure black (#000000) for the dark canvas — #121212 is correct
  • Don't desaturate or dim food imagery in dark mode — UI chrome recedes, food does not
  • Don't animate aggressively — motion is fast and functional (150–320ms), tied to the order flow
  • Don't bury the cart — it floats persistently once non-empty
  • Don't use sentence-case timid CTAs — Swiggy commits with uppercase action verbs

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

Colors:
- Swiggy Orange: #fc8019
- Swiggy Orange Pressed: #e06d0c
- Swiggy Orange Tint: #fc8019
- Rating Green: #48c479
- Rating Amber: #db7c38
- Rating Red: #e84a4a
- Instamart Purple: #982c61
- Dineout Red: #d7385e
- Offer Gradient: #fc8019
- Canvas White: #ffffff

Type:
- families: ProximaNova, Basis Grotesque, Plus Jakarta Sans, Dynamic Type
- scale: 10, 12, 13, 14, 15, 16, 17, 18, 22
- weights: 400, 600, 700, 800

Shape:
- radius: 10, 12, 14
- elevation: Shadow: `rgba(0,0,0,0.5) 0 4px 12px`

Spacing: 2, 7, 11, 14, 22

Rules:
- Use Swiggy Orange (`#FC8019`) as the single hero accent — CTA, active tab, icons, footer
- Lead every restaurant card with a large 16:10 photo + dark bottom scrim + bold white offer text
- Put a green/amber rating chip (`#48C479` / `#DB7C38`) immediately before the ETA — it's the first thing users scan
- Show veg/non-veg marks on every dish (green-dot-square / red-triangle-square)
- Make the dish "ADD" button green-outline, bottom-overlapping the square image, with a shadow so it floats
- Use uppercase + tracking on primary CTAs and ADD

Avoid:
- Don't introduce a second loud brand colour competing with Swiggy Orange
- Don't shrink food photography or crop it square on list cards — 16:10 hero is the standard
- Don't hide or restyle the rating chip — it must be the green/amber pill with a star, left of ETA
- Don't omit veg/non-veg marks on dishes — it's a hard requirement in this market
- Don't make the ADD button a plain text link — it's a green-outline, shadowed, overlapping control
- Don't box every section in heavy cards — Swiggy uses dashed dividers and whitespace

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

The specification

Colour paletteRead the full spec

Primary (Interactive)

  • Swiggy Orange (#FC8019): The brand. Primary CTA background, active tab, search/location icons, footer accent links, wordmark plate, segmented-control selection.
  • Swiggy Orange Pressed (#E06D0C): Pressed/active state for orange CTAs.
  • Swiggy Orange Tint (#FC80191A): 10% orange wash behind selected chips, promo banners.

Rating & Trust

  • Rating Green (#48C479): Rating chips for scores ≥ 4.0 — the single most-scanned element on a card.
  • Rating Amber (#DB7C38): Rating chips for scores 3.0–3.9.
  • Rating Red (#E84A4A): Rating chips for scores < 3.0 (rare; also error).

Vertical Accents

  • Instamart Purple (#982C61): Instamart (grocery) tab, headers, CTAs within Instamart.
  • Dineout Red (#D7385E): Dineout (table booking) tab and accents.
  • Offer Gradient (#FC8019 → #D7385E): Discount chips, hero offer banners.

Canvas & Surfaces (Light Mode)

  • Canvas White (#FFFFFF): Primary light canvas.
  • Surface Gray (#F4F4F6): Search pill fill, chip backgrounds, sectioned groups.
  • Surface Pressed (#ECECEE): Pressed rows / chips.
  • Divider (#E2E2E7): Hairline dividers; dashed variant on card footers.

Canvas & Surfaces (Dark Mode)

  • Dark Canvas (#121212): Primary dark canvas — near-black, NOT pure black.
  • Dark Surface 1 (#1C1C1E): Card backgrounds, search pill, sheets.
  • Dark Surface 2 (#2A2A2A): Elevated chips, "ADD" button background.
  • Dark Divider (#2C2C2E): Hairline dividers; dashed variant on footers.

Text

  • Text Primary Light (#02060C): Primary text — near-black, slightly cool.
  • Text Secondary Light (#686B78): Metadata, cuisine tags, distance.
  • Text Tertiary Light (#93959F): Disabled, very-low-emphasis.
  • Text Primary Dark (#F2F2F2): Primary text on dark.
  • Text Secondary Dark (#A0A0A0): Metadata on dark.
  • Text Tertiary Dark (#6A6A6A): Disabled on dark.

Roles Summary

RoleLight ModeDark Mode
Canvas#FFFFFF#121212
Surface 1#F4F4F6#1C1C1E
Surface 2#ECECEE#2A2A2A
Divider#E2E2E7#2C2C2E
Text Primary#02060C#F2F2F2
Text Secondary#686B78#A0A0A0
Brand / CTA#FC8019#FC8019
Rating (high)#48C479#48C479
Rating (mid)#DB7C38#DB7C38
Error#E84A4A#E84A4A

Semantic

  • Success Green (#48C479): Order-placed, rating, "Free delivery" confirmation.
  • Error Red (#E84A4A): Payment failure, item-unavailable, destructive delete.
  • Warning Amber (#DB7C38): "Few items left", surge-fee notice.
  • Info Blue (#1A73E8): Informational links inside checkout.
  • Veg Mark (#48C479): Vegetarian indicator square + dot.
  • Non-Veg Mark (#E84A4A / classic #A1303A): Non-veg indicator square + triangle.
Type scaleRead the full spec

Font Family

  • Brand / Display: ProximaNova lineage — Swiggy's marketing & heavy headings face (geometric humanist sans).
  • UI / Text: Basis Grotesque-style grotesque for body and metadata (neutral, highly legible at small sizes).
  • iOS Fallback Stack: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif
  • Web/Catalog Fallback: Plus Jakarta Sans (close geometric humanist match for documentation/preview)
  • Numerals are tabular in price, rating, and delivery-time contexts so columns align.

Hierarchy

RoleFontSizeWeightLine HeightLetter SpacingNotes
Screen TitleProximaNova32pt8001.2-0.4pt"Restaurants", nav large-title
HeroProximaNova26pt8001.25-0.3pt"What's on your mind?"
Section HeaderProximaNova22pt7001.3-0.2pt"Top restaurant chains"
Card Title (Restaurant)ProximaNova18pt8001.3-0.3ptRestaurant name on card
SubsectionProximaNova17pt7001.35-0.2pt"Recommended", category headers
BodyBasis Grotesque16pt4001.50ptDescriptions, paragraph copy
Dish TitleBasis Grotesque15pt6001.40ptMenu item name
PriceBasis Grotesque14pt6001.40pt"₹289" — tabular numerals
MetaBasis Grotesque14pt4001.40ptCuisine tags, distance, ETA
Rating ChipBasis Grotesque12pt7001.00ptScore in green/amber pill
Offer / BadgeProximaNova12pt8001.10.3pt"60% OFF UPTO ₹120"
Button (Primary)ProximaNova15pt7001.00.2ptUPPERCASE — "CONTINUE"
Button (ADD)ProximaNova13pt8001.00.3ptUPPERCASE green-outline
CaptionBasis Grotesque12pt4001.40ptTiny print, T&C
Tab LabelBasis Grotesque10pt6001.00.1ptBottom tab labels
Location TitleProximaNova17pt8001.2-0.2pt"Home ⌄" header

Principles

  • Weight carries hierarchy: Swiggy concentrates emphasis at 700/800. Restaurant names, prices, and offers are heavy so the eye locks onto them while scrolling fast.
  • UPPERCASE for action: Primary CTAs and the "ADD" button are uppercase with +0.2–0.3pt tracking — it signals "commit."
  • Tabular numerals everywhere money/time appears: prices, ETAs, ratings align in columns.
  • Display vs UI split: ProximaNova-lineage for headings and actions; the grotesque for dense metadata and descriptions.
  • Dynamic Type: titles, body, descriptions scale; rating chips, tab labels, veg marks, and offer badges stay fixed (layout-critical).
Components and layoutRead the full spec

Buttons

Primary Button (Continue / Pay / Place Order)

  • Shape: Rounded rectangle, 12pt corner radius
  • Background: #FC8019 (Swiggy Orange)
  • Text: #FFFFFF, ProximaNova 15pt weight 700, UPPERCASE, +0.2pt tracking
  • Padding: 14pt vertical, 28pt horizontal (full-width in checkout/cart)
  • Pressed: background #E06D0C + scale 0.98
  • Disabled: background #E2E2E7 / #2A2A2A, text #93959F

Secondary / Outline Button (Repeat Last Order / Customise)

  • Background: transparent
  • Border: 1.5pt #FC8019
  • Text: #FC8019, ProximaNova 13pt weight 700, UPPERCASE
  • Corner radius: 10pt
  • Padding: 11pt vertical, 20pt horizontal
  • Pressed: background #FC80191A

ADD Button (the signature dish CTA)

  • Background: #FFFFFF light / #2A2A2A dark
  • Border: 1pt #48C479
  • Text: #48C479 (or #1BA672 light), ProximaNova 13pt weight 800, UPPERCASE
  • Corner radius: 10pt
  • Padding: 7–9pt vertical, 22–26pt horizontal
  • Shadow: rgba(0,0,0,0.5) 0 4px 12px
  • Position: bottom-overlapping the dish image by -12pt, horizontally centered
  • After tap: morphs into a [ − qty + ] stepper with the same border/colour

Text Button (View Full Menu / Show More)

  • Text: #FC8019, ProximaNova 13pt weight 700, UPPERCASE
  • No background, no border
  • Pressed: opacity 0.6

Stepper (Quantity)

  • Pill, 10pt radius, 1pt #48C479 border
  • − and + glyphs in green, quantity centered in green 800
  • Min height 32pt; matches the ADD button footprint exactly

Core Atoms

Rating Chip

  • Pill, 6pt corner radius
  • Background: #48C479 (≥4.0) / #DB7C38 (3.0–3.9) / #E84A4A (<3.0)
  • Content: 10pt white star polygon + score in white, Basis Grotesque 12pt weight 700
  • Padding: 2pt vertical, 6pt horizontal
  • Always immediately left of the ETA / distance metadata

Veg / Non-Veg Mark

  • 16pt square, 1.5pt border, 3pt corner radius
  • Veg: green border #48C479, centered 7pt green filled dot
  • Non-veg: red border #E84A4A, centered upward triangle
  • Mandatory leading element on every dish row

Offer Badge / Chip

  • On photo: white ProximaNova 16pt/800 over the scrim with an 11pt/600 sub ("UPTO ₹120")
  • Standalone chip: gradient #FC8019 → #D7385E, 8pt radius, white 12pt/800 UPPERCASE
  • Swiggy One badge: 1pt orange border, transparent, #FC8019 11pt/800

Filter Chip

  • Rounded rectangle, 8pt corner radius
  • Default: #FFFFFF/#1C1C1E fill, 1pt #E2E2E7/#2C2C2E border, text #02060C/#F2F2F2 12pt/600
  • Active: #ECECEE/#2A2A2A fill, border #686B78, optional leading icon
  • Height: 32pt; horizontally scrollable row, 8pt gap

Card Footer (Free-Delivery Strip)

  • Separated from card body by a 1pt dashed divider (#E2E2E7/#2C2C2E)
  • Leading 13pt clock/percent icon in #FC8019
  • Text: #FC8019, 12pt weight 700 — "Free delivery on orders above ₹199"

Navigation

Sticky Location Header

  • Leading: 18pt orange map-pin #FC8019
  • Title: "Home ⌄" — ProximaNova 17pt/800, chevron 14pt
  • Sub-line: full delivery address, 12pt #686B78, indented to align under title
  • Trailing: 34pt circular profile avatar
  • Collapses into a compact bar on scroll; search pill can pin under it

Search Pill

  • Height: 46pt
  • Background: #F4F4F6 / #1C1C1E
  • Corner radius: 14pt
  • Leading 18pt orange magnifyingglass; trailing 18pt orange mic
  • Placeholder: rotating ("Search 'biryani'", "Search 'cake'") #686B78/#A0A0A0 14pt/500

Bottom Tab Bar

  • Height: 70pt incl. safe area
  • Background: rgba(255,255,255,0.94) / rgba(18,18,18,0.94) with blur, 0.5pt top divider
  • Tabs (4): Swiggy (food/home), Instamart (grocery), Dineout (table booking), Cart
  • Icon 22pt; active = filled glyph in #FC8019; inactive = stroke #888
  • Labels always shown, 10pt weight 600
  • Cart shows a count badge (orange dot, white number)

Top Nav (Restaurant detail)

  • Transparent over the hero image, gradient-scrim backed
  • Leading back chevron (white over image, #02060C once scrolled)
  • Trailing: search, share, favourite (heart)
  • Sticky category strip appears once the menu starts scrolling

Input Fields

Search Field (active)

  • Same 46pt pill; on focus, border becomes 1pt #FC8019, cursor orange
  • Recent searches and trending dishes shown below as tappable rows

Address / Form Field

  • Height: 52pt
  • Background: #F4F4F6 / #1C1C1E
  • Corner radius: 12pt
  • Label floats to 11pt #686B78 on focus; text #02060C/#F2F2F2 15pt
  • Focus: 1pt #FC8019 border
  • Error: 1pt #E84A4A border + 12pt red helper text

Coupon Field

  • Inline within cart, dashed #686B78 border, 8pt radius
  • "APPLY" trailing text button in #FC8019 13pt/800 UPPERCASE

Distinctive Components

Photo-Forward Restaurant Card

Responsive behaviourRead the full spec

Device Sizes

DeviceWidthKey Changes
iPhone SE (3rd gen)375ptSingle column; restaurant photo ~210pt tall; compact location header
iPhone 13/14/15390ptStandard layout
iPhone 15/16 Pro393ptDynamic Island accommodated; location header respects it
iPhone 15/16 Pro Max430ptLarger photos (~250pt), more peek on carousels
iPad (portrait)768pt2-column restaurant grid; content max 760pt centered
iPad (landscape)1024pt+2–3 column grid; persistent cart panel on the right

Dynamic Type

  • Screen titles, section headers, body, descriptions: full scale
  • Rating chips, offer badges, tab labels, veg marks, qty steppers: FIXED (layout-critical)
  • Prices scale one step then truncate gracefully

Orientation

  • iPhone: portrait-locked for the order flow (standard for the category)
  • iPad: supports landscape with a 2–3 column grid + sticky cart panel

Touch Targets

  • ADD button / stepper: ≥ 32pt tall, 44pt hit area
  • Filter chip: 32pt tall, full-chip tap
  • Tab bar icon: 22pt glyph, 44pt+ hit
  • Rating chip: not tappable (informational)
  • Restaurant card: full-card tap target

Safe Area Handling

  • Top: location header + Dynamic Island respected; hero image bleeds under status bar with scrim
  • Bottom: floating cart bar sits above the tab bar, both above the home indicator
  • Keyboard: address/coupon forms scroll above keyboard; sticky CTA pins above it

Drop-in CSS variables

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

body.theme-swiggy {--page-bg: #ffffff;
  --page-bg-gradient: none;
  --text-color: #121212;
  --heading-color: #121212;
  --link-color: #ae5103;
  --link-hover-color: #7c3a02;
  --border-color: #d4d4d4;
  --card-bg: #ffffff;
  --card-shadow: 0 1px 2px rgba(18,18,18,0.06);
  --card-hover-shadow: 0 6px 18px rgba(18,18,18,0.12);
  --header-bg: #121212;
  --header-text-color: #ffffff;
  --header-shadow: none;
  --footer-bg: #ffffff;
  --footer-text-color: #656565;
  --button-bg: #fc8019;
  --button-text-color: #000000;
  --button-hover-bg: #df6703;
  --button-border: none;
  --button-border-radius: 12px;
  --button-secondary-bg: #f1f1f1;
  --button-secondary-text-color: #121212;
  --button-secondary-hover-bg: #e3e3e3;
  --button-secondary-border: 1px solid #d4d4d4;
  --prompt-bg: #f3f3f3;
  --prompt-text-color: #121212;
  --base-font: var(--font-helvetica);
  --heading-font: var(--font-helvetica);
  --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/swiggy/DESIGN.md · 26.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.