Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
@jonkoops/matomo-tracker-react
Advanced tools
Stand alone library for using Matamo tracking in React projects
npm install @jonkoops/matomo-tracker-react
Before you're able to use this Matomo Tracker you need to create a Matomo instance with your project specific details, and wrap your application with the MatomoProvider
that this package exposes.
import { MatomoProvider, createInstance } from '@jonkoops/matomo-tracker-react'
const instance = createInstance({
urlBase: 'https://LINK.TO.DOMAIN',
siteId: 3,
userId: 'UID76903202', // optional, default value: `undefined`.
trackerUrl: 'https://LINK.TO.DOMAIN/tracking.php', // optional, default value: `${urlBase}matomo.php`
srcUrl: 'https://LINK.TO.DOMAIN/tracking.js', // optional, default value: `${urlBase}matomo.js`
disabled: false, // optional, false by default. Makes all tracking calls no-ops if set to true.
heartBeat: { // optional, enabled by default
active: true, // optional, default value: true
seconds: 10 // optional, default value: `15
},
linkTracking: false, // optional, default value: true
configurations: { // optional, default value: {}
// any valid matomo configuration, all below are optional
disableCookies: true,
setSecureCookie: true,
setRequestMethod: 'POST'
}
})
ReactDOM.render(
<MatomoProvider value={instance}>
<MyApp />
</MatomoProvider>,
)
After wrapping your application with the MatomoProvider
you can use the useMatomo
hook to track your application from anywhere within the MatomoProvider component tree:
import React from 'react'
import { useMatomo } from '@jonkoops/matomo-tracker-react'
const MyPage = () => {
const { trackPageView, trackEvent } = useMatomo()
// Track page view
React.useEffect(() => {
trackPageView()
}, [])
const handleOnClick = () => {
// Track click on button
trackEvent({ category: 'sample-page', action: 'click-event' })
}
return (
<button type="button" onClick={handleOnClick}>
Click me
</button>
)
}
By default the Matomo Tracker will send the window's document title and location, or send your own values. Also, custom dimensions can be used:
import React from 'react'
import { useMatomo } from '@jonkoops/matomo-tracker-react'
const MyPage = () => {
const { trackPageView, trackEvent } = useMatomo()
// Track page view
React.useEffect(() => {
trackPageView({
documentTitle: 'Page title', // optional
href: 'https://LINK.TO.PAGE', // optional
customDimensions: [
{
id: 1,
value: 'loggedIn',
},
], // optional
})
}, [])
const handleOnClick = () => {
// Track click on button
trackEvent({ category: 'sample-page', action: 'click-event' })
}
return (
<button type="button" onClick={handleOnClick}>
Click me
</button>
)
}
And you can do the same for the trackEvent
method:
import React from 'react'
import { useMatomo } from '@jonkoops/matomo-tracker-react'
const MyPage = () => {
const { trackEvent } = useMatomo()
const handleOnClick = () => {
// Track click on button
trackEvent({
category: 'sample-page',
action: 'click-event',
name: 'test', // optional
value: 123, // optional, numerical value
documentTitle: 'Page title', // optional
href: 'https://LINK.TO.PAGE', // optional
customDimensions: [
{
id: 1,
value: 'loggedIn',
},
], // optional
})
}
return (
<button type="button" onClick={handleOnClick}>
Click me
</button>
)
}
The useMatomo
hook also exposes the following methods:
trackEvents()
trackSiteSearch()
trackLink()
pushInstruction()
For example, the pushInstruction()
function can be used to push instructions to Matomo for execution. This
is equivalent to pushing entries into the _paq
array.
const { pushInstruction } = useMatomo();
pushInstruction('setUserId', 'USER_ID_HERE');
Matomo provides the option to track outbound link, however, this implementation is flaky for a SPA (Single Page Application) without SSR (Server Side Rendering) across different versions of Matomo. Therefore you can use the enableLinkTracking
method to listen to outbound clicks on anchor elements. This method should be placed on a component directly below your MatomoProvider
on a component that's rendered on every page view. Also, make sure to disable the linkTracking
option on the instance passed to the provider to prevent Matomo from catching some link clicks:
import { MatomoProvider, createInstance, useMatomo } from '@jonkoops/matomo-tracker-react'
const instance = createInstance({
urlBase: "https://LINK.TO.DOMAIN",
linkTracking: false // Important!
});
ReactDOM.render(
<MatomoProvider value={instance}>
<MyApp />
</MatomoProvider>
)
const MyApp = () => {
const { enableLinkTracking } = useMatomo()
enableLinkTracking()
return (
// Render components
)
}
FAQs
Matomo tracker for react projects
The npm package @jonkoops/matomo-tracker-react receives a total of 17,541 weekly downloads. As such, @jonkoops/matomo-tracker-react popularity was classified as popular.
We found that @jonkoops/matomo-tracker-react demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.