Skip to content

feat(replay): allow group properties in vision scanner filters#73019

Merged
ksvat merged 1 commit into
masterfrom
posthog-code/replay-vision-scanner-group-properties
Jul 22, 2026
Merged

feat(replay): allow group properties in vision scanner filters#73019
ksvat merged 1 commit into
masterfrom
posthog-code/replay-vision-scanner-group-properties

Conversation

@ksvat

@ksvat ksvat commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Problem

Group analytics users (and folks scanning their book of business) can't filter Replay Vision scanners by group properties. The scanner setup "Recording filters" step is the one place in the app where you set up which sessions a scanner watches, but its Taxonomic filter didn't offer group properties as a filter category.

There's no technical reason for this. The scanner query is a RecordingsQuery, the same type the main recordings playlist filters produce, and group properties are valid filters there. The scanner's own "Run" tab (which reuses the shared recordings filter component) already surfaces them. The setup step just hand-rolled its own taxonomic group list and left group properties out.

Raised in this Slack thread.

Changes

ScannerTriggers.tsx now appends the project's group taxonomic types (from groupsModel) to the Taxonomic filter's group list, so each configured group type shows up as a filterable category. This mirrors how the recordings list builds its filter taxonomy.

Everything else in the list stays as-is. Group properties are appended after the existing categories, so nothing in the top positions moves.

How did you test this code?

I (Claude, via the PostHog Slack app) ran the frontend typecheck (pnpm --filter=@posthog/frontend typescript:check) and lint/format fix — both clean. I did not run the app manually or add automated tests; this is a small consumer-side config change (which group types the existing filter component is told to render).

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Investigated a Slack request asking whether there was any technical limitation preventing Replay Vision scanners from filtering on group properties. Confirmed there isn't: the setup step's SCANNER_FILTER_TYPES array simply omitted group properties, diverging from the main recordings playlist filters and the scanner's own Run tab (both of which spread groupsTaxonomicTypes from groupsModel). Fix mirrors that existing pattern rather than introducing anything new.

Invoked the /modifying-taxonomic-filter skill. This is a consumer call-site change (which taxonomicGroupTypes are passed in), not a change to the TaxonomicFilter component, its ordering, promotion, or enum, so no cross-variant mirroring was required.


Created with PostHog from a Slack thread

The scanner setup "Recording filters" step hand-rolled its own taxonomic group list and omitted group properties, even though the main recordings playlist filters and the scanner's own Run tab include them. There's no technical limitation: the RecordingsQuery filters support group properties everywhere else.

Append the project's group taxonomic types from groupsModel so group analytics users can scope scanners by group property, matching the recordings list behavior.

Generated-By: PostHog Code
Task-Id: 21724131-2427-44b9-ba49-6817c4b98cdd
@trunk-io

trunk-io Bot commented Jul 22, 2026

Copy link
Copy Markdown

😎 This pull request was merged.

@ksvat
ksvat requested review from a team, TueHaulund, arnohillen and fasyy612 and removed request for a team July 22, 2026 21:43
@ksvat ksvat added the stamphog Request AI approval (no full review) label Jul 22, 2026
@ksvat
ksvat marked this pull request as ready for review July 22, 2026 21:44
@github-actions

github-actions Bot commented Jul 22, 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 f51a339 · box box-09117f407742 · ready in 843s (push → usable) · build log · rebuilds on every push, torn down on close

@assign-reviewers-posthog
assign-reviewers-posthog Bot requested a review from a team July 22, 2026 21:45

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

Trivial, single-file consumer-side change adding group properties to an existing taxonomic filter list, matching the description; no risky territory and author is on the owning team.

  • Author wrote 0% of the modified lines and has 28 merged PRs in these paths (familiarity MODERATE).
  • 👍 on the PR from hex-security-app[bot].
Gate mechanics and policy version
Gate Result
prerequisites all clear
deny-list no deny categories matched
size 12L, 1F substantive — within ceiling
tier T1-agent / T1a-trivial (12L, 1F, single-area, feat)
stamphog 2.0.0b3 .stamphog/policy.yml @ 56a5e6e · reviewed head f51a339

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

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

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

Total: 64.66 MiB · 🔺 +65 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.24 MiB · 22 files no change ███░░░░░░░ 27.5% of 4.51 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.21 MiB · 3,000 files no change ████████░░ 84.5% 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.3 KiB ../node_modules/.pnpm/posthog-js@1.406.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
224.7 KiB ../node_modules/.pnpm/posthog-js@1.406.2/node_modules/posthog-js/dist/module.js
167.1 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
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

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-HY7HJI4V.css
543.6 KiB dist/toolbar/chunk-chunk-UG3THN3N.js
484.2 KiB dist/toolbar/chunk-chunk-QS5AHYGW.js
133.6 KiB dist/toolbar/chunk-chunk-MCXISDMN.js
131.8 KiB dist/toolbar/chunk-chunk-T5KY5WYR.js
71.0 KiB dist/toolbar/toolbar-app-UDDFB6JG.js
69.0 KiB dist/toolbar/chunk-chunk-27JL52RE.js
35.6 KiB dist/toolbar/chunk-chunk-XVKSNBZ7.js
20.9 KiB dist/toolbar/chunk-chunk-CS7W2KTV.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 — 🔺 +510 B (+0.0%)

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

Total: 1357.18 MiB · 🔺 +510 B (+0.0%)

@ksvat
ksvat merged commit cc906a2 into master Jul 22, 2026
330 of 346 checks passed
@ksvat
ksvat deleted the posthog-code/replay-vision-scanner-group-properties branch July 22, 2026 23:02
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 22, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-22 23:28 UTC Run
prod-us ✅ Deployed 2026-07-22 23:43 UTC Run
prod-eu ✅ Deployed 2026-07-22 23:42 UTC Run

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

Labels

stamphog Request AI approval (no full review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant