Skip to content

feat(error-tracking): chart issues created per day - #90044

Merged
trunk-io[bot] merged 4 commits into
masterfrom
posthog/error-tracking-issues-created-volume
Aug 28, 2026
Merged

feat(error-tracking): chart issues created per day#90044
trunk-io[bot] merged 4 commits into
masterfrom
posthog/error-tracking-issues-created-volume

Conversation

@hpouillot

Copy link
Copy Markdown
Contributor

Summary

  • add an Issues created bar chart to the Error tracking Insights tab
  • count each issue on its first exception
  • apply the existing date range, property, and test-account filters

Tests

  • pnpm --filter @posthog/frontend typegen:check
  • pnpm 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

@trunk-io

trunk-io Bot commented Aug 27, 2026

Copy link
Copy Markdown

😎 Merged successfully - details.

@github-actions

Copy link
Copy Markdown
Contributor

Hey @hpouillot! 👋

It looks like your git author email on this PR isn't your @posthog.com address (hpouillot@gmail.com). Since you're on the PostHog team, it's worth pointing your local git author email at your @posthog.com address. Why it matters:

  • Consistent work identity in git history — internal tooling that attributes commits to team members keys off your @posthog.com address.
  • Keeps team contributions easy to tell apart from external community ones when scanning history.

You can fix it for this repo with:

git config user.email "you@posthog.com"

Or set it globally with git config --global user.email "you@posthog.com". No need to redo this PR — just a nudge for next time. 🙂

@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

Trunk lane — non-backend lane

This 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.

⚠️ Bundle size — 🔺 +657 B (+0.0%)

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

Total: 68.12 MiB · 🔺 +657 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.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%)

Playwright — all passed

All tests passed.

View test results →

@trunk-io

trunk-io Bot commented Aug 27, 2026

Copy link
Copy Markdown

Static BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

@hpouillot
hpouillot marked this pull request as ready for review August 27, 2026 12:15
@hpouillot
hpouillot requested review from a team, ablaszkiewicz and cat-ph August 27, 2026 12:15
@hpouillot hpouillot added the stamphog Request AI approval (no full review) label Aug 27, 2026
@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ✅ ready

▶ Open the preview

🔑 Login test@posthog.com / 12345678 (demo data)
🧩 Running this PR's backend and frontend, on the PostHog :master base
🔗 Link stable across rebuilds — a re-push swaps the box underneath, the URL stays
🔒 Access tailnet only (PostHog VPN)
🛠️ Admin inspect & debug state in hogland
💤 Idle sleeps after ~30 min idle (snapshot to S3, zero node cost) and wakes on your next visit in ~30s, behind a brief "waking up" screen

commit ab44d30 · box box-d2533bc7c953 · ready in 642s (push → usable) · build log · rebuilds on every push, torn down on close

@ablaszkiewicz ablaszkiewicz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

event: '$exception',
custom_name: 'Issues created',
math: HogQLMathType.HogQL,
math_hogql: 'uniqIf(issue_id, timestamp = issue_first_seen)',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting filter but if it works, I love it 🚀

@greptile-apps

greptile-apps Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor
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

stamphog[bot]
stamphog Bot previously approved these changes Aug 27, 2026

@stamphog stamphog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@pr-assigner-resolver-posthog
pr-assigner-resolver-posthog Bot requested a review from a team August 27, 2026 12:21
@stamphog
stamphog Bot dismissed their stale review August 27, 2026 12:30

A new stamphog review started for this PR — the fresh verdict replaces this approval.

stamphog[bot]
stamphog Bot previously approved these changes Aug 27, 2026

@stamphog stamphog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@posthog

posthog Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Visual changes approved by @hpouillot — baseline updated in 8819c59.

View this run in PostHog

2 new.

@stamphog
stamphog Bot dismissed their stale review August 27, 2026 12:58

A new stamphog review started for this PR — the fresh verdict replaces this approval.

@stamphog

stamphog Bot commented Aug 27, 2026

Copy link
Copy Markdown

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.

  • Author wrote 25% of the modified lines and has 117 merged PRs in these paths (familiarity MODERATE).
  • 👍 on the PR from greptile-apps[bot].
  • Unresolved P1 comment from greptile-apps on queries.ts: the timestamp = issue_first_seen equality used to count new issues may mismatch when the reported exception timestamp differs from when the issue/fingerprint record was created, causing the chart to undercount.
  • The author added a code comment defending the equality (claiming the ingestion system sets issue_first_seen from the same timestamp), but this is an unverified claim about backend behavior, not confirmed assurance, and greptile's flag remains unresolved in the thread.
Gate mechanics and policy version
Gate Result
prerequisites all clear
deny-list no deny categories matched
size 133L, 5F substantive, 159L/7F incl. docs/generated/snapshots — within ceiling
tier T1-agent / T1c-medium (159L, 7F, two-areas, feat)
stamphog 2.0.0b4 .stamphog/policy.yml @ 8819c59 · reviewed head 8819c59

@stamphog stamphog Bot removed the stamphog Request AI approval (no full review) label Aug 27, 2026

@cat-ph cat-ph left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

hpouillot and others added 3 commits August 28, 2026 09:58
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
@hpouillot
hpouillot force-pushed the posthog/error-tracking-issues-created-volume branch from b9a81f6 to ab44d30 Compare August 28, 2026 07:58
@trunk-io
trunk-io Bot merged commit 2f0b9b6 into master Aug 28, 2026
210 checks passed
@trunk-io
trunk-io Bot deleted the posthog/error-tracking-issues-created-volume branch August 28, 2026 08:48
@deployment-status-posthog

deployment-status-posthog Bot commented Aug 28, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-08-28 09:23 UTC Run
prod-us ✅ Deployed 2026-08-28 09:45 UTC Run
prod-eu ✅ Deployed 2026-08-28 09:39 UTC Run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants