efremidze/haptica
**Haptica** is a simple and expressive haptic feedback generator for iOS.
π± Requirements
| Haptica Version | iOS | Swift | Xcode | |-----------------|-----|-------|--------| | 4.x | 13+ | 5.x | 11+ | | 3.x | 9+ | 5.x | 8+ | | 2.x | 9+ | 4.x | 8+ | | 1.x | 9+ | 3.x | 8+ |
Haptic Feedback Requirements
- Device with a supported Taptic Engine
- App running in the foreground
- System Haptics setting enabled
π Usage
Trigger a haptic feedback with a single line:
Haptic.impact(.light).generate()Feedback Types
- Impact (
.light,.medium,.heavy,.soft,.rigid)
Use to indicate collision or snap-to-position.
- Notification (
.success,.warning,.error)
Use to communicate task results.
- Selection
Use for navigation through discrete values.
Semantic Types (New)
Use new expressive variants for common interactions:
Haptic.success.generate()
Haptic.warning.generate()
Haptic.start.generate()
Haptic.stop.generate()
Haptic.increase.generate()
Haptic.decrease.generate()These semantic styles internally map to appropriate UIKit or Core Haptics-based effects.
Custom Vibration Patterns
Haptic.play("..oO-Oo..", delay: 0.1)| Symbol | Feedback Type | |--------|-----------------| | . | Light impact | | o | Medium impact | | O | Heavy impact | | x | Soft impact | | X | Rigid impact | | - | 0.1s pause |
Or use structured notes:
Haptic.play([
.haptic(.impact(.light)),
.haptic(.impact(.heavy)),
.wait(0.1),
.haptic(.impact(.heavy)),
.haptic(.impact(.light))
])π§ Core Haptics Support
Haptica uses Core Haptics by default when available. To use the legacy API:
Haptic.play(notes, legacy: true)π Play from Pattern File (New) - iOS 16+
Play a Core Haptics pattern from a bundled .ahap file:
Haptic.playPattern(named: "Feedback")Make sure the file is included in your app bundle and contains a valid haptic pattern.
π Sound Effects
Integrate sound feedback with Peep:
Peep.play(sound: KeyPress.tap)π¦ Installation
Swift Package Manager
// For iOS 13+
.package(url: "https://github.com/efremidze/Haptica.git", from: "4.0.0")
// For iOS 9
.package(url: "https://github.com/efremidze/Haptica.git", from: "3.0.0")CocoaPods
use_frameworks!
pod "Haptica"Carthage
github "efremidze/Haptica"π¬ Communication
- Found a bug? β Open an issue
- Have a feature request? β Open an issue
- Want to contribute? β Submit a pull request
π° Mentions
π License
Haptica is available under the MIT license. See the LICENSE file for details.
Package Metadata
Repository: efremidze/haptica
Default branch: master
README: README.md