@onramp-sdk/react 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -10
- package/dist/OnRampProvider.d.ts +2 -2
- package/dist/OnRampProvider.js +2 -2
- package/dist/RouteTracker.d.ts +1 -1
- package/dist/RouteTracker.js +1 -1
- package/dist/core.d.ts +2 -2
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +38 -3
- package/dist/core.js.map +1 -1
- package/dist/useTrackStep.d.ts +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -12,13 +12,13 @@ npm install @onramp-sdk/react
|
|
|
12
12
|
yarn add @onramp-sdk/react
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
`react >= 18` is a peer dependency. `next >= 13` is an optional peer
|
|
15
|
+
`react >= 18` is a peer dependency. `next >= 13` is an optional peer - only needed for the route tracker in `@onramp-sdk/react/next`.
|
|
16
16
|
|
|
17
17
|
## Setup
|
|
18
18
|
|
|
19
19
|
### 1. Wrap your app in the provider
|
|
20
20
|
|
|
21
|
-
`<OnRampProvider>` initializes the SDK once on the client. It's SSR-safe
|
|
21
|
+
`<OnRampProvider>` initializes the SDK once on the client. It's SSR-safe - it no-ops on the server and starts tracking in the browser.
|
|
22
22
|
|
|
23
23
|
**Next.js App Router** (`app/layout.tsx`):
|
|
24
24
|
|
|
@@ -38,7 +38,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
|
|
38
38
|
}
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
`<OnRampProvider>` is a client component, so it only opts its own subtree into client rendering
|
|
41
|
+
`<OnRampProvider>` is a client component, so it only opts its own subtree into client rendering - your layout and pages stay server components.
|
|
42
42
|
|
|
43
43
|
**Plain React** (e.g. Vite, CRA): wrap your root the same way.
|
|
44
44
|
|
|
@@ -72,9 +72,9 @@ export function ProfileSetup() {
|
|
|
72
72
|
}
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
### 3. (Next.js) Auto-track route changes
|
|
75
|
+
### 3. (Next.js) Auto-track route changes - optional
|
|
76
76
|
|
|
77
|
-
Mount `<OnRampRouteTracker />` once inside the provider to record every App Router navigation. These are tagged as navigation events and kept **out** of your defined funnels
|
|
77
|
+
Mount `<OnRampRouteTracker />` once inside the provider to record every App Router navigation. These are tagged as navigation events and kept **out** of your defined funnels - they power the session timeline, not conversion steps.
|
|
78
78
|
|
|
79
79
|
```tsx
|
|
80
80
|
import { OnRampProvider } from '@onramp-sdk/react'
|
|
@@ -94,7 +94,7 @@ import { OnRampRouteTracker } from '@onramp-sdk/react/next'
|
|
|
94
94
|
|---|---|---|---|
|
|
95
95
|
| `apiKey` | `string` | ✓ | Your app's API key from the OnRamp dashboard |
|
|
96
96
|
| `host` | `string` | | Ingestion API base URL |
|
|
97
|
-
| `appVersion` | `string` | | App version string
|
|
97
|
+
| `appVersion` | `string` | | App version string - enables the version breakdown |
|
|
98
98
|
| `framework` | `string` | | Runtime label on each event (default `'react'`; e.g. `'nextjs'`) |
|
|
99
99
|
| `sessionTimeoutMs` | `number` | | Idle window before a new session starts (default 30 min) |
|
|
100
100
|
|
|
@@ -102,9 +102,9 @@ import { OnRampRouteTracker } from '@onramp-sdk/react/next'
|
|
|
102
102
|
|
|
103
103
|
Returns `{ step, newSession, flush }`.
|
|
104
104
|
|
|
105
|
-
- `step(stepName, { properties? })`
|
|
106
|
-
- `newSession()`
|
|
107
|
-
- `flush()`
|
|
105
|
+
- `step(stepName, { properties? })` - track a milestone.
|
|
106
|
+
- `newSession()` - force-start a new session (e.g. after logout).
|
|
107
|
+
- `flush()` - flush queued events immediately (also runs automatically on tab hide/close).
|
|
108
108
|
|
|
109
109
|
### `useTrackStep(stepName, options?)`
|
|
110
110
|
|
|
@@ -121,7 +121,7 @@ The same singleton is exported directly for use outside the React tree (e.g. eve
|
|
|
121
121
|
|
|
122
122
|
## How Funnels Work
|
|
123
123
|
|
|
124
|
-
Funnels are defined in the **OnRamp dashboard**, not in the SDK. You call `step()` with a step name; the dashboard decides which steps form which funnel and in what order
|
|
124
|
+
Funnels are defined in the **OnRamp dashboard**, not in the SDK. You call `step()` with a step name; the dashboard decides which steps form which funnel and in what order - no SDK changes when you iterate on funnel structure.
|
|
125
125
|
|
|
126
126
|
## License
|
|
127
127
|
|
package/dist/OnRampProvider.d.ts
CHANGED
|
@@ -5,11 +5,11 @@ export interface OnRampProviderProps extends OnRampReactConfig {
|
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
7
|
* Initializes OnRamp once on the client and makes the tracker available to
|
|
8
|
-
* `useOnRamp` / `useTrackStep` below it. Render it high in your tree
|
|
8
|
+
* `useOnRamp` / `useTrackStep` below it. Render it high in your tree - in
|
|
9
9
|
* Next.js App Router, inside the root layout (it's a client component, so it
|
|
10
10
|
* won't opt your whole layout into client rendering; only its own subtree).
|
|
11
11
|
*/
|
|
12
12
|
export declare function OnRampProvider({ children, ...config }: OnRampProviderProps): import("react").JSX.Element;
|
|
13
|
-
/** @internal
|
|
13
|
+
/** @internal - true when a provider is mounted above the caller. */
|
|
14
14
|
export declare function useHasOnRampProvider(): boolean;
|
|
15
15
|
//# sourceMappingURL=OnRampProvider.d.ts.map
|
package/dist/OnRampProvider.js
CHANGED
|
@@ -5,7 +5,7 @@ import { OnRamp } from './core.js';
|
|
|
5
5
|
const OnRampContext = createContext(false);
|
|
6
6
|
/**
|
|
7
7
|
* Initializes OnRamp once on the client and makes the tracker available to
|
|
8
|
-
* `useOnRamp` / `useTrackStep` below it. Render it high in your tree
|
|
8
|
+
* `useOnRamp` / `useTrackStep` below it. Render it high in your tree - in
|
|
9
9
|
* Next.js App Router, inside the root layout (it's a client component, so it
|
|
10
10
|
* won't opt your whole layout into client rendering; only its own subtree).
|
|
11
11
|
*/
|
|
@@ -18,7 +18,7 @@ export function OnRampProvider({ children, ...config }) {
|
|
|
18
18
|
OnRamp.init(configRef.current);
|
|
19
19
|
return _jsx(OnRampContext.Provider, { value: true, children: children });
|
|
20
20
|
}
|
|
21
|
-
/** @internal
|
|
21
|
+
/** @internal - true when a provider is mounted above the caller. */
|
|
22
22
|
export function useHasOnRampProvider() {
|
|
23
23
|
return useContext(OnRampContext);
|
|
24
24
|
}
|
package/dist/RouteTracker.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-tracks route changes in the Next.js App Router as navigation events.
|
|
3
3
|
*
|
|
4
|
-
* These are tagged so the dashboard keeps them out of your defined funnels
|
|
4
|
+
* These are tagged so the dashboard keeps them out of your defined funnels -
|
|
5
5
|
* they power the session timeline, not conversion steps. Mount once in your
|
|
6
6
|
* root layout:
|
|
7
7
|
*
|
package/dist/RouteTracker.js
CHANGED
|
@@ -5,7 +5,7 @@ import { OnRamp } from './core.js';
|
|
|
5
5
|
/**
|
|
6
6
|
* Auto-tracks route changes in the Next.js App Router as navigation events.
|
|
7
7
|
*
|
|
8
|
-
* These are tagged so the dashboard keeps them out of your defined funnels
|
|
8
|
+
* These are tagged so the dashboard keeps them out of your defined funnels -
|
|
9
9
|
* they power the session timeline, not conversion steps. Mount once in your
|
|
10
10
|
* root layout:
|
|
11
11
|
*
|
package/dist/core.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export interface OnRampReactConfig {
|
|
|
3
3
|
apiKey: string;
|
|
4
4
|
/** Ingestion API base URL. */
|
|
5
5
|
host?: string;
|
|
6
|
-
/** App version string, e.g. "2.4.1"
|
|
6
|
+
/** App version string, e.g. "2.4.1" - enables the version breakdown in the dashboard. */
|
|
7
7
|
appVersion?: string;
|
|
8
8
|
/**
|
|
9
9
|
* SDK/runtime label reported on each event. Defaults to `'react'`; set
|
|
@@ -16,7 +16,7 @@ export interface OnRampReactConfig {
|
|
|
16
16
|
export interface StepOptions {
|
|
17
17
|
/** Custom event properties (e.g. { plan: 'free', source: 'invite' }). */
|
|
18
18
|
properties?: Record<string, string | number | boolean>;
|
|
19
|
-
/** @internal Used by the route tracker
|
|
19
|
+
/** @internal Used by the route tracker - not part of the public API. */
|
|
20
20
|
_eventType?: 'nav_entered';
|
|
21
21
|
}
|
|
22
22
|
export declare const OnRamp: {
|
package/dist/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAmGD,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;IACtD,wEAAwE;IACxE,UAAU,CAAC,EAAE,aAAa,CAAA;CAC3B;AAED,eAAO,MAAM,MAAM;IACjB;;;;OAIG;iBACU,iBAAiB,GAAG,IAAI;IAoFrC,iDAAiD;mBAClC,MAAM,YAAY,WAAW,GAAG,IAAI;IAqCnD,qDAAqD;kBACvC,IAAI;IAIlB,kFAAkF;aACzE,OAAO,CAAC,IAAI,CAAC;IAItB,4CAA4C;4BACvB,OAAO;CAG7B,CAAA"}
|
package/dist/core.js
CHANGED
|
@@ -24,7 +24,7 @@ function safeSet(key, value) {
|
|
|
24
24
|
localStorage.setItem(key, value);
|
|
25
25
|
}
|
|
26
26
|
catch {
|
|
27
|
-
// localStorage unavailable (private mode, quota)
|
|
27
|
+
// localStorage unavailable (private mode, quota) - degrade silently
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
let client = null;
|
|
@@ -35,6 +35,9 @@ let sessionTimeoutMs = DEFAULT_SESSION_TIMEOUT_MS;
|
|
|
35
35
|
let lastActive = 0;
|
|
36
36
|
let started = false;
|
|
37
37
|
let pendingReferrer = null;
|
|
38
|
+
let pendingUtm = null;
|
|
39
|
+
let lastHeartbeatTs = 0;
|
|
40
|
+
let heartbeatTimer = null;
|
|
38
41
|
function getOrCreateAnonymousId() {
|
|
39
42
|
const existing = safeGet(ANON_KEY);
|
|
40
43
|
if (existing)
|
|
@@ -140,7 +143,7 @@ export const OnRamp = {
|
|
|
140
143
|
*/
|
|
141
144
|
init(config) {
|
|
142
145
|
if (!hasWindow())
|
|
143
|
-
return; // server
|
|
146
|
+
return; // server - defer to the client
|
|
144
147
|
if (started)
|
|
145
148
|
return; // already initialized this page load
|
|
146
149
|
sessionTimeoutMs = config.sessionTimeoutMs ?? DEFAULT_SESSION_TIMEOUT_MS;
|
|
@@ -167,6 +170,18 @@ export const OnRamp = {
|
|
|
167
170
|
pendingReferrer = document.referrer;
|
|
168
171
|
}
|
|
169
172
|
}
|
|
173
|
+
// Capture UTM params so traffic source is attributable even when the referrer
|
|
174
|
+
// header is stripped (e.g. Google organic, AI-tool redirects, paid campaigns).
|
|
175
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
176
|
+
const utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
|
|
177
|
+
const utmProps = {};
|
|
178
|
+
for (const key of utmKeys) {
|
|
179
|
+
const val = urlParams.get(key);
|
|
180
|
+
if (val)
|
|
181
|
+
utmProps[`_${key}`] = val;
|
|
182
|
+
}
|
|
183
|
+
if (Object.keys(utmProps).length > 0)
|
|
184
|
+
pendingUtm = utmProps;
|
|
170
185
|
client = new OnRampClient({
|
|
171
186
|
apiKey: config.apiKey,
|
|
172
187
|
host: config.host,
|
|
@@ -175,22 +190,38 @@ export const OnRamp = {
|
|
|
175
190
|
appVersion: config.appVersion ?? null,
|
|
176
191
|
uuidFn: uuid,
|
|
177
192
|
});
|
|
178
|
-
//
|
|
193
|
+
// Heartbeat + last-chance flush when the tab is hidden or closed.
|
|
194
|
+
// Both pagehide and visibilitychange can fire; the 500ms guard prevents
|
|
195
|
+
// duplicate heartbeats when they fire in quick succession.
|
|
196
|
+
function sendHeartbeat() {
|
|
197
|
+
if (!client || !currentSessionId || !anonymousId)
|
|
198
|
+
return;
|
|
199
|
+
const now = Date.now();
|
|
200
|
+
if (now - lastHeartbeatTs < 500)
|
|
201
|
+
return;
|
|
202
|
+
lastHeartbeatTs = now;
|
|
203
|
+
client.beacon({ sessionId: currentSessionId, anonymousId });
|
|
204
|
+
}
|
|
179
205
|
window.addEventListener('pagehide', () => {
|
|
180
206
|
lastActive = Date.now();
|
|
181
207
|
persistSession();
|
|
208
|
+
sendHeartbeat();
|
|
182
209
|
client?.flush();
|
|
183
210
|
});
|
|
184
211
|
document.addEventListener('visibilitychange', () => {
|
|
185
212
|
if (document.visibilityState === 'hidden') {
|
|
186
213
|
lastActive = Date.now();
|
|
187
214
|
persistSession();
|
|
215
|
+
sendHeartbeat();
|
|
188
216
|
client?.flush();
|
|
189
217
|
}
|
|
190
218
|
else {
|
|
191
219
|
ensureSessionFresh();
|
|
192
220
|
}
|
|
193
221
|
});
|
|
222
|
+
// Periodic heartbeat so duration is accurate even when the user sits on a
|
|
223
|
+
// single screen for a long time without triggering a page-visibility event.
|
|
224
|
+
heartbeatTimer = setInterval(sendHeartbeat, 5_000);
|
|
194
225
|
started = true;
|
|
195
226
|
},
|
|
196
227
|
/** Track a milestone in your onboarding flow. */
|
|
@@ -207,12 +238,16 @@ export const OnRamp = {
|
|
|
207
238
|
persistSession();
|
|
208
239
|
const ref = pendingReferrer;
|
|
209
240
|
pendingReferrer = null;
|
|
241
|
+
const utm = pendingUtm;
|
|
242
|
+
pendingUtm = null;
|
|
210
243
|
const { osVersion, browser } = parseUA();
|
|
211
244
|
const extraProps = {};
|
|
212
245
|
if (browser)
|
|
213
246
|
extraProps._browser = browser;
|
|
214
247
|
if (ref)
|
|
215
248
|
extraProps._referrer = ref;
|
|
249
|
+
if (utm)
|
|
250
|
+
Object.assign(extraProps, utm);
|
|
216
251
|
client.track({
|
|
217
252
|
sessionId: currentSessionId,
|
|
218
253
|
anonymousId,
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,QAAQ,GAAG,sBAAsB,CAAA;AACvC,MAAM,WAAW,GAAG,iBAAiB,CAAA;AACrC,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,SAAS;AAE3D,SAAS,IAAI;IACX,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC,UAAU,EAAE,CAAA;IAClF,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACnE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,SAAS,GAAG,GAAY,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW,CAAA;AAE9D,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,KAAa;IACzC,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;AACH,CAAC;AAwBD,IAAI,MAAM,GAAwB,IAAI,CAAA;AACtC,IAAI,gBAAgB,GAAkB,IAAI,CAAA;AAC1C,IAAI,WAAW,GAAkB,IAAI,CAAA;AACrC,IAAI,WAAW,GAAG,CAAC,CAAA;AACnB,IAAI,gBAAgB,GAAG,0BAA0B,CAAA;AACjD,IAAI,UAAU,GAAG,CAAC,CAAA;AAClB,IAAI,OAAO,GAAG,KAAK,CAAA;AACnB,IAAI,eAAe,GAAkB,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/useTrackStep.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface UseTrackStepOptions {
|
|
2
2
|
/** Custom event properties attached to this step. */
|
|
3
3
|
properties?: Record<string, string | number | boolean>;
|
|
4
|
-
/** Skip tracking while false
|
|
4
|
+
/** Skip tracking while false - useful for gating on a loaded/ready state. */
|
|
5
5
|
enabled?: boolean;
|
|
6
6
|
}
|
|
7
7
|
/**
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onramp-sdk/react",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "OnRamp onboarding funnel analytics for React & Next.js
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"description": "OnRamp onboarding funnel analytics for React & Next.js - track steps, see where users drop off.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@onramp-sdk/core": "0.4.
|
|
41
|
-
"@onramp-sdk/shared": "0.2.
|
|
40
|
+
"@onramp-sdk/core": "0.4.1",
|
|
41
|
+
"@onramp-sdk/shared": "0.2.2"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"react": ">=18.0.0",
|