Mobile Components

Built for iOS & Android

35+ native-grade mobile components with platform-specific variants, touch target specs, and React Native code. Every component follows iOS Human Interface Guidelines and Android Material You.

iOS · HIG compliant Android · Material You React Native ready
Navigation

App Bar iOSAndroid

The top navigation bar shows context, title, and primary actions. iOS centers the title; Android left-aligns it.

9:41
Recommended
Explore
Browse new content
Add New
Start from scratch
iOS · Navigation Bar
9:41
Discover
Recommended
Explore
Browse new content
Add New
Start from scratch
Android · Top App Bar
PropertyiOS (pt)Android (dp)
Height44pt64dp
Title size17pt · 60020sp · 500
Icon touch target44×44pt48×48dp
Navigation

Bottom Tab Bar iOSAndroid

Primary navigation for switching between top-level sections. iOS uses icon+label; Android uses an active indicator pill.

9:41
Home
Explore
Library
Profile
iOS · Tab Bar
9:41
Home
Home
Explore
Library
Profile
Android · Bottom Navigation
PropertyiOS (pt)Android (dp)
Bar height82pt (incl. safe area)80dp
Icon size25×25pt24×24dp
Max items55
Badge size8pt dot / 16pt label8dp dot / 16dp label
Overlays

Bottom Sheet iOSAndroid

Surfaces that slide up from the bottom edge. Use for contextual actions without a full-screen takeover.

9:41
Share Options
Copy Link
Share via…
Remove
Bottom Sheet · Partial
React Native (reanimated)
// Install: @gorhom/bottom-sheet
import BottomSheet, {BottomSheetView} from '@gorhom/bottom-sheet';

const MySheet = () => {
  const snapPoints = ['40%', '85%'];
  return (
    <BottomSheet snapPoints={snapPoints} backgroundStyle={{
      backgroundColor: '#fff', borderRadius: 14
    }}>
      <BottomSheetView>
        // content
      </BottomSheetView>
    </BottomSheet>
  );
};
Overlays

Action Sheet iOS

iOS-native contextual menu that appears at the bottom. Always include a Cancel button as a separate grouped card.

9:41
Save photo or share with your network
Save to Photos
AirDrop
Share to Story
Report Content
Cancel
iOS · Action Sheet
Actions

Floating Action Button AndroidiOS

The primary action on a screen. Use one FAB per view. The extended variant adds a label for clarity.

9:41
Messages
JD
Jane Doe
Sounds great! See you then 👋
2m
KL
Kiran L.
Just sent the files over
1h
New Message
FAB · Extended + Mini
VariantSizeToken
Standard FAB56×56dp--radius-full
Mini FAB40×40dp--radius-full
Extended FAB56dp height--radius-full
Actions

Chips AndroidiOS

Compact, interactive elements for filtering, input, and suggestions. Chips are smaller and more specific than buttons.

9:41
Filter Chips
Design
Engineering
Research
Marketing
Input Chips
Jane D.
×
Kiran L.
×
Suggestion Chips
Summarise
Translate
Explain
Filter · Input · Suggestion
Lists & Cards

List Items iOSAndroid

The most common mobile pattern. Minimum touch target 44pt (iOS) / 48dp (Android). Every row must be tappable end-to-end.

9:41
Account
Profile
jane@company.com
Notifications
Preferences
Appearance
Dark
Language
English (US)
Sign Out
iOS · Section List
Lists & Cards

Swipe Actions iOSAndroid

Reveal contextual actions by swiping a list row. Left swipe for secondary actions (archive), right swipe for destructive (delete).

9:41
A
Alice
Can you review the designs?
Now
Archive
Delete
B
Bob
Swipe left/right on this row
C
Carol
The meeting is at 3pm today
1h
iOS · Swipe to Archive / Delete
Lists & Cards

Cards iOSAndroid

Cards group related content into a scannable unit. On mobile, prefer full-width cards with clear hierarchy.

9:41
Design
Design Token System
A single source of truth for all visual decisions across iOS and Android.
Updated today Read →
Motion Tokens
Easing + duration values for smooth animations
Vertical + Horizontal Cards
Inputs

Text Fields AndroidiOS

Material Filled is the default Android style. iOS uses a bordered or underline approach. Always float the label on focus.

9:41
Sign In
Email address
jane@company.com
Password
Username
janedoe99
Username already taken
Sign In
Android · Material Filled
9:41
Email
jane@company.com
Password
••••••••
Continue
iOS · Rounded Outlined
React Native
const styles = StyleSheet.create({
  container: { marginHorizontal: 16, marginBottom: 16 },
  label: { fontSize: 13, fontWeight: '500', color: '#000', marginBottom: 6 },
  input: {
    borderWidth: 1.5,
    borderColor: 'rgba(60,60,67,.2)',
    borderRadius: 10,
    padding: 12,
    fontSize: 16,
    backgroundColor: '#fff',
  },
  inputFocused: { borderColor: '#7a5af8' },
  inputError: { borderColor: '#ff3b30' },
});
Feedback

Snackbar AndroidiOS

Brief, non-blocking feedback at the bottom of the screen. Auto-dismisses after 4 seconds. One optional action, no icons.

9:41
Inbox
Message deletedUNDO
Snackbar with Action
Feedback

Skeleton Loading iOSAndroid

Show skeleton screens instead of spinners whenever content structure is known. Reduces perceived load time.

9:41
Card + List Skeleton
Feedback

Empty State iOSAndroid

When a list or view has no content. Always explain why it's empty and provide a clear next action.

9:41
Nothing saved yet
Tap the bookmark icon on any post to save it here for later.
Explore Content
Empty State
Platform

Safe Areas iOSAndroid

Respect the status bar, Dynamic Island, and home indicator. Never place interactive elements inside safe area insets.

Status Bar · 44pt
Safe Content Area
Home Indicator · 34pt
Status Bar: 44pt (iOS) / 24dp (Android)
Home Indicator: 34pt (iOS) / 0dp (Android nav gestures)
ZoneiOS (pt)Android (dp)
Status bar44–59pt24dp
Home indicator34pt0 (gesture nav)
Side insets (notch)0pt (vertical notch)varies
RN SafeAreaViewreact-native-safe-area-context
React Native
import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';

// Wrap app root
<SafeAreaProvider>
  <App />
</SafeAreaProvider>

// In screen components
<SafeAreaView edges={['top', 'bottom']} style={{ flex: 1 }}>
  // screen content
</SafeAreaView>
Platform

Touch Targets iOSAndroid

Every interactive element must meet the minimum touch target size even if the visual appears smaller.

PlatformMinimum Touch TargetRecommendedNote
iOS (HIG)44×44pt44×44ptUse hitSlop to expand small targets
Android (Material)48×48dp48×48dpMinimum 8dp gap between targets
WCAG 2.5.544×44px CSS44×44pxLevel AA requirement
React Native · hitSlop
// Expand touch area beyond visual bounds
<TouchableOpacity
  hitSlop={{ top: 12, bottom: 12, left: 12, right: 12 }}
  onPress={handlePress}
>
  <Icon size={20} />  // Visual 20px, touch 44×44
</TouchableOpacity>
Copied!