In-app navigation tracking (manual)
A test of V2’s new ability to track virtual page views inside single-page apps — sites where clicking a link changes the URL and content but does not actually reload the page (X/Twitter, Gmail, most React/Next.js/Vue apps). V1 fires once and never again, so all in-app navigation goes unmeasured. V2 detects every URL change and refires the pixel, with safeguards against over-counting (rapid clicks are coalesced, same-URL navigations are skipped).
Each side runs the same scenario in its own iframe. The iframes load independently, so you can see how each pixel version behaves under identical conditions.
How to test:
- Wait until both columns show pixel ×1 — that is the initial page-load fire.
- In the V2 column, click "pushState (new URL)". V2 pixel goes to ×2, V1 stays at ×1.
- Click "pushState (same URL)". Nothing should change — V2 detects the URL is unchanged and skips the refire (the dedup check).
- Click "replaceState". V2 goes up by 1, V1 stays put.
- Click "back (popstate)". Only works after a pushState — V2 fires once.
- Click "hashchange". V2 fires once.
Expected: V1 — pixel stays at ×1 the entire time, no matter how many times you click. V2 — increments on every button except 'pushState (same URL)'. If you ever see V2 fail to increment on a fresh URL, the SPA listener inside V2 is broken.
V1 · current pixel
Verdict
Initialising…
window.load
—
wire.js
—
pixel
—
Event timeline
- No events recorded yet…
Script tag for this scenario
// V1 — no SPA awareness. Fires once and goes silent. <script type="text/javascript" async src="https://staging-api.wire.spbx.app/wire.js?account_id=79&property_id=6a2111320c2dee2dc5548935"></script>
V2 · proposed fix
Verdict
Initialising…
window.load
—
wire.js
—
pixel
—
Event timeline
- No events recorded yet…
Script tag for this scenario
// V2 — detects pushState / replaceState / popstate / hashchange. // Debounced 50ms, deduped against the previous URL. <script type="text/javascript" async src="https://staging-api.wire.spbx.app/wire.js?pixel_id=6a211df10c2dee2dc5548936&account_id=79&property_id=6a2111320c2dee2dc5548935"></script>