---
name: external-uniwind-rn-ios
description: Design or review Expo and React Native iOS UI with Uniwind Pro, including tabs, nav bars, sheets, blur, safe areas, and Dynamic Type.
---
# iOS Native Feel — Expo + React Native + Uniwind Pro
Make React Native screens feel like they belong on iPhone and iPad without blindly copying Apple system apps.
Use this skill when a UI should feel more native on iOS.
## Core iOS Qualities
Great iOS interfaces tend to feel:
- content-first
- quiet
- spatially clear
- generous with touch
- precise in typography
- subtle in motion
- respectful of safe areas
- light on decorative borders
- careful with hierarchy
- comfortable one-handed
Do not make iOS screens feel like web dashboards. Avoid dense chrome, over-boxed layouts, tiny controls, and excessive shadows.
## iOS Rules
### 1. Minimum hit target: 44×44 pt
All primary tappable controls should meet or exceed 44×44.
Use larger targets for:
- destructive actions
- frequently repeated actions
- controls near screen edges
- icon-only buttons
- bottom actions
- controls used while walking or multitasking
Good iOS icon button:
```tsx
```
### 2. Respect the home indicator and status area
Use Uniwind Pro safe area utilities.
Good:
```tsx
{/* content */}
```
Fixed bottom action:
```tsx
Continue
```
Avoid hard-coded bottom padding like `pb-8` for iPhone home indicator spacing.
### 3. Use iOS typography proportions
Good defaults:
|Role|Size|Weight|
|---|--:|---|
|Large screen title|32–34|bold|
|Screen title|28–30|bold / semibold|
|Section heading|20–22|semibold|
|Body|16–17|regular|
|Secondary|14–15|regular|
|Caption|12–13|regular / medium|
|Button|16–17|semibold|
Prefer a slightly larger body size on iOS than Android when using platform variants:
```tsx
{body}
```
### 4. Use large titles only for true top-level screens
A large title works well when:
- the screen is a top-level destination
- the content below is a list, feed, settings, library, or overview
- the title names a place, not an action
Avoid large titles for:
- modals
- dense forms
- detail screens with a strong object title
- short-lived confirmation screens
Pattern:
```tsx
Library
```
### 5. iOS cards should feel soft, not heavy
Use rounded corners, subtle separation, and restrained shadows.
Good card:
```tsx
{title}
{subtitle}
```
Prefer:
- `rounded-2xl`
- `border-continuous`
- soft backgrounds
- subtle hairline dividers
- light shadows only for elevated objects
Avoid:
- heavy Android-like elevation shadows
- boxed layouts around every row
- thick borders
- dense grid systems
### 6. Use grouped-list structure for settings-like screens
iOS settings screens often feel better as grouped sections than as independent cards.
Pattern:
```tsx
Account
```
Rows should usually be at least 44 high, preferably 48–56 for comfort.
### 7. Prefer quiet iOS press states
For iOS:
- opacity change is acceptable
- subtle background fill on list rows is acceptable
- tiny scale is acceptable for buttons/cards
- avoid loud ripples
- avoid intense color flashes
```tsx
{label}
```
### 8. Use blur carefully
Blur can feel very iOS, but it is easy to overuse.
Use blur for:
- translucent navigation areas
- bottom bars over scrolling content
- modals/sheets where background context matters
Avoid blur for:
- ordinary cards
- dense lists
- text-heavy surfaces
- performance-sensitive repeated elements
If blur is unavailable or too costly, use `bg-background/95` with a subtle border.
### 9. Sheets should feel anchored and safe
For bottom sheets or modal sheets:
- use rounded top corners
- keep drag handles subtle
- respect `pb-safe`
- do not put destructive actions too close to the home indicator
- make dismissal affordances clear
- avoid nested sheets unless unavoidable
Pattern:
```tsx
Choose plan
{/* options */}
```
### 10. iOS motion should be spatial but gentle
Good iOS motion:
- short
- interruptible
- directional when hierarchy changes
- mostly opacity/translate/scale
- never gratuitously bouncy
For small elements:
```tsx
```
Avoid expressive presets like `bounce`, `jello`, `tada`, and `glitch` unless the brand is playful and the moment is low-stakes.
### 11. Respect reduced motion and transparency preferences
When motion or blur is ornamental, provide a calmer fallback.
If reduced motion is enabled:
- replace large slides with fade
- remove parallax
- stop looping animations
- avoid animated blur/depth effects
If reduced transparency is enabled:
- avoid relying on blur
- use opaque backgrounds
- preserve contrast
### 12. Use platform selectors, not global compromise
Do not force a single design to serve iOS and Android equally.
```tsx
```
## iOS Anti-patterns
Avoid:
- 36px-high buttons
- bottom CTAs without `pb-safe`
- web-like hover assumptions
- dense icon clusters in the top bar
- heavy shadows on every card
- Android-style ripples
- using the same typography scale as Android without checking optical fit
- putting destructive controls next to the home indicator
- hiding key actions behind tiny glyphs
- full-screen motion for minor state changes
## iOS Review Output Format
Use markdown tables grouped by principle.
### Example
#### iOS touch targets
|Before|After|Reason|
|---|---|---|
|`size-8` close button|`size-11` plus `hitSlop={8}`|Meets iOS 44pt target and is easier to tap|
|Bottom CTA used visual height 40|Changed to `min-h-12`|Primary action needs comfortable thumb target|
#### iOS safe areas
|Before|After|Reason|
|---|---|---|
|Footer used `pb-4`|`pb-safe-offset-3`|Keeps action clear of home indicator|
|Header used fixed `pt-12`|`pt-safe-offset-4`|Adapts across iPhone models|
#### iOS visual feel
|Before|After|Reason|
|---|---|---|
|Cards used heavy shadow|Reduced to subtle shadow and `border-continuous`|Better matches iOS softness|
|Settings rows were separate cards|Grouped rows inside one rounded section|Feels more like native iOS settings|