Skip to content

feat(subscriptions): improve report discovery - #73324

Merged
MattPua merged 10 commits into
masterfrom
posthog-code/improve-subscription-report-discovery
Jul 24, 2026
Merged

feat(subscriptions): improve report discovery#73324
MattPua merged 10 commits into
masterfrom
posthog-code/improve-subscription-report-discovery

Conversation

@MattPua

@MattPua MattPua commented Jul 23, 2026

Copy link
Copy Markdown
Member

Problem

Subscriptions and AI prompt reports are difficult to discover and distinguish in contextual subscription flows.

Changes

Before:

CleanShot 2026-07-23 at 14 57 10@2x CleanShot 2026-07-23 at 14 57 21@2x

After:

CleanShot 2026-07-23 at 14 39 22@2x CleanShot 2026-07-23 at 14 40 01@2x CleanShot 2026-07-23 at 14 40 14@2x CleanShot 2026-07-23 at 14 40 31@2x CleanShot 2026-07-23 at 14 46 21@2x CleanShot 2026-07-23 at 14 49 32@2x
  • Add clearer subscription empty states and report discovery links
  • Gate AI prompt entry points on feature availability and organization consent
  • Preserve AI prompt report type when navigating into create and edit flows
  • Improve subscription Storybook coverage and organization

How did you test this code?

  • hogli test products/subscriptions/frontend/components/Subscriptions/subscriptionLogic.test.ts products/subscriptions/frontend/components/Subscriptions/subscriptionsLogic.test.ts with 29 passing tests
  • The added Kea case guards AI prompt preselection from the create URL
  • hogli ci:preflight --fix
  • Full frontend typecheck was attempted but remains blocked by unrelated existing errors and local @posthog/quill type resolution
  • No manual browser testing performed

👉 Stay up-to-date with PostHog coding conventions for a smoother review.

Automatic notifications

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

Docs update

No docs update needed. The change only clarifies existing subscription workflows.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Codex prepared the branch, fixed scoped type issues, ran validation, and authored this PR. Invoked /writing-tests to validate the changed Kea coverage. The existing subscription logic remains the source of business behavior.


Created with PostHog Code

@MattPua MattPua self-assigned this Jul 23, 2026
@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

⚠️ Bundle size — 🔺 +4.5 KiB (+0.0%)

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

Total: 64.40 MiB · 🔺 +4.5 KiB (+0.0%)

File Size Δ vs base
exporter/src/exporter/scenes/ExporterDashboardScene.js 285.4 KiB 🔺 +4.1 KiB (+1.5%)

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.24 MiB · 22 files no change ███░░░░░░░ 27.5% of 4.51 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.07 MiB · 3,010 files no change ████████░░ 83.1% 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
281.5 KiB ../node_modules/.pnpm/posthog-js@1.407.2/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
236.0 KiB src/taxonomy/core-filter-definitions-by-group.json
226.1 KiB ../node_modules/.pnpm/posthog-js@1.407.2/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
106.2 KiB src/lib/api.ts
94.0 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.18 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.18 MiB · 17 files no change ████░░░░░░ 38.1% of 5.72 MiB
Deferred (lazy) 2.07 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
713.8 KiB dist/toolbar/toolbar-app-HLTHZTTF.css
545.1 KiB dist/toolbar/chunk-chunk-JXZAQF2A.js
484.2 KiB dist/toolbar/chunk-chunk-BQIRV2TJ.js
133.6 KiB dist/toolbar/chunk-chunk-YBAFBB2V.js
131.8 KiB dist/toolbar/chunk-chunk-T5KY5WYR.js
71.0 KiB dist/toolbar/toolbar-app-HJ3A3JN3.js
69.0 KiB dist/toolbar/chunk-chunk-27JL52RE.js
35.6 KiB dist/toolbar/chunk-chunk-YSBEFDVO.js
20.9 KiB dist/toolbar/chunk-chunk-2H2TQVQG.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 — 🔺 +72.8 KiB (+0.0%)

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

Total: 1353.45 MiB · 🔺 +72.8 KiB (+0.0%)

Playwright — all passed

All tests passed.

View test results →

@MattPua
MattPua marked this pull request as ready for review July 23, 2026 19:07
@github-actions
github-actions Bot requested a deployment to preview-pr-73324 July 23, 2026 19:08 In progress
@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ❌ build failed

The preview didn't come up for commit 6aa9269. See the build log for the failing step. It'll retry on the next push.

Previews are optional and never block merging. A failure here is often a hogland or tailnet hiccup rather than anything in your PR, so the check stays green and this comment is the status.

@pr-assigner-resolver-posthog
pr-assigner-resolver-posthog Bot requested a review from a team July 23, 2026 19:08
@MattPua
MattPua requested review from a team and removed request for a team July 23, 2026 19:08
@greptile-apps

greptile-apps Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Comments Outside Diff (1)

  1. products/subscriptions/frontend/scenes/SubscriptionsScene.tsx, line 124-129 (link)

    P1 Hidden AI tab remains active

    When a user without AI availability opens a URL containing ?tab=ai_prompt, this code removes the AI tab while the scene logic still accepts that tab and requests resource_type=ai_prompt, causing AI subscriptions to appear with no visible or selected tab. Reconcile currentTab with availability so hidden tabs cannot continue driving the list.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: products/subscriptions/frontend/scenes/SubscriptionsScene.tsx
    Line: 124-129
    
    Comment:
    **Hidden AI tab remains active**
    
    When a user without AI availability opens a URL containing `?tab=ai_prompt`, this code removes the AI tab while the scene logic still accepts that tab and requests `resource_type=ai_prompt`, causing AI subscriptions to appear with no visible or selected tab. Reconcile `currentTab` with availability so hidden tabs cannot continue driving the list.
    
    How can I resolve this? If you propose a fix, please make it concise.
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
products/subscriptions/frontend/scenes/SubscriptionsScene.tsx:124-129
**Hidden AI tab remains active**

When a user without AI availability opens a URL containing `?tab=ai_prompt`, this code removes the AI tab while the scene logic still accepts that tab and requests `resource_type=ai_prompt`, causing AI subscriptions to appear with no visible or selected tab. Reconcile `currentTab` with availability so hidden tabs cannot continue driving the list.

Reviews (1): Last reviewed commit: "fix(subscriptions): use tracked empty st..." | Re-trigger Greptile

@MattPua
MattPua requested a review from arthurdedeus July 23, 2026 19:11
@MattPua MattPua added the stamphog Request AI approval (no full review) label Jul 23, 2026
@stamphog

stamphog Bot commented Jul 23, 2026

Copy link
Copy Markdown

Note

🤖 stamphog reviewed 1fbcf4f4cdb6d5ef8ce77e516c84593066a6327b — verdict: REFUSED

Gates explicitly denied on size, which alone forces REFUSE/ESCALATE. Compounding that, there's a live, unaddressed P1 correctness concern from Greptile about hidden tabs still driving list state, and no independent review/ownership assurance exists for this cross-team change.

  • 👍 on the PR from greptile-apps[bot], hex-security-app[bot].
  • Gates denied: PR exceeds the 800-line auto-review size ceiling (1046 substantive lines, 13 files)
  • Unresolved Greptile P1 comment: hidden AI tab can still drive the subscription list via a ?tab=ai_prompt URL when AI isn't available for the org — not addressed in the diff
  • Author (MattPua) is not on the owning team (@PostHog/team-product-analytics) and there is no human or agent-approval review on the current head
Gate mechanics and policy version
Gate Result
prerequisites all clear
deny-list no deny categories matched
size too large for auto-review (1046L, 13F substantive, 1089L/15F incl. docs/generated/snapshots — ceiling is 800L)
tier T1-agent / T1d-complex (1089L, 15F, single-area, feat)
stamphog 2.0.0b3 .stamphog/policy.yml @ aa47a89 · reviewed head 1fbcf4f

@stamphog stamphog Bot removed the stamphog Request AI approval (no full review) label Jul 23, 2026
@github-actions
github-actions Bot requested a deployment to preview-pr-73324 July 23, 2026 19:20 In progress
@posthog

posthog Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Visual changes approved by @MattPua — baseline updated in befdbbb.

View this run in PostHog

2 changed, 20 new, 34 removed.

@posthog-bot-comment-resolver

posthog-bot-comment-resolver Bot commented Jul 23, 2026

Copy link
Copy Markdown

🔀 Tried to auto-resolve conflicts with master but this one needs a human.

I won't retry until the branch or master moves.

MattPua and others added 8 commits July 24, 2026 08:54
Generated-By: PostHog Code
Task-Id: f246114d-e51a-4506-9c24-fa9f1bfac29c
Generated-By: PostHog Code
Task-Id: f246114d-e51a-4506-9c24-fa9f1bfac29c
Generated-By: PostHog Code
Task-Id: f246114d-e51a-4506-9c24-fa9f1bfac29c
Generated-By: PostHog Code
Task-Id: f246114d-e51a-4506-9c24-fa9f1bfac29c
Generated-By: PostHog Code
Task-Id: f246114d-e51a-4506-9c24-fa9f1bfac29c
Generated-By: PostHog Code
Task-Id: f246114d-e51a-4506-9c24-fa9f1bfac29c
Generated-By: PostHog Code
Task-Id: f246114d-e51a-4506-9c24-fa9f1bfac29c
22 updated, 34 removed
Run: 6eb6b665-97df-4d30-9d74-29a4de539260

Co-authored-by: MattPua <3376526+MattPua@users.noreply.github.com>
@MattPua
MattPua force-pushed the posthog-code/improve-subscription-report-discovery branch from befdbbb to 80a3bd4 Compare July 24, 2026 12:54
@github-actions
github-actions Bot requested a deployment to preview-pr-73324 July 24, 2026 12:55 In progress
Generated-By: PostHog Code
Task-Id: abf8874c-0e66-47b0-ab5b-6dae1c509850
@github-actions
github-actions Bot requested a deployment to preview-pr-73324 July 24, 2026 13:05 In progress
Generated-By: PostHog Code
Task-Id: abf8874c-0e66-47b0-ab5b-6dae1c509850
@MattPua
MattPua merged commit ae51214 into master Jul 24, 2026
200 checks passed
@MattPua
MattPua deleted the posthog-code/improve-subscription-report-discovery branch July 24, 2026 13:33
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 24, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-24 14:42 UTC Run
prod-us ✅ Deployed 2026-07-24 14:58 UTC Run
prod-eu ✅ Deployed 2026-07-24 15:01 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.

2 participants