The package has a tiny surface — one singleton (Documentation Index
Fetch the complete documentation index at: https://docs.insito.app/llms.txt
Use this file to discover all available pages before exploring further.
MicroSurvey), one
React provider (<InsitoProvider>), one hook (useInsito), and one
navigation helper (useInsitoScreenTracking). Everything else is a
type or theme helper.
Imports
MicroSurvey
The default-exported singleton. Holds the SDK state machine and the
imperative methods you call from your app.
MicroSurvey.init(config)
Boots the SDK. Call once, as early as possible (module top-level is
fine). Subsequent calls are ignored with a debug warning.
Project API key. Format:
proj_xxx. Throws synchronously if
malformed.Override the API base URL — useful for staging environments or
self-hosted instances. Default points to production.
Per-request timeout in milliseconds. Lowering this on flaky
networks will route more responses through the offline queue.
Toggles internal
console.log output. Recommended:
debug: __DEV__.{ preset?: 'light' | 'dark' | 'minimal' | 'rounded', overrides?: Partial<InsitoTheme> }.
See Theming.MicroSurvey.identify(args)
Associates subsequent triggers with a stable user. Cached for 24
hours per userId so repeat calls don’t hit the network.
Stable, unique identifier for your user. Most teams pass their
database user ID. Do NOT pass an email or anything PII unless
you’ve configured PII handling on your account.
e.g.
"ios", "android", "web". Used by analytics for
platform breakdowns.Your app’s build version, e.g.
"2.7.0". Surfaces in the
dashboard so you can correlate feedback with releases.Free-form key/value pairs (e.g.
plan: "pro"). Stored on the
respondent and visible per-response.MicroSurvey.trigger(eventName)
Fires a trigger by name. The server decides whether to show a
survey. Returns immediately — the modal renders inside
<InsitoProvider>.
Lowercase snake_case event name configured against a survey in
the dashboard (e.g.
"checkout_completed"). See Triggers.- Not initialised → no-op + debug warning.
- No
identify()call yet → no-op + debug warning. - A survey is already active → no-op + debug log.
MicroSurvey.submitResponse(surveyId, answers)
Used internally by the built-in modal. You’d only call this directly
if you’re rendering your own question UI.
The active survey’s ID — usually
MicroSurvey.activeSurvey?.surveyId.Array of
{ questionId, type, value }. See Answer type
below.MicroSurvey.dismissSurvey()
Closes the active modal without submitting. Emits survey_dismissed.
Used by the close button in the built-in UI.
MicroSurvey.on(event, listener) / MicroSurvey.off(event, listener)
Subscribe to lifecycle events. on() returns an unsubscribe function.
MicroSurvey.onNavigationStateChange(state)
Bridges React Navigation v6/v7 state into the screen-map system.
Subscribe in your NavigationContainer.onStateChange:
useInsitoScreenTracking() instead.
Read-only state
React layer
<InsitoProvider>
Renders the survey modal. Wrap your app inside one. Children render
normally; the modal mounts on top via React Native’s <Modal>.
theme prop overrides the SDK-level theme for this subtree:
useInsito()
Hook that returns reactive state: { state, activeSurvey, user, theme }.
Re-renders when any of them change.
useInsitoScreenTracking()
Auto-tracks screen visits for Expo Router apps. Call it in your root
layout — no arguments needed.
Theme helpers
resolveTheme(preset, overrides?)
Builds an InsitoTheme from a preset name ('light' | 'dark' | 'minimal' | 'rounded')
plus optional overrides. Useful if you want to preview a theme
outside the SDK.
themePresets
The raw preset map: { light, dark, minimal, rounded }. Each entry is
a complete InsitoTheme. Use this if you want to start from a preset
and tweak it deeply.
Types
Answer
nps:valueis a number 0–10.rating:valueis a number 1–5.multiple_choice:valueis a string (single-select) or string[] (multi-select).open_text:valueis a string.
SdkState
idle→ user can firetrigger().loading→ trigger in flight to the server.survey_active→ modal is on screen.completed→ response submitted, modal closed (transient).