Haptics are the most underrated quality signal in a modern smartphone. A crisp, synchronous tap tells your brain the device is fast and precise; a mushy, lagging buzz does the opposite, even if benchmarks say otherwise. After years where most Android flagships treated vibration as an afterthought, the gap is closing fast — but latency, sharpness, and consistency still separate great from forgettable.
We tested seven current flagships under lab conditions, tapping directly into the haptic pipeline with an accelerometer, high-speed camera, and software logging. The goal was not to rank “who buzzes strongest,” but to quantify the three metrics that define quality haptics in real use.
Why Haptics Are a Systems Problem, Not a Motor Spec
It’s tempting to reduce haptics to the actuator. On paper, most 2025-2026 flagships now use a similar X-axis linear resonant actuator (LRA) — roughly 10x9x3.5mm, resonating around 170-235 Hz. Yet two phones with the same AAC or Jinlong LRA can feel worlds apart. That’s because perceived quality is determined by the entire chain, not the motor alone.
Sharpness comes from how fast the mass can accelerate and brake. Latency comes from the OS scheduler, audio/haptic synchronization, and driver rise time. Consistency comes from thermal management, power rail stability, and whether the waveform is open-loop or closed-loop controlled. A phone that feels great on the first tap but drifts after 20 seconds of gaming has failed the consistency test — and many do.
This systems view also explains why haptics correlate strongly with overall device polish. Teams that sweat haptic tuning — like those optimizing the smartphone sensor hub and IMU pipeline — tend to sweat every millisecond of the touch path.
Anatomy of a Modern Haptic System
Three actuator families still ship today, though only one dominates flagships:
| Feature | 5G NR | Wi-Fi 7 | Bluetooth 5.4 |
|---|---|---|---|
| Peak Throughput | 20 Gbps | 46 Gbps | 2 Mbps |
| Latency | 1–4 ms | 1–2 ms | 3–6 ms |
| Range | Several km | 30–50 m | 100–400 m |
| Power Draw | High | Medium | Ultra-low |
| Primary Use | Cellular data | Local networking | Peripherals/IoT |
- LRA (Linear Resonant Actuator), X-axis: Current standard. A magnet suspended on springs driven by a voice coil. Excellent transient response, sub-15ms rise times, and clean braking when driven by a closed-loop driver. Used in iPhone (Taptic Engine), Pixel 8/9, Galaxy S24/S25 Ultra, OnePlus 12/13.
- ERM (Eccentric Rotating Mass): Legacy coin motor. Cheap, slow (40-80ms rise), and impossible to brake cleanly. Still found in budget devices. Feels “buzzy” because the frequency and amplitude are coupled.
- Piezo / Solid-state: Emerging. Ultra-fast (<5ms), ultra-broad bandwidth, but requires 50-100V drive and careful mounting. Apple’s abandoned solid-state Taptic button project and recent Xiaomi prototypes use this.
For LRAs, the driver IC matters as much as the motor. TI’s DRV2605/DRV2700, Cirrus Logic CS40L26, and AAC’s own OISA drivers differ dramatically. The best implement closed-loop back-EMF sensing — they listen to the mass position in real time and actively brake it to prevent the familiar “trailing buzz” after a sharp click. Open-loop drivers just fire a pre-canned waveform and hope.
Mechanical integration is the dark horse. An LRA bolted to a flexible mid-frame with poor damping will resonate the whole chassis. The same LRA suspended on tuned foam and coupled to a stiff aluminum frame produces a tight, localized tap. That’s why teardown analysis like our mobile camera module assembly deep-dive matters — haptic feel is mechanical design, not just silicon.
How We Tested: Latency, Sharpness, Consistency
Spec sheets don’t tell you how haptics feel. We built a repeatable bench rig:
1. Latency (ms, lower is better)
We triggered a haptic via a capacitive robot finger contacting the display, timestamped by a 1000 fps camera and simultaneous software log (Android SystemClock.uptimeMillis() / iOS CACurrentMediaTime()). Latency = time from touch-registered to first measurable acceleration (10% of peak). We ran 100 taps per waveform and measured median and jitter (standard deviation). Ideal is under 30 ms median with jitter under 5 ms.
2. Sharpness (rise time + ringing)
Using a 10 kHz MEMS accelerometer taped to the rear glass, we captured the waveform. Sharpness is defined by 10–90% rise time and post-pulse ringing energy. A crisp “tick” rises in 10–13 ms and damps within 15 ms. A mushy buzz rises in 20+ ms and rings for 40 ms. We also computed spectral centroid — higher-frequency content around 200–300 Hz feels sharper than 150 Hz rumble.
3. Consistency (jitter and thermal drift)
We fired 200 consecutive clicks at 2 Hz for 100 seconds and measured amplitude and timing drift. We then repeated after a 15-minute Genshin Impact stress test to heat-soak the device. Poor power delivery or thermal throttling of the driver shows up immediately as amplitude sag or 5–10 ms added latency — the exact issue we track in our long-term performance degradation tests, where haptics are often the first subsystem to degrade.
Excellent
Latency < 35 ms, rise 10–13 ms, jitter < 5 ms, no thermal drift. Feels like a physical button.
Poor
Latency > 55 ms, rise > 22 ms, jitter > 8 ms, audible rattle. Feels detached and cheap.
Results: Flagship Haptics Compared
All devices were set to default haptics strength, 120 Hz display, haptics-enabled keyboard (Gboard / iOS keyboard). “Click” = system tap / AHAP transient peak. Lower numbers are better except subjective sharpness.
| Device | Actuator / Driver | Latency (median) | Rise 10–90% | Jitter (σ) | Sharpness 1–10 |
|---|---|---|---|---|---|
| iPhone 15 Pro | Custom X-LRA + Cirrus | 28.4 ms Best | 11.2 ms | 2.8 ms | 9.5 |
| Pixel 8 Pro | AAC X-LRA + CS40L26 | 32.1 ms | 12.8 ms | 3.5 ms | 9.0 |
| Galaxy S24 Ultra | AAC X-LRA + DRV2 | 38.7 ms | 13.9 ms | 5.1 ms | 8.2 |
| OnePlus 12 | X-LRA + AAC OISA | 41.3 ms | 14.5 ms | 6.3 ms | 8.0 |
| Xiaomi 14 Ultra | X-LRA | 48.9 ms | 17.1 ms | 7.8 ms | 7.1 |
| Nothing Phone 2 | Z-LRA (small) | 56.2 ms Laggy | 23.4 ms | 9.2 ms | 5.5 |
Two findings stood out. First, Apple’s lead is now ~4 ms over Pixel — meaningful for keyboard sync but imperceptible to most users. Three years ago that gap was 15–20 ms. Second, consistency separated the field more than latency. The Pixel and iPhone drifted < 0.4 dB after heat-soak; the Xiaomi and Nothing lost 1.2–1.8 dB and added 6 ms latency when hot, making rapid typing feel uneven.
Subjectively, blind testers (n=12) ranked Pixel 8 Pro equal to iPhone for typing, but iPhone still won for long “continuous” haptics — like the scroll wheel and drag ticks — where its high-bandwidth waveforms and tight audio-haptic sync are unmatched.
The Software Stack: Where Milliseconds Vanish
Hardware sets the ceiling; software decides if you hit it. On Android, the difference between a bad and good haptic is often one API call.
vibrator.vibrate(VibrationEffect.createOneShot(30, 128));
// GOOD — low-latency primitive (API 30+) with scale & fall-back
vibrator.vibrate(VibrationEffect.Composition
.addPrimitive(Primitive.CLICK, 1.0f) // ~12ms, hardware-accelerated
.addPrimitive(Primitive.TICK, 0.8f, 10) // delay 10ms for double-tick
.build());
// BEST — predefined effect, tuned by OEM for that exact LRA
vibrator.vibrate(VibrationEffect.createPredefined(EFFECT_CLICK));
eventType: .hapticTransient,
parameters: [
CHHapticEventParameter(parameterID: .hapticIntensity, value: 1.0),
CHHapticEventParameter(parameterID: .hapticSharpness, value: 0.9) // high sharpness = fast rise
],
relativeTime: 0
)
try engine.makePlayer(with: pattern).start(atTime: CHHapticTimeImmediate)
On iOS, CHHapticEngine runs at high priority and pre-compiles patterns to the driver; you can schedule transients within 2 ms of audio. On Android, legacy createOneShot often routes through the generic VibratorService without primitive support, adding 10–18 ms. Our Swift vs Kotlin performance analysis found similar scheduler differences — iOS haptics benefit from tighter real-time guarantees in the input pipeline.
The worst offender we see in third-party apps: triggering haptics on the UI thread after a network callback. Even a 1-frame delay adds 8 ms at 120 Hz. Best practice is pre-warming the engine (prepare() on Android 13+, engine.start() on iOS) and firing on touch-down, not touch-up.
Sharpness vs. Comfort: Why Stronger Isn’t Better
Maximum G-force sells, but comfort wins. An LRA at full 1.6 G peak-to-peak feels impressive for 10 seconds and fatiguing after 500 keystrokes. The best-tuned phones actually limit peak amplitude to ~1.1–1.3 G and invest that headroom in waveform design: ultra-short attack, active braking, and subtle frequency shifts.
We measured “ringing energy” — the integrated acceleration 15–60 ms after the peak. iPhone and Pixel kept it below 8% of total energy; cheaper tunings left 18–25% ringing, which your finger reads as looseness and your ears hear as buzz. That extra energy also heats the driver faster, worsening consistency.
Spectral tuning matters too. A 175 Hz resonance feels deeper and softer; 230 Hz feels crisper but can sound hollow. Apple deliberately shapes its tap to sweep 180→270 Hz in ~12 ms, adding perceived sharpness without harshness. Several Android OEMs now copy this trick via AAC’s RichTap — when they bother to license it.
What to Look For When You Buy
If you can’t bring an accelerometer to the store, use these proxies:
- Type fast and listen. Crisp haptics are nearly silent; buzzy ones audibly rattle. Put the phone on a table — a sharp tick won’t move it, a mushy buzz will walk it.
- Check keyboard settings. If Gboard offers “Haptic feedback intensity” with a preview that feels instant, the primitive pipeline is working. If it feels delayed, the OEM didn’t implement it.
- Test consistency. Rapidly tap for 20 seconds. Does click 100 feel as strong and timed as click 1? Thermal sag is the fastest way to spot cheap tuning.
- Look for X-axis LRA + OISA/RichTap. Marketing rarely states driver model, but reviews that mention “X-axis” or “0809/0815 LRA” are a good sign. Z-axis or “linear motor” without the X prefix is often the smaller, rounder puck.
For developers, treat haptics like audio: budget for them. A/B test intensity 0.7 vs 1.0 — users almost always prefer the slightly softer but sharper setting, especially over long sessions.
Frequently Asked Questions
Aim for under 35 ms end-to-end from finger contact to vibration onset, with jitter under 5 ms. Below 30 ms feels instantaneous for typing; above 50 ms feels noticeably laggy and breaks the sense that the tap caused the vibration.
It’s not just the larger Taptic Engine. Apple pairs a custom LRA with a closed-loop Cirrus driver, rigid frame integration, and a high-priority Core Haptics engine that is tightly synced to touch and audio. Many Android flagships now match the hardware but still lag in software tuning and consistency under heat.
Yes. X-axis LRAs are larger, move side-to-side, and can produce faster rise times (10–14 ms) with stronger braking. Z-axis LRAs are smaller and move up-down, resulting in slower, mushier clicks with more ringing. For keyboards and system taps, X-axis is markedly sharper.
Often, yes. OEMs can cut 10–15 ms of latency by switching apps to VibrationEffect primitives or RichTap, retuning waveforms to reduce ringing, and stabilizing power delivery. However, mechanical damping and actuator size can’t be fixed in software — if the motor is small or loosely mounted, updates help but won’t match a properly engineered system.
Great haptics disappear. When latency is low, sharpness is high, and consistency holds over time, you stop noticing vibration and just feel the interface. That’s the benchmark to beat — and the reason the best phones now win not on how loud they buzz, but on how quietly, precisely, and repeatedly they can tap.