3D Touch is an Apple hardware technology that recognizes the force of pressing on the iPhone display, and its software replacement Haptic Touch, which works through touch duration. 3D Touch uses calibrated pressure sensors installed under the screen matrix (Force Touch), and allows distinguishing between light press (peek) and deep press (pop). Starting with iOS 13, Apple replaced 3D Touch with Haptic Touch — a technology that simulates force press through Long Press with haptic feedback UIContextMenuInteraction.
Key Takeaways
3D Touch is a hardware input technology that debuted in the iPhone 6S (2015). Beneath the display surface, capacitive sensors measure the distance between the glass and the backlight. When you press with your finger, the glass bends microscopically, the sensors detect the amount of deformation and convert it into a force value (grams). iOS distinguishes three levels: light touch (touch), medium press (peek, ~200 g) and deep press (pop, ~400 g).
Haptic Touch is a software replacement for 3D Touch, introduced in iOS 13 (2019). Instead of measuring pressure, Haptic Touch uses Long Press (finger hold ~500 ms) to activate the same actions. Haptic feedback simulates the feeling of a "click," although no physical press occurs. Apple switched to Haptic Touch due to the complexity and high cost of manufacturing 3D Touch displays, especially when transitioning to OLED panels with Face ID.
Historical background: 3D Touch appeared in iPhone 6S and remained until iPhone XS (2018). iPhone XR (2018) became the first device with Haptic Touch instead of 3D Touch. Starting with iPhone 11 (2019) and iOS 13, all new iPhones use Haptic Touch. iPad never received 3D Touch — only Haptic Touch with iPadOS 13. Apple Watch uses Force Touch technology in the display (different from iPhone 3D Touch), which was removed starting with watchOS 7 and Series 6.
Force Touch is a force measurement technology used by Apple in iPhone 6S–XS (3D Touch), MacBook trackpads (2015+) and Apple Watch (Series 1–5). It is based on capacitive sensors located around the perimeter of the display. When pressed, the glass deforms by microns, the sensors register the change in distance and calculate the force using a calibration curve. The system takes into account the ambient temperature (calibration every 24 hours) and finger position (the center of the screen is more sensitive).
Calibration is a critical aspect of 3D Touch. Each iPhone is calibrated individually at the factory. iOS also performs dynamic calibration: on the first press after boot, the system asks for the user's maximum force and adjusts sensitivity. Sensors have an accuracy of ±10 grams, range — from 0 to 500+ grams. The developer can get the force value through UITouch.force (normalized from 0.0 to maximum) or UITouch.maximumPossibleForce.
// Checking 3D Touch availability and reading press force
class ForceTouchViewController: UIViewController {
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
guard let touch = touches.first else { return }
// Checking Force Touch support on the device
guard self.traitCollection.forceTouchCapability
== UIForceTouchCapability.available else {
// Device does not support 3D Touch
return
}
// Reading press force (0.0 — max)
let force = touch.force // 0.0 ... maximumPossibleForce
let maxForce = touch.maximumPossibleForce
// Normalization to 0.0–1.0 range for visualization
let normalizedForce = force / maxForce
// Visual reaction to press force (element scale)
forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
y: 1.0 + normalizedForce * 0.3)
}
}Limitations: 3D Touch only works with an active touch (UITouch.phase == .began or .moved). After release, the force value resets to zero. The maximum force value varies between devices: iPhone 6S — 6.6666, iPhone 7/X — up to 20.0 (due to different calibration). Do not use force for critical actions — the user may not know how hard to press. Always provide an alternative through Haptic Touch (Long Press).
Peek and Pop is the original Apple UX pattern introduced with 3D Touch in iPhone 6S. Peek is a light press (force ~0.5–1.0) that shows a preview of content (email, link, photo) in a preview card. Pop is a deeper press (force ~2.0+) that opens the content in full screen. Peek supported actions at the bottom (share, copy, reply), accessible by swiping up on the preview card.
Peek and Pop implementation in UIKit included three components: UIViewControllerPreviewingDelegate (a protocol with methods previewingContext(_:viewControllerForLocation:) and previewingContext(_:commit:)), UIPreviewAction (actions at the bottom) and registration through registerForPreviewing(with:sourceView:). The developer specified which ViewController to show on Peek and how to open it on Pop. The system automatically added parallax animation and background blur.
| Gesture | Force (norm.) | Action | Visual Effect |
|---|---|---|---|
| Touch | 0.0–0.3 | Normal interaction | Element highlight |
| Light press (Peek) | 0.5–1.0 | Content preview | Card with background blur |
| Deep press (Pop) | 2.0+ | Full screen opening | Card expansion animation |
| Swipe up | — | Actions (share, copy) | UIPreviewAction Group |
Transition to UIContextMenuInteraction (iOS 13): Apple replaced Peek and Pop with context menus through UIContextMenuInteraction. The new API is simpler: does not require UIViewControllerPreviewingDelegate, supports hierarchical menus (submenus), SF Symbols icons, and works identically with 3D Touch and Haptic Touch. Migration: registerForPreviewing deprecated since iOS 13. Replace with UIContextMenuConfiguration, which automatically adapts to the device's capabilities.
UIContextMenuInteraction is a modern iOS API for context menus, available since iOS 13. It is added to any UIView through addInteraction(_:). The UIContextMenuInteractionDelegate provides the menu configuration: UIContextMenuConfiguration with an identifier, previewProvider (optional, for preview) and actionProvider (array of UIAction or UIMenu). The context menu is activated by 3D Touch (if available) or Haptic Touch (Long Press on other devices).
// UIContextMenuInteraction with hierarchical menu
class ContextMenuViewController: UIViewController,
UIContextMenuInteractionDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let interaction = UIContextMenuInteraction(delegate: self)
contextMenuView.addInteraction(interaction)
}
func contextMenuInteraction(_ interaction: UIContextMenuInteraction,
configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
return UIContextMenuConfiguration(identifier: nil,
previewProvider: { PreviewViewController() }) { _ in
let share = UIAction(title: "Share",
image: UIImage(systemName: "square.and.arrow.up"),
handler: { _ in self.shareContent() })
let edit = UIAction(title: "Edit",
image: UIImage(systemName: "pencil"),
handler: { _ in self.editContent() })
let delete = UIAction(title: "Delete",
image: UIImage(systemName: "trash"),
attributes: .destructive,
handler: { _ in self.deleteContent() })
return UIMenu(title: "Actions", children: [share, edit, delete])
}
}
}UIContextMenuConfiguration supports previewProvider — a controller displayed as a preview. If previewProvider is nil, the context menu is shown without a preview. UIContextMenuContentPreviewProvider is used to customize the size and appearance of the preview. Context menus automatically receive haptic feedback (Haptic Touch Engine) and appearance animation (scale + fade).
Haptic Touch and 3D Touch are different technologies leading to the same result. 3D Touch is hardware (pressure sensors in the display), Haptic Touch is software (Long Press + Taptic Engine for haptic simulation). 3D Touch requires manufacturing costs (additional sensor layer), increases screen thickness and repair complexity. Haptic Touch is cheaper, simpler to manufacture and available on all modern devices (iPhone SE 2020, iPhone 11–16, iPad, iPod touch).
| Parameter | 3D Touch | Haptic Touch |
|---|---|---|
| Principle | Pressure measurement (grams) | Time measurement (milliseconds) |
| Availability | iPhone 6S–XS (limited) | iPhone XR+, iPad, iPod touch |
| Speed | Instant (~100 ms) | With delay (~500 ms) |
| Press levels | 2 (peek + pop) | 1 (context menu) |
| Haptic feedback | Taptic Engine (click simulation) | Taptic Engine (click simulation) |
| App Store | Quick Actions on icon | Quick Actions on icon |
| Calibration | Auto-calibration to user force | Not required |
| Repairability | Complex (sensors in display) | Standard |
Impact on UX: 3D Touch speed is higher — the user gets the context menu immediately on strong press. Haptic Touch requires a 500 ms pause, which feels slower. However, Apple compensates with haptic feedback and visual animation. Users who switched from 3D Touch to Haptic Touch often notice the speed difference. For developers, migration is transparent: UIContextMenuInteraction works identically on both technologies.
Quick Actions — a context menu on the app icon on the home screen. Strong press (3D Touch) or Long Press (Haptic Touch) on the icon shows up to 4 quick actions: "New Message" (Messages), "Take Photo" (Camera), "Search" (Safari). Implemented through Info.plist key UIApplicationShortcutItems or through the UIApplicationShortcutItem delegate. Quick Actions are available on all devices with iOS 13+ (Haptic Touch) or 3D Touch.
Keyboard trackpad — force pressing the iOS keyboard switches it to trackpad mode: keys become inactive, and finger movement moves the cursor. 3D Touch activated the trackpad with a strong press anywhere on the keyboard. Haptic Touch activates the trackpad with a long press on the spacebar. Trackpad mode became one of the most popular uses of 3D Touch — users appreciate precise cursor positioning when editing text.
Link and photo preview — force pressing a link in Safari shows a page preview (peek) without navigating. Similarly: pressing a photo in Messages opens an enlarged version. Swiping up in peek mode shows actions: "Open", "Add to Reading List", "Copy". All these scenarios work through UIContextMenuInteraction in modern versions of iOS.
Drawing and creative apps — in Procreate, Photoshop and other drawing apps, 3D Touch press force controls brush thickness, opacity or color saturation. Apps read UITouch.force (0.0–1.0) and convert it to tool parameters. However, for drawing, Apple Pencil on iPad provides more precise pressure control (with tilt and azimuth support), so 3D Touch in creative apps on iPhone is less in demand.
Frequently Asked Questions
3D Touch is a hardware technology that measures press force through capacitive sensors in the display (iPhone 6S–XS). Haptic Touch is a software simulation using Long Press and haptic feedback from the Taptic Engine. 3D Touch is faster (100 ms vs 500 ms) and supports two force levels (peek + pop). Haptic Touch is available on all devices with iOS 13+, including iPhone XR, all iPhone 11–16 models, iPad and iPod touch.
In code, use traitCollection.forceTouchCapability. The value .available means 3D Touch is supported, .unavailable means not, .unknown means not yet determined (wait for traitCollectionDidChange). On devices with Haptic Touch, forceTouchCapability returns .unavailable, since Haptic Touch does not use hardware force sensors. For users: check Settings → Accessibility → Touch → 3D Touch (only on older iPhones).
Apple replaced 3D Touch with Haptic Touch for several reasons: high production cost of screens with pressure sensors, repair complexity (sensors integrated into the display), limited user awareness (many did not know about the feature), and the transition to OLED screens with Face ID, which are harder to calibrate for 3D Touch. Haptic Touch is cheaper, simpler and available on a larger number of devices.
3D Touch is supported by: iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. iPhone XR does not have 3D Touch (first with Haptic Touch). All iPhone 11, 12, 13, 14, 15, 16 and SE (2nd and 3rd generation) models use Haptic Touch. iPad never had 3D Touch. On devices with 3D Touch, sensitivity settings are also available (Settings → Accessibility → Touch → 3D Touch).
Yes, iOS automatically emulates 3D Touch through Haptic Touch on devices without hardware support. The UIContextMenuInteraction API works identically on all devices — the system itself selects the trigger (3D Touch or Long Press). This is transparent for your code: the context menu appears on all devices with iOS 13+. You do not need to write separate logic for 3D Touch and Haptic Touch — use UIContextMenuConfiguration.
Summary
We will develop a mobile application turnkey
IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.
Read also