From e134a6f746a370ccf4daafa9fbc0703c0cb35fe6 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Fri, 30 Jan 2026 15:04:34 -0600 Subject: [PATCH 1/5] Initialize currentEngagementURL to undefined, not location.href For use in a server-side rendered environment, it is important we don't access browser variables before `init` or `track` are called, that might not exist in Node/Bun/etc. There isn't much reason to set this variable to location.href prior to `postPageviewTrack` being called, as we won't use it until engagements are registered, in which case, we will have set the URL from the payload. This is the current error when importing (but not running) the code in Node: ``` Welcome to Node.js v25.4.0. Type ".help" for more information. > import('@plausible-analytics/tracker/plausible.js') Promise { , Symbol(async_id_symbol): 103, Symbol(trigger_async_id_symbol): 6 } > Uncaught ReferenceError: location is not defined ``` --- tracker/src/engagement.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tracker/src/engagement.js b/tracker/src/engagement.js index c4a6ab9e55c8..1dba2e5c4f62 100644 --- a/tracker/src/engagement.js +++ b/tracker/src/engagement.js @@ -9,7 +9,7 @@ import { sendRequest } from './networking' var listeningOnEngagement = false var currentEngagementIgnored -var currentEngagementURL = location.href +var currentEngagementURL var currentEngagementProps = {} var currentEngagementMaxScrollDepth = -1 From 91e88b4dbfa785ec4b5a52ac368c76ec0fc43480 Mon Sep 17 00:00:00 2001 From: Artur Pata Date: Tue, 4 Aug 2026 12:45:51 +0300 Subject: [PATCH 2/5] Prepare for automatic npm release flow --- .github/workflows/tracker-script-npm-release.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/tracker-script-npm-release.yml b/.github/workflows/tracker-script-npm-release.yml index 5b7691888c5a..f67a598314df 100644 --- a/.github/workflows/tracker-script-npm-release.yml +++ b/.github/workflows/tracker-script-npm-release.yml @@ -11,6 +11,7 @@ jobs: permissions: pull-requests: read contents: read + id-token: write if: >- ${{ github.event.pull_request.merged == true && ( contains(github.event.pull_request.labels.*.name, 'tracker-release: patch') || @@ -51,8 +52,6 @@ jobs: - name: Publish tracker script to NPM run: npm publish working-directory: tracker/npm_package - env: - NODE_AUTH_TOKEN: ${{ secrets.TRACKER_RELEASE_NPM_TOKEN }} - name: Commit and Push changes uses: EndBug/add-and-commit@290ea2c423ad77ca9c62ae0f5b224379612c0321 From 0fee7d94284a121cdbfbf1589f0654c072df2a3e Mon Sep 17 00:00:00 2001 From: Artur Pata Date: Tue, 4 Aug 2026 12:52:58 +0300 Subject: [PATCH 3/5] Update changelog --- tracker/npm_package/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tracker/npm_package/CHANGELOG.md b/tracker/npm_package/CHANGELOG.md index 590b56e5665a..a84cc3acacec 100644 --- a/tracker/npm_package/CHANGELOG.md +++ b/tracker/npm_package/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased - Fix issue with package resolution by adding "exports" field +- Fix issue with accessing location object when not needed ## [0.4.5] - 2026-05-05 From 897bfdd889745914a89b91bc2dfa25f8c455e2b6 Mon Sep 17 00:00:00 2001 From: Artur Pata Date: Tue, 4 Aug 2026 12:54:59 +0300 Subject: [PATCH 4/5] Update tracker_script_version --- tracker/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tracker/package.json b/tracker/package.json index c77a2db3c0b0..d867d021601f 100644 --- a/tracker/package.json +++ b/tracker/package.json @@ -1,5 +1,5 @@ { - "tracker_script_version": 35, + "tracker_script_version": 36, "type": "module", "scripts": { "lint": "eslint", From 952ecde3385d34f10429f742f501ce983c10d4e1 Mon Sep 17 00:00:00 2001 From: Artur Pata Date: Tue, 4 Aug 2026 17:28:41 +0300 Subject: [PATCH 5/5] Refactor to playwright image --- .github/workflows/tracker.yml | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/.github/workflows/tracker.yml b/.github/workflows/tracker.yml index 18c9c2fb0e6d..59fe78da98ba 100644 --- a/.github/workflows/tracker.yml +++ b/.github/workflows/tracker.yml @@ -14,6 +14,10 @@ jobs: test: timeout-minutes: 15 runs-on: blacksmith-4vcpu-ubuntu-2404 + container: + # keep in sync with playwright package in /tracker folder + image: mcr.microsoft.com/playwright:v1.56.1-noble + options: --user 1001 strategy: fail-fast: false matrix: @@ -28,23 +32,6 @@ jobs: cache-dependency-path: tracker/package-lock.json - name: Install dependencies run: npm --prefix ./tracker ci - - name: Cache Playwright browsers - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - id: playwright-cache - with: - path: | - ~/.cache/ms-playwright - ~/.cache/ms-playwright-github - key: playwright-${{ runner.os }}-${{ hashFiles('tracker/package-lock.json') }} - restore-keys: | - playwright-${{ runner.os }}- - - name: Install Playwright system dependencies - working-directory: ./tracker - run: npx playwright install-deps - - name: Install Playwright Browsers - if: steps.playwright-cache.outputs.cache-hit != 'true' - working-directory: ./tracker - run: npx playwright install - name: Run Playwright tests run: npm --prefix ./tracker test -- --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --reporter=blob - name: Upload blob report to GitHub Actions Artifacts