From 2af2a591b44bb5f8bce6efd784555f019b94d60e Mon Sep 17 00:00:00 2001 From: BilalG1 Date: Tue, 14 Apr 2026 09:43:37 -0700 Subject: [PATCH 1/3] Skip analytics init on apps without persistent token store (#1336) Owned admin apps are constructed with `tokenStore: null`, which caused EventTracker/SessionRecorder flushes to throw from _ensurePersistentTokenStore() after #1331 removed the silencing. ## Summary by CodeRabbit * **Bug Fixes** * Improved analytics stability and privacy by restricting session recording and event tracking to environments with required persistent storage. * **Tests** * Adjusted a few end-to-end tests to skip when running against a local emulator to reduce spurious failures. --- .../backend/endpoints/api/v1/internal/feedback.test.ts | 8 +++++--- .../lib/stack-app/apps/implementations/client-app-impl.ts | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/e2e/tests/backend/endpoints/api/v1/internal/feedback.test.ts b/apps/e2e/tests/backend/endpoints/api/v1/internal/feedback.test.ts index f185ea93d..2fd592a3f 100644 --- a/apps/e2e/tests/backend/endpoints/api/v1/internal/feedback.test.ts +++ b/apps/e2e/tests/backend/endpoints/api/v1/internal/feedback.test.ts @@ -3,8 +3,10 @@ import { describe } from "vitest"; import { it } from "../../../../../helpers"; import { Auth, backendContext, createMailbox, niceBackendFetch, waitForOutboxEmailWithStatus } from "../../../../backend-helpers"; +const isLocalEmulator = process.env.NEXT_PUBLIC_STACK_IS_LOCAL_EMULATOR === "true"; + describe("POST /api/v1/internal/feedback", () => { - it("should send feedback from an authenticated user", async ({ expect }) => { + it.runIf(!isLocalEmulator)("should send feedback from an authenticated user", async ({ expect }) => { const senderEmail = backendContext.value.mailbox.emailAddress; const signInResult = await Auth.Otp.signIn(); const recipientMailbox = createMailbox("team@stack-auth.com"); @@ -44,7 +46,7 @@ describe("POST /api/v1/internal/feedback", () => { expect(messages[0].body?.text).toContain("Authenticated feedback from the dashboard."); }); - it("should send feedback without authentication (dev tool)", async ({ expect }) => { + it.runIf(!isLocalEmulator)("should send feedback without authentication (dev tool)", async ({ expect }) => { const recipientMailbox = createMailbox("team@stack-auth.com"); const senderEmail = `devtool-user-${randomUUID()}@example.com`; const subject = `[Support] ${senderEmail}`; @@ -81,7 +83,7 @@ describe("POST /api/v1/internal/feedback", () => { expect(messages[0].body?.text).toContain("Unauthenticated feedback from the dev tool."); }); - it("should send bug reports with correct label", async ({ expect }) => { + it.runIf(!isLocalEmulator)("should send bug reports with correct label", async ({ expect }) => { const recipientMailbox = createMailbox("team@stack-auth.com"); const reporterEmail = `bug-${randomUUID()}@example.com`; const subject = `[Bug Report] ${reporterEmail}`; diff --git a/packages/template/src/lib/stack-app/apps/implementations/client-app-impl.ts b/packages/template/src/lib/stack-app/apps/implementations/client-app-impl.ts index 75008972e..4422a824c 100644 --- a/packages/template/src/lib/stack-app/apps/implementations/client-app-impl.ts +++ b/packages/template/src/lib/stack-app/apps/implementations/client-app-impl.ts @@ -563,7 +563,7 @@ export class _StackClientAppImplIncomplete { @@ -573,7 +573,7 @@ export class _StackClientAppImplIncomplete { From e63daf8606ec2dd7974bfae2a6f0ddc901c20bcd Mon Sep 17 00:00:00 2001 From: Konstantin Wohlwend Date: Tue, 14 Apr 2026 09:51:35 -0700 Subject: [PATCH 2/3] Make backend not module --- apps/backend/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/backend/package.json b/apps/backend/package.json index 75a8043e7..f0e24f247 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -3,7 +3,6 @@ "version": "2.8.83", "repository": "https://github.com/stack-auth/stack-auth", "private": true, - "type": "module", "scripts": { "clean": "rimraf src/generated && rimraf .next && rimraf node_modules", "typecheck": "tsc --noEmit", From 3ca2fae3e1bb29db51550e8395019085ff993e7b Mon Sep 17 00:00:00 2001 From: Konstantin Wohlwend Date: Tue, 14 Apr 2026 10:03:53 -0700 Subject: [PATCH 3/3] Revert commit --- apps/backend/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/backend/package.json b/apps/backend/package.json index f0e24f247..75a8043e7 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -3,6 +3,7 @@ "version": "2.8.83", "repository": "https://github.com/stack-auth/stack-auth", "private": true, + "type": "module", "scripts": { "clean": "rimraf src/generated && rimraf .next && rimraf node_modules", "typecheck": "tsc --noEmit",