react-fathomv0.3.0
On this page
  1. FathomProvider
  2. Props
  3. clientOptions
  4. Example with All Options
  5. Nested Providers
  6. NextFathomProviderApp
  7. Props
  8. NextFathomTrackViewApp
  9. Props
  10. NextFathomTrackViewPages
  11. Props
  12. NativeFathomProvider
  13. Props

Providers

API reference for FathomProvider, NextFathomProviderApp, and NativeFathomProvider.

FathomProvider

Main provider component for React apps. Wraps your application and provides the Fathom context.

tsx
import { FathomProvider } from 'react-fathom'
;<FathomProvider siteId="YOUR_SITE_ID">
  <App />
</FathomProvider>

Props

PropTypeRequiredDescription
siteIdstringNo*Your Fathom Analytics site ID
clientFathomClientNo*Custom Fathom client instance
clientRefMutableRefObject<FathomClient>NoRef populated with the client instance
clientOptionsLoadOptionsNoOptions passed to fathom-client
defaultPageviewOptionsPageViewOptionsNoDefault options merged into all trackPageview calls
defaultEventOptionsEventOptionsNoDefault options merged into all trackEvent calls
childrenReactNodeYesChild components

*Either siteId or client must be provided.

clientOptions

Options passed to the underlying fathom-client:

OptionTypeDescription
autobooleanEnable automatic pageview tracking (default: true)
canonicalbooleanUse canonical URL for tracking
honorDNTbooleanHonor Do Not Track browser setting
includedDomainsstring[]Only track on these domains
excludedDomainsstring[]Don't track on these domains
spa'auto' | 'history' | 'hash'SPA mode for route detection

Example with All Options

tsx
<FathomProvider
  siteId="YOUR_SITE_ID"
  clientOptions={{
    includedDomains: ['yourdomain.com', 'localhost'],
    auto: false,
    honorDNT: true,
  }}
  defaultPageviewOptions={{ referrer: 'https://example.com' }}
  defaultEventOptions={{ _site_id: 'my-app' }}
>
  <App />
</FathomProvider>

Nested Providers

Providers can be nested to override defaults for specific sections:

tsx
<FathomProvider
  siteId="YOUR_SITE_ID"
  defaultEventOptions={{ _site_id: 'global' }}
>
  {/* Events here use _site_id: 'global' */}

  <FathomProvider defaultEventOptions={{ _site_id: 'dashboard' }}>
    {/* Events here use _site_id: 'dashboard' */}
  </FathomProvider>
</FathomProvider>

NextFathomProviderApp

Client Component wrapper for Next.js App Router. Combines FathomProvider and NextFathomTrackViewApp.

tsx
import { NextFathomProviderApp } from 'react-fathom/next'

// app/layout.tsx
export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        <NextFathomProviderApp siteId="YOUR_SITE_ID">
          {children}
        </NextFathomProviderApp>
      </body>
    </html>
  )
}

Props

All FathomProvider props, plus:

PropTypeDefaultDescription
disableAutoTrackbooleanfalseDisable automatic pageview tracking on route changes

NextFathomTrackViewApp

Tracks pageviews for Next.js App Router. Must be used within a FathomProvider.

tsx
import { FathomProvider } from 'react-fathom'
import { NextFathomTrackViewApp } from 'react-fathom/next'
;<FathomProvider siteId="YOUR_SITE_ID">
  <NextFathomTrackViewApp />
  {children}
</FathomProvider>

Props

PropTypeDefaultDescription
disableAutoTrackbooleanfalseDisable automatic route tracking

NextFathomTrackViewPages

Tracks pageviews for Next.js Pages Router. Must be used within a FathomProvider.

tsx
import { FathomProvider } from 'react-fathom'
import { NextFathomTrackViewPages } from 'react-fathom/next'

// pages/_app.tsx
function MyApp({ Component, pageProps }) {
  return (
    <FathomProvider siteId="YOUR_SITE_ID">
      <NextFathomTrackViewPages />
      <Component {...pageProps} />
    </FathomProvider>
  )
}

Props

PropTypeDefaultDescription
disableAutoTrackbooleanfalseDisable automatic route tracking

NativeFathomProvider

Provider for React Native apps. Manages a hidden WebView with Fathom's tracking script.

tsx
import { NativeFathomProvider } from 'react-fathom/native'
;<NativeFathomProvider siteId="YOUR_SITE_ID" debug={__DEV__}>
  <App />
</NativeFathomProvider>

Props

PropTypeRequiredDescription
siteIdstringYesYour Fathom site ID
loadOptionsLoadOptionsNoOptions passed to fathom.load()
scriptDomainstringNoCustom domain (default: cdn.usefathom.com)
defaultPageviewOptionsPageViewOptionsNoDefault pageview options
defaultEventOptionsEventOptionsNoDefault event options
trackAppStatebooleanNoEnable automatic app state tracking
debugbooleanNoEnable debug logging
onReady() => voidNoCalled when Fathom script loads
onError(error: string) => voidNoCalled on script load error
clientRefMutableRefObject<WebViewFathomClient>NoRef for direct client access
childrenReactNodeYesChild components

See the React Native guide for detailed usage.

Last updated: October 8, 2026

By

Commune Software