Skip to content

feat(workflows): restrict sandbox email to verified org members - #594

Draft
Silthus wants to merge 315 commits into
masterfrom
workflows-sandbox-delivery/member-gate
Draft

Silthus wants to merge 315 commits into
masterfrom
workflows-sandbox-delivery/member-gate

Conversation

@Silthus

@Silthus Silthus commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Problem

A new team cannot send its first workflow email until it verifies a sending domain.
A PostHog-owned sandbox sender lets them send first, but it is a shared identity.
It must never deliver to anyone outside the team's own organization, and it must never report a send it did not make.

Part of Silthus/personal#198 (sandbox delivery, slice 1 of 2).
Replaces part of #434 (member gate) and the fail-closed provider case and settings from #428.

Stack

Impact

Grow Workflows, activation rate: the sandbox sender removes the domain step from a team's first send.
Sandbox deliveries are their own funnel step and never count as activation.
This slice moves no metric yet: it is the gate that every later sandbox slice delivers through.

Merge Danger

Warning

🟡 Merge risk: medium · two-way door (merge-risk rubric)

  • The CDP email send path changes. Only sends through a sandbox integration take the new branches, and no such integration exists on master yet.
  • The suppression check now takes an explicit recipient list for sandbox sends; every other sender builds the same list as before.
  • Sandbox sends skip the team's tier sending budget, so they never delay the team's real sends.
  • Nothing delivers: every sandbox send skips. A revert removes the gate with no stored state left behind.

Production lines: 370 changed (git diff --numstat against the base, tests and docs excluded).

Changes

A send through an email integration with config.provider === 'sandbox' now always skips with a reason in the run log, and never reports email_sent:

Situation Run log workflows sandbox email blocked reason
Worker switch off, or a route setting empty The sandbox sender is unavailable right now switch_off
A non-test send from a destination, not a workflow Only available for workflows and test sends none
A To, CC or BCC address is not an active member of the team's active organization Lists the blocked addresses recipient_not_member
Every blocked address belongs to a member with an unverified email Lists the unverified addresses recipient_unverified
The membership lookup fails, or resolves after its one-minute window Lists every address check_failed
Every check passes The sandbox sender is unavailable right now (no route yet) none
  • The switch is WORKFLOWS_SANDBOX_SENDER_ENABLED plus SES_SANDBOX_TENANT_NAME, SES_SANDBOX_CONFIGURATION_SET and SES_SANDBOX_FROM_ADDRESS. All default to off or empty.
  • OrganizationMembersService loads a team's verified and unverified member emails in one query and never trusts a snapshot older than a minute.
  • The worker checks recipients once before it prepares the send and again right before delivery, so a member removed mid-send is blocked.
  • The CC and BCC parser keeps quoted commas inside one mailbox and leaves an ambiguous mailbox whole, so the check sees what SES would receive.
  • The blocked event fires at most once an hour per team, reason, and send kind, through a Redis SET NX key.
  • Sandbox sends never claim the team's tier sending budget: they reach only the team's own members.
  • The next PR replaces the final "unavailable" skip with delivery through the fixed SES identity.

How did you test this code?

Live run on the slice tip

  • Live run of the V1 tip 1c08de0b9b4 on a PostHog preview. Stubs: a local SES endpoint that records each call, and example.com seeded as a valid MX domain.

  • Channels created the sandbox sender. A test send to a verified member was accepted and reached SES with the sandbox tenant, its configuration set, the fixed From address and the footer.

  • A test send to an address outside the organization was skipped before SES.

  • Lane gate on HEAD: typecheck, eslint, oxlint and prettier pass; src/cdp/services/messaging, src/cdp/services/managers and cdp-services.test.ts pass (642 tests). email-tracking.service.test.ts cannot load on the lane box (missing libsasl2 for Kafka), unrelated to this diff.

  • CI: fork CI cannot run on Silthus/posthog (its GitHub App secret is missing); recorded as the ci gap.

  • Red: the new sandbox tests fail on master's email.service.ts (SES is called and the send succeeds). Green: both changed test files pass on HEAD. The team-budget case failed with finished: false (rescheduled behind an exhausted budget) before 1951b5b and passes after it. Output is saved in proof storage for each head.

  • Test seams:

    • EmailService.executeSendEmail with a sandbox integration, against the test Postgres and Redis: skip, run log, blocked event, and no SES call.
    • OrganizationMembersService.getBlockedRecipients with an injected clock: shared snapshot, one-minute reload, fail closed on a slow lookup.
  • Proofs owed (fleet proof gate):

    • Review: GPT-6.1 Sol, round 1 and a final read of the fix, on HEAD. The final read had no findings.
    • Live run: gap. The lane may not start the shared dev stack, so no worker process ran a sandbox send end to end. The EmailService tests drive executeSendEmail against the real test Postgres and Redis, with SES stubbed.
    • Prod shape: gap, accepted until read-only production access arrives. No sandbox integration exists before the sandbox product stack lands.
    • CI: gap. Fork CI cannot run on Silthus/posthog. Locally, semgrep --config .semgrep/rules/security/ is clean on the changed files.
    • Post-deploy watch: pending until the PR lands.

Test rationale: the new cases sit in a new sandbox sender block of the existing email.service.test.ts, because no existing test sends through a sandbox integration. The membership cases are parameterized by recipient shape (CC, BCC, list, ambiguous mailbox, unverified, legacy, inactive, other organization, deactivated organization). Each one catches a recipient reaching delivery without being a verified member. The final-check case catches a member removed while the send waits. The dedupe case catches a blocked event per send. The service unit tests catch a stale snapshot deciding a send.

Release status

  • This change is behind a feature flag and is not available to users

Docs update

docs/internal/workflows-email-sending-tiers.md gains a "Sandbox delivery" section with the switch, the member rule and the blocked event.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Agent: Claude Code, Claude Opus 5.5 (implementation). Design pass and review by Codex, GPT-6.1 Sol.

Carved from the reviewed source PRs above onto today's master as a wayfinder ticket lane. Skills: tdd, /writing-tests, pr-description, merge-risk, qa-swarm design pass.
No duplicate: this replaces the source fork PRs named above, which stay open until the stack exists.
Public artifact: all test data is invented (example.com addresses).

Decisions

Question Answer Who Where
Slice order of the sandbox sender stack Option B: the Channels row moves into V1 so a team has a sender to test from; V1's worker PRs land first 👍 Accepted default map
Member gate before the route This PR is the gate and the fail-closed provider case; the route follows in the next PR 🤖 Agent plan
Production switch Stays off until the sandbox caps land 🤖 Agent plan
Fit under ~400 lines Long blocked-address log packing moves to the caps slice; deactivated-organization handling stays because one join carries it 🤖 Agent ticket
Member snapshot shape One snapshot per team from a team–organization–member join, replacing the separate team→organization loader 🤖 Agent ticket
Gate-passing sends without a route Skip as unavailable and emit no event 🤖 Agent ticket
Team tier budget for sandbox sends Skipped in this PR, moved down from the route PR, so a skipped send never spends or waits on it 🤖 Agent ticket
Per-workflow pacing for sandbox sends Still applies: only that workflow's own sends share the bucket, and its pacing must hold once they deliver 🤖 Agent ticket
Deadline on the member lookup None: it shares the pool and the no-deadline stance of every other read on the send path; a late result still fails closed 🤖 Agent ticket

Involvement: no grilling rounds; design pass (1 lane, 2 findings fixed); review (GPT-6.1 Sol, 1 round with 2 findings: 1 fixed in part, 1 rejected; final read clean); proof captured as test output.

🤖 Generated with Claude Code

VojtechBartos and others added 11 commits October 27, 2026 12:11
Co-authored-by: Sam Pennington <56024559+sampennington@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… the product (PostHog#122183)

Co-authored-by: Claude <noreply@anthropic.com>
… import (PostHog#123567)

Co-authored-by: posthog[bot] <206114724+posthog[bot]@users.noreply.github.com>
)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…Hog#123917)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…Hog#123956)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
sortafreel and others added 16 commits October 27, 2026 12:45
…ostHog#122667)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: posthog[bot] <206114724+posthog[bot]@users.noreply.github.com>
…ailable (PostHog#123549)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
)

Co-authored-by: Claude <noreply@anthropic.com>
scheduled-actions-posthog Bot and others added 20 commits October 28, 2026 00:25
Co-authored-by: scheduled-actions-posthog[bot] <250428249+scheduled-actions-posthog[bot]@users.noreply.github.com>
Co-authored-by: posthog[bot] <206114724+posthog[bot]@users.noreply.github.com>
…og#124460)

Co-authored-by: posthog[bot] <206114724+posthog[bot]@users.noreply.github.com>
…ick (PostHog#124510)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: scheduled-actions-posthog[bot] <250428249+scheduled-actions-posthog[bot]@users.noreply.github.com>
…ts (PostHog#124348)

Co-authored-by: posthog[bot] <206114724+posthog[bot]@users.noreply.github.com>
…Hog#124399)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Silthus and others added 2 commits October 28, 2026 09:26
A send through a `sandbox` email integration now skips unless the worker
switch and its three SES route settings are set, and unless every To, CC
and BCC address belongs to an active, verified member of the team's
active organization. The check runs again right before delivery. Each
skip logs a reason and emits a deduplicated blocked event. The sandbox
route does not exist yet, so a send that passes every check still skips
as unavailable instead of reporting success.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A sandbox send reaches only the team's own members, so it must not spend or wait on the
team's tier budget that its real sends share.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

🤖 CI report

⚠️ Complexity (TypeScript) — 309 functions above the limit (max 142)

Cyclomatic complexity above the limit in changed typescript files (10 for production files, 15 for test files). Warn only: worth simplifying when you next touch these functions.

Function Location Complexity Limit
DataTable frontend/src/queries/nodes/DataTable/DataTable.tsx:156 142 10
NotebookComponentShell frontend/src/lib/components/MarkdownNotebook/NotebookComponentShell.tsx:105 123 10
InsightMeta frontend/src/lib/components/Cards/InsightCard/InsightMeta.tsx:136 121 10
InternalDataTableVisualization frontend/src/queries/nodes/DataVisualization/DataVisualization.tsx:206 117 10
AIObservabilityEvaluation products/ai_observability/frontend/evaluations/AIObservabilityEvaluation.tsx:77 116 10
useInsightDisplayOptions products/product_analytics/frontend/insights/editor/insightDisplayOptions.tsx:43 116 10
CohortEdit frontend/src/scenes/cohorts/CohortEdit.tsx:157 85 10
handleRootEditableKeyDown frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:6710 76 10
SyncMethodForm products/data_warehouse/frontend/shared/components/forms/SyncMethodForm.tsx:191 70 10
submitNewTask products/posthog_ai/frontend/scenes/TaskTracker/taskTrackerSceneLogic.ts:978 63 10
MessageTemplate products/workflows/frontend/TemplateLibrary/MessageTemplate.tsx:59 62 10
EditKeyModal products/ai_observability/frontend/settings/LLMProviderKeysSettings.tsx:561 61 10
ReportCardRaw products/signals/frontend/inbox/components/cards/ReportCard.tsx:109 61 10
MarkdownNotebookEditor frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:666 57 10
MetricRowGroup frontend/src/scenes/experiments/MetricsView/new/MetricRowGroup.tsx:549 55 10
handleNotebookKeyDown frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:5100 49 10
DashboardItems frontend/src/scenes/dashboard/DashboardItems.tsx:101 48 10
InboxDetailFrame products/signals/frontend/inbox/components/detail/ReportDetail.tsx:204 48 10
renderNotebookRow frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:6972 46 10
saveWorkflowSuccess products/workflows/frontend/Workflows/workflowLogic.ts:4545 43 10
NotebookJupyterCellOutput frontend/src/scenes/notebooks/Nodes/components/NotebookJupyterCellOutput.tsx:45 42 10
executeJupyterCommand frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:5967 41 10
runSave products/workflows/frontend/Workflows/workflowLogic.ts:3453 41 10
openScene frontend/src/scenes/sceneLogic.tsx:921 40 10
refreshDashboardItems frontend/src/scenes/dashboard/dashboardLogic.tsx:5361 39 10
TaskRunComposer products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunComposer.tsx:57 39 10
<anonymous> products/workflows/frontend/Workflows/workflowLogic.ts:4001 39 10
DashboardInsightResultMenu products/dashboards/frontend/components/DashboardInsightResultMenu.tsx:28 38 10
handleRootEditableInput frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:6330 37 10
handleKeyDown frontend/src/lib/components/MarkdownNotebook/NotebookComponentShell.tsx:518 37 10
StartupProgram frontend/src/scenes/startups/StartupProgram.tsx:120 37 10
AddKeyModal products/ai_observability/frontend/settings/LLMProviderKeysSettings.tsx:241 36 10
ComposerModelEffortPickers products/posthog_ai/frontend/components/composer/ComposerModelEffortPickers.tsx:152 36 10
discussReport products/signals/frontend/inbox/inboxTaskKickoffLogic.ts:846 36 10
handleBeforeInput frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:2625 35 10
OfflineItemInspector products/ai_observability/frontend/offline-evaluations/OfflineItemInspector.tsx:16 35 10
<anonymous> frontend/src/scenes/max/Thread.tsx:272 34 10
<anonymous> frontend/src/queries/nodes/DataNode/LoadNext.tsx:24 33 10
InsightsTable products/product_analytics/frontend/insights/shared/InsightsTable/InsightsTable.tsx:73 33 10
ReplayObservationSceneComponent products/replay_vision/frontend/observations/ReplayObservation.tsx:59 33 10
HogFlowEditorPanelBuildDetail products/workflows/frontend/Workflows/hogflows/panel/HogFlowEditorPanelBuildDetail.tsx:44 33 10
WorkflowScene products/workflows/frontend/Workflows/WorkflowScene.tsx:66 32 10
<anonymous> frontend/src/layout/navigation/projectNoticeLogic.tsx:448 31 10
eventToHogFunctionContextId frontend/src/scenes/hog-functions/sub-templates/sub-templates.ts:1914 31 10
TaskComposer products/posthog_ai/frontend/scenes/TaskTracker/components/TaskComposer.tsx:73 31 10
EditorFilters products/product_analytics/frontend/insights/editor/EditorFilters.tsx:72 31 10
HomeTabStatTile products/product_analytics/frontend/insights/home/HomeTabStatTile.tsx:44 31 10
<anonymous> frontend/src/scenes/max/Thread.tsx:609 30 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:1565 29 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:3142 29 10
InsightDisplayConfig products/product_analytics/frontend/insights/editor/InsightDisplayConfig.tsx:31 29 10
TrendsSeries products/product_analytics/frontend/insights/editor/TrendsSeries.tsx:29 29 10
SavedInsights products/product_analytics/frontend/insights/savedInsights/SavedInsights.tsx:65 29 10
Step1Content products/workflows/frontend/OptOuts/CustomerIOImportModal.tsx:36 29 10
AnalyticsMetricCard frontend/src/lib/components/AnalyticsMetricCard/AnalyticsMetricCard.tsx:36 28 10
InsightVizDisplay frontend/src/queries/nodes/InsightViz/InsightVizDisplay.tsx:173 28 10
<anonymous> frontend/src/scenes/dashboard/dashboards/dashboardsLogic.ts:649 28 10
<anonymous> products/conversations/frontend/scenes/ticket/supportTicketSceneLogic.ts:1185 28 10
ReportDetail products/signals/frontend/inbox/components/detail/ReportDetail.tsx:658 28 10
<anonymous> frontend/src/scenes/experiments/MetricsView/new/MetricRowGroup.tsx:349 27 10
DatasetItemModal products/ai_observability/frontend/datasets/DatasetItemModal.tsx:57 27 10
TrendsBarChart products/product_analytics/frontend/insights/trends/TrendsBarChart/TrendsBarChart.tsx:92 27 10
ReportsTab products/signals/frontend/inbox/components/tabs/ReportsTab.tsx:213 27 10
<anonymous> frontend/src/scenes/experiments/MetricsView/new/MetricRowGroup.tsx:1123 26 10
WorkflowsOnboardingWizard products/workflows/frontend/setupGuide/wizard/WorkflowsOnboardingWizard.tsx:38 26 10
LoginStep frontend/src/scenes/authentication/auth/steps/LoginStep.tsx:74 25 10
saveEvaluation products/ai_observability/frontend/evaluations/llmEvaluationLogic.ts:1433 25 10
<anonymous> products/signals/frontend/inbox/utils/inboxSetup.ts:56 25 10
ContentAutopilotPromptDetail products/web_analytics/frontend/contentAutopilot/ContentAutopilotPromptDetail.tsx:38 25 10
launchBroadcast products/workflows/frontend/Broadcasts/broadcastWizardLogic.ts:1896 25 10
buildRankedResults frontend/src/lib/components/CommandKSearch/commandKRankedResults.ts:173 24 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:2457 24 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:3957 24 10
MetricsCard products/ai_observability/frontend/evaluations/components/EvaluationReportViewer.tsx:254 24 10
TrendsLineChart products/product_analytics/frontend/insights/trends/TrendsLineChart/TrendsLineChart.tsx:78 24 10
InsightMetaContent frontend/src/lib/components/Cards/InsightCard/InsightMeta.tsx:878 23 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:2082 23 10
<anonymous> frontend/src/queries/nodes/InsightViz/InsightVizDisplay.tsx:241 23 10
submit frontend/src/scenes/authentication/auth/signupLogic.ts:481 23 10
renderTile frontend/src/scenes/dashboard/DashboardItems.tsx:601 23 10
setScene frontend/src/scenes/sceneLogic.tsx:827 23 10
OfflineExperimentContent products/ai_observability/frontend/offline-evaluations/OfflineExperimentContent.tsx:23 23 10
<anonymous> products/marketing_analytics/frontend/search/SearchPerformanceTab.stories.tsx:241 23 10
EvaluationCodeEditor products/ai_observability/frontend/evaluations/components/EvaluationCodeEditor.tsx:394 22 10
<anonymous> products/ai_observability/frontend/evaluations/llmEvaluationLogic.ts:1780 22 10
<anonymous> products/workflows/frontend/Broadcasts/broadcastWizardLogic.ts:1288 22 10
<anonymous> frontend/src/layout/navigation/projectNoticeLogic.tsx:583 21 10
CommentComposer frontend/src/lib/components/Comments/CommentComposer.tsx:22 21 10
<anonymous> frontend/src/queries/nodes/DataTable/DataTable.tsx:344 21 10
InsightViz frontend/src/queries/nodes/InsightViz/InsightViz.tsx:48 21 10
AccountConnected frontend/src/scenes/authentication/account/AccountConnected.tsx:122 21 10
determineBillingAlert frontend/src/scenes/billing/billingLogic.tsx:1673 21 10
<anonymous> frontend/src/scenes/dashboard/dashboardLogic.tsx:2362 21 10
LegacyThread frontend/src/scenes/max/Thread.tsx:236 21 10
EvaluationRunsTable products/ai_observability/frontend/evaluations/components/EvaluationRunsTable.tsx:43 21 10
setOutputType products/ai_observability/frontend/evaluations/llmEvaluationLogic.ts:927 21 10
buildSections frontend/src/lib/components/CommandKSearch/commandKSections.ts:378 20 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:1832 20 10
renderTable frontend/src/queries/nodes/InsightViz/InsightVizDisplay.tsx:459 20 10
NotebookCodeCellRunButton frontend/src/scenes/notebooks/Nodes/components/NotebookCodeCellRunButton.tsx:29 20 10
UpdateEmailPreferences frontend/src/scenes/settings/user/UpdateEmailPreferences.tsx:363 20 10
EvaluationOutputFields products/ai_observability/frontend/evaluations/create/EvaluationOutputFields.tsx:14 20 10
getDisplayItems products/product_analytics/frontend/insights/editor/insightDisplayOptions.tsx:134 20 10
setReportClaimed products/signals/frontend/inbox/logics/inboxReportDetailLogic.ts:1629 20 10
<anonymous> products/workflows/frontend/Broadcasts/broadcastWizardLogic.ts:2282 20 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:1178 19 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:2330 19 10
recording_domains frontend/src/scenes/team-activity/teamActivityDescriber.tsx:237 19 10
EvaluationReportViewer products/ai_observability/frontend/evaluations/components/EvaluationReportViewer.tsx:352 19 10
submitModal products/customer_analytics/frontend/components/CustomerTasks/customerTasksLogic.ts:554 19 10
resolveFreePlacementCollisions products/dashboards/frontend/dashboardCustomization.ts:152 19 10
postReviewComment products/signals/frontend/inbox/logics/inboxReportDetailLogic.ts:1848 19 10
toggleSignalSource products/signals/frontend/inbox/signalSourcesLogic.ts:2040 19 10
submitAIPromptForNode frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:6569 18 10
refreshDashboardItem frontend/src/scenes/dashboard/dashboardLogic.tsx:5279 18 10
<anonymous> frontend/src/scenes/experiments/MetricsView/new/MetricRowGroup.tsx:189 18 10
Thread frontend/src/scenes/max/Thread.tsx:122 18 10
Message frontend/src/scenes/max/Thread.tsx:533 18 10
<anonymous> products/ai_observability/frontend/evaluations/components/EvaluationReportViewer.tsx:300 18 10
numericOutputConfigError products/ai_observability/frontend/evaluations/constants.ts:50 18 10
<anonymous> products/ai_observability/frontend/evaluations/evaluationReportLogic.ts:718 18 10
RunningTimeConfigModal products/experiments/frontend/modals/RunningTimeConfigModal/RunningTimeConfigModal.tsx:49 18 10
dateLabel products/product_analytics/mcp/apps/explainChart/storyFacts.ts:56 18 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:2239 17 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:4833 17 10
GitHubRepositoryCombobox frontend/src/lib/integrations/GitHubRepositoryCombobox.tsx:48 17 10
<anonymous> frontend/src/scenes/experiments/RunningTimeCalculator/runningTimeLogic.ts:589 17 10
HogTestResultsPanel products/ai_observability/frontend/evaluations/components/EvaluationCodeEditor.tsx:208 17 10
EvaluationCreateReview products/ai_observability/frontend/evaluations/create/EvaluationCreateReview.tsx:21 17 10
EvaluationReportsPanel products/ai_observability/frontend/evaluations/create/EvaluationReportsPanel.tsx:15 17 10
<anonymous> products/ai_observability/frontend/evaluations/llmEvaluationLogic.ts:1843 17 10
<anonymous> products/ai_observability/frontend/evaluations/llmEvaluationLogic.ts:1951 17 10
<anonymous> products/conversations/frontend/scenes/ticket/supportTicketSceneLogic.ts:1110 17 10
DashboardsFiltersBar products/dashboards/frontend/dashboards/DashboardsFiltersBar.tsx:16 17 10
QuillContextUsage products/posthog_ai/frontend/components/quill/QuillContextUsage.tsx:13 17 10
ExplainChartView products/product_analytics/mcp/apps/explainChart/ExplainChartView.tsx:65 17 10
buildSummary products/workflows/frontend/Workflows/hogflows/steps/components/rrule-helpers.ts:244 17 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:2000 16 10
focusJupyterCellEdge frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:5567 16 10
InviteNewUser frontend/src/scenes/authentication/invite-signup/InviteSignupForm.tsx:96 16 10
PasswordReset frontend/src/scenes/authentication/password-reset/PasswordReset.tsx:31 16 10
VercelConnect frontend/src/scenes/authentication/vercel/VercelConnect.tsx:39 16 10
copyToDashboard frontend/src/scenes/dashboard/dashboardLogic.tsx:2555 16 10
EvaluationSettleConfig products/ai_observability/frontend/evaluations/components/EvaluationSettleConfig.tsx:23 16 10
loadEvaluation products/ai_observability/frontend/evaluations/llmEvaluationLogic.ts:1275 16 10
loadTickets products/conversations/frontend/components/SidePanel/sidepanelTicketsLogic.ts:569 16 10
sendMessage products/conversations/frontend/scenes/ticket/supportTicketSceneLogic.ts:1516 16 10
snapBetweenAdjacentTiles products/dashboards/frontend/dashboardCustomization.ts:84 16 10
<anonymous> products/data_warehouse/frontend/shared/components/forms/SyncMethodForm.tsx:634 16 10
ExperimentRemainingTime products/experiments/frontend/components/ExperimentMetaBar/ExperimentRemainingTime.tsx:17 16 10
TaskComposerEnvironmentSelect products/posthog_ai/frontend/scenes/TaskTracker/components/TaskComposerEnvironmentSelect.tsx:102 16 10
getHomeTabInterval products/product_analytics/frontend/insights/home/homeTabDefaultTiles.ts:72 16 10
RetentionLineChart products/product_analytics/frontend/insights/retention/RetentionLineChart/RetentionLineChart.tsx:61 16 10
warmReportDiscussion products/signals/frontend/inbox/inboxTaskKickoffLogic.ts:741 16 10
CommandKSearchRankedItem frontend/src/lib/components/CommandKSearch/CommandKSearchRankedItem.tsx:32 15 10
Comment frontend/src/lib/components/Comments/Comment.tsx:287 15 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:1266 15 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:1754 15 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:4592 15 10
renderMemoizedNotebookRow frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:7212 15 10
handleJupyterKeyDown frontend/src/lib/components/MarkdownNotebook/NotebookComponentShell.tsx:473 15 10
areNotebookComponentShellPropsEqual frontend/src/lib/components/MarkdownNotebook/NotebookComponentShell.tsx:1141 15 10
NotificationRow frontend/src/lib/components/NotificationsMenu/NotificationRow.tsx:151 15 10
deactivateProduct frontend/src/scenes/billing/billingLogic.tsx:955 15 10
updateWidgetTile frontend/src/scenes/dashboard/dashboardLogic.tsx:2635 15 10
NativeEmailTemplaterForm frontend/src/scenes/hog-functions/email-templater/EmailTemplater.tsx:535 15 10
loadScene frontend/src/scenes/sceneLogic.tsx:1061 15 10
StepContent products/ai_observability/frontend/evaluations/create/EvaluationFormSteps.tsx:99 15 10
EvaluationFormSteps products/ai_observability/frontend/evaluations/create/EvaluationFormSteps.tsx:159 15 10
testHogOnSample products/ai_observability/frontend/evaluations/llmEvaluationLogic.ts:744 15 10
ComposerModelEffortSheet products/posthog_ai/frontend/components/composer/ComposerModelEffortSheet.tsx:45 15 10
initiateDataWarehouseSourceToggle products/signals/frontend/inbox/signalSourcesLogic.ts:1964 15 10
loadAiEmailDraftSuccess products/workflows/frontend/Broadcasts/broadcastWizardLogic.ts:1493 15 10
TriggerPopover products/workflows/frontend/Workflows/hogflows/HogFlowManualTriggerButton.tsx:22 15 10
parseRRuleToState products/workflows/frontend/Workflows/hogflows/steps/components/rrule-helpers.ts:81 15 10
QuillSceneStaticName frontend/src/layout/scenes/components/QuillSceneStaticName.tsx:22 14 10
openRow frontend/src/lib/components/CommandKSearch/commandKSearchLogic.tsx:788 14 10
CommentWithReplies frontend/src/lib/components/Comments/Comment.tsx:382 14 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:1354 14 10
handleNotebookPaste frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:3684 14 10
precheckSuccess frontend/src/scenes/authentication/auth/loginLogic.ts:724 14 10
BillingHero frontend/src/scenes/billing/BillingHero.tsx:193 14 10
registerInstrumentationProps frontend/src/scenes/billing/billingLogic.tsx:1847 14 10
persistRunningTimeEstimate frontend/src/scenes/experiments/RunningTimeCalculator/runningTimeLogic.ts:741 14 10
<anonymous> frontend/src/scenes/hog-functions/email-templater/emailTemplaterLogic.tsx:957 14 10
session_recording_masking_config frontend/src/scenes/team-activity/teamActivityDescriber.tsx:292 14 10
DatasetItems products/ai_observability/frontend/datasets/DatasetItems.tsx:28 14 10
evaluationRunsFilterHogQL products/ai_observability/frontend/evaluations/constants.ts:175 14 10
handleSubmit products/ai_observability/frontend/settings/LLMProviderKeysSettings.tsx:605 14 10
BIDrilldownModal products/business_intelligence/frontend/BIDrilldownModal.tsx:14 14 10
CustomerTasksTable products/customer_analytics/frontend/components/CustomerTasks/CustomerTasksTable.tsx:38 14 10
render products/dashboards/frontend/dashboards/templates/DashboardTemplatesTable.tsx:305 14 10
RunSurfaceThread products/posthog_ai/frontend/components/RunSurfaceImpl.tsx:236 14 10
TaskRunChat products/posthog_ai/frontend/scenes/TaskTracker/components/TaskRunChat.tsx:51 14 10
stretchFacts products/product_analytics/mcp/apps/explainChart/storyFacts.ts:196 14 10
createReportTask products/signals/frontend/inbox/inboxTaskKickoffLogic.ts:351 14 10
computeOnboardingDecision products/signals/frontend/inbox/logics/inboxOnboardingLogic.ts:170 14 10
updateReviewers products/signals/frontend/inbox/logics/inboxReportDetailLogic.ts:1793 14 10
toggleReviewCommentReaction products/signals/frontend/inbox/logics/inboxReportDetailLogic.ts:1975 14 10
CertificationSuggestionRow products/warehouse_suggestions/frontend/components/CertificationSuggestionRow.tsx:27 14 10
setEmail products/workflows/frontend/Broadcasts/broadcastWizardLogic.ts:1676 14 10
<anonymous> products/workflows/frontend/setupGuide/wizard/workflowsOnboardingWizardLogic.ts:628 14 10
CommentTopRow frontend/src/lib/components/Comments/Comment.tsx:189 13 10
submit frontend/src/scenes/authentication/auth/loginLogic.ts:620 13 10
renderSectionGrid frontend/src/scenes/dashboard/DashboardItems.tsx:790 13 10
setDashboardEditing frontend/src/scenes/dashboard/dashboardLogic.tsx:6044 13 10
save frontend/src/scenes/experiments/RunningTimeCalculator/runningTimeLogic.ts:809 13 10
NativeEmailIntegrationChoice frontend/src/scenes/hog-functions/email-templater/EmailTemplater.tsx:272 13 10
<anonymous> frontend/src/scenes/sceneLogic.tsx:603 13 10
describeWorkflowEmailTierChange frontend/src/scenes/team-activity/teamActivityDescriber.tsx:871 13 10
EvaluationVolumeEstimate products/ai_observability/frontend/evaluations/create/EvaluationVolumeEstimate.tsx:14 13 10
RunSurfaceRoot products/posthog_ai/frontend/components/RunSurfaceImpl.tsx:95 13 10
RunSurfaceComposer products/posthog_ai/frontend/components/RunSurfaceImpl.tsx:306 13 10
ShowTrendLinesFilter products/product_analytics/frontend/insights/editor/filters/ShowTrendLinesFilter.tsx:13 13 10
<anonymous> products/signals/frontend/inbox/logics/inboxReportDetailLogic.ts:1347 13 10
toggleCiSignals products/signals/frontend/inbox/signalSourcesLogic.ts:2213 13 10
WorkflowsTable products/workflows/frontend/Workflows/WorkflowsTable.tsx:120 13 10
StepTriggerAffectedUsers products/workflows/frontend/Workflows/hogflows/steps/StepTrigger.tsx:585 13 10
openFromUrl products/workflows/frontend/setupGuide/wizard/workflowsOnboardingWizardLogic.ts:671 13 10
EditableTableBlock frontend/src/lib/components/MarkdownNotebook/EditableTableBlock.tsx:108 12 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:2188 12 10
setSelectedBlockStyle frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:3911 12 10
getKeyboardActiveNodeId frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:5358 12 10
focusJupyterCell frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:5521 12 10
openSupportForm frontend/src/lib/components/Support/supportLogic.ts:480 12 10
GitHubBranchCombobox frontend/src/lib/integrations/GitHubBranchCombobox.tsx:44 12 10
insightNew frontend/src/products.tsx:1825 12 10
LoadPreviewText frontend/src/queries/nodes/DataNode/LoadNext.tsx:80 12 10
precheckSignupEmail frontend/src/scenes/authentication/auth/signupLogic.ts:605 12 10
buildRunningTimeOutlook frontend/src/scenes/experiments/RunningTimeCalculator/calculations.ts:91 12 10
TextAnswer frontend/src/scenes/max/Thread.tsx:923 12 10
renderMore products/ai_observability/frontend/datasets/DatasetItems.tsx:163 12 10
<anonymous> products/ai_observability/frontend/evaluations/llmEvaluationLogic.ts:1622 12 10
EvaluationResultCards products/ai_observability/frontend/evaluations/overview/EvaluationResultCards.tsx:35 12 10
getKeyPlaceholder products/ai_observability/frontend/settings/LLMProviderKeysSettings.tsx:91 12 10
DashboardTemplateCopyScene products/dashboards/frontend/dashboards/templates/DashboardTemplateCopyScene.tsx:38 12 10
countTemplateInsightTiles products/dashboards/frontend/dashboards/templates/DashboardTemplatesTable.tsx:44 12 10
createConfiguredColumn products/logs/frontend/components/VirtualizedLogsList/columnDefinitions.tsx:336 12 10
FunnelLineChart products/product_analytics/frontend/insights/funnels/FunnelLineChart/FunnelLineChart.tsx:62 12 10
RetentionBarChart products/product_analytics/frontend/insights/retention/RetentionBarChart/RetentionBarChart.tsx:55 12 10
applyFromUrl products/signals/frontend/inbox/logics/inboxFiltersLogic.ts:856 12 10
<anonymous> products/signals/frontend/inbox/signalSourcesLogic.ts:1673 12 10
changedRefreshOptions products/warehouse_suggestions/frontend/warehouseSuggestionsLogic.ts:143 12 10
<anonymous> products/workflows/frontend/Broadcasts/broadcastPerformanceLogic.ts:202 12 10
openInWorkflowEditorConfirmed products/workflows/frontend/Broadcasts/broadcastWizardLogic.ts:2116 12 10
Step2Content products/workflows/frontend/OptOuts/CustomerIOImportModal.tsx:187 12 10
<anonymous> products/workflows/frontend/TemplateLibrary/messageTemplateSceneLogic.ts:50 12 10
WorkflowsReputation products/workflows/frontend/Workflows/Reputation/WorkflowsReputation.tsx:443 12 10
WorkflowsScene products/workflows/frontend/WorkflowsScene.tsx:193 12 10
WizardPushStep products/workflows/frontend/setupGuide/wizard/WizardPushStep.tsx:61 12 10
syncRemote frontend/src/lib/components/CommandKSearch/commandKSearchLogic.tsx:819 11 10
applyKeyIntent frontend/src/lib/components/CommandKSearch/commandKSearchLogic.tsx:956 11 10
lowerSections frontend/src/lib/components/CommandKSearch/commandKSections.ts:322 11 10
handleCut frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:3616 11 10
<anonymous> frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:4083 11 10
handleMainMouseDown frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:5240 11 10
handleJupyterTextKeyDown frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:6131 11 10
submitInsertMenuSelectionForNode frontend/src/lib/components/MarkdownNotebook/MarkdownNotebook.tsx:6513 11 10
outputPrompt frontend/src/lib/components/MarkdownNotebook/NotebookComponentShell.tsx:650 11 10
renderNode frontend/src/lib/components/MarkdownNotebook/renderNode.tsx:29 11 10
submitSupportTicket frontend/src/lib/components/Support/supportLogic.ts:524 11 10
<anonymous> frontend/src/queries/nodes/DataTable/DataTable.tsx:433 11 10
MetricCardCell frontend/src/queries/nodes/OverviewGrid/OverviewMetricCardGrid.tsx:83 11 10
<anonymous> frontend/src/scenes/analytics/analyticsListLogic.ts:706 11 10
posthogCodeDeepUrl frontend/src/scenes/authentication/account/AccountConnected.tsx:33 11 10
<anonymous> frontend/src/scenes/authentication/auth/loginLogic.ts:566 11 10
CLIAuthorize frontend/src/scenes/authentication/cli/CLIAuthorize.tsx:25 11 10
CheckYourInbox frontend/src/scenes/authentication/verify-email/VerifyEmailForm.tsx:166 11 10
<anonymous> frontend/src/scenes/billing/billingLogic.tsx:1440 11 10
EditModeActions frontend/src/scenes/dashboard/DashboardHeaderActions.tsx:197 11 10
moveToDashboardSuccess frontend/src/scenes/dashboard/dashboardLogic.tsx:5095 11 10
saveEditModeChangesSuccess frontend/src/scenes/dashboard/dashboardLogic.tsx:5921 11 10
<anonymous> frontend/src/scenes/dashboard/dashboardLogic.tsx:6754 11 10
<anonymous> frontend/src/scenes/dashboard/dashboards/dashboardsLogic.ts:497 11 10
<anonymous> frontend/src/scenes/max/Thread.tsx:931 11 10
<anonymous> frontend/src/scenes/sceneLogic.tsx:728 11 10
getSurveyWarnings frontend/src/scenes/surveys/surveyVersionRequirements.ts:389 11 10
feature_flag_policy_config frontend/src/scenes/team-activity/teamActivityDescriber.tsx:490 11 10
OverlayMenu products/ai_observability/frontend/datasets/SaveToDatasetButton.tsx:106 11 10
stripRedundantLeadingHeading products/ai_observability/frontend/evaluations/components/EvaluationReportViewer.tsx:101 11 10
DeleteKeyModal products/ai_observability/frontend/settings/LLMProviderKeysSettings.tsx:839 11 10
LLMProviderKeysSettings products/ai_observability/frontend/settings/LLMProviderKeysSettings.tsx:954 11 10
BusinessKnowledgeScene products/business_knowledge/frontend/scenes/sources/BusinessKnowledgeScene.tsx:47 11 10
updateTicket products/conversations/frontend/scenes/ticket/supportTicketSceneLogic.ts:1393 11 10
describeFlagHistoryStatus products/experiments/frontend/health/debug/healthDebugInputs.ts:176 11 10
DetectableEffectTable products/experiments/frontend/modals/RunningTimeConfigModal/DetectableEffectTable.tsx:25 11 10
customColumnFilterTarget products/logs/frontend/components/LogsViewer/config/columns.ts:177 11 10
AttributeCell products/logs/frontend/components/VirtualizedLogsList/cells/AttributeCell.tsx:41 11 10
QuillAttachedContextPicker products/posthog_ai/frontend/components/quill/QuillAttachedContextPicker.tsx:34 11 10
pointFacts products/product_analytics/mcp/apps/explainChart/storyFacts.ts:179 11 10
chapterBand products/product_analytics/mcp/apps/explainChart/storyOverlayGeometry.ts:47 11 10
QuillReplayObservationActions products/replay_vision/frontend/observations/QuillReplayObservationActions.tsx:11 11 10
discussReportInstructions products/signals/frontend/inbox/inboxTaskKickoffLogic.ts:216 11 10
filterSearchParams products/signals/frontend/inbox/logics/inboxFiltersLogic.ts:218 11 10
deleteReviewComment products/signals/frontend/inbox/logics/inboxReportDetailLogic.ts:1949 11 10
<anonymous> products/signals/frontend/inbox/signalSourcesLogic.ts:1487 11 10
ExpandedSpanContent products/tracing/frontend/components/VirtualizedSpanList/ExpandedSpanContent.tsx:21 11 10
<anonymous> products/warehouse_suggestions/frontend/warehouseSuggestionsLogic.ts:689 11 10
BroadcastPerformance products/workflows/frontend/Broadcasts/BroadcastPerformance.tsx:16 11 10
BroadcastsScene products/workflows/frontend/Broadcasts/BroadcastsScene.tsx:40 11 10
canonicalCohortCriteria products/workflows/frontend/Broadcasts/audienceSuggestions/broadcastAudienceSuggestionsLogic.ts:44 11 10
saveName products/workflows/frontend/Broadcasts/broadcastWizardLogic.ts:1738 11 10
moveToDraft products/workflows/frontend/Broadcasts/broadcastWizardLogic.ts:2071 11 10
saveDraftSchedule products/workflows/frontend/Broadcasts/broadcastWizardLogic.ts:2364 11 10
applyEmailBrand products/workflows/frontend/MessageAudience/emailBrand.ts:91 11 10
uploadCSV products/workflows/frontend/OptOuts/customerIOImportLogic.ts:575 11 10
render products/workflows/frontend/Workflows/WorkflowsTable.tsx:210 11 10
StepTriggerConfiguration products/workflows/frontend/Workflows/hogflows/steps/StepTrigger.tsx:227 11 10
submit products/workflows/frontend/Workflows/workflowLogic.ts:3644 11 10
⚠️ Bundle size — 🔺 +202.9 KiB (+0.3%)

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

Total: 77.11 MiB · 🔺 +202.9 KiB (+0.3%)

File Size Δ vs base
render-query/src/render-query/render-query.js 24.94 MiB 🔺 +43.9 KiB (+0.2%)
posthog-app/_parent/products/dashboards/frontend/dashboards/Dashboards.js 41.1 KiB 🔺 +41.1 KiB (new)
posthog-app/src/scenes/dashboard/dashboards/Dashboards.js removed 🟢 -41.1 KiB (-100.0%)
posthog-app/src/scenes/authentication/auth/Auth.js 39.2 KiB 🔺 +39.2 KiB (new)
posthog-app/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluation.js 151.1 KiB 🔺 +38.0 KiB (+33.6%)
posthog-app/_parent/products/workflows/frontend/Transactional/TransactionalScene.js 32.5 KiB 🔺 +32.5 KiB (new)
posthog-app/src/scenes/authentication/signup/Signup.js removed 🟢 -20.9 KiB (-100.0%)
posthog-app/src/scenes/authentication/login/Login.js removed 🟢 -12.4 KiB (-100.0%)
posthog-app/_parent/products/apm/frontend/ApplicationObservabilityScene.js 24.0 KiB 🔺 +12.2 KiB (+103.6%)
exporter/src/exporter/exporter.js 32.1 KiB 🔺 +11.2 KiB (+53.6%)
posthog-app/_parent/products/dashboards/frontend/dashboards/templates/DashboardTemplateCopyScene.js 10.8 KiB 🔺 +10.8 KiB (new)
posthog-app/src/scenes/dashboard/dashboards/templates/DashboardTemplateCopyScene.js removed 🟢 -10.7 KiB (-100.0%)
posthog-app/src/scenes/web-analytics/WebAnalyticsScene.js 247.8 KiB 🔺 +10.4 KiB (+4.4%)
posthog-app/_parent/products/product_analytics/frontend/insights/savedInsights/SavedInsights.js 41.4 KiB 🟢 -9.2 KiB (-18.1%)
exporter/_parent/products/product_analytics/frontend/insights/editor/filters/WebAnalyticsEditorFilters.js 8.5 KiB 🔺 +8.5 KiB (new)
exporter/src/scenes/insights/EditorFilters/WebAnalyticsEditorFilters.js removed 🟢 -8.5 KiB (-100.0%)
posthog-app/src/scenes/experiments/Experiment.js 418.0 KiB 🔺 +8.0 KiB (+2.0%)
posthog-app/_parent/products/workflows/frontend/WorkflowsScene.js 62.9 KiB 🔺 +6.9 KiB (+12.3%)
posthog-app/_parent/products/product_analytics/frontend/insights/editor/filters/WebAnalyticsEditorFilters.js 6.0 KiB 🔺 +6.0 KiB (new)
posthog-app/src/scenes/insights/EditorFilters/WebAnalyticsEditorFilters.js removed 🟢 -6.0 KiB (-100.0%)
posthog-app/_parent/products/workflows/frontend/Broadcasts/BroadcastsScene.js 32.2 KiB 🔺 +5.9 KiB (+22.5%)
exporter/src/exporter/scenes/ExporterNotebookScene.js 3.90 MiB 🔺 +3.2 KiB (+0.1%)
posthog-app/_parent/products/signals/frontend/inbox/InboxScene.js 515.0 KiB 🔺 +2.8 KiB (+0.5%)
exporter/src/queries/schema.js 1.27 MiB 🟢 -2.1 KiB (-0.2%)
posthog-app/src/queries/schema.js 1.27 MiB 🟢 -2.1 KiB (-0.2%)
posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ScannerEditorScene.js 83.8 KiB 🔺 +1.7 KiB (+2.1%)
posthog-app/src/scenes/analytics/AnalyticsList.js 29.9 KiB 🔺 +1.1 KiB (+3.9%)
posthog-app/src/scenes/authentication/auth/loginLogic.js 1.1 KiB 🔺 +1.1 KiB (new)
posthog-app/src/scenes/authentication/login/loginLogic.js removed 🟢 -1.1 KiB (-100.0%)
posthog-app/_parent/products/replay_vision/frontend/observations/ReplayObservation.js 41.1 KiB 🔺 +1013 B (+2.5%)

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

⚠️ Eager graph — 3 over 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.01 MiB · 25 files 🔺 +10.1 KiB (+1.0%) █████████░ 88.1% of 1.14 MiB
logged-out boot: index + App + bootApp (preloaded by every page, including /login)
src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
2.97 MiB · 621 files 🔺 +12.1 KiB (+0.4%) ██████████ 98.1% of 3.03 MiB
🟡 authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
7.59 MiB · 2,566 files 🔺 +113.2 KiB (+1.5%) ██████████ 101.2% of 7.50 MiB
dashboard scene
src/scenes/dashboard/Dashboard.tsx
9.96 MiB · 3,731 files 🔺 +28.7 KiB (+0.3%) ██████████ 99.4% of 10.01 MiB
🟡 today home path
src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
7.77 MiB · 2,659 files 🔺 +119.6 KiB (+1.5%) ██████████ 100.4% of 7.74 MiB
🟡 AI-first home path
src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
8.01 MiB · 2,652 files 🔺 +120.3 KiB (+1.5%) ██████████ 101.4% of 7.91 MiB
events scene
src/scenes/activity/explore/EventsScene.tsx
9.40 MiB · 3,512 files 🔺 +26.9 KiB (+0.3%) ██████████ 98.0% of 9.59 MiB
web analytics scene
src/scenes/web-analytics/WebAnalyticsScene.tsx
10.34 MiB · 3,763 files 🔺 +34.3 KiB (+0.3%) ██████████ 95.4% of 10.83 MiB
replay detail scene
src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
8.42 MiB · 3,088 files 🔺 +15.8 KiB (+0.2%) █████████░ 88.9% of 9.47 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/svg/ stays out of src/index.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/components/ stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/layout/navigation-3000/navigationLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/scenes/dashboard/dashboardLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/lemon-ui/LemonMarkdown/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/RichContentEditor/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/CodeSnippet/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/taxonomy/core-filter-definitions-by-group.json stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 node_modules/zod/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/scenes/billing/billingLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/ProductEmptyState/productSetupPreloadLogic.ts stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/dashboards/frontend/widgets/previews/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/session-recordings/player/sessionRecordingPlayerLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/wizard/frontend/runs/WizardRunDetailsDrawer.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodayShell.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodayContextPanelFloating.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodaySidePanel.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodayTopBar.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/todayRailItems.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 zod/v4/locales/de.js stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/svg/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/components/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/session-recordings/playlist/SessionRecordingsPlaylist.tsx stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/scenes/web-analytics/tiles/WebAnalyticsTile.tsx stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/queries/validators.js stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/scenes/project-homepage/today/TodayReportPage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/queries/Query/Query.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 packages/quill/packages/charts/ stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 products/posthog_ai/frontend/components/tool/widgets/VisualizationWidget.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 products/posthog_ai/frontend/components/tool/widgets/RecordingsWidget.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 src/queries/Query/Query.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 products/posthog_ai/frontend/api/primitives.ts stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 src/scenes/notebooks/Notebook/notebookLogic.ts stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 src/scenes/session-recordings/playlist/SessionRecordingsPlaylist.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/scenes/web-analytics/tiles/WebAnalyticsTile.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/validators.js stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/scenes/web-analytics/LiveMetricsDashboard/LiveWebAnalyticsMetrics.tsx stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 products/product_analytics/frontend/insights/trends/WorldMap/countryVectors.tsx stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 src/scenes/settings/SettingsMap.tsx stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 @jspm/core/nodelibs/browser/fs stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.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.7 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
4.0 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.7 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.7 KiB src/index.tsx
1.6 KiB src/lib/utils/bootTiming.ts
1.2 KiB src/RootErrorBoundary.tsx
949 B src/scenes/ChunkLoadErrorBoundary.tsx
Largest files eagerly shipped from src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
Size File
322.9 KiB ../node_modules/.pnpm/posthog-js@1.438.23_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
217.5 KiB ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.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
102.1 KiB src/products.tsx
86.1 KiB src/lib/api.ts
68.3 KiB src/lib/lemon-ui/icons/icons.tsx
41.9 KiB ../node_modules/.pnpm/@dnd-kit+core@6.0.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js
36.4 KiB ../node_modules/.pnpm/kea@4.0.0-pre.6_patch_hash=139b8d1f1304f9d9da452a9a1244c94ea679dbcb85687d8999563146879fb6f5_react@18.3.1/node_modules/kea/lib/index.cjs.js
27.0 KiB ../node_modules/.pnpm/tailwind-merge@2.2.2/node_modules/tailwind-merge/dist/bundle-mjs.mjs
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
322.9 KiB ../node_modules/.pnpm/posthog-js@1.438.23_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
286.4 KiB src/taxonomy/core-filter-definitions-by-group.json
239.9 KiB ../packages/quill/packages/quill/dist/index.js
217.5 KiB ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
153.8 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
102.1 KiB src/products.tsx
94.5 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
92.5 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
86.1 KiB src/lib/api.ts
Largest files eagerly shipped from src/scenes/dashboard/Dashboard.tsx
Size File
322.9 KiB ../node_modules/.pnpm/posthog-js@1.438.23_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
286.4 KiB src/taxonomy/core-filter-definitions-by-group.json
239.9 KiB ../packages/quill/packages/quill/dist/index.js
217.5 KiB ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
153.8 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
144.1 KiB ../packages/quill/packages/primitives/dist/index.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
102.1 KiB src/products.tsx
94.5 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
92.5 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
Size File
322.9 KiB ../node_modules/.pnpm/posthog-js@1.438.23_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
286.4 KiB src/taxonomy/core-filter-definitions-by-group.json
239.9 KiB ../packages/quill/packages/quill/dist/index.js
217.5 KiB ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
153.8 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
102.1 KiB src/products.tsx
94.5 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
92.5 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
86.1 KiB src/lib/api.ts
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
Size File
322.9 KiB ../node_modules/.pnpm/posthog-js@1.438.23_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
286.4 KiB src/taxonomy/core-filter-definitions-by-group.json
239.9 KiB ../packages/quill/packages/quill/dist/index.js
217.5 KiB ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
153.8 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
144.1 KiB ../packages/quill/packages/primitives/dist/index.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
102.1 KiB src/products.tsx
94.5 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
92.5 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
Largest files eagerly shipped from src/scenes/activity/explore/EventsScene.tsx
Size File
322.9 KiB ../node_modules/.pnpm/posthog-js@1.438.23_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
286.4 KiB src/taxonomy/core-filter-definitions-by-group.json
239.9 KiB ../packages/quill/packages/quill/dist/index.js
217.5 KiB ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
153.8 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
144.1 KiB ../packages/quill/packages/primitives/dist/index.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
102.1 KiB src/products.tsx
94.5 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
92.5 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
Largest files eagerly shipped from src/scenes/web-analytics/WebAnalyticsScene.tsx
Size File
322.9 KiB ../node_modules/.pnpm/posthog-js@1.438.23_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
286.4 KiB src/taxonomy/core-filter-definitions-by-group.json
239.9 KiB ../packages/quill/packages/quill/dist/index.js
217.5 KiB ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
182.9 KiB src/queries/validators.js
153.8 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
144.1 KiB ../packages/quill/packages/primitives/dist/index.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
102.1 KiB src/products.tsx
94.5 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
Largest files eagerly shipped from src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
Size File
322.9 KiB ../node_modules/.pnpm/posthog-js@1.438.23_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
316.1 KiB ../node_modules/.pnpm/posthog-js@1.438.23_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/rrweb.js
286.4 KiB src/taxonomy/core-filter-definitions-by-group.json
239.9 KiB ../packages/quill/packages/quill/dist/index.js
217.5 KiB ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
153.8 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
102.1 KiB src/products.tsx
94.5 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
92.5 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 PostHog#32479

✅ Toolbar bundle — eager 2.30 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.30 MiB · 18 files 🔺 +9.5 KiB (+0.4%) ████░░░░░░ 40.3% of 5.72 MiB
Deferred (lazy) 2.11 MiB · 40 files no change n/a — loads on demand
Loader dist/toolbar.js 1.2 KiB no change █░░░░░░░░░ 6.0% of 19.5 KiB
Largest eagerly-shipped chunks
Size File
914.9 KiB dist/toolbar/toolbar-app-IWMSDEIE.css
694.7 KiB dist/toolbar/chunk-chunk-QC5IAHEQ.js
259.9 KiB dist/toolbar/chunk-chunk-WGO24YVJ.js
131.8 KiB dist/toolbar/chunk-chunk-FDH2IBXT.js
130.4 KiB dist/toolbar/chunk-chunk-BMYOU6DS.js
74.8 KiB dist/toolbar/toolbar-app-X2KXA7ED.js
69.0 KiB dist/toolbar/chunk-chunk-TSAL54PB.js
35.6 KiB dist/toolbar/chunk-chunk-ZN36Z66T.js
21.7 KiB dist/toolbar/chunk-chunk-DSUUMA6S.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 — 🔺 +2.89 MiB (+0.3%)

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

Total: 972.19 MiB · 🔺 +2.89 MiB (+0.3%)

ℹ️ MCP UI apps size — 35 app(s), 29001.2 KB JS

Built size of each MCP UI app (main.js + styles.css).

App JS CSS
debug 844.3 KB 211.1 KB
explain-chart 1005.6 KB 211.1 KB
action 767.7 KB 211.1 KB
action-list 835.3 KB 211.1 KB
cohort 766.7 KB 211.1 KB
cohort-list 834.3 KB 211.1 KB
email-template 766.6 KB 211.1 KB
error-details 771.6 KB 211.1 KB
error-issue 768.9 KB 211.1 KB
error-issue-list 836.8 KB 211.1 KB
experiment 832.4 KB 211.1 KB
experiment-list 836.1 KB 211.1 KB
experiment-results 835.0 KB 211.1 KB
feature-flag 834.7 KB 211.1 KB
feature-flag-list 838.4 KB 211.1 KB
feature-flag-testing 770.0 KB 211.1 KB
inline-scan 767.2 KB 211.1 KB
insight-actors 833.8 KB 211.1 KB
llm-costs 831.1 KB 211.1 KB
session-recording 769.0 KB 211.1 KB
survey 768.3 KB 211.1 KB
survey-global-stats 831.1 KB 211.1 KB
survey-list 836.0 KB 211.1 KB
survey-stats 831.1 KB 211.1 KB
trace-span 767.1 KB 211.1 KB
trace-span-list 835.2 KB 211.1 KB
vision-observation-list 834.4 KB 211.1 KB
workflow 767.1 KB 211.1 KB
workflow-list 834.7 KB 211.1 KB
workflow-setup-status 766.7 KB 211.1 KB
query-results 1087.6 KB 211.1 KB
render-ui 1187.2 KB 211.1 KB
visual-review-snapshots 771.6 KB 211.1 KB
workflow-data-suggestions 769.4 KB 211.1 KB
workflow-sending-rules 768.1 KB 211.1 KB
ℹ️ MCP agent API — agent-facing tool changes

What this PR changes for agents, from the tool schema snapshots and tool definitions.

Tools added (4): explain-chart, feature-flag-rules-update (1,327 chars), warehouse-suggestions-assign (496 chars), workflows-reputation-get (658 chars)

Tools changed (22):

Tool Params Scopes Annotations Schema chars
aeo-prompts-stats-get description changed
apm-trace-get 997 -> 1,000
dashboard-create description changed
dashboard-update description changed
experiment-calculate-running-time 3,177 -> 3,414
experiment-results-get description changed
feature-flag-disable +version description changed 143 -> 481
feature-flag-enable +version description changed 143 -> 481
generate-app-url 10,749 -> 10,860
inbox-report-reviewers-update +removal_note +removal_reason description changed 3,495 -> 4,361
inbox-reports-bulk-set-state 5,077 -> 5,200
inbox-reports-leave-reviewers +removal_note +removal_reason description changed 135 -> 893
inbox-reports-list description changed 8,837 -> 9,037
inbox-reports-set-state 4,808 -> 4,931
insight-create 14,727 -> 14,719
insight-update 14,889 -> 14,881
query-error-tracking-issues-list +firstSeenAfter description changed 6,624 -> 6,832
warehouse-suggestions-list +assignee_id description changed 863 -> 970
workflows-list +latest_send_first 3,001 -> 3,193
workflows-list-proposals +id +limit +offset +status n/a -> 480
workflows-suggest +base_version +content +evidence +id +rationale +source_id +step_id +title n/a -> 1,988
workflows-version-stats +after +before +breakdown_by +id +instance_id +interval +kind +name ... 1 more n/a -> 1,470

This branch has not been deployed

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.