Skip to content

fix(error-tracking): widen the view recordings date filter - #76412

Open
posthog[bot] wants to merge 1 commit into
masterfrom
posthog-self-driving/fixerror-tracking-widen-the-view-48f6c4
Open

fix(error-tracking): widen the view recordings date filter#76412
posthog[bot] wants to merge 1 commit into
masterfrom
posthog-self-driving/fixerror-tracking-widen-the-view-48f6c4

Conversation

@posthog

@posthog posthog Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Problem

  • "View recordings" on the error issue page (menu bar item and header button) links to the replay list with date_from: first_seen and date_to: last_seen.
  • For a single-occurrence issue those two values are the same instant, so the replay list gets a zero-width window and always renders empty.
  • Recordings are matched by session start time, so even a multi-occurrence issue can drop matching recordings: a session that began before the first exception (the normal case) falls outside [first_seen, last_seen].
  • Both call sites silently dead-end with no hint why, on a cross-product entry point between error tracking and session replay.

Changes

  • Added getIssueReplayDateRange(firstSeen, lastSeen) in products/error_tracking/frontend/utils.ts, padding both ends of the window by an hour so it can't collapse to zero width and catches sessions that started before the exception fired.
  • This mirrors the padding already applied a few lines over in IssueMetadata.tsx (endOf('minute')) and in getNarrowDateRange in the same scene file, which never made it to these two buttons.
  • Both "View recordings" call sites in ErrorTrackingIssueScene.tsx now go through the same helper, so they can't drift apart again.

How did you test this code?

  • Added getIssueReplayDateRange unit tests in products/error_tracking/frontend/utils.test.ts covering: a single-occurrence issue (previously zero-width), a multi-occurrence issue where date_from still needs padding, and the last_seen-missing/predates-first_seen fallback.
  • Ran pnpm --filter=@posthog/frontend exec jest products/error_tracking/frontend/utils.test.ts – all 12 tests pass.
  • Ran pnpm --filter=@posthog/frontend typescript:check – no new errors introduced by this change (pre-existing unrelated errors in the repo from a missing @posthog/quill-primitives package).
  • Did not manually click through the UI in a browser; relying on the automated tests above plus code review of the two call sites.

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

Docs update

N/A – no documented workflow changed.

🤖 Agent context

Autonomy: Fully autonomous

I (Claude) investigated an inbox report describing the empty-recordings symptom, confirmed the root cause by reading ErrorTrackingIssueScene.tsx and comparing it against the padding pattern already used in IssueMetadata.tsx, and fixed both call sites with a shared helper rather than patching each inline. Invoked /writing-tests before adding test cases and /writing-code-comments before writing the comment on the new helper.


Created with PostHog from an inbox report

The "View recordings" menu item and button on the error issue page built a replay date filter pinned to [first_seen, last_seen]. For a single-occurrence issue those are the same instant, giving a zero-width window and an empty recordings list. Even for multi-occurrence issues, recordings match on session start time, so a session that began before the first exception fired fell outside the window too.

Add `getIssueReplayDateRange` to pad both ends by an hour, matching the padding pattern already used elsewhere in this scene (`getNarrowDateRange`), and use it at both call sites so they can't drift apart again.

Generated-By: PostHog Code
Task-Id: b0c6f366-72f9-4a60-9bc2-9181ca25807d
@trunk-io

trunk-io Bot commented Aug 2, 2026

Copy link
Copy Markdown

Merging to master in this repository is managed by Trunk.

  • To merge this pull request, check the box to the left or comment /trunk merge below.

After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

Bundle size — 🟢 -71 B (-0.0%)

Uncompressed size of every built .js bundle, compared against the base branch.

Total: 65.51 MiB · 🟢 -71 B (-0.0%)

No file changed by more than 1000 B.

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

Eager graph — within budget

How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.

Root Eager (shipped) Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
1.25 MiB · 22 files no change ███░░░░░░░ 27.7% of 4.51 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.14 MiB · 3,035 files 🔺 +164 B (+0.0%) ████████░░ 83.8% of 9.71 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx

Largest files eagerly shipped from src/index.tsx
Size File
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
6.3 KiB ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
4.5 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
3.9 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.4 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
789 B src/scenes/ChunkLoadErrorBoundary.tsx
762 B src/index.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
285.6 KiB ../node_modules/.pnpm/posthog-js@1.409.5/node_modules/posthog-js/dist/rrweb.js
267.7 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
235.5 KiB src/taxonomy/core-filter-definitions-by-group.json
231.5 KiB ../node_modules/.pnpm/posthog-js@1.409.5/node_modules/posthog-js/dist/module.js
154.3 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
105.3 KiB src/lib/api.ts
94.7 KiB ../packages/quill/packages/quill/dist/index.js
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
90.6 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js

Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479

Toolbar bundle — eager 2.19 MiB within budget

What the toolbar ships to customer pages, measured from the esbuild output (minified, post-tree-shake). The eager set is the entry plus everything statically imported from it — fetched before any feature runs; deferred chunks load lazily. The eager guardrail is 5.72 MiB. Each output file must also stay below 10 MB, where CloudFront stops compressing it. The module boundary is enforced separately by check-toolbar-graph.

Metric Size Δ vs base Budget
Eager (shipped)
entry + static imports
2.19 MiB · 17 files no change ████░░░░░░ 38.3% of 5.72 MiB
Deferred (lazy) 2.08 MiB · 33 files no change n/a — loads on demand
Loader dist/toolbar.js 1.1 KiB no change █░░░░░░░░░ 5.8% of 19.5 KiB
Largest eagerly-shipped chunks
Size File
718.3 KiB dist/toolbar/toolbar-app-FT4UJ3IP.css
551.4 KiB dist/toolbar/chunk-chunk-AGSGCCBT.js
484.6 KiB dist/toolbar/chunk-chunk-T44C2V5C.js
133.6 KiB dist/toolbar/chunk-chunk-KBLX73CM.js
131.8 KiB dist/toolbar/chunk-chunk-T5KY5WYR.js
71.0 KiB dist/toolbar/toolbar-app-FKUW2FOM.js
69.0 KiB dist/toolbar/chunk-chunk-27JL52RE.js
35.6 KiB dist/toolbar/chunk-chunk-3JVI3ZTF.js
20.9 KiB dist/toolbar/chunk-chunk-HJ3ZJMTU.js
12.2 KiB dist/toolbar/chunk-chunk-PIK3PADE.js

Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile

Dist folder size — 🔺 +1.8 KiB (+0.0%)

Total size of the built frontend/dist folder (all assets), compared against the base branch.

Total: 1381.30 MiB · 🔺 +1.8 KiB (+0.0%)

@posthog posthog Bot added the run-ci-frontend Force ci-storybook's full visual-regression matrix to run even on a draft PR label Aug 2, 2026
@posthog
posthog Bot marked this pull request as ready for review August 2, 2026 11:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-ci-frontend Force ci-storybook's full visual-regression matrix to run even on a draft PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants