Skip to content

Updated   14 min read

iOS vs Material 3: what changes per component

iOS and Material 3 differ most in navigation, the primary action, sheets and snackbars. Per component: SwiftUI and Compose names, touch targets and sizes.

The bottom of one Appetite UI screen on both mirrors, the Material 3 navigation bar with a floating action button above it and the iOS tab bar floating on glass below, over a blurred coastal landscape
On this page
  1. Component names
  2. Points, dp and targets
  3. Navigation
  4. Primary action
  5. Selection controls
  6. Sheets and messages
  7. Type and color
  8. Liquid Glass and Expressive
  9. One platform only
  10. Measures as variables
  11. Questions
  12. Sources

iOS and Material 3 agree on what most mobile components do, and disagree on what they are called in code, where they sit and how big they are. The differences gather in the frame of the screen: the bars at the top and the bottom, the primary action, sheets and short messages. Controls inside the content, such as a switch, a radio group or a progress indicator, change size and shape more than behavior.

I design Appetite UI. Appetite UI is a Figma UI kit for iOS and Android apps, built like a design system. One token source drives Apple and Material components in light and dark mode, and exports to SwiftUI, Jetpack Compose, Flutter and CSS. The Appetite UI docs carry one page per component with the native name on each platform, and most of the SwiftUI and Compose names below come from those pages. Every platform rule is quoted from Apple's Human Interface Guidelines, Google's Material 3 site or the Android developer docs, read on September 24 and 26, 2026, and linked under Sources.

Most common components have a SwiftUI name and a Compose name.

The first column links to the Appetite UI docs page that draws both versions, and the components page lists every component in both mirrors. The last column is what a reviewer from the other platform notices first.

Common mobile components with their SwiftUI and Jetpack Compose names and what changes between iOS and Material 3
ComponentSwiftUIComposeWhat changes
Top barNavigationStack toolbarTopAppBarApple also calls it a navigation bar
Bottom navigationTabViewNavigationBar with NavigationBarItemA glass tab bar; Material wants three to five destinations
Primary actionA toolbar button, prominent styleFloatingActionButtonTrailing toolbar button against a FAB over the content
Sheet.sheet with presentationDetentsModalBottomSheetDetents and a grabber; a drag handle and a scrim
Action sheetconfirmationDialogModalBottomSheetNative on iOS only
Short messageNone, a custom overlaySnackbar in a SnackbarHostMaterial only, one at a time
Context menu.contextMenuDropdownMenu on long pressiOS lifts the pressed object above the menu
SwitchToggle, switch styleSwitchiOS keeps it to list rows; Material grows the handle
One of manyPicker, inline styleRadioButton groupApple's radio buttons are macOS only
Segmented controlPicker, segmented styleSegmentedButton in a single-choice rowExpressive prefers a connected button group
ProgressProgressViewCircularProgressIndicator, LinearProgressIndicatorExpressive adds a loading indicator
DateDatePicker, graphical styleDatePickeriOS adds compact and wheels styles
DividerDividerHorizontalDivider, VerticalDividerCompose names the orientation
DisclosureDisclosureGroupExpandable ListItemBoth animate their own height
Badge.badge on a tab itemBadge in a BadgedBoxApple keeps badges for critical information
CardLazyVGrid cell or List rowCard, ElevatedCard, OutlinedCardSwiftUI has no card view
File pickerfileImporterGetContentBoth open the system picker
RatingNoneNoneNeither platform ships one

Checked on , against Apple's and Google's own design and developer documentation.

Points and dp measure the same thing, and the targets still differ.

Apple sizes an interface in points, Android in density-independent pixels. Both describe a size before the screen's density multiplies it, which is why Google's accessibility page can print Apple's recommendation as "44 x 44dp" beside its own. Apple lists 44 by 44 pt as the default control size on iOS and 28 by 28 pt as the minimum. Material asks for touch targets of "at least 48 x 48dp", which it says "results in a physical size of about 9mm, regardless of screen size".

The other numbers below mix published rules with values the Appetite UI file decides. The last column says which; a value the file decides lives in a variable you can change.

Measures on iOS in points and on Android in dp, and who sets each value
MetriciOS, ptAndroid, dpSet by
Touch target44 × 4448 × 48Apple, Google
Body text1716 sp, body largeApple, Google
Switch track51 × 3152 × 32The file; Google
Sheet corner1228The file; Google
List row4456The file
Top bar4464The file
Control corner8Fully roundThe file
Safe area, top59 or 62Edge to edgeThe file; SDK 35

The iOS values are documented on the iOS mirror page, the Android ones on the Material 3 mirror page and the Platform Bridge page. Android 15 draws an app behind the system bars once it targets SDK 35, so an Android frame starts at the top edge of the screen and keeps its content clear of the status bar with insets.

On iPhone, a toolbar across the top holds the title, the back button and the actions. Apple notes that "in iOS, a navigation-specific toolbar is sometimes called a navigation bar", and asks for the standard Back and Close buttons with no text label that says Back or Close. A large title shrinks to a standard one as people scroll. The tab bar at the bottom moves between top-level sections and, since the Liquid Glass redesign, "floats above content at the bottom of the screen". Apple asks you to keep it visible in every section and to limit the cases where a More tab collects the tabs that do not fit.

Material splits the same jobs differently. The top app bar's leading button is "a back arrow, which returns to the previous screen", and the navigation bar holds "three to five destinations". With fewer than three, Material says to use tabs; with more than five, tabs inside a page or a navigation rail behind a menu icon. Back is also a system gesture: from Android 15, apps that opt in to predictive back get the system's back-to-home and cross-activity animations, so the screen behind a pushed one is part of the design.

In Appetite UI the top bar maps to the NavigationStack toolbar on iOS and the TopAppBar on Android, and the Platform collection holds the bar height per platform in one variable, platform/bar/top-height: 44 on iOS, 64 on Android. The navigation bar takes two to five destinations, so on Android keep it at three or more.

The bottom of one Appetite UI settings screen on both mirrors: the Material 3 navigation bar with a floating action button above it, and the iOS tab bar floating on glass, each with Home, Search, Favorites and Alerts
The bottom of one screen: the navigation bar with its FAB on Android, the tab bar floating on glass on iOS.

The primary action moves from the toolbar to a floating button.

Apple puts the key action of a screen in the toolbar: "Use the .prominent style for key actions such as Done or Submit." And: "Only specify one primary action, and put it on the trailing side of the toolbar." Material puts it over the content: "Use a FAB for the most important action on a screen; it appears in front of all other content."

Material 3 Expressive, announced in May 2025, changed both halves. The small FAB is "no longer recommended" and the medium FAB is "recommended for most situations". The bottom app bar gave way to a docked toolbar and a floating toolbar that can pair with a FAB, and Material says a toolbar should not show at the same time as a navigation bar.

The Appetite UI toolbar draws the rule once for both: the primary is the only filled thing on the bar, and on Android it is the FAB. The FAB itself is marked Android-native, with a toolbar action as its iOS answer.

The same account setup screen on both mirrors: on iOS the filled done button at the trailing end of the toolbar is ringed, on Android the lower part of the screen shows Material switches with a check in the handle and the navigation bar
On iOS the primary action is the one filled button, at the trailing end of the toolbar. On Android it moves to the FAB.

Selection controls look alike and are sized differently.

A switch does the same job on both platforms under different rules. Apple says to "use the switch toggle style only in a list row", and outside a list to use a button that behaves like a toggle. The iOS switch is green by default, and Apple suggests changing that color "only if necessary". Material's switch has a 52 by 32 dp track, can carry an icon in its handle, and shows the on state with a larger handle. In a settings row, both end the row with the switch:

SwiftUI
Form {
    Toggle("Face ID", isOn: $faceID)
        .toggleStyle(.switch)
}
Compose
ListItem(
    headlineContent = { Text("Face ID") },
    trailingContent = {
        Switch(checked = faceID, onCheckedChange = { faceID = it })
    },
)

One choice out of a visible set splits further. Apple's guidelines describe radio buttons and checkboxes under macOS; on iPhone the same job is a Picker in the inline style. Material keeps the RadioButton for "a single option in a list" and checkboxes for several.

The segmented control is where the two systems now point in different directions. Apple recommends "no more than about five segments on iPhone" and a tab bar for switching between separate sections. Google's Material 3 site says segmented buttons "are no longer recommended in the Material 3 expressive update" and points to the connected button group, although Compose still ships SingleChoiceSegmentedButtonRow. The Appetite UI segmented control is the iOS pill in a groove, capped at five.

Selection controls from Appetite UI's two mirrors: an iOS switch off and on and a segmented control with Day, Week and Month, beside a Material 3 switch off and on with a check in its handle and a connected button group with the same three choices
A switch and a segmented choice on both mirrors: the iOS segmented control, and Material's connected button group.

Sheets, dialogs and short messages use different surfaces.

An iOS sheet rests at detents: "large is the height of a fully expanded sheet and medium is about half of the fully expanded height". Apple asks for a grabber on a resizable sheet, a swipe down to dismiss it, and Cancel on the leading edge of its toolbar with Done on the trailing edge; in SwiftUI the heights are set with presentationDetents. A Material modal bottom sheet has a 28 dp top corner radius, an optional drag handle with a 48 dp hit target, a scrim behind it and a maximum width of 640 dp; in Compose it is a ModalBottomSheet. The Appetite UI modal page draws both.

The action sheet is iOS only. Apple defines it as "a modal view that presents choices related to an action people initiate", with the destructive choice at the top and Cancel at the bottom; in SwiftUI it is a confirmation dialog. On Android, Material says modal bottom sheets "can be used instead of menus to present additional actions", which is what the Action Sheet page recommends for the Android half.

The snackbar runs the other way. "Snackbars show short updates about app processes at the bottom of the screen", "only one snackbar may be displayed at a time", and it "can contain a single action". iOS has no system snackbar, so the Appetite UI toast is a custom overlay there. Material adds a rule worth keeping on both platforms: information in a snackbar that dismisses itself must also be shown inline or near the action that triggered it.

An Actions sheet on both mirrors over a dimmed account setup screen: on iOS a sheet with a grabber, a close button and a filled confirm button above Share, Duplicate and Move to folder, on Android a modal bottom sheet with a drag handle and the same three rows
The same actions as an iOS sheet and as a Material modal bottom sheet, each over a dimmed screen.

Type and color follow two different ramps.

iOS type is a set of text styles that scale with Dynamic Type. The default text size on iOS is 17 pt, the minimum 11 pt, and Large is the default Dynamic Type setting. Material 3 has "one type scale containing two sets of type styles: 15 baseline and 15 emphasized", with Roboto as the default face. The ramps do not line up step for step, so the Appetite UI typography page maps both to one scale:

Appetite UI type steps with the Apple text styles and Material 3 roles that map to them
StepApple text styleMaterial 3 role
6xl, 60NonedisplayLarge
5xl, 48NonedisplayMedium
4xl, 36largeTitledisplaySmall
3xl, 30title1headlineLarge, headlineMedium
2xl, 24NoneheadlineSmall
xl, 20title2, title3titleLarge
lg, 18headline, bodyNone
base, 16callouttitleMedium, bodyLarge
sm, 14subheadlinetitleSmall, bodyMedium, labelLarge
xs, 12footnote, caption1, caption2bodySmall, labelMedium, labelSmall

That is the file's Brand mode. Its System mode returns each platform's own published size, Apple's 17 pt body and Material's 57 sp displayLarge among them.

Color differs in model as well as in hue. iOS works from a tint and dynamic system colors that "automatically adapt to both light and dark contexts", and to vibrancy and accessibility settings. Material works from color roles, 32 of which the file maps, and signals hover, focus, press and drag with state layers: a fixed opacity of 8, 10, 10 and 16 percent over the content color, and 38 percent for a disabled state. The file keeps those opacities on the Material side only; the iOS mirror has no slot for them.

Accent and primary text in iOS System, Material 3 System and Brand mode
SlotiOS, SystemM3, SystemBrand, both
Accent#007AFF#6750A4#155DFC
Primary text#000000#1D1B20#0E0E0F

The accent is iOS/tintColor, Apple's systemBlue, and M3/sys/color/primary; in Brand mode both read brand/base. Primary text is iOS/label and M3/sys/color/on-surface, and in Brand mode both read text/strong-950.

Liquid Glass and Material 3 Expressive changed material and shape in the same year.

Apple added Liquid Glass to the Materials page of its guidelines on June 9, 2025. It describes the material as a functional layer for controls and navigation, tab bars and sidebars among them, that "floats above the content layer", and says: "Don't use Liquid Glass in the content layer." Standard SwiftUI and UIKit components pick up the material when an app is built with the latest SDK, and Apple's design kits for iOS 27, out on June 23, 2026, list "Updates to Liquid Glass" first. A Figma file can only hint at it: Appetite UI ships glass styles measured from Apple Design Resources, a surface tier for sheets, alerts and menus and a control tier for buttons and toolbar items, and treats the toolbar's flat fill as a placeholder the SDK replaces.

Material 3 Expressive arrived on May 13, 2025, with "fourteen new or updated components", a new shape library with shape morphing, and new corner radii of 20, 32 and 48 dp. Google is explicit that "M3 Expressive isn't a new version of the system", yet it changes what Material recommends on a phone: the shorter flexible navigation bar replaces the baseline one, flexible medium and large app bars replace the old ones, and the docked toolbar replaces the bottom app bar.

Some components exist on one platform only.

Components native to one platform and what the other platform uses instead
ComponentiOSAndroid
Action sheetNative, a confirmation dialogA modal bottom sheet
Floating action buttonA toolbar actionNative
SnackbarA custom overlayNative
Segmented controlNativeA connected button group
Radio button and checkboxDescribed for macOSNative
RatingNoneNone

Decide each missing component once and write the decision next to the component, so the second platform does not inherit the first one's answer by accident.

One component can serve both platforms when its measures are variables.

This is how I split the work in Appetite UI. When the two platforms disagree about a number, the number becomes a variable with one value per platform: the Platform collection has three modes, ios-md, ios-lg and android, and platform/min-touch-target reads 44, 44 and 48, so one list row obeys both without a second copy. When they disagree about a component, the component is drawn once in each mirror: 21 pattern pages on the iOS side and 17 on the Material side.

Both mirrors read their colors through the Platform Bridge, 52 Apple slots and 60 Material slots on two modes: Brand points both platforms at your tokens, and System returns Apple's and Google's published values. The step-by-step setup is in How to design one app for iOS and Android in Figma, which official kit to start from is in Apple's iOS kit, Google's Material 3 kit or Appetite UI: which to start from, and the platforms page shows both mirrors side by side.

Questions

What is the difference between iOS and Material Design?

iOS and Material Design describe the same jobs with different components and measures. iOS follows Apple's Human Interface Guidelines and, since the Liquid Glass redesign, floats its bars on a glass layer; Android apps follow Material 3, updated by Material 3 Expressive in May 2025. The largest differences are in navigation, the primary action, sheets and short messages; controls inside the content mostly differ in size and shape.

Is 44 pt the same size as 48 dp?

No. Points and dp are both density-independent, so the numbers compare directly: Apple's default control size on iOS is 44 by 44 pt, and Material asks for touch targets of at least 48 by 48 dp. Google's accessibility page writes Apple's recommendation as 44 x 44dp next to its own 48.

Should an iOS app use a floating action button?

