Quickstart
Get Pulse running in your app and see your first telemetry in under 10 minutes.
Prerequisites
- A Pulse account with access to the Pulse Dashboard
- Your
apiKeyfrom the Pulse dashboard under Settings → SDK - An Android, iOS, React Native or Expo project
Step 1 — Install the SDK
- Android
- iOS
- React Native
- Expo
Add to app/build.gradle.kts:
dependencies {
implementation("org.dreamhorizon:pulse-android-sdk:LATEST_VERSION")
}
Check Maven Central for the latest version.
In Xcode: File → Add Package Dependencies, search:
https://github.com/dream-horizon-org/pulse-ios
Add PulseKit to your app target. Check GitHub releases for the latest version.
yarn add @dreamhorizonorg/pulse-react-native
Check NPM for the latest version.
npx expo install @dreamhorizonorg/pulse-react-native
Check NPM for the latest version.
Step 2 — Initialize
- Android
- iOS
- React Native
- Expo
In your Application class — must be on the main thread, as early as possible:
import com.pulse.android.sdk.PulseSDK
import com.pulse.android.api.otel.PulseDataCollectionConsent
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
PulseSDK.INSTANCE.initialize(
application = this,
apiKey = "your-api-key",
dataCollectionState = PulseDataCollectionConsent.ALLOWED,
)
}
}
In AppDelegate.application(_:didFinishLaunchingWithOptions:) — before any other code:
import PulseKit
Pulse.shared.initialize(
apiKey: "your-api-key",
dataCollectionState: .allowed
)
iOS — in AppDelegate.swift, before super.application(...):
import PulseReactNativeOtel
PulseSDK.initialize(
apiKey: "your-api-key",
dataCollectionState: .allowed
)
Android — in your Application class onCreate(), before other setup:
import com.pulsereactnativeotel.Pulse
import com.pulsereactnativeotel.PulseDataCollectionConsent
Pulse.initialize(
application = this,
apiKey = "your-api-key",
dataCollectionState = PulseDataCollectionConsent.ALLOWED
)
JS — in App.tsx or at your root file:
import { Pulse } from '@dreamhorizonorg/pulse-react-native';
Pulse.start();
Add the plugin to app.json:
{
"expo": {
"plugins": [
[
"@dreamhorizonorg/pulse-react-native",
{
"apiKey": "your-api-key",
"dataCollectionState": "ALLOWED"
}
]
]
}
}
Run prebuild:
npx expo prebuild --clean
Then in app/_layout.tsx:
import { Pulse } from '@dreamhorizonorg/pulse-react-native';
Pulse.start();
Step 3 — Verify
Run your app. Open the Pulse dashboard and check Live Feed — you should see incoming data within seconds:
- App start events
- Screen lifecycle events
- Network requests
- Device and session metadata
Step 4 — Create Your First Interaction
Interactions track critical user journeys end-to-end. You define them in the dashboard using custom events from your app.
- Navigate to Interactions in the left sidebar
- Click Create Interaction
- Fill in:
- Name: e.g.,
Add to Cart - Start Event: the event that begins the flow (e.g.,
add_to_cart_clicked) - End Event: the event that completes it (e.g.,
cart_confirmed) - Thresholds: latency targets (e.g., 200ms satisfactory / 1000ms tolerable)
- Name: e.g.,
- Save
Pulse will evaluate every instance of this interaction against your thresholds and compute Apdex scores, error rates, and latency percentiles in real time.
Step 5 — Track a Custom Event
Send the events that feed your interaction:
- Android
- iOS
- React Native
- Expo
PulseSDK.INSTANCE.trackEvent(
name = "add_to_cart_clicked",
observedTimeStampInMs = System.currentTimeMillis(),
params = mapOf("product_id" to "SKU-1234")
)
Pulse.shared.trackEvent(
name: "add_to_cart_clicked",
observedTimeStampInMs: Int64(Date().timeIntervalSince1970 * 1000),
params: ["product_id": "SKU-1234"]
)
Pulse.trackEvent('add_to_cart_clicked', {
product_id: 'SKU-1234',
});
Pulse.trackEvent('add_to_cart_clicked', {
product_id: 'SKU-1234',
});
What's Next
- Core Concepts — Apdex scoring, error rates, and UX categorization
- Android SDK — Full Android instrumentation reference
- iOS SDK — Full iOS instrumentation reference
- React Native SDK — Full React Native instrumentation reference
- Dashboard Guide — Learn the Pulse web portal