feat(error-tracking): chart issues created per day - #90044
Conversation
|
😎 Merged successfully - details. |
|
Hey @hpouillot! 👋 It looks like your git author email on this PR isn't your
You can fix it for this repo with: git config user.email "you@posthog.com"Or set it globally with |
🤖 CI report✅ Trunk lane — non-backend laneThis PR is assigned to the non-backend lane. It does not run backend Python tests and may merge in parallel with PRs in other lanes.
|
| Root | Eager (shipped) | Δ vs base | Budget |
|---|---|---|---|
entry (logged-out pages, app bootstrap)src/index.tsx |
1.37 MiB · 22 files | no change | ███░░░░░░░ 30.3% of 4.51 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
8.82 MiB · 3,247 files | no change | █████████░ 90.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 |
|---|---|
| 307.0 KiB | ../node_modules/.pnpm/posthog-js@1.422.0_@types+react@18.3.27_react@18.3.1/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 |
| 263.4 KiB | ../node_modules/.pnpm/posthog-js@1.422.0_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.js |
| 252.5 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 154.2 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 |
| 104.7 KiB | src/lib/api.ts |
| 95.2 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.26 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.26 MiB · 18 files | no change | ████░░░░░░ 39.5% of 5.72 MiB |
| Deferred (lazy) | 2.11 MiB · 45 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 |
|---|---|
| 749.2 KiB | dist/toolbar/toolbar-app-XJ7BMNHX.css |
| 588.2 KiB | dist/toolbar/chunk-chunk-QXQCK5SA.js |
| 484.7 KiB | dist/toolbar/chunk-chunk-QMGLBVDO.js |
| 133.8 KiB | dist/toolbar/chunk-chunk-EUOYQWGB.js |
| 131.8 KiB | dist/toolbar/chunk-chunk-FDH2IBXT.js |
| 71.3 KiB | dist/toolbar/toolbar-app-DKGYKGXO.js |
| 69.0 KiB | dist/toolbar/chunk-chunk-TSAL54PB.js |
| 35.6 KiB | dist/toolbar/chunk-chunk-TMLTCDV6.js |
| 20.9 KiB | dist/toolbar/chunk-chunk-BHKA3C5E.js |
| 6.8 KiB | dist/toolbar/chunk-chunk-DV7IWQNF.js |
Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile
✅ Dist folder size — 🔺 +3.3 KiB (+0.0%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1434.82 MiB · 🔺 +3.3 KiB (+0.0%)
🦔 Hogbox preview · ✅ ready▶ Open the preview
commit |
| event: '$exception', | ||
| custom_name: 'Issues created', | ||
| math: HogQLMathType.HogQL, | ||
| math_hogql: 'uniqIf(issue_id, timestamp = issue_first_seen)', |
There was a problem hiding this comment.
Interesting filter but if it works, I love it 🚀
Prompt To Fix All With AI### Issue 1
products/error_tracking/frontend/scenes/ErrorTrackingScene/tabs/insights/queries.ts:67
**First-event timestamps mismatch**
When an exception's client-reported timestamp differs from the time its fingerprint or issue record was created, `timestamp = issue_first_seen` is false, causing the “Issues created” chart to report zero or substantially undercount new issues.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Reviews (1): Last reviewed commit: "feat(error-tracking): chart issues creat..." | Re-trigger Greptile |
There was a problem hiding this comment.
Small, contained frontend feature (new chart in error tracking insights) by an author on the owning team, with matching test coverage and no risky-territory surface touched.
- 👍 on the PR from greptile-apps[bot].
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✓ | 52L, 3F substantive, 78L/5F incl. docs/generated/snapshots — within ceiling |
| tier | ✓ | T1-agent / T1b-small (78L, 5F, single-area, feat) |
| stamphog 2.0.0b4 | .stamphog/policy.yml @ cc47c0c · reviewed head cc47c0c |
A new stamphog review started for this PR — the fresh verdict replaces this approval.
There was a problem hiding this comment.
Purely additive frontend feature (new chart) in error tracking's own product area, authored by a team member with heavy history in these paths; no risky-territory surface (no data model, API contract, auth, billing, or CI changes). Greptile's inline concern about the issue-creation timestamp comparison is addressed in the current diff by an explanatory code comment describing why the equality holds by construction, and it received a bot 👍 rather than any blocking follow-up.
- Author wrote 25% of the modified lines and has 88 merged PRs in these paths (familiarity MODERATE).
- 👍 on the PR from greptile-apps[bot].
- Greptile flagged a potential undercount in the new 'Issues created' chart if event timestamp ever diverges from issue_first_seen; the author's added code comment argues this can't happen by design, but this hasn't been re-verified by greptile against the current head.
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✓ | 129L, 4F substantive, 155L/6F incl. docs/generated/snapshots — within ceiling |
| tier | ✓ | T1-agent / T1c-medium (155L, 6F, single-area, feat) |
| stamphog 2.0.0b4 | .stamphog/policy.yml @ c838166 · reviewed head c838166 |
|
✅ Visual changes approved by @hpouillot — baseline updated in 2 new. |
A new stamphog review started for this PR — the fresh verdict replaces this approval.
|
Greptile left an unresolved P1 comment questioning whether the new chart's core counting logic (matching event timestamp to issue's first-seen timestamp) actually captures issue creation correctly, or silently undercounts; the human approval was recorded on the same older commit greptile reviewed, so it's unclear anyone weighed in after the concern was raised, and confirming it requires knowledge of the ingestion pipeline's timestamp semantics that isn't verifiable from the diff alone.
Gate mechanics and policy version
|
Add an Issues created chart to the Error tracking Insights tab. Count unique issues on their first exception while preserving the existing date, property, and test-account filters. Generated-By: PostHog Desktop Task-Id: e5e0d821-a9c7-4b96-9ade-55c378a59fbc
Add a stable Insights tab Storybook story with mocked summary and trend data so visual review covers the new Issues created chart. Document why the first-exception timestamp comparison identifies issue creation. Generated-By: PostHog Desktop Task-Id: e5e0d821-a9c7-4b96-9ade-55c378a59fbc
2 updated Run: 71d79e03-3be6-4f6a-99cb-0c41d9a94656 Co-authored-by: hpouillot <3455883+hpouillot@users.noreply.github.com>
Add an ingestion regression test proving that a new fingerprint stores the originating exception event timestamp as first_seen, including when that timestamp differs from the database creation time. Generated-By: PostHog Desktop Task-Id: e5e0d821-a9c7-4b96-9ade-55c378a59fbc
b9a81f6 to
ab44d30
Compare
Summary
Tests
pnpm --filter @posthog/frontend typegen:checkpnpm exec oxfmt --check <changed files>pnpm exec oxlint --quiet <changed files>pnpm --filter @posthog/frontend jest --runInBand products/error_tracking/frontend/scenes/ErrorTrackingScene/tabs/insights/queries.test.ts products/error_tracking/frontend/scenes/ErrorTrackingScene/tabs/insights/errorTrackingInsightsLogic.test.ts