TapCub is live — analytics, insights and live chat, free on one platform
Help center

How do I track a React, Vue or Next.js app?

Where the tag goes in a single-page app, how route changes become pageviews, and when to add the hash attribute.

Getting started1 min readLast updated Oct 28, 2026TapCub teamPart of Install TapCub on your website

Short answer

Add the snippet once to the root HTML template or root layout. Route changes made with the History API are recorded automatically; hash-based routers need data-hash="true".

Where the tag goes

Copy your snippet from Web analyticsConfigurationSDK code. It already contains your site key and looks like this:

SDK code
<script defer src="https://static.pathclue.com/client.js" data-site="YOUR_SITE_KEY"></script>

Add it once, to the file that renders the document head for every route: index.html in a Vite or Create React App project, the root layout in Next.js or Nuxt. Do not load it inside a component that mounts per page.

How route changes are counted

The script listens to history.pushState, history.replaceState and the browser’s back and forward buttons, which is how React Router, Vue Router, Next.js and Nuxt change pages. Each new URL becomes a pageview, and the time spent on the previous route is recorded as it changes. A change that keeps the same URL is not counted twice.

RouterWhat to do
History mode (/pricing)Nothing. This is the default for most frameworks.
Hash mode (/#/pricing)Add data-hash="true" to the tag so the part after # counts as the page.
Server-rendered pages without client routingNothing. Every navigation is a full page load.

Calling tapcub.pageview() yourself after a route change is safe but unnecessary: the same URL is not sent twice.

Local development

On localhost the script sends nothing by default, so development traffic stays out of your reports. To test locally, see testing on localhost.

See also

Did this answer your question?

We use your answers to fix and expand this page.

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics