Release Health
Release Health measures the stability of every version of your app,
with zero configuration. At startup the SDK opens a session
(status='ok'); on an unhandled JS crash, it flips it to
status='crashed'. The dashboard aggregates these sessions per release
and shows the crash-free user rate.
Activation
Section titled “Activation”Available from @pionne/react-native@0.7.0. Enabled by default.
import { Pionne } from '@pionne/react-native';
Pionne.init({ token: 'pio_live_…', release: '1.4.2', // recommended: semantic version of the app // releaseHealth: false, // to fully disable});No other setup. The SDK sends at most two requests:
| When | Status sent |
|---|---|
| At init | ok |
| On fatal JS crash | crashed |
| On uncaught error | errored |
Read the result
Section titled “Read the result”In the mobile dashboard, open a project → ⚡ Crash-free icon above the issues list. You’ll see:
- The crash-free user rate per release (last 14 days)
- The total / crashed / errored session counts
- A colored bar: 🟢 ≥ 99 %, 🟡 95-99 %, 🔴 < 95 %
Programmatic API
Section titled “Programmatic API”Three methods, rarely useful: the SDK handles everything.
Pionne.endSession(); // force close (status='exited')Pionne.getSessionId(); // current UUID, for debuggingHow it’s counted
Section titled “How it’s counted”- One session = one app start (one call to
Pionne.init()). - If the same
userIdAnonopens 5 sessions and one crashes, that user is counted as a “user who crashed” on the release. - The dashboard shows the ratio
(users_total - users_crashed) / users_total.
Available on 4 SDKs
Section titled “Available on 4 SDKs”Same protocol, same behavior, same payload:
| SDK | Min version | Notes |
|---|---|---|
@pionne/react-native | 0.7.0 | iOS / Android / web |
@pionne/web | 0.3.0 | Bonus: ‘exited’ flush via sendBeacon on pagehide |
@pionne/node | 0.3.0 | ’exited’ flush on process.beforeExit |
pionne_flutter | 0.3.0 | Auto-flip on FlutterError + PlatformDispatcher + runZonedGuarded |
The PHP SDK (pionne/pionne) does not expose Release Health: a
server-side PHP script lives a few ms and doesn’t map to a user
session. Tracking it would just bloat storage with no actionable
signal.
Endpoint
Section titled “Endpoint”The SDK calls POST /api/sessions with your pio_live_* token. The
payload is minimal (~150 bytes). See API · Sessions for
the details.