Not by default. The floating action button is Material's pattern. Apple's guidelines put the key action on the trailing side of the toolbar in the prominent style, and ask for only one primary action per toolbar. Appetite UI marks its FAB Android-native and draws a toolbar action for iOS.

What is the iOS equivalent of a Snackbar?

iOS has no system snackbar. Use a custom overlay for short feedback that goes away on its own, as the Appetite UI toast does, and an alert when the person has to act. Keep Material's rule on both platforms: information in a message that dismisses itself must also be shown inline or near the action that triggered it.

Does Material 3 have a segmented control?

Material 3 has segmented buttons, and Material 3 Expressive no longer recommends them. Google's Material 3 site recommends the connected button group, while Jetpack Compose still ships SingleChoiceSegmentedButtonRow and MultiChoiceSegmentedButtonRow. The segmented control with a sliding pill is Apple's.

Sources

  1. Apple HIG: Tab bars, read September 26, 2026
  2. Apple HIG: Toolbars, read September 24, 2026
  3. Apple HIG: Toggles, read September 24, 2026
  4. Apple HIG: Segmented controls, read September 24, 2026
  5. Apple HIG: Sheets, read September 24, 2026
  6. Apple HIG: Action sheets, read September 24, 2026
  7. Apple HIG: Accessibility, read September 24, 2026
  8. Apple HIG: Typography, read September 24, 2026
  9. Apple HIG: Color, read September 24, 2026
  10. Apple HIG: Materials, read September 26, 2026
  11. Apple HIG: Pickers, read September 24, 2026
  12. Apple Developer: Adopting Liquid Glass, read September 24, 2026
  13. Apple Developer News: Design kits for iOS, iPadOS, and macOS 27 are here, read September 24, 2026
  14. SwiftUI: presentationDetents, read September 24, 2026
  15. SwiftUI: confirmationDialog, read September 24, 2026
  16. Material 3: Navigation bar, read September 24, 2026
  17. Material 3: App bars, read September 24, 2026
  18. Material 3: Floating action button, read September 24, 2026
  19. Material 3: Toolbars, read September 24, 2026
  20. Material 3: Switch specs, read September 24, 2026
  21. Material 3: Switch guidelines, read September 24, 2026
  22. Material 3: Segmented buttons, read September 24, 2026
  23. Material 3: Bottom sheets, read September 24, 2026
  24. Material 3: Snackbar, read September 24, 2026
  25. Material 3: Accessibility, designing, read September 24, 2026
  26. Material 3: Type scale and tokens, read September 24, 2026
  27. Material 3: State layers, read September 24, 2026
  28. Material 3: Shape, read September 24, 2026
  29. Material Design: Start building with Material 3 Expressive, read September 24, 2026
  30. Android Developers: Material Components in Compose, read September 24, 2026
  31. Android Developers: Display content edge-to-edge, read September 24, 2026
  32. Android Developers: Predictive back gesture, read September 24, 2026

Written by

Bob Poláček

Designer of Appetite UI. Builds the Figma file, the token architecture and the code output, and answers the support inbox.

Keep reading

  • Guide · Sep 24, 2026 · 11 min read

    How to design one app for iOS and Android in Figma

    Keep one token set, share the components that behave alike, draw bars and sheets once per platform, and switch touch targets with a Figma variable mode.

  • Platforms · Sep 24, 2026 · 10 min read

    Apple's iOS kit, Google's Material 3 kit or Appetite UI: which to start from

    Which Figma kit to start from: Apple's iOS 27 kit for an iPhone-only app, Google's Material 3 kit for Android, Appetite UI when one app ships on both.

  • Comparison · Sep 24, 2026 · 13 min read

    The best Figma UI kits for mobile apps in 2026

    Apple's kit for iOS only, Google's Material 3 kit for Android only, one token source for both. Eight Figma UI kits for mobile apps, sorted by the app you ship.

Your next rebrand is one edit.

One-time payment, Lifetime updates, Unlimited client projects