react-fathom 0.1.10 → 0.2.0
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 +941 -25
- package/dist/cjs/index.cjs +55 -9
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/native/index.cjs +1079 -0
- package/dist/cjs/native/index.cjs.map +1 -0
- package/dist/cjs/next/index.cjs +89 -5
- package/dist/cjs/next/index.cjs.map +1 -1
- package/dist/es/index.js +55 -9
- package/dist/es/index.js.map +1 -1
- package/dist/es/native/index.js +1071 -0
- package/dist/es/native/index.js.map +1 -0
- package/dist/es/next/index.js +90 -6
- package/dist/es/next/index.js.map +1 -1
- package/dist/react-fathom.js +55 -9
- package/dist/react-fathom.js.map +1 -1
- package/dist/react-fathom.min.js +2 -2
- package/dist/react-fathom.min.js.map +1 -1
- package/package.json +28 -5
- package/src/FathomContext.tsx +30 -1
- package/src/FathomProvider.test.tsx +115 -15
- package/src/FathomProvider.tsx +10 -2
- package/src/components/TrackClick.test.tsx +7 -7
- package/src/components/TrackClick.tsx +1 -1
- package/src/components/TrackVisible.test.tsx +7 -7
- package/src/components/TrackVisible.tsx +1 -1
- package/src/hooks/useFathom.test.tsx +14 -3
- package/src/hooks/useTrackOnClick.test.tsx +4 -4
- package/src/hooks/useTrackOnClick.ts +1 -1
- package/src/hooks/useTrackOnVisible.test.tsx +4 -4
- package/src/hooks/useTrackOnVisible.ts +1 -1
- package/src/index.ts +1 -0
- package/src/native/FathomWebView.test.tsx +410 -0
- package/src/native/FathomWebView.tsx +297 -0
- package/src/native/NativeFathomProvider.test.tsx +372 -0
- package/src/native/NativeFathomProvider.tsx +113 -0
- package/src/native/createWebViewClient.test.ts +380 -0
- package/src/native/createWebViewClient.ts +271 -0
- package/src/native/index.ts +29 -0
- package/src/native/react-native.d.ts +74 -0
- package/src/native/types.ts +145 -0
- package/src/native/useAppStateTracking.test.ts +249 -0
- package/src/native/useAppStateTracking.ts +66 -0
- package/src/native/useNavigationTracking.test.ts +446 -0
- package/src/native/useNavigationTracking.ts +177 -0
- package/src/next/NextFathomProviderApp.client.tsx +5 -0
- package/src/next/NextFathomProviderApp.test.tsx +154 -0
- package/src/next/NextFathomProviderApp.tsx +62 -0
- package/src/next/index.ts +3 -0
- package/src/types.ts +36 -9
- package/types/FathomContext.d.ts +1 -1
- package/types/FathomContext.d.ts.map +1 -1
- package/types/FathomProvider.d.ts.map +1 -1
- package/types/components/TrackClick.d.ts +1 -1
- package/types/components/TrackVisible.d.ts +1 -1
- package/types/hooks/useTrackOnClick.d.ts +1 -1
- package/types/hooks/useTrackOnVisible.d.ts +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/native/FathomWebView.d.ts +59 -0
- package/types/native/FathomWebView.d.ts.map +1 -0
- package/types/native/NativeFathomProvider.d.ts +36 -0
- package/types/native/NativeFathomProvider.d.ts.map +1 -0
- package/types/native/createWebViewClient.d.ts +51 -0
- package/types/native/createWebViewClient.d.ts.map +1 -0
- package/types/native/index.d.ts +10 -0
- package/types/native/index.d.ts.map +1 -0
- package/types/native/types.d.ts +125 -0
- package/types/native/types.d.ts.map +1 -0
- package/types/native/useAppStateTracking.d.ts +25 -0
- package/types/native/useAppStateTracking.d.ts.map +1 -0
- package/types/native/useNavigationTracking.d.ts +30 -0
- package/types/native/useNavigationTracking.d.ts.map +1 -0
- package/types/next/NextFathomProviderApp.client.d.ts +3 -0
- package/types/next/NextFathomProviderApp.client.d.ts.map +1 -0
- package/types/next/NextFathomProviderApp.d.ts +38 -4
- package/types/next/NextFathomProviderApp.d.ts.map +1 -1
- package/types/next/index.d.ts +1 -0
- package/types/next/index.d.ts.map +1 -1
- package/types/types.d.ts +34 -9
- package/types/types.d.ts.map +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { UseAppStateTrackingOptions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Hook that tracks app state changes (foreground/background) as Fathom events.
|
|
4
|
+
*
|
|
5
|
+
* This is useful for understanding user engagement patterns and session behavior.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import { useAppStateTracking } from 'react-fathom/native'
|
|
10
|
+
*
|
|
11
|
+
* function App() {
|
|
12
|
+
* useAppStateTracking({
|
|
13
|
+
* foregroundEventName: 'app-resumed',
|
|
14
|
+
* backgroundEventName: 'app-paused',
|
|
15
|
+
* onStateChange: (state) => {
|
|
16
|
+
* console.log('App state:', state)
|
|
17
|
+
* },
|
|
18
|
+
* })
|
|
19
|
+
*
|
|
20
|
+
* return <YourApp />
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function useAppStateTracking(options?: UseAppStateTrackingOptions): void;
|
|
25
|
+
//# sourceMappingURL=useAppStateTracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAppStateTracking.d.ts","sourceRoot":"","sources":["../../src/native/useAppStateTracking.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,QAqC3E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { UseNavigationTrackingOptions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Hook that tracks screen navigation as pageviews using React Navigation.
|
|
4
|
+
*
|
|
5
|
+
* This integrates with React Navigation's navigation container to automatically
|
|
6
|
+
* track screen changes as Fathom pageviews.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* import { NavigationContainer } from '@react-navigation/native'
|
|
11
|
+
* import { useNavigationTracking } from 'react-fathom/native'
|
|
12
|
+
*
|
|
13
|
+
* function App() {
|
|
14
|
+
* const navigationRef = useNavigationContainerRef()
|
|
15
|
+
*
|
|
16
|
+
* useNavigationTracking({
|
|
17
|
+
* navigationRef,
|
|
18
|
+
* transformRouteName: (name) => `/screens/${name}`,
|
|
19
|
+
* })
|
|
20
|
+
*
|
|
21
|
+
* return (
|
|
22
|
+
* <NavigationContainer ref={navigationRef}>
|
|
23
|
+
* <Navigator />
|
|
24
|
+
* </NavigationContainer>
|
|
25
|
+
* )
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function useNavigationTracking(options: UseNavigationTrackingOptions): void;
|
|
30
|
+
//# sourceMappingURL=useNavigationTracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNavigationTracking.d.ts","sourceRoot":"","sources":["../../src/native/useNavigationTracking.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,QAgJ1E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NextFathomProviderApp.client.d.ts","sourceRoot":"","sources":["../../src/next/NextFathomProviderApp.client.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -1,6 +1,40 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import type { FathomProviderProps } from '../types';
|
|
3
|
+
export interface NextFathomProviderAppProps extends Omit<FathomProviderProps, 'children'> {
|
|
4
|
+
/**
|
|
5
|
+
* Disable automatic pageview tracking on route changes
|
|
6
|
+
* @default false
|
|
7
|
+
*/
|
|
8
|
+
disableAutoTrack?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Child components to render
|
|
11
|
+
*/
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Client component wrapper that combines FathomProvider and NextFathomTrackViewApp
|
|
16
|
+
* for easy integration in Next.js App Router layouts.
|
|
17
|
+
*
|
|
18
|
+
* This component is marked with 'use client' and can be used directly in Server Components
|
|
19
|
+
* like the root layout.tsx file.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* // app/layout.tsx
|
|
24
|
+
* import { NextFathomProviderApp } from 'react-fathom/next'
|
|
25
|
+
*
|
|
26
|
+
* export default function RootLayout({ children }) {
|
|
27
|
+
* return (
|
|
28
|
+
* <html>
|
|
29
|
+
* <body>
|
|
30
|
+
* <NextFathomProviderApp siteId="YOUR_SITE_ID">
|
|
31
|
+
* {children}
|
|
32
|
+
* </NextFathomProviderApp>
|
|
33
|
+
* </body>
|
|
34
|
+
* </html>
|
|
35
|
+
* )
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare const NextFathomProviderApp: React.FC<NextFathomProviderAppProps>;
|
|
6
40
|
//# sourceMappingURL=NextFathomProviderApp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NextFathomProviderApp.d.ts","sourceRoot":"","sources":["../../src/next/NextFathomProviderApp.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NextFathomProviderApp.d.ts","sourceRoot":"","sources":["../../src/next/NextFathomProviderApp.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAGnD,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CACtD,mBAAmB,EACnB,UAAU,CACX;IACC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAWtE,CAAA"}
|
package/types/next/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AAGxC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,8BAA8B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AAGxC,cAAc,yBAAyB,CAAA;AAGvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,8BAA8B,CAAA"}
|
package/types/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { PropsWithChildren } from 'react';
|
|
1
|
+
import type { MutableRefObject, PropsWithChildren } from 'react';
|
|
2
2
|
import type { EventOptions, LoadOptions, PageViewOptions } from 'fathom-client';
|
|
3
|
+
export type { EventOptions, LoadOptions, PageViewOptions };
|
|
3
4
|
export interface FathomClient {
|
|
4
5
|
blockTrackingForMe: () => void;
|
|
5
6
|
enableTrackingForMe: () => void;
|
|
@@ -11,20 +12,44 @@ export interface FathomClient {
|
|
|
11
12
|
isTrackingEnabled: () => boolean;
|
|
12
13
|
}
|
|
13
14
|
export interface FathomContextInterface {
|
|
14
|
-
blockTrackingForMe
|
|
15
|
-
enableTrackingForMe
|
|
16
|
-
isTrackingEnabled
|
|
17
|
-
load
|
|
18
|
-
setSite
|
|
19
|
-
trackPageview
|
|
20
|
-
trackEvent
|
|
21
|
-
trackGoal
|
|
15
|
+
blockTrackingForMe: () => void;
|
|
16
|
+
enableTrackingForMe: () => void;
|
|
17
|
+
isTrackingEnabled: () => boolean;
|
|
18
|
+
load: (siteId: string, options?: LoadOptions) => void;
|
|
19
|
+
setSite: (siteId: string) => void;
|
|
20
|
+
trackPageview: (options?: PageViewOptions) => void;
|
|
21
|
+
trackEvent: (eventName: string, options?: EventOptions) => void;
|
|
22
|
+
trackGoal: (code: string, cents: number) => void;
|
|
22
23
|
client?: FathomClient;
|
|
23
24
|
defaultPageviewOptions?: PageViewOptions;
|
|
24
25
|
defaultEventOptions?: EventOptions;
|
|
25
26
|
}
|
|
26
27
|
export interface FathomProviderProps extends PropsWithChildren {
|
|
27
28
|
client?: FathomClient;
|
|
29
|
+
/**
|
|
30
|
+
* A ref that will be populated with the resolved Fathom client instance.
|
|
31
|
+
* This allows the parent component that composes the provider to access
|
|
32
|
+
* the client directly, since it cannot use useFathom() (context only flows
|
|
33
|
+
* downward to children).
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* function App() {
|
|
38
|
+
* const clientRef = useRef<FathomClient>(null);
|
|
39
|
+
*
|
|
40
|
+
* const handleDeepLink = (url: string) => {
|
|
41
|
+
* clientRef.current?.trackEvent('deep_link', { _url: url });
|
|
42
|
+
* };
|
|
43
|
+
*
|
|
44
|
+
* return (
|
|
45
|
+
* <FathomProvider siteId="..." clientRef={clientRef}>
|
|
46
|
+
* <YourApp />
|
|
47
|
+
* </FathomProvider>
|
|
48
|
+
* );
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
clientRef?: MutableRefObject<FathomClient | null>;
|
|
28
53
|
clientOptions?: LoadOptions;
|
|
29
54
|
siteId?: string;
|
|
30
55
|
defaultPageviewOptions?: PageViewOptions;
|
package/types/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/E,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA;AAE1D,MAAM,WAAW,YAAY;IAC3B,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,mBAAmB,EAAE,MAAM,IAAI,CAAA;IAC/B,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,KAAK,IAAI,CAAA;IAC/C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,KAAK,IAAI,CAAA;IAC5D,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;IACrD,iBAAiB,EAAE,MAAM,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,mBAAmB,EAAE,MAAM,IAAI,CAAA;IAC/B,iBAAiB,EAAE,MAAM,OAAO,CAAA;IAChC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;IACrD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,eAAe,KAAK,IAAI,CAAA;IAClD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,IAAI,CAAA;IAC/D,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,sBAAsB,CAAC,EAAE,eAAe,CAAA;IACxC,mBAAmB,CAAC,EAAE,YAAY,CAAA;CACnC;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;IACjD,aAAa,CAAC,EAAE,WAAW,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sBAAsB,CAAC,EAAE,eAAe,CAAA;IACxC,mBAAmB,CAAC,EAAE,YAAY,CAAA;CACnC"}
|