README.md
June 2, 2026 ยท View on GitHub
A haptic feedback SDK for iOS, Android, React Native, and Kotlin Multiplatform. Pulsar provides ready-to-use haptic presets, a pattern composer for custom haptic sequences, and a real-time composer for gesture-driven feedback.
Features
- Presets - Library of built-in haptic patterns (hammer, dogBark, buzz, pulse) and system feedback styles (impacts, notifications, selection)
- Pattern Composer - Define custom haptic patterns using discrete events and continuous amplitude/frequency envelopes
- Realtime Composer - Live amplitude and frequency control for gesture-driven haptics
- Cross-platform - Consistent API across iOS (Swift), Android (Kotlin), React Native (TypeScript), and Kotlin Multiplatform
- Worklet-compatible - All React Native preset functions and hook methods work inside Reanimated worklets
Packages
| Platform | Package |
|---|---|
| React Native | |
| iOS | Swift Package |
| Android | Maven Central |
| Kotlin Multiplatform | Maven Central |
| Flutter | pub.dev |
Quick start
React Native
npx expo install react-native-pulsar react-native-worklets
import { Presets, usePatternComposer, useRealtimeComposer } from 'react-native-pulsar';
// Play a preset
Presets.dogBark();
// Play a system haptic
Presets.System.impactMedium();
iOS
Latest available version: 1.1.4
Add Pulsar as a Swift Package dependency in Xcode, or add it to your Package.swift:
dependencies: [
.package(url: "https://github.com/software-mansion-labs/pulsar-ios", from: "1.1.4")
]
import Pulsar
let pulsar = Pulsar()
pulsar.getPresets().hammer()
Android
Latest available version: 1.1.2
Add Pulsar as a Gradle dependency:
dependencies {
implementation("com.swmansion:pulsar:1.1.2")
}
import com.swmansion.pulsar.Pulsar
val pulsar = Pulsar(context)
pulsar.getPresets().hammer()
Kotlin Multiplatform
Latest available version: 0.0.3
Add Pulsar KMP as a Gradle dependency in your shared module (works on Android and iOS targets):
dependencies {
implementation("com.swmansion:pulsar-kmp:0.0.3")
}
import com.swmansion.pulsar.kmp.Pulsar
val pulsar = Pulsar.create()
pulsar.getPresets().play("Hammer")
Flutter
Note: Published on pub.dev as
pulsar_haptics, notpulsar. The shorterpulsarname was reserved by an unrelated author before this project was published and is not maintained by Software Mansion.
Latest available version: 0.0.3
Add Pulsar to your pubspec.yaml:
dependencies:
pulsar_haptics: ^0.0.3
import 'package:pulsar_haptics/pulsar.dart';
final pulsar = Pulsar();
await pulsar.getPresets().hammer();
Documentation
Full API reference and guides are available at the documentation site.
- SDK Overview - Core concepts: types of haptics, preloading, and caching
- iOS SDK - Swift API reference
- Android SDK - Kotlin API reference
- React Native SDK - TypeScript API reference
- Kotlin Multiplatform SDK - Kotlin Multiplatform API reference
- Flutter SDK - Dart API reference
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
Pulsar library is licensed under The MIT License.
Try the Pulsar App
Download the Pulsar companion app to feel haptic presets directly on your device:
Community Discord
Join the Software Mansion Community Discord to chat about haptics or other Software Mansion libraries.
Pulsar is created by Software Mansion
Since 2012 Software Mansion is a software agency with experience in building web and mobile apps. We are Core React Native Contributors and experts in dealing with all kinds of React Native issues. We can help you build your next dream product โ Hire us.