@onramp-sdk/react 0.1.2 → 0.1.4
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 +93 -11
- 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;AAkGD,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;IAgFrC,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,8 @@ 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;
|
|
38
40
|
function getOrCreateAnonymousId() {
|
|
39
41
|
const existing = safeGet(ANON_KEY);
|
|
40
42
|
if (existing)
|
|
@@ -71,7 +73,6 @@ function ensureSessionFresh() {
|
|
|
71
73
|
rotateSession();
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
|
-
// Coarse device class from the user agent — good enough for funnel breakdowns.
|
|
75
76
|
function getDeviceType() {
|
|
76
77
|
if (typeof navigator === 'undefined')
|
|
77
78
|
return 'desktop';
|
|
@@ -82,10 +83,56 @@ function getDeviceType() {
|
|
|
82
83
|
return 'phone';
|
|
83
84
|
return 'desktop';
|
|
84
85
|
}
|
|
85
|
-
function
|
|
86
|
+
function parseUA() {
|
|
86
87
|
if (typeof navigator === 'undefined')
|
|
87
|
-
return
|
|
88
|
-
|
|
88
|
+
return { osVersion: 'web', browser: '' };
|
|
89
|
+
const ua = navigator.userAgent;
|
|
90
|
+
let os = 'web';
|
|
91
|
+
let osVer = '';
|
|
92
|
+
if (/iPad/.test(ua)) {
|
|
93
|
+
os = 'ipados';
|
|
94
|
+
osVer = (ua.match(/OS (\d+[_.]\d+)/) ?? [])[1]?.replace('_', '.') ?? '';
|
|
95
|
+
}
|
|
96
|
+
else if (/iPhone|iPod/.test(ua)) {
|
|
97
|
+
os = 'ios';
|
|
98
|
+
osVer = (ua.match(/OS (\d+[_.]\d+)/) ?? [])[1]?.replace('_', '.') ?? '';
|
|
99
|
+
}
|
|
100
|
+
else if (/Android (\d+\.?\d*)/.test(ua)) {
|
|
101
|
+
os = 'android';
|
|
102
|
+
osVer = (ua.match(/Android (\d+\.?\d*)/) ?? [])[1] ?? '';
|
|
103
|
+
}
|
|
104
|
+
else if (/Windows NT (\d+\.\d+)/.test(ua)) {
|
|
105
|
+
os = 'windows';
|
|
106
|
+
const nt = (ua.match(/Windows NT (\d+\.\d+)/) ?? [])[1] ?? '';
|
|
107
|
+
osVer = { '10.0': '10', '6.3': '8.1', '6.2': '8', '6.1': '7' }[nt] ?? nt;
|
|
108
|
+
}
|
|
109
|
+
else if (/Mac OS X (\d+[_.]\d+)/.test(ua)) {
|
|
110
|
+
os = 'macos';
|
|
111
|
+
osVer = (ua.match(/Mac OS X (\d+[_.]\d+)/) ?? [])[1]?.replace('_', '.') ?? '';
|
|
112
|
+
}
|
|
113
|
+
else if (/Linux/.test(ua)) {
|
|
114
|
+
os = 'linux';
|
|
115
|
+
}
|
|
116
|
+
let browser = '';
|
|
117
|
+
if (/Edg\/(\d+)/.test(ua)) {
|
|
118
|
+
browser = `Edge ${(ua.match(/Edg\/(\d+)/) ?? [])[1] ?? ''}`;
|
|
119
|
+
}
|
|
120
|
+
else if (/OPR\/(\d+)/.test(ua)) {
|
|
121
|
+
browser = `Opera ${(ua.match(/OPR\/(\d+)/) ?? [])[1] ?? ''}`;
|
|
122
|
+
}
|
|
123
|
+
else if (/Firefox\/(\d+)/.test(ua)) {
|
|
124
|
+
browser = `Firefox ${(ua.match(/Firefox\/(\d+)/) ?? [])[1] ?? ''}`;
|
|
125
|
+
}
|
|
126
|
+
else if (/Chrome\/(\d+)/.test(ua)) {
|
|
127
|
+
browser = `Chrome ${(ua.match(/Chrome\/(\d+)/) ?? [])[1] ?? ''}`;
|
|
128
|
+
}
|
|
129
|
+
else if (/Version\/(\d+).*Safari/.test(ua)) {
|
|
130
|
+
browser = `Safari ${(ua.match(/Version\/(\d+)/) ?? [])[1] ?? ''}`;
|
|
131
|
+
}
|
|
132
|
+
else if (/Safari\//.test(ua)) {
|
|
133
|
+
browser = 'Safari';
|
|
134
|
+
}
|
|
135
|
+
return { osVersion: osVer ? `${os} ${osVer}` : os, browser };
|
|
89
136
|
}
|
|
90
137
|
export const OnRamp = {
|
|
91
138
|
/**
|
|
@@ -95,7 +142,7 @@ export const OnRamp = {
|
|
|
95
142
|
*/
|
|
96
143
|
init(config) {
|
|
97
144
|
if (!hasWindow())
|
|
98
|
-
return; // server
|
|
145
|
+
return; // server - defer to the client
|
|
99
146
|
if (started)
|
|
100
147
|
return; // already initialized this page load
|
|
101
148
|
sessionTimeoutMs = config.sessionTimeoutMs ?? DEFAULT_SESSION_TIMEOUT_MS;
|
|
@@ -122,6 +169,18 @@ export const OnRamp = {
|
|
|
122
169
|
pendingReferrer = document.referrer;
|
|
123
170
|
}
|
|
124
171
|
}
|
|
172
|
+
// Capture UTM params so traffic source is attributable even when the referrer
|
|
173
|
+
// header is stripped (e.g. Google organic, AI-tool redirects, paid campaigns).
|
|
174
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
175
|
+
const utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
|
|
176
|
+
const utmProps = {};
|
|
177
|
+
for (const key of utmKeys) {
|
|
178
|
+
const val = urlParams.get(key);
|
|
179
|
+
if (val)
|
|
180
|
+
utmProps[`_${key}`] = val;
|
|
181
|
+
}
|
|
182
|
+
if (Object.keys(utmProps).length > 0)
|
|
183
|
+
pendingUtm = utmProps;
|
|
125
184
|
client = new OnRampClient({
|
|
126
185
|
apiKey: config.apiKey,
|
|
127
186
|
host: config.host,
|
|
@@ -130,16 +189,29 @@ export const OnRamp = {
|
|
|
130
189
|
appVersion: config.appVersion ?? null,
|
|
131
190
|
uuidFn: uuid,
|
|
132
191
|
});
|
|
133
|
-
//
|
|
192
|
+
// Heartbeat + last-chance flush when the tab is hidden or closed.
|
|
193
|
+
// Both pagehide and visibilitychange can fire; the 500ms guard prevents
|
|
194
|
+
// duplicate heartbeats when they fire in quick succession.
|
|
195
|
+
function sendHeartbeat() {
|
|
196
|
+
if (!client || !currentSessionId || !anonymousId)
|
|
197
|
+
return;
|
|
198
|
+
const now = Date.now();
|
|
199
|
+
if (now - lastHeartbeatTs < 500)
|
|
200
|
+
return;
|
|
201
|
+
lastHeartbeatTs = now;
|
|
202
|
+
client.beacon({ sessionId: currentSessionId, anonymousId });
|
|
203
|
+
}
|
|
134
204
|
window.addEventListener('pagehide', () => {
|
|
135
205
|
lastActive = Date.now();
|
|
136
206
|
persistSession();
|
|
207
|
+
sendHeartbeat();
|
|
137
208
|
client?.flush();
|
|
138
209
|
});
|
|
139
210
|
document.addEventListener('visibilitychange', () => {
|
|
140
211
|
if (document.visibilityState === 'hidden') {
|
|
141
212
|
lastActive = Date.now();
|
|
142
213
|
persistSession();
|
|
214
|
+
sendHeartbeat();
|
|
143
215
|
client?.flush();
|
|
144
216
|
}
|
|
145
217
|
else {
|
|
@@ -162,17 +234,27 @@ export const OnRamp = {
|
|
|
162
234
|
persistSession();
|
|
163
235
|
const ref = pendingReferrer;
|
|
164
236
|
pendingReferrer = null;
|
|
237
|
+
const utm = pendingUtm;
|
|
238
|
+
pendingUtm = null;
|
|
239
|
+
const { osVersion, browser } = parseUA();
|
|
240
|
+
const extraProps = {};
|
|
241
|
+
if (browser)
|
|
242
|
+
extraProps._browser = browser;
|
|
243
|
+
if (ref)
|
|
244
|
+
extraProps._referrer = ref;
|
|
245
|
+
if (utm)
|
|
246
|
+
Object.assign(extraProps, utm);
|
|
165
247
|
client.track({
|
|
166
248
|
sessionId: currentSessionId,
|
|
167
249
|
anonymousId,
|
|
168
250
|
eventType: options?._eventType,
|
|
169
251
|
stepName,
|
|
170
252
|
stepIndex: index,
|
|
171
|
-
osVersion
|
|
253
|
+
osVersion,
|
|
172
254
|
deviceType: getDeviceType(),
|
|
173
|
-
properties:
|
|
174
|
-
? {
|
|
175
|
-
:
|
|
255
|
+
properties: Object.keys(extraProps).length || options?.properties
|
|
256
|
+
? { ...extraProps, ...options?.properties }
|
|
257
|
+
: null,
|
|
176
258
|
});
|
|
177
259
|
},
|
|
178
260
|
/** Force-start a new session (e.g. after logout). */
|
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.4",
|
|
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",
|