feat(workflows): show push metrics in the workflow Metrics tab - #71078
Conversation
🤖 CI report
|
| File | Size | Δ vs base |
|---|---|---|
posthog-app/_parent/products/workflows/frontend/Workflows/WorkflowScene.js |
122.8 KiB | 🔺 +3.1 KiB (+2.6%) |
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.22 MiB · 22 files | no change | ███░░░░░░░ 28.4% of 4.29 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
8.13 MiB · 2,978 files | 🔺 +52 B (+0.0%) | █████████░ 87.9% of 9.25 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 |
|---|---|
| 281.3 KiB | ../node_modules/.pnpm/posthog-js@1.402.3/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 |
| 222.9 KiB | ../node_modules/.pnpm/posthog-js@1.402.3/node_modules/posthog-js/dist/module.js |
| 164.0 KiB | src/queries/validators.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.8 KiB | src/lib/api.ts |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 92.7 KiB | ../packages/quill/packages/quill/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
✅ Dist folder size — 🔺 +16.6 KiB (+0.0%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1312.50 MiB · 🔺 +16.6 KiB (+0.0%)
The Metrics tab had a curated summary for email steps (Sent / Delivered / Bounced / ...) but nothing for push steps — push counts were only reachable via a raw metric_name breakdown. Now that the backend emits push metrics under metric_kind 'push' (push_sent / push_skipped / push_failed), surface them the same way email is. - Add WORKFLOW_PUSH_METRICS (Sent / Skipped / Failed) with plain-language descriptions honest about push's limits — "Sent" means the provider accepted the notification, not that the device displayed it; there's no delivered/opened/clicked because FCM/APNs have no delivery-receipt channel. - Add a PushMetricsSummary tile+trend component mirroring EmailMetricsSummary, and render it in the Metrics tab for function_push steps. - Curate the per-step editor line graph for push (labels + colors) the same way it already does for email. No new data loading — the tiles read the trend series the metrics view already fetches, so this is presentation only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bbav6vE7Tm24KkdRhZmvNM
ef66138 to
8cf5e2a
Compare
|
Reviews (1): Last reviewed commit: "feat(workflows): show push metrics table..." | Re-trigger Greptile |
🦔 Hogbox preview · ✅ ready▶ Open the preview
commit |
Problem
The workflow Metrics tab has a curated summary for email steps (Sent / Delivered / Opened / Bounced / …) but nothing for push steps — a push step fell through to the generic Success/Failure tiles, so push counts were only reachable via a raw
metric_namebreakdown. Now that the observability backend emits push metrics (push_sent/push_skipped/push_failed), we can surface them the same way email is.Changes
WORKFLOW_PUSH_METRICS— Sent / Skipped / Failed, with plain-language descriptions that are honest about push's limits:PushMetricsSummary— a tile + trend component mirroringEmailMetricsSummary, rendered in the Metrics tab for a selectedfunction_pushstep. These tiles reuse the trend series the metrics view already fetches (getSingleTrendSeries('push_sent'), etc.) — no extra data loading.emailMetricsRows. It adds apushTotalsByActionIdloader andpushMetricsRowsselector that mirror the email equivalents, plus anisPushActionguard. It renders only when the workflow actually has a push step (so email-only flows don't get an empty push section).HogFlowEditorPanelMetrics.tsx) curates push labels and colors, the same way it already does for email.How did you test this code?
Manual, in the browser (local dev, real data):
app_metricsfor that step. The push table sits below the email table on the Overview and hides on flows with no push step.Static checks:
*LogicType.ts; that file is gitignored, so CI regenerates it).oxfmt/oxlintclean on all changed files.Tests: no new unit tests. The Overview push selectors (
pushMetricsRows,mapPushMetricsToActions) mirror the emailemailMetricsRows/mapEmailMetricsToActionspath one-to-one, and the tiles are static config maps — the value bar (a regression no existing test catches) isn't met by a render test here. CI's typecheck plus a reviewer's eyes on the rendered tab are the backstop.Automatic notifications
Docs update
No docs change — this surfaces existing metrics in the existing Metrics tab UI.
🤖 Agent context
Autonomy: Human-driven (agent-assisted). Directed by the requester (session owner); a maintainer should set the DRI.
Authored with Claude Code, as the frontend follow-up to the merged push-observability backend work (#70913). I mapped how email's Metrics-tab summary is built (
workflowMetricsSummaryLogic.ts,EmailMetricsSummary.tsx,WorkflowMetrics.tsx,WorkflowMetricsSummary.tsx,HogFlowEditorPanelMetrics.tsx) and mirrored it for push across the per-step summary, the editor panel, and the Overview per-action table.Note: push metrics currently surface for steps typed
function_push(how the editor creates push steps today). Legacy push steps stored as a genericfunctionwith the native-push template won't light up the push summary — not a concern while push isn't enabled anywhere yet, but worth knowing if older flows exist.🤖 Generated with Claude Code