# Guideline 4.0 - Design: Touch Targets Too Small

**Guideline:** 4.0 · **Store:** Apple App Store · **Risk:** low · **Difficulty:** easy · **Typical turnaround:** 2-4 hours

Canonical URL: https://appstorereject.com/rejections/apple/4/guideline-40-design-touch-targets-too-small

## Description

Apple rejected your app because one or more interactive elements have tappable areas smaller than the recommended 44×44 point minimum. Small touch targets cause accidental taps on adjacent controls, frustrate users with larger fingers, and are especially problematic for users with motor accessibility needs. This rejection is common in dense list views, toolbars with many icons, and custom controls built without adequate hit areas.

## Common variations

- Toolbar icons are too small with no padding to expand the hit area
- Close or dismiss buttons use a tiny X with no surrounding tappable region
- Custom checkbox or radio button controls have a hit area matching only the visual element
- Row action buttons (edit, delete) in table views are too narrow to tap reliably
- Inline text links have no vertical padding, making them difficult to tap on mobile

## Example rejection email

```
We noticed an issue in your app that contributes to a lower quality user experience than Apple users expect:

- Touch targets are too close together or too small.

Specifically, the toolbar buttons in the editor screen and the row action buttons in the list view are smaller than the minimum recommended tappable area of 44x44 points, making it difficult to tap accurately. Next Steps: Please revise your app to ensure all interactive elements have adequate touch target sizes and resubmit.
```

## Resolution steps

## How to Fix Touch Targets Too Small

1. **Ensure a minimum 44×44pt tappable area** — Apple's Human Interface Guidelines specify 44×44 points as the minimum touch target size. This applies to buttons, links, toggles, and any other interactive element.

2. **Expand hit areas without changing visual size** — You don't need to make the icon or text visually larger. In SwiftUI, use `.contentShape(Rectangle())` on a padded container:

   ```swift
   Button(action: { dismiss() }) {
       Image(systemName: "xmark")
           .font(.caption)
           .frame(minWidth: 44, minHeight: 44)
           .contentShape(Rectangle())
   }
   ```

3. **In UIKit, override point(inside:with:)** — For custom controls that need a larger hit area than their visual bounds:

   ```swift
   override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
       bounds.insetBy(dx: -10, dy: -10).contains(point)
   }
   ```

4. **Add spacing between adjacent targets** — When multiple buttons sit side by side, add at least 8pt spacing between their tappable areas to prevent mis-taps.

5. **Audit with Accessibility Inspector** — Use Xcode's Accessibility Inspector to visualize tap targets and identify undersized elements.

6. **Test with large fingers in mind** — Use the simulator's touch indicator to verify tappability, but also test on a physical device with your thumb to catch real-world usability issues.

7. **Mention specific fixes in reviewer notes** — List which elements you resized and their new tap target dimensions when resubmitting.

## Appeal guidance

Appeals are unnecessary — this is a quick fix. If you believe your touch targets already meet the 44pt minimum, measure them precisely using Accessibility Inspector and provide the measurements in your Resolution Center reply.

## Before / after examples

**Before:** // Tiny 20x20pt button — fails Apple's 44pt minimum
Button(action: { dismiss() }) {
    Image(systemName: "xmark")
        .font(.system(size: 12))
}
.frame(width: 20, height: 20)
**After:** // Visual size stays small, tappable area meets 44pt minimum
Button(action: { dismiss() }) {
    Image(systemName: "xmark")
        .font(.system(size: 12))
        .frame(minWidth: 44, minHeight: 44)
        .contentShape(Rectangle())
}
**Why it works:** The icon remains visually small (12pt), but the tappable area expands to 44×44 points via .frame(minWidth:minHeight:) and .contentShape(Rectangle()). This satisfies Apple's requirements without changing the design.

**Before:** // UIKit: button with intrinsicContentSize too small
class SmallButton: UIButton {
    override var intrinsicContentSize: CGSize {
        return CGSize(width: 24, height: 24)
    }
}
**After:** // UIKit: minimum touch target enforced via intrinsicContentSize
class AccessibleButton: UIButton {
    override var intrinsicContentSize: CGSize {
        let size = super.intrinsicContentSize
        return CGSize(
            width: max(size.width, 44),
            height: max(size.height, 44)
        )
    }
}
**Why it works:** Override intrinsicContentSize to enforce a 44×44pt minimum while preserving the natural content size when it's already large enough. This ensures Auto Layout always allocates adequate tap target space.

## Common questions

**Can you appeal a 4.0 rejection?**

Appeals are unnecessary — this is a quick fix. If you believe your touch targets already meet the 44pt minimum, measure them precisely using Accessibility Inspector and provide the measurements in your Resolution Center reply.

**How long does this typically take to fix?**

Typical turnaround is 2-4 hours (difficulty: easy). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-40-design-touch-targets-too-small*