feat(dashboards): add session replay dashboard widget (9/11)#60496
Conversation
MCP UI Apps size report
|
d06831b to
e7e58c4
Compare
2f88339 to
075aa24
Compare
|
⏭️ Skipped snapshot commit because branch advanced to The new commit will trigger its own snapshot update workflow. If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:
|
|
⏭️ Skipped snapshot commit because branch advanced to The new commit will trigger its own snapshot update workflow. If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:
|
e7e58c4 to
c801c9e
Compare
694e167 to
cb22c2b
Compare
|
⏭️ Skipped snapshot commit because branch advanced to The new commit will trigger its own snapshot update workflow. If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:
|
c801c9e to
325b2df
Compare
4e2a8c2 to
322cca9
Compare
325b2df to
b33da61
Compare
322cca9 to
1fcb621
Compare
b33da61 to
842c5d4
Compare
1fcb621 to
7edd67d
Compare
7edd67d to
bce78ef
Compare
842c5d4 to
74e73f0
Compare
|
✅ Visual changes approved by @MattPua — baseline updated in 4 changed, 10 new. |
vdekrijger
left a comment
There was a problem hiding this comment.
LGTM! Agreed with your comments that it would be nice if we can centralise some of the frontend / kea logic across widgets, but not a blocker for now and something that can be fixed in a follow up PR / when adding a 3rd widget type.
ClickHouse migration SQL per cloud environment
…truncated. See the full SQL in the workflow logs. |
ClickHouse migration SQL per cloud environment
…truncated. See the full SQL in the workflow logs. |
Restack onto error tracking widget branch: merge catalog/registry, align edit modal with kea pattern, and sync backend widget catalog. Co-authored-by: Cursor <cursoragent@cursor.com>
Share widget list limit and orderDirection schema, drop backend error_tracking alias, apply replay listing throttles on run_widgets, and stop ET config serializer from polluting session replay widget payloads. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
… logic Co-authored-by: Cursor <cursoragent@cursor.com>
Share tile metadata save logic, kea builders, and tile details UI across session replay and error tracking edit modals; align session replay modal structure with error tracking and inline loading skeleton count. Co-authored-by: Cursor <cursoragent@cursor.com>
session replay modal still referenced deleted editWidgetModalTileBuilders barrel Co-authored-by: Cursor <cursoragent@cursor.com>
…erns Reuse shared edit modal builders, form schema, filters section, and backend validation tests. Drop redundant property-loading useEffect and utils helpers. Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared list-widget validation (frontend and backend), inline edit modal reducers for kea-typegen, dedupe form schemas, and align catalog with ET. Co-authored-by: Cursor <cursoragent@cursor.com>
Extract run_recordings_list_query from SessionRecordingViewSet.list so the session replay widget calls the same fetch+serialize path instead of duplicating serializer wiring. Co-authored-by: Cursor <cursoragent@cursor.com>
Use onSave(config, metadataPatch) after ET branch removed the separate metadata helper.
Edit session replay widget modal connects to filterTestAccountsDefaultsLogic for the test-account filter section; mirror ET story seeding.
…ranch Keep session_replay_list analytics coverage here where the widget type is registered; ET branch only tests error_tracking_list.
Use SESSION_REPLAY_LIST_WIDGET_TYPE for replay throttle checks and move session replay test imports to module scope. Co-authored-by: Cursor <cursoragent@cursor.com>
Use a polymorphic OpenAPI field for widget config instead of JSONField so generated zod/types expose error tracking and session replay config shapes. Co-authored-by: Cursor <cursoragent@cursor.com>
12 updated Run: fc554141-b97e-47fb-91e6-8e63f15f8568 Co-authored-by: MattPua <3376526+MattPua@users.noreply.github.com>
|
⏭️ Skipped snapshot commit because branch advanced to The new commit will trigger its own snapshot update workflow. If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:
|
Co-authored-by: Cursor <cursoragent@cursor.com>

Problem
Session recordings belong on dashboards alongside error tracking. This PR adds the second list-style widget (
session_replay_list) and generalizes backend config handling so multiple widget types can share the same create/update/run paths.This PR is 9/11 in the dashboard widgets Graphite stack.
Depends on: PR 8 (#60524 — error tracking dashboard widget + shared tile orchestration)
Changes
session_replay_listwidget — backend runner (reuses session recording list query + serializer shim), catalog/registry, config schema, preview, and frontend tile (component, edit modal, stories, tests)availability(session_replay_enabled) viaWidgetRuntimeAvailabilityGuard+ stacked vertical setup prompt when replay is disabledJSONField+ catalog schema hints so ET and SR configs don't cross-pollinaterun_widgetsreplay throttling — apply existing replay listing rate limits when batch-running session replay tiles (viaget_replay_listing_throttle_error)widgetConfigValidation,widgetListFormSchema)onSave(config, buildWidgetTileMetadataPatch(...))call, matching feat(dashboards): add error tracking dashboard widget (8/11) #60524test_run_widgetsHow did you test this code?
test_run_widgetsfor session replay runner and config validation cases👉 Stay up-to-date with PostHog coding conventions for a smoother review.
Automatic notifications
Docs update
Add the
skip-inkeep-docslabel — no user-facing docs yet (feature flagged). Agent skill/docs land in #60516.🤖 Agent context