Haptics
Meaningful touch feedback for emotional connection. Every vibration communicates.
Philosophy
"Haptics are not decoration—they're communication. Every vibration should feel intentional and human."
Meaningful, Not Decorative
Every haptic should communicate something specific
Warm, Not Clinical
Organic patterns over mechanical buzzes
Subtle by Default
Reserve intensity for important moments
Persona-Aware
Haptics reflect each character's personality
Respectful
Honor system settings and user preferences
Intensity Levels
Standard 1-5 scale mapped to platform APIs.
| Level | Name | iOS API | Android API |
|---|---|---|---|
| 1 | Whisper | UIImpactFeedbackGenerator.light * 0.5 |
EFFECT_TICK |
| 2 | Soft | UIImpactFeedbackGenerator.light |
EFFECT_CLICK |
| 3 | Medium | UIImpactFeedbackGenerator.medium |
EFFECT_HEAVY_CLICK |
| 4 | Strong | UIImpactFeedbackGenerator.heavy |
EFFECT_DOUBLE_CLICK |
| 5 | Emphasis | UINotificationFeedbackGenerator.success |
VIBRATE(100) |
Base Patterns
Fundamental haptic building blocks for common interactions.
tap
10msSingle crisp tap - basic interaction feedback
Button press, selection
softTap
8msGentler tap - subtle acknowledgment
Toggle off, dismiss
doubleTap
40msTwo quick taps - confirmation
Selection confirmed, got it
bump
20msWeighted tap - physical feedback
Toggle on, snap to position
click
15msMechanical click - task complete
Checkbox, item complete
Organic Patterns
Ferni's signature haptics - organic, human, breathing. These patterns feel alive.
ferniBreath
300msCore Ferni breathing pattern - warm, grounding
Connection established, presence confirmation
warmPulse
250msGentle warmth pulse - emotional acknowledgment
Empathy moment, understanding
heartbeat
800msDouble-beat pulse - connection/love
Deep connection, milestone
slowBreath
500msExtended breath - calm, wisdom
Sage persona, contemplation
quickBreath
200msShort energetic breath - curiosity
Researcher energy, discovery
Celebration Patterns
Positive feedback for wins and achievements.
smallWin
200msQuick sparkle - small achievement
Task complete, streak continued
bigWin
400msCelebration burst - major achievement
Milestone reached, level up
teamUnlock
600msArrival pattern - new team member unlocked
Team member unlock celebration
streakAchieved
500msRhythmic celebration - streak milestone
7-day streak, 30-day streak
Persona Haptic Signatures
Each persona has a unique haptic signature reflecting their personality.
Ferni
Warm, grounding, nurturing - life coach energy
- Speaking: ferniBreath
- Acknowledgment: doubleTap
- Insight: heartbeat
Peter
Curious, energetic, quick - researcher energy
- Discovery: burst
- Thinking: rhythm
- Eureka: bigWin
Alex
Clear, empathetic, smooth - communicator energy
- Guidance: leadTap
- Empathy: warmPulse
- Clarity: doubleTap
Maya
Steady, rhythmic, reliable - architect energy
- Task Complete: click
- Habit Check: firmTap
- Progress: ramp
Jordan
Joyful, bouncy, celebratory - event planner energy
- Excitement: sparkle
- Countdown: tick
- Celebration: bigWin
Nayan
Deep, integrative, philosophical - wisdom energy
- Contemplation: slowBreath
- Integration: heartbeat
- Insight: warmPulse
Emotional Haptics
Haptic responses to detected emotional states.
Empathy
"Like a gentle hand on shoulder"
warmPulse @ 300msEncouragement
"Supportive energy"
quickBreath @ 200msUnderstanding
"I get it"
heartbeat @ 500msConcern
"Calming presence"
slowBreath @ 400msCelebration
"Pure joy"
bigWin @ 400msCuriosity
"Tell me more"
quickBreath @ 180msRitual Haptics
Haptics for brand ritual moments that create memorable experiences.
| Ritual | Duration | Character | Sequence |
|---|---|---|---|
| welcomeBack | 600ms | "Welcome home" | ferniBreath → pause:200 → doubleTap |
| firstConversation | 800ms | "Nice to meet you" | slowBreath → pause:300 → warmPulse |
| sessionEnd | 400ms | "Until next time" | ferniBreath → softTap |
| handoff | 500ms | "Smooth transition" | softFade → pause:200 → personaSignature |
Accessibility
Always Check System Settings
UIAccessibility.isReduceMotionEnabled and isHapticsEnabled
Reduced Motion
Use single tap instead of patterns
Haptics Disabled
Rely on visual/audio feedback only
Low Power Mode
Reduce intensity by 50%
Principles
- Never make haptics the only feedback channel
- Always pair with visual or audio feedback
- Provide option to disable all haptics
- Test with real devices, not simulators
Platform Implementation
iOS
UIImpactFeedbackGenerator
UINotificationFeedbackGenerator
UISelectionFeedbackGenerator
Call prepare() before expected haptic to reduce latency. Use Core Haptics for complex waveforms.
Android
VibrationEffect
HapticFeedbackConstants
Min SDK 26. Use VibrationEffect.createWaveform() for complex patterns.
Web
Navigator.vibrate()
Limited support. Use visual pulse animations as fallback. Check navigator.vibrate availability.