Core Haptics development, from first tap to finished pattern
Core Haptics is Apple’s framework for custom vibration on iPhone. Where the system feedback generators give you a few preset clicks, Core Haptics lets you place events on a timeline and control each one: a crisp tap here, a rumble that builds and fades there, all synced to audio if you want.
A business needs it when touch is part of the product, not decoration:
- Games: impacts, engines, weapons, collisions and UI that feel different from each other.
- Music, media and fitness apps: feedback that follows a beat, a rep or a countdown.
- Accessibility: confirmation and guidance people can feel without looking at the screen.
- Branded interactions: a signature feel for a key moment, like a payment going through or a level completing.
What is hard about Core Haptics in production
The API is small. Shipping haptics that feel right on every launch, every interruption and every device is where the work is.
Engine lifecycle
CHHapticEngine is not a fire-and-forget object. The system stops it when the app goes to the background and can stop or reset it at other times, for example when the audio session is interrupted. A production app sets a stoppedHandler and a resetHandler, restarts the engine when needed and re-registers any audio resources. Skip this and haptics quietly stop working after the first phone call.
Device support and fallbacks
Only iPhones play Core Haptics. iPads and Macs report no support through CHHapticEngine.capabilitiesForHardware(), so every call site needs a clean fallback. In a multiplatform app that check belongs in one place, not scattered across views.
Design is half the job
Intensity and sharpness are not volume and pitch. Transient events need spacing or they blur together. Continuous events need parameter curves to feel alive instead of buzzing flat. Long patterns tire the hand quickly. None of this shows up in code review; you only find it by feeling the result on a device again and again.
Audio and haptics together
Syncing haptics to sound means aligning events with the audio timeline and handling the audio session properly. By default, haptics can be muted while the app records audio; setAllowHapticsAndSystemSoundsDuringRecording exists for apps that genuinely need both. Generating haptics from an audio file adds analysis on top: detecting beats and sustained stretches, then turning them into events that still feel deliberate.
A pipeline your designers can use
Hard-coded patterns mean a code change for every tweak. Keeping patterns as AHAP assets, with names and a small playback layer, lets designers iterate while engineers keep control of when patterns play. See AHAP files explained for how that format is structured.
How I use Core Haptics in my own app
Haptic Forge is my visual editor for Core Haptics on iPhone, iPad and Mac, available on the App Store and the Mac App Store. Building it meant solving the problems above for real:
- Layered timeline editing. Every pattern is a stack of layers on one timeline: continuous layers you shape (ramp up, hold, fade) and transient layers for single crisp taps, with intensity and sharpness set by drag or exact value. The trade-offs are covered in transient vs continuous haptics.
- Haptics from sound. Import a sound and the app places a tap on every beat and a continuous rumble through every steady stretch, with the waveform under the chart and sound and pattern playing together.
- Feeling patterns from a Mac or iPad. Because those devices cannot play Core Haptics patterns, a nearby iPhone pairs once with a six-digit code and plays every pattern as you edit, over an encrypted local-network connection.
- Standard AHAP in and out. Third-party AHAP files import as editable layers, and exports stay valid for any app that reads AHAP.
What I can build for you with Core Haptics
- A haptics layer for an existing iOS app: a playback service with engine recovery, named patterns, a user setting to turn haptics off and fallbacks for unsupported devices.
- Game haptics designed as a set, so impacts, engines and UI each have their own feel. More on that in haptics for game developers.
- Audio-synced experiences for music, meditation, fitness or media apps.
- Dynamic haptics driven by gameplay or sensor values at runtime, using dynamic parameters and parameter curves.
- A review of haptics you already ship: what feels muddy, what drains attention, and what breaks after interruptions.
I have almost 15 years of building for Apple platforms, and you work directly with the engineer who designs, writes and ships the code.
Talk to me about haptics
Tell me what you want people to feel and where in the app it happens. Email contact@hobbysoft.pro and I will reply with how I would approach it.