GAProvider
is a reusable React component that integrates Google Analytics 4 with React SPAs using React Router and React Helmet. It automatically tracks:
- Route changes
- Page title changes (
<Helmet>
) - Meta description and other SEO meta tag changes
- Canonical link changes
- Optional additional meta tags
Perfect for SPAs where the document head updates dynamically and you want accurate GA pageviews.
# Using npm
npm install react-ga-spa-helmet
# Using yarn
yarn add react-ga-spa-helmet
Wrap your app with GAProvider
in main.tsx
:
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
import { HelmetProvider } from 'react-helmet-async';
import App from './App';
import { GAProvider } from 'react-ga-spa-helmet';
createRoot(document.getElementById('root')!).render(
<StrictMode>
<HelmetProvider>
<BrowserRouter>
<GAProvider
measurementId="YOUR_GA_MEASUREMENT_ID"
trackMetaTags={['description', 'keywords', 'author', 'robots']}
>
<App />
</GAProvider>
</BrowserRouter>
</HelmetProvider>
</StrictMode>
);
Prop | Type | Required | Description |
---|---|---|---|
measurementId |
string |
✅ | Your GA4 measurement ID (e.g., G-XXXXXXXXXX) |
children |
ReactNode |
✅ | Your app component tree |
trackMetaTags |
string[] |
❌ | Array of meta tag names to track (default: ['description','keywords','author','robots'] ) |
- Automatic GA initialization – only once globally.
- Route tracking – integrates with React Router.
- Dynamic title tracking – works with React Helmet.
- Meta tag tracking – description, keywords, author, robots, etc.
- Canonical link tracking – automatically detects changes.
- Future-proof – easily extend
trackMetaTags
to monitor additional SEO tags. - SPA friendly – handles changes without route reloads.
<GAProvider
measurementId="G-XXXXXXXXXX"
trackMetaTags={['description', 'keywords', 'author', 'robots', 'og:title', 'og:description']}
>
<App />
</GAProvider>
MIT License – free to use and modify.