Comprehensive guide to implementing haptic feedback on iOS. Every Apple Design Award winner uses excellent haptic feedback - Camera, Maps, Weather all use haptics masterfully to create delightful, responsive experiences.
Confirm successful installation by checking the skill directory location:
.cursor/skills/axiom-haptics
Restart Cursor to activate axiom-haptics. Access via /axiom-haptics in your agent's command palette.
β
Security Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Comprehensive guide to implementing haptic feedback on iOS. Every Apple Design Award winner uses excellent haptic feedback - Camera, Maps, Weather all use haptics masterfully to create delightful, responsive experiences.
Overview
Haptic feedback provides tactile confirmation of user actions and system events. When designed thoughtfully using the Causality-Harmony-Utility framework, axiom-haptics transform interfaces from functional to delightful.
This skill covers both simple haptics (UIFeedbackGenerator) and advanced custom patterns (Core Haptics), with real-world examples and audio-haptic synchronization techniques.
When to Use This Skill
Adding haptic feedback to user interactions
Choosing between UIFeedbackGenerator and Core Haptics
Designing audio-haptic experiences that feel unified
Creating custom haptic patterns with AHAP files
Synchronizing haptics with animations and audio
Debugging haptic issues (simulator vs device)
Optimizing haptic performance and battery impact
System Requirements
iOS 10+ for UIFeedbackGenerator
iOS 13+ for Core Haptics (CHHapticEngine)
iPhone 8+ for Core Haptics hardware support
Physical device required - haptics cannot be felt in Simulator
Part 1: Design Principles (WWDC 2021/10278)
Apple's audio and haptic design teams established three core principles for multimodal feedback:
Causality - Make it obvious what caused the feedback
Problem: User can't tell what triggered the haptic
Solution: Haptic timing must match the visual/interaction moment
Example from WWDC:
β Ball hits wall β haptic fires at collision moment
β Ball hits wall β haptic fires 100ms later (confusing)
Code pattern:
// β Immediate feedback on touch@objcfuncbuttonTapped(){let generator =UIImpactFeedbackGenerator(style:.medium) generator.impactOccurred()// Fire immediatelyperformAction()}// β Delayed feedback loses causality@objcfuncbuttonTapped(){performAction()DispatchQueue.main.asyncAfter(deadline:.now()+0.2){let generator =UIImpactFeedbackGenerator(style:.medium) generator.impactOccurred()// Too late!}}
Harmony - Senses work best when coherent
Problem: Visual, audio, and haptic don't match
Solution: All three senses should feel like a unified experience
Feels like: Clicking a physical wheel with detents
Common use cases:
Picker wheels
Segmented controls
Page indicators
Step-through interfaces
UINotificationFeedbackGenerator
System-level success/warning/error feedback.
Types:
.success - Task completed successfully
.warning - Attention needed, but not critical
.error - Critical error occurred
Usage:
let notificationGenerator =UINotificationFeedbackGenerator()funcsubmitForm(){// Validate formif isValid { notificationGenerator.notificationOccurred(.success)saveData()}else{ notificationGenerator.notificationOccurred(.error)showValidationErrors()}}
Best practice: Match haptic type to user outcome
β Payment succeeds β .success
β Form validation fails β .error
β Approaching storage limit β .warning
Performance: prepare()
Call prepare() before the haptic to reduce latency:
// β Good - prepare before user action@IBActionfuncbuttonTouchDown(_ sender:UIButton){ impactGenerator.prepare()// User's finger is down}@IBActionfuncbuttonTouchUpInside(_ sender:UIButton){ impactGenerator.impactOccurred()// Immediate haptic}// β Bad - unprepared haptic may lag@IBActionfuncbuttonTapped(_ sender:UIButton){let generator =UIImpactFeedbackGenerator() generator.impactOccurred()// May have 10-20ms delay}
Prepare timing: System keeps engine ready for ~1 second after prepare().
Part 3: Core Haptics (Custom Haptics)
For apps needing custom patterns, Core Haptics provides full control over haptic waveforms.
Four Fundamental Elements
Engine (CHHapticEngine) - Link to the phone's actuator
Player (CHHapticPatternPlayer) - Playback control
Pattern (CHHapticPattern) - Collection of events over time
Events (CHHapticEvent) - Building blocks specifying the experience
βΊAccess to product documentation and roadmap tools (Jira, Notion, etc.)
βΊUnderstanding of product management frameworks (RICE, Jobs-to-be-Done, etc.)
βΊStakeholder contact information and communication channels
Time Estimate
30-60 minutes to see productivity improvements
Steps
1Install product management skill
2Start with user story generation for known feature
3Progress to competitive analysis: research 2-3 competitors
4Use for roadmap prioritization: apply RICE/ICE scoring
5Draft stakeholder communications and refine based on feedback
6Build template library for recurring PM tasks
7Share effective prompts with product team
Common Pitfalls
β Not validating competitive researchβverify facts before sharing
β Accepting user stories without involving engineering team
β Over-relying on frameworks without qualitative judgment
β Not customizing outputs to company culture and communication style
β Skipping stakeholder validation of generated requirements
Best Practices
β Do
+Validate research and competitive analysis with real data
+Collaborate with engineering when generating technical requirements
+Customize frameworks and templates to your company context
+Use skill for first drafts, refine with stakeholder input
+Document successful prompt patterns for PM tasks
+Combine AI efficiency with human judgment and intuition
β Don't
βDon't publish competitive analysis without fact-checking
βDon't finalize user stories without engineering review
βDon't make prioritization decisions solely on AI scoring
βDon't skip customer validation of generated requirements
βDon't ignore company-specific context and culture
π‘ Pro Tips
β Provide context: company goals, constraints, customer feedback
β Ask for alternatives: 'Show 3 ways to prioritize this roadmap'
β Request stakeholder-specific formatting: 'Executive summary vs. engineering spec'
β Use skill for 70% generation + 30% customization to company needs
When to Use This
β Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
β Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
Learning Path
1Basic: user stories, feature specs, status updates