README.md

June 2, 2026 ยท View on GitHub

Pulsar - Rich and ready-to use haptics library

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

PlatformPackage
React Nativenpm
iOSSwift Package
AndroidMaven Central
Kotlin MultiplatformMaven Central
Flutterpub.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, not pulsar. The shorter pulsar name 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.

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.