In today’s crowded app world, creating a top-tier user experience (UX) is more important than ever. While most developers focus on visuals and navigation, haptic feedback - the little vibrations you feel when you touch your phone - has quietly become a key tool for making apps feel better to use.
Haptics also play a big role in accessibility. For users with visual impairments, or when sound isn’t an option (like in a quiet meeting), these vibrations provide important feedback. It’s a simple way to make apps easier to use for everyone.
And here’s the twist: a
My name is Boris Dobretsov, and I am an iOS developer. Throughout my career, I have led the development of both B2C and B2B mobile apps across Russia, Kyrgyzstan, the UK, and Japan.
In this article, I share my thoughts on a frequently overlooked feature - haptics - and briefly explain its evolution and impact on a range of industries, from medicine to gaming, within the context of user experience (UX). I also share a code example that developers can experiment with to create more interactive and engaging experiences in their applications.
In 1997 Nintendo released its 64's
As technology progressed, haptic feedback went from basic buzzes powered by ERM motors (little off-balance spinning things) to much fancier setups like LRAs (Linear Resonant Actuators, if you want to sound impressive at parties). These upgrades allowed for much more precise vibrations - kind of like going from a jackhammer to a delicate tap on the shoulder. Thanks to these advances, haptics started showing up in all sorts of places, from medical simulators to virtual reality systems, and, of course, in your smartphone, where it helps make every tap feel more satisfying.
Apple introduced the Taptic Engine with the Apple Watch in 2015, giving us more detailed vibrations for notifications and interactions. Then they brought it to the iPhone 6s, so we could feel different pressure levels with features like 3D Touch. Sony’s DualSense controller for the PlayStation 5 took gaming to the next level by letting you feel different textures while you play. Even Tesla is using haptic feedback in its touchscreens to make its electric cars feel even more advanced.
The Taptic Engine has three key parts working together to make the magic happen:
One of the best things about the Taptic Engine is how customizable it is. Developers can play around with haptic patterns using Apple’s Core Haptics framework. You can tweak two main settings:
Also, the Taptic Engine can create two main types of haptic events:
Apple’s Core Haptics framework allows developers to create custom vibrations that make apps more interactive. You can set different haptic patterns and even synchronize them with sound patterns for a more immersive experience. Want to tie a pleasant buzz to a button tap or a drum beat to a game event? Core Haptics can help you.
Let’s say you want to create a quick, sharp vibration. Here’s how you can define a transient haptic event using Core Haptics:
import UIKit
import CoreHaptics
class HapricService: NSObject {
var hapticEngine: CHHapticEngine?
override init() {
super.init()
hapticEngineInit()
}
private func hapticEngineInit() {
hapticEngine = try? CHHapticEngine()
try? hapticEngine?.start()
}
func playHaptic(_ params: [CHHapticEventParameter]) {
let hapticEvent = CHHapticEvent(eventType: .hapticTransient,
parameters: params,
relativeTime: 0)
let hapticPattern = try? CHHapticPattern(events: [hapticEvent], parameters: [])
playHapticPattern(hapticPattern!)
}
private func playHapticPattern(_ hapticPattern: CHHapticPattern) {
let player = try? hapticEngine?.makePlayer(with: hapticPattern)
try? player?.start(atTime: 0)
}
}
class ViewController: UIViewController {
var hapticService = HapricService()
override func viewDidLoad() {
super.viewDidLoad()
let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 1.0)
let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 1.0)
hapticService.playHaptic([intensity, sharpness])
This code creates a transient haptic event, which is like a quick buzz at full intensity and sharpness. The event is wrapped in a haptic pattern and played using the haptic engine.
For more subtle adjustment you can play with intensity and sharpness.
let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 0.75) // Mid-high intensity
let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 0.5) // Mid sharpness, feels less "clicky"
let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 0.5) // Mid-low intensity
let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 0.2) // Soft feedback, feels like a gentle tap
In this example, reducing the sharpness creates a softer feel, while lowering the intensity gives it a less pronounced sensation, simulating a lower-frequency "vibe" without directly controlling the frequency.
You can create a range of tactile sensations by adjusting the intensity and sharpness:
While you can't manually tune the frequency to specific Hz values, these settings allow you to customize the "feel" of the haptics in a way that resonates well with the Taptic Engine’s natural frequency range (100-250 Hz).
Core Haptics allows you to synchronize vibrations with audio patterns. This lets users feel the bass in a song or get a tactile sense of in-game actions like explosions or button presses.
Here’s how to link vibrations with sound - you only need to add one parameter, which is responsible for synchronization:
audioResourceID
let audioEvent = CHHapticEvent(
audioResourceID: 1,
parameters: [],
relativeTime: 0,
duration: 0.5)
In this example, the haptic event and audio event are combined into a single pattern, allowing you to “feel” the sound. You could use this in a music app, a game, or any app where synchronized haptic and audio feedback enhances the user experience.
Even with all this complexity, the Taptic Engine is surprisingly power-efficient. Despite offering precise, customizable feedback, it uses far less power than older motors, so users can enjoy those satisfying vibrations without worrying about draining their battery too quickly.
Social Media
Messaging
Entertainment
Spotify: When you adjust the volume or press the play/pause button, haptic feedback is triggered providing tactile confirmation.
Health & Wellness
Calm: Calm uses subtle vibrations to guide inhale/exhale cycles during meditation or breathing exercises.
System Apps (iOS)
Haptics brings together the digital and real worlds by enhancing gaming experiences, providing crucial feedback for visually impaired users, or giving encouragement to proceed with a purchase. With each vibration, tap, and buzz, you're not just sharing information - you’re building an emotional connection with your users, stimulating retention and loyalty. Consider how haptics can enhance your work, whether you're an experienced developer or just starting.