New Features ✨
Apigw
- Expose proxy latency metrics by target by @gi0baro in #116086
- Add non-orgid/slug endpoints to proxied cell requests by @gi0baro in #115930
Autofix
- Allow non seat based seer to skip setup in #116208
- Switch inspection to single llm call using gemini flas… by @Zylphrex in #116071
- Autofix introspection analytics by @Zylphrex in #115891
- Add UI labels for missing AutofixReferrer values by @chromy in #115655
- Render line numbers in autofix evidence by @Zylphrex in #115649
Cells
- Remove cross-org feature gating from notification settings by @lynnagara in #115829
- Add cell-routing mode to devservices by @lynnagara in #115737
Cmdk
- Add Open in Production and Open in Development actions in #116242
- Freeze visible action list during keyboard navigation in #115851
- Add project search action to command palette by @JonasBa in #115591
Conversations
- Add copy conversation as markdown button in #116171
- Swap badge from alpha to beta by @obostjancic in #115712
- Add Amplitude analytics to conversation pages by @obostjancic in #115622
Dashboards
- Add span-first support for web vital dashboard in #115882
- Validate display type against dataset config by @DominikB2014 in #115951
- Require metric_unit in AI tracemetrics aggregates by @DominikB2014 in #116101
- Teach AI dashboard generator the tracemetrics aggregate format by @DominikB2014 in #115480
Explore
- Heatmap tooltip trace links by @nikkikapadia in #115925
- Link to aggregates from dropdown by @nsdeschenes in #115789
- Add Heat Map widget to Explore metrics by @gggritso in #115608
Github Enterprise
- Add frontend pipeline steps for GHE integration setup in #114367
- Add API-driven pipeline backend for GHE integration setup in #114366
- Allow github.com as a source for the GitHub Enterprise integration by @tnt-sentry in #115599
Issues
- Bring back
SEER_PR_CREATEDactivity creation and hide from timeline in #116233 - Two-column activity icons, colors by @scttcper in #115958
- Unify issue activity streams by @scttcper in #115848
- Add activity feed v2 flag by @scttcper in #115966
- Consolidate activity comment input by @scttcper in #115824
- Replace DebugMeta store with context by @scttcper in #115842
Low Value Spans
- Add configuration issue UI in #116271
- Add Snuba referrer for detector by @vgrozdanic in #115980
- Add low-value span issue UI by @ArthurKnaus in #115870
- Add low-value span issue type by @ArthurKnaus in #115868
Onboarding
- Link selected repository to project after creation by @wedamija in #115761
- Update Hono onboarding with
@sentry/honoby @s1gr1d in #115476
Ourlogs
- Reduce modal export rows limit to 10k by @JoshuaKGoldberg in #116180
- Show estimated total dataset size in needle-in-haystack searches by @JoshuaKGoldberg in #115731
- Implement pinned logs with sticky header (part 1) by @JoshuaKGoldberg in #115102
- Add 'Group by attribute' to log property context menu by @JoshuaKGoldberg in #115420
Preprod
- Display snapshot image tags in card headers in #115723
- Display images_skipped in snapshot table by @NicoHinderling in #116074
- Add images_skipped to builds API response by @NicoHinderling in #116073
- Display skipped images in snapshots UI by @NicoHinderling in #116041
- Expose is_selective flag in snapshot details API response by @NicoHinderling in #115832
- Add Snapshot status check rules API by @cameroncooke in #115621
Search
- Add recommended sort option to issue stream dropdown in #116197
- Surface recommended sort in UI when active via query param in #116186
- Register feature flag for recommended issue sort by @roggenkemper in #116191
Seer
- Add structured LLM context for replay list and detail pages in #116045
- Always show action buttons in explorer chat blocks by @ChrisandraVaz in #116049
- Add bulk Seer project connected repos endpoint by @srest2021 in #115942
- Add Seer project connected repo endpoint by @srest2021 in #115199
- Add structured LLM context for explore logs trace route by @Mihir-Mavalankar in #116036
- Add CRUD helpers for Seer project repos by @srest2021 in #115904
- Add structured LLM context for issue detail sub-tabs by @Mihir-Mavalankar in #115936
- Add bulk-project Seer settings endpoint by @srest2021 in #115234
- Add helper for bulk updating Seer project settings by @srest2021 in #115756
- Scope /conversations slash command lookup with start/end/project by @chromy in #115785
- Add single-project Seer settings endpoint by @srest2021 in #115230
- Add SeerRun FK to SeerNightShiftRun by @trevor-e in #115694
- Add SeerWorkflowConfig model and link to night shift runs by @trevor-e in #115615
- Mirror last_triggered_at to SeerRun on autofix triggers by @trevor-e in #115611
Tracemetrics
- Include equations in Add to Dashboard by @narsaynorath in #116141
- Convert equation alias to full equation for queries by @narsaynorath in #116047
- Open in Explore for metrics dashboard widgets by @narsaynorath in #115805
- Lazy load trace details per metric by @nsdeschenes in #115066
Webhooks
- Add dry run check to sentry app webhook path in #116265
- Add payload validation during dual-write migration in #116040
- Add metrics for legacy webhook migration validation by @Christinarlong in #116039
- Wire new service with feature-flagged routing by @Christinarlong in #115747
- Add standalone legacy webhook service module by @Christinarlong in #115688
- Register legacy webhook migration feature flags by @Christinarlong in #115669
Other
- (aci) Add sort param to workflow group history endpoint in #116031
- (alerts) Add cleanup task to NotificationMessage in #116027
- (amplitude) Track whether users are viewing sentry-built dashboards by @bcoe in #116138
- (api-docs) Publish project event details endpoint in #116059
- (apigateway) Add separated async
apigwpackage by @gi0baro in #115624 - (button) Add
sizeprop toButtonBarviaSizeContextby @natemoo-re in #115728 - (ci) Add merge_base_strategy tag to Jest CI runs by @ryan953 in #115967
- (data-forwarding) Enable retries for data forwarders via task dispatch by @leeandher in #115511
- (dev) Add SENTRY_CELL_ROUTING env var that runs cell-routing mode locally by @lynnagara in #115852
- (dynamic-sampling) Add per-project volume query in #114286
- (examples) Add task that produces by @bmckerry in #115820
- (explorer) Add query parameter to explorer-runs API by @JonasBa in #115760
- (integrations) Disable auth token creation button without perms by @cvxluo in #115769
- (markdown) Expose default components via
Defaultprop by @natemoo-re in #115745 - (options) Add timing metric to options.get() by @kenzoengineer in #115762
- (profiling) Add task for taskbroker passthrough mode by @untitaker in #115065
- (repositories) Add project repo-link endpoint by @wedamija in #115754
- (routes) Add redirect from /snapshots/ to explore releases by @NicoHinderling in #116053
- (scm) Add streaming integration-proxy which accepts any 'Accepts' header value by @cmanallen in #115917
- (self-healing) Add support for seer activities in workflow engine by @saponifi3d in #115933
- (settings) Add 'Recent Error Events' column to project environments by @JoshuaKGoldberg in #115902
- (source-map-config-issues) Updating processing errors metric by @Abdkhan14 in #115822
- (spans) Add separate Redis cluster setting for span deduplication by @untitaker in #116010
- (trace-waterfall) Small tweaks to trace-waterfall tab by @nsdeschenes in #115584
- (ui) Add debug FeatureBadge variant by @chromy in #116000
- Flags and rpc for frontend code search tool by @shruthilayaj in #116098
- Add SENTRY_ALLOWED_IPS to allow IP, overwrite SENTRY_DISALLOWED… by @fe80 in #115773
- Add Relay measurements conversion feature by @loewenheim in #115979
- Track read options via seen logline by @joshuarli in #115610
- Add toggle to migrate to billing platform by @noahsmartin in #115895
Bug Fixes 🐛
Alerts
- Handle gte/lte condition types in metric alert serializers by @kcons in #115972
- Update migration to not remove FK to group by @ceorourke in #115932
- Surface API error messages in create/update toasts by @malwilley in #115894
- Batch NotificationMessage delete metric alert rows by @ceorourke in #115726
Api
- Correctly parse
fullparameter in project events endpoint in #116216 - Validate IDs in OrganizationGroupIndexEndpoint.delete by @kcons in #115770
Conversations
- Restore side-by-side layout for platform option dropdown in #116272
- Improve tool badge rendering and overflow behavior by @obostjancic in #115880
- Improve truncation of non-UUID conversation IDs by @sentry-junior in #115978
Dashboards
- Raise widget description limit to 350 by @DominikB2014 in #116185
- Propagate global filters in Open in Issues link by @DominikB2014 in #116105
- Stop widget header action clicks from bubbling by @skaasten in #116096
- Anchor Editors dropdown to the right edge of the trigger by @skaasten in #116104
- Reset table fields when switching from details widget by @DominikB2014 in #115788
- Prevent sticky navbar misalignment on scroll by @priscilawebdev in #115716
Discover
- Add missing check for DiscoverSavedQueryVisitEndpoint in #116187
- Add org id to project filter by @nsdeschenes in #116174
Dynamic Sampling
- Use the correct field name for dynamic sampling project id in #116279
- Update run_eap_spans_table_query_in_chunks to yield individual rows and adjust tests accordingly by @constantinius in #115995
Events
- Debug param wasn't being passed down correctly in #116152
- Correctly parse full parameter in group hashes endpoint in #116219
Explore
- Use unique ids for visuals in #116204
- Cross events date selector allow 7d anytime within 30 days by @nikkikapadia in #116099
- Increase strictness on URLs by @nsdeschenes in #115881
- Pymark fail on test for arrays in detail endpoint by @manessaraj in #115828
Integrations
- Validate user-provided IDs in webhooks by @kcons in #115910
- Replace useIntegrationTabs with nuqs useQueryState by @ryan953 in #115738
Issues
- Align collapsed activity row in #116266
- Fix undefined variable in
StreamGroupSerializerSnubafeature flag check in #116259 - Move user serialization out of loop in ignored issues handler in #116246
- Fix sidebar comment box horizontal overflow in #116209
- Match short id when combined with filters in #116153
- Make GroupSearchViewPermission fail closed for unknown object types by @roggenkemper in #116183
- Provide correct value for
search.sortSDK tag by @shashjar in #116065 - Use full URL for open link button in breadcrumb messages by @scttcper in #115911
- Enforce project access on event ID lookup endpoint by @oioki in #115784
- Stop double-emitting issue activities for Seer PR created by @shashjar in #115749
- Add int ID validation to a few endpoints by @kcons in #115690
- Search org members for note mentions by @scttcper in #115614
Metrics
- Resolve flaky metrics tab tests in #116280
- Default to largest interval when using heatmaps visualization by @nikkikapadia in #116129
Monitors
- Surface schedule config errors on cron form fields by @malwilley in #116016
- Add tooltip for disabled project in edits by @JoshuaKGoldberg in #115931
Onboarding
- Remove broken aria-label from RadioGroup radio inputs by @scttcper in #116032
- Include shared feedback for Hono onbarding by @s1gr1d in #115721
Perforce
- Update onboarding frontend for Unicode support by @mujacica in #116005
- Support Unicode Perforce server connections by @mujacica in #115775
Preprod
- Reduce snapshot download concurrency to prevent stream failures in #116267
- Reapply "Include image key and field path in snapshot validation errors" by @runningcode in #115987
- Remove native lazy loading from LazyImage component by @NicoHinderling in #115922
- Eliminate race condition in snapshot status check posting by @NicoHinderling in #115650
- Skip strict jsonschema for snapshot image metadata by @runningcode in #115720
- Restore extra field passthrough in snapshot image responses by @NicoHinderling in #115658
- Change snapshot image tags from list to dict by @NicoHinderling in #115643
Replays
- Shrink timeline hover timestamp in #116268
- Remove timeline icon z-index workaround in #116255
- Remove extra padding from BodyGrid in replayLayout by @sentry-junior in #116156
- Disable breadcrumbs autoscroll on user scroll by @JoshuaKGoldberg in #115914
- Correct query invalidation on refresh by @JoshuaKGoldberg in #115629
- Allow org admins to bulk delete replays by @jameskeane in #115886
- Make link copy button accessible and non-variable width by @JoshuaKGoldberg in #115598
Search
- Prevent Ask AI from doubling pasted query text in #116050
- Hide size limit prompt while filtering by @nsdeschenes in #115816
Seer
- Sort autofix project table by slug instead of name by @mrduncan in #115642
- Keep repo loading indicator active by @scttcper in #115854
- Pass issue short ID to coding agents by @JoshFerge in #115838
- Make ToolResult.content optional to prevent Pydantic validation error by @sentry in #115630
Settings
- Fix CI permission checkbox not reflecting state by @scttcper in #116055
- Restore title on accept-invite and accept-transfer pages by @natemoo-re in #116013
- Fix Seer drawer stopping point not changing on mutate from "No Automation" by @srest2021 in #115847
Snapshots
- Add instrumentation logging to snapshot download stream in #116079
- Add timeout override for snapshot download in emmett gateway by @NicoHinderling in #116078
Tests
- Don't include trace context in symbolicator snapshots in #116275
- Use findByRole for async options in opJsonPath.spec.tsx by @sentry in #115645
- Correct monitor form crontab test with fireEvent by @sentry in #115644
- Update staleTime and add default mocks for external issue tests by @sentry in #115646
Tracemetrics
- Use equation alias format for widget builder in #116213
- Expand selector dropdown menu width to 100% by @narsaynorath in #116026
- Drop placeholder unit and always use none by @narsaynorath in #116007
- Pass project and env in request filters for filter by @narsaynorath in #115920
Ui
- Add inset focus ring to SimpleTable header cells in #116276
- Increase dropdown z-index to appear above sidebar by @jameskeane in #116139
- Add self signed package to support https by @scttcper in #115941
Workflow Engine
- Sanitize corrupted dynamic_form_fields choice labels by @malwilley in #115855
- Normalize error.handled values to 0/1 by @kcons in #115740
Other
- (a11y) Add missing alt attributes to context icons and feedback images by @sentry-junior in #115772
- (agents) Use minVersion in SDK update alert for consistency by @obostjancic in #115714
- (api-docs) Correct event/replay/processing-error ID schemas in #116201
- (apigw) Disable asyncpg statement cache (issues with pgbouncer) by @gi0baro in #115992
- (attachments) Infer MIME type from filename when stored as octet-stream by @sentry-junior in #115977
- (auth) Verify primary email on password reset by @michelletran-sentry in #115651
- (autofix) Prevent loading spinner clip in artifact loading card by @priscilawebdev in #115988
- (billing) Added fix to convert snuba sentry enum to the proto enum for usage stats by @krithikravi in #115856
- (code-mapping) Update codeowners GET endpoint and tests in #116309
- (codeblock) Improve nested scroll by @natemoo-re in #115839
- (crons) De-flake "prefills with an existing monitor" test by @priscilawebdev in #115782
- (cross-events) Correct styling based off date selection by @nsdeschenes in #116124
- (cursored-scheduler) Recalculate batch size on tick interval change by @roggenkemper in #115888
- (data_export) Cap export row limit at 10k for all callers by @manessaraj in #116048
- (escalating) Register issue_velocity referrer in Referrer enum by @cvxluo in #115812
- (feedback) Downgrade log level for insufficient feedback count in #116247
- (forms) Preserve choice value types when submitting sentry app forms by @priscilawebdev in #115869
- (grouping) Parameterize error message fingerprint variables by @lobsterkatie in #115496
- (issue search) Fix invalid search query error message for device classes in #116243
- (issue-detection) Add plural KBLayouts_iPhone.dat to FileIO ignore list by @roggenkemper in #116182
- (jira) Bind JWT iss to body clientKey on install webhook by @michelletran-sentry in #114225
- (kafkapublisher) Leaks memory: rdkafka stats grow without poll() in #116123
- (members) Scope invite-request role updates to caller's allowed roles by @oioki in #115807
- (migrations) Get rid of progress bar by @ceorourke in #115691
- (mypy) Fix import location by @kcons in #115654
- (ourlogs) Reset column sort to default on third click by @JoshuaKGoldberg in #115751
- (pageFilters) Clear shift-click anchor on empty selection by @priscilawebdev in #115472
- (profiles) Indicate invalid page URL state as error by @JoshuaKGoldberg in #115897
- (profiling) Render single-sample continuous profile chunks in #116234
- (rate-limit) Tighten rate limits on test notification endpoints by @nora-shap in #115613
- (ratelimits) Handle AnonymousUser missing is_sentry_app attribute in #116251
- (relay) Make trustedRelays optional on Organization type by @TkDodo in #116014
- (releases) Pass Environment objects to get_latest_release by @mrduncan in #115637
- (repositories) Fix deletion ordering for ProjectRepository children by @wedamija in #115739
- (security) Add project-level access check to GroupEventJsonView by @roggenkemper in #116184
- (self-hosted) Avoid install wizard mail TLS/SSL immutable errors by @aldy505 in #114011
- (static) Add missing nonce attribute on app.js preload link by @oioki in #115984
- (supergroups) Move to post process task in #116195
- (tabs) Stop tooltips in overflowMenuItems from crashing the page by @TkDodo in #115993
- (traces) Handle deleted groups in trace endpoint in #116248
- (web) Redirect /scraps to stories by @priscilawebdev in #115776
- (webauthn) Handle missing WebAuthn challenge data in #116167
- (webhooks) Route sentry app actions through send_alert_webhook_v2 in new path in #115975
- (workflow) Use Group cache in get_group_to_groupevent by @kcons in #115960
- (workflows) Filter out workflows from other organizations in #116075
- Add catch-all path to explore route and redirect to index by @adrianviquez in #116066
- Revert "fix(ourlogs): stabilized column widths during scrolling (#115389)" by @getsentry-bot in 84d0139e
Documentation 📚
- (replays) Fix OpenAPI schema/example for replay details response by @JoshFerge in #115752
- (scraps) Render to HTML pattern by @natemoo-re in #115943
- (snapshots) Add public OpenAPI documentation for snapshot endpoints in #116231
Internal Changes 🔧
Admin
- Migrate forkCustomer off browserHistory by @evanpurkhiser in #115915
- Drop browserHistory and HOCs from ResultGrid by @evanpurkhiser in #115908
Alerts
- Clean up usage of AlertRuleSerializerResponse in #116218
- Remove AlertRuleSerializer in #116052
- Remove PUT and POST legacy paths for metric alerts by @ceorourke in #116017
- Fully remove metric alert columns on NotificationMessage by @ceorourke in #116025
- Remove legacy issue alert delete endpoint code by @ceorourke in #115954
- Add index on date_added, soft remove metric alert colu… by @ceorourke in #115823
- Remove legacy issue alert GET endpoint code by @ceorourke in #115948
- Migrate issue rule editor off browserHistory by @evanpurkhiser in #115924
- Remove legacy metric alerts code by @ceorourke in #115865
- Remove incident serializer usages by @ceorourke in #115845
- Remove legacy metric alert handlers by @ceorourke in #115850
- Remove metric alert columns on NotificationMessage by @ceorourke in #115578
- Replace AlertStore with GlobalAlertProvider + useGlobalAlerts by @evanpurkhiser in #115315
- Clean up old metric alert rows in NotificationMessage by @ceorourke in #115647
- Remove unused team alerts endpoints by @ceorourke in #115339
- Remove team alerts triggered modal by @ceorourke in #115336
Api
- Type nullable fields in the base group serializer by @cvxluo in #116068
- Move
GroupEventDetailsResponseto event serializer module by @cvxluo in #116058 - Resolve suggested_api from Django route names by @strongs in #115907
- Migrate auth-error navigation off browserHistory by @evanpurkhiser in #115935
- Move to_valid_int_id to a more central location by @kcons in #115581
Apigw
- Add
abort_with_jsonas an util, allow config httpx client limits by @gi0baro in #116037 - Enhance proxy implementation by @gi0baro in #115892
Autofix
- Remove SCM requirement from autofix in #116206
- Remove legacy autofix path from GroupAutofixEndpoint by @chromy in #116164
- Always use explorer mode in GroupAutofixEndpoint by @chromy in #116162
- Remove old useAutofixData hook by @Zylphrex in #116103
- Remove intelligence level from group ai autofix endpoint by @Zylphrex in #116145
- Add log for autofix introspection reason by @Zylphrex in #116132
- Remove unused autofix v1 UI by @Zylphrex in #116100
- Use new Markdown primitive in v3 cards by @priscilawebdev in #115879
- Check repo connected before starting autofix by @Zylphrex in #115648
Conversations
- Adopt scraps primitives for 4 wrappers by @priscilawebdev in #116082
- Default to 24h period in sidebar link by @obostjancic in #115873
Dashboards
- Remove text widget flag defintion in #116212
- Remove text widget flag references frontend in #116210
- Remove text widget flag references backend in #116207
- Migrate utils.tsx off browserHistory by @evanpurkhiser in #115923
- Migrate detail.tsx off browserHistory to useNavigate by @evanpurkhiser in #115903
Discover
- Migrate fieldRenderers off browserHistory by @evanpurkhiser in #115938
- Migrate transactionsList off browserHistory by @evanpurkhiser in #115926
- Migrate queryList off browserHistory by @evanpurkhiser in #115913
- Migrate savedQuery off browserHistory by @evanpurkhiser in #115912
- Migrate results.tsx off browserHistory by @evanpurkhiser in #115909
Dynamic Sampling
- In per org pipeline, retrieve the project ids in config retrieval, just once by @shellmayr in #115983
- Use already queried data when computing boosted release platform by @cmanallen in #115792
- Rename dynamic sampling status enum by @shellmayr in #115360
- Cleanup transaction based health check rule by @shellmayr in #115471
- Add status for snuba timeouts by @shellmayr in #115359
Eslint
- Turn on no-unsafe-member-access for scraps in #116004
- Add curly rule to prettier config section by @sentry-junior in #116158
- Enable no-unsafe-call for scraps by @TkDodo in #115981
- Enable no-unsafe-arguments in scraps by @TkDodo in #115877
- Enable no-unsafe-return for scraps by @TkDodo in #115722
Flags
- Remove organizations:dashboards-drilldown-flow in #115670
- Remove organizations:scoped-partner-oauth by @wedamija in #115675
- Remove organizations:dashboards-import by @wedamija in #115671
- Remove organizations:revoke-org-auth-on-slug-rename by @wedamija in #114807
- Remove organizations:tracemetrics-alerts gates (backend) by @wedamija in #115019
- Remove organizations:workflow-engine-metric-alert-group-by-creation by @wedamija in #114805
- Remove organizations:ourlogs-stats, replace with
organizations:explore-dev-featuresand move it to a permanent flag by @wedamija in #115673 - Remove organizations:tracemetrics-alerts gates (frontend) by @wedamija in #115018
- Remove organizations:performance-mep-reintroduce-histograms by @wedamija in #115674
- Remove organizations:ingest-through-trusted-relays-only by @wedamija in #115682
- Remove organizations:pr-page by @wedamija in #115686
- Remove organizations:performance-remove-metrics-compatibility-fallback by @wedamija in #115684
- Remove organizations:performance-transaction-name-only-search by @wedamija in #115685
- Remove organizations:starfish-mobile-ui-module by @wedamija in #115687
- Move organizations:init-sentry-toolbar to permanent by @wedamija in #115862
- Remove organizations:on-demand-metrics-extraction-experimental by @wedamija in #115683
- Remove organizations:view-hierarchies-options-dev by @wedamija in #115678
- Remove organizations:issues-suspect-tags by @wedamija in #115680
- Remove organizations:performance-spans-fields-stats by @wedamija in #115679
- Remove organizations:update-action-status by @wedamija in #115676
- Remove organizations:sentry-app-webhook-requests by @wedamija in #114813
Forms
- Migrate projectFiltersSettings to scraps form system by @TkDodo in #115783
- Migrate highlights settings by @priscilawebdev in #115778
- Migrate early features settings by @priscilawebdev in #115777
- Migrate keyRateLimitsForm off legacy Form by @priscilawebdev in #115265
- Migrate addCodeOwnerModal off legacy Form by @priscilawebdev in #115256
Instrumentation Issues
- Remove issue type config and types by @ArthurKnaus in #115718
- Remove fix section UI by @ArthurKnaus in #115717
- Remove nav entries and route by @ArthurKnaus in #115715
Issues
- Use standard logging pattern in group details endpoint in #116262
- Remove redundant check on
event_idin #116261 - Indicate duration when "Since First Seen" is selected in #115533
- Remove grouping store by @scttcper in #115970
- Remove the option gating custom tag resolver logic by @shashjar in #116024
- Add multiple property to select field schema by @amy-chen23 in #115814
- Prevent assigning issues to deactivated users by @amy-chen23 in #115668
- Update frontend types after removing unnecessary issue activity metadata for Seer actions by @shashjar in #115734
- Remove unnecessary structured metadata under issue activities for Seer actions by @shashjar in #115732
- Remove stray
use_flagpole_for_all_featuresusage by @lobsterkatie in #115537
Jest
- Mark flaky jest tests - 2026-05-25 by @cursor in #116121
- Mark flaky jest tests - 2026-05-18 by @cursor in #115729
Onboarding
- Convert CreateSampleEventButton to functional component by @ryan953 in #115830
- Adopt useModal in onboarding flows by @evanpurkhiser in #115127
Ourlogs
- Remove
expandedand window virtualizer from LogsInfiniteTable by @JoshuaKGoldberg in #115884 - Remove ourlogs-table-expando flag backend code by @JoshuaKGoldberg in #115794
- Remove ourlogs-table-expando flag frontend code by @JoshuaKGoldberg in #115793
Preprod
- Simplify project filtering in latest base snapshot endpoint in #116237
- Optimize snapshot download with connection reuse and progressive streaming by @NicoHinderling in #116051
- Use TimeToIdle instead of TimeToLive for upload expiration by @NicoHinderling in #116033
- Virtualize snapshot sidebar for 40k image builds by @NicoHinderling in #115836
- Replace snapshot status badges with plain text by @mtopo27 in #115659
- Remove deprecated snapshot detail TS types and update debug modal by @mtopo27 in #115653
- Remove deprecated comparison_run_info and approval_info from snapshot detail API by @mtopo27 in #115652
Replays
- Remove unused data export notifications endpoint in #116232
- Replace useFetchSequentialPages with useInfiniteQuery by @ryan953 in #116115
- Use shared platform icon resolver by @priscilawebdev in #115705
Repositories
- Simplify ProjectRepoLink serializer and make url better by @wedamija in #115826
- Drop old project/repository columns by @wedamija in #115741
- Remove
projectandrepocolumns fromSeerProjectRepositoryandRepositoryProjectPathConfigby @wedamija in #115663 - Add unique index on
repository_projectcolumns by @wedamija in #115662 - Remove feature flag branching for RepositoryProjectPathConfig reads by @wedamija in #115607
- Remove feature flag branching for SeerProjectRepository reads by @wedamija in #115606
Scm
- Merge integration-proxy endpoints by @cmanallen in #116028
- Add quota policy for GitHub API requests by @cmanallen in #115657
Seer
- Move agent access check from entrypoint to operator in #116143
- Use
elifinstead ofifin actionability filter logic for clarity in #116203 - Remove seer-slack-workflows and seer-slack-explorer flags in #116140
- Simplify block component states by @natemoo-re in #115589
- Persist Seer Explorer input draft per run by @aliu39 in #115919
- Replace chat history dropdown with searchable CompactSelect by @JonasBa in #115843
- Rm severity group-seer option by @kddubey in #115768
- Rm severity conditional routing by @kddubey in #115765
- Option to route severity to group-seer by @kddubey in #115702
Settings
- Update
actionprop and removehasPageFrameby @natemoo-re in #115815 - Update breadcrumbTitle spec for routes prop removal by @ryan953 in #115866
- Move routes from prop to useRoutes() in BreadcrumbTitle by @ryan953 in #115766
- Convert OrganizationAccessRequests to function component with fetchMutation by @ryan953 in #115813
- Replace billing navigation config with a react-hook by @evanpurkhiser in #115808
Slack
- Remove widget unfurl feature flags by @DominikB2014 in #116128
- Move ephemeral message sending to workspace module by @leeandher in #115586
Snuba
- Port query subscriptions consumer to taskbroker raw mode in #116288
- Update tests for removal of boolean double-writing in #111421
- Stop dropping deprecated spans dataset in reset_snuba by @phacops in #115973
- Add exception type for snuba timeouts by @shellmayr in #115362
Spans
- Remove tests for deprecated standalone spans storage in #116147
- Extract flush_segment pipeline helpers by @lvthanh03 in #116149
- Split load_segment_data into helper steps by @lvthanh03 in #116136
- Split process_spans into typed pipeline steps by @lvthanh03 in #115858
- Add back cumulative flusher log and flushed segments log by @lvthanh03 in #116015
- Extract span buffer observability models by @lvthanh03 in #115849
- Remove unused dropped_segments logic and zrem cleanup option by @lvthanh03 in #115806
- Add isolated load segment data coverage by @lvthanh03 in #115804
- Add add-buffer Lua script tests by @lvthanh03 in #115801
Ts
- Remove RouteComponent by @evanpurkhiser in #115999
- Remove unused RouteContextInterface type by @evanpurkhiser in #115996
Typing
- Remove
tests.sentry.api.helpers.test_group_indexfrom mypy ignore list in #116199 - Remove
tests.sentry.issues.test_utilsfrom mypy ignore list in #116070
Utils
- Make ParityChecker print out mismatches in a PII safe way in #116038
- Various clarifications in
SafeRolloutComparatorcode in #115946
Workflow Engine
Other
- (✂️) Remove form leftovers by @TkDodo in #115724
- (aci) Minor cleanup to delayed workflow processing by @saponifi3d in #115758
- (activity) Remove duplicate call to calculate initial priority from group metadata by @shashjar in #116067
- (api-docs) Add GroupDetailsResponse type, params, and example in #116113
- (autopilot) Delete autopilot module and all references by @vgrozdanic in #115466
- (billing) Bump sentry-protos to 0.13.0 in #116133
- (billing-platform) Log requests in service methods by @brendanhsentry in #115971
- (bootstrap) Parallelize locale and moment chunk fetches by @JonasBa in #115727
- (cells) Remove the includeFeatureFlags query param from the org listing request by @lynnagara in #115833
- (ci) Split MDX typechecking into its own gated job by @natemoo-re in #115744
- (compactSelect) Remove unused onSectionToggle callback by @TkDodo in #115809
- (deps) Update sentry conventions package by @nsdeschenes in #115989
- (detectors) Split connected and project alerts into separate sections by @malwilley in #115947
- (dynamic-ampling) Add a metric counter to see if we sometimes have implicit-factor < 1 by @constantinius in #115834
- (eap) Query typed-colon attribute as boolean instead of number in #116299
- (events) Migrate ContextIcon to platformicons by @priscilawebdev in #115701
- (explore) Port toolTags to scraps layout primitives by @priscilawebdev in #116160
- (flagpole-wildcard-ops) Adding support for not_matches op (python) by @Abdkhan14 in #115901
- (github-enterprise) Use monospace font for private key field in #116303
- (hooks) Replace HookStore with a plain hook registry by @evanpurkhiser in #115811
- (hookStore) Change HookStore to single-value semantics by @evanpurkhiser in #115796
- (integrations) Add backfill_github_external_actor.gh_api_fetch_interval_s by @hobzcalvin in #115763
- (issueDetails) Collapse ParticipantList wrapper div to a Flex by @evanpurkhiser in #116175
- (issueDiff) Refactor event data fetching to use useQueries in #116042
- (jira) Add Forge app manifest for Connect-to-Forge migration by @BYK in #115603
- (lint) Ban React.Fragment in favor of named Fragment import by @natemoo-re in #115939
- (metrics) Split metric attribute tree actions by @nsdeschenes in #115641
- (mypy) Rename sort_stronger_modules to sort_weaklist in #116106
- (np) Refactors notification context into a new class by @GabeVillalobos in #113495
- (organization-create) Drop dead browserHistory comment by @evanpurkhiser in #115928
- (overrides) Finish hook → override terminology rename by @evanpurkhiser in #115825
- (oxfmt) Ignore pyproject.toml by @sentry-junior in #116181
- (pipeline) Use Button busy prop for advancing state by @evanpurkhiser in #116179
- (plugins) Inline PluginComponentBase into its two subclasses by @ryan953 in #116112
- (profiling) Rename explore/profiling URL to explore/profiles in #115627
- (project-detail) Migrate projectCharts off browserHistory by @evanpurkhiser in #115916
- (releases) Convert ReleaseIssues to functional component by @ryan953 in #115698
- (replay) Rename Breadcrumbs tab to Activity by @DominikB2014 in #115278
- (routeAnalytics) Replace HookStore persistCallback with a plain module cell by @evanpurkhiser in #115810
- (saved-queries) Align list endpoint access checks with detail by @oioki in #115379
- (scraps) Adopt useModal in remaining call sites by @evanpurkhiser in #115132
- (search) Add EAP API attribute visibility checks in #116091
- (seer-explorer) Replace useSeerExplorerRunId with chat state context by @JonasBa in #115631
- (segments) Add local cache for release creation and modification by @cmanallen in #116173
- (snapshots) Batch image fetches and add timeouts for snapshot download by @NicoHinderling in #116076
- (source-map-processing-errors) Emitting metric irrespective of … by @Abdkhan14 in #115661
- (span-buffer) Remove flusher and buffer logger options by @untitaker in #115487
- (static) Add preload hint for app.js entrypoint by @JonasBa in #115800
- (tasks) Remove base64 encoding for bytes parameters in tasks in #116293
- (taskworker) Move devenv for profiles consumer to taskbroker in #116194
- (teams) Avoid organization N+1 in team projects by @scttcper in #115735
- (test) Remove router return from initializeOrg by @evanpurkhiser in #116002
- (tests) Replace
as jest.Mockcasts withjest.mocked()by @evanpurkhiser in #115790 - (trace) Migrate virtualizedViewManager off browserHistory by @evanpurkhiser in #115927
- (traceDrawer) Replace local SectionDivider/VerticalLine with Scraps Separator in #116168
- (types) Add mypy types for sentry.search.snuba.executors by @saponifi3d in #114994
- (ui) Upgrade lodash, figma connect by @scttcper in #115950
- (vercel) Add logs on failure to add project in #116235
- (workflows) Avoid a query on Organization in delayed_workflow by @kcons in #115965
- Instruct agents to prefer type inference over call-side generics in #116290
- Add right padding to seer header copy button in #116286
- Remove code coverage stacktrace insights in #115417
- Remove autopilot CODEOWNERS entries by @vgrozdanic in #116085
- Replace withOrganization with useOrganization in function components by @evanpurkhiser in #115343
- Remove withSentryRouter HOC by @evanpurkhiser in #115949
- Migrate useRouter callsites to native RR6 hooks by @evanpurkhiser in #115945
- Drop unused 'unmigratable' status literal from repo query types by @evanpurkhiser in #115906
- Remove unmigratable repositories code path by @evanpurkhiser in #115905
- Remove OrganizationConfigRepositoriesEndpoint by @evanpurkhiser in #115898
- Remove unused PUT handler from repository details endpoint by @evanpurkhiser in #115896
- Bump taskbroker-client to 0.1.15 by @bmckerry in #115799
- Mark legacy react-router shim hooks as deprecated by @ryan953 in #115767
- Merged Jest changedSince testing into main PR Jest job by @JoshuaKGoldberg in #115549
- Replace browserHistory with useNavigate in useCleanQueryParamsOnRouteLeave by @ryan953 in #115695
- Remove browserHistory by inlining navigate in upgradeNowModal callers by @ryan953 in #115755
- Bump platformicons to 9.5.0 by @priscilawebdev in #115707
- Bump new development version by @sentry-release-bot[bot] in 7ea81f9f
Other
- fix(relocation) Remove invalid token scopes during export in #116214
- chore(relocation) Exclude Email model from relocations v2 in #116256
- chore(cells) Mainline org create via control in #116046
- deps: Upgrade sentry-scm to 0.16.0 in #116215
- chore(relocation) Remove unused outbox handler by @markstory in #116030
- fix(relocation) Fix type errors when spawning a task by @markstory in #116130
- Fix category missing by @noahsmartin in #116056
- chore(relocations) Add bucket_path to RelocationFile by @markstory in #116035
- chore(cells) Remove rollout option for connection pooling by @markstory in #116011
- fix(ci) Don't capture log messages in RPC schema generation by @markstory in #116003
- fix(typing) Remove sentry.middleware.auth from the ignore list by @markstory in #115798
- feat(cells) Make organization avatar URL cell compatible by @markstory in #115689
- deps(ui): Upgrade Rspack to v2, 124 fewer dependencies by @scttcper in #113795
- o11y(seer): Track block content copy in Seer Explorer by @aliu39 in #115900
- org-scoped URL for page export by @strongs in #115844
- feat(cells) Use connection pools for cell RPC operations by @markstory in #115827
- lint: enable jest/prefer-jest-mocked by @evanpurkhiser in #115791
- feat(cells); Add org scoping to
GroupTagExportViewby @strongs in #115841 - Remove legacy code paths for the combined rule endpoint by @ceorourke in #115750
- Auto-create PRs for manual Seer handoff by @JoshFerge in #115831
- feat(cells) Provision new orgs through control with feature flag by @markstory in #115600
- Chore org index silo metrics by @markstory in #115664
- o11y(assisted-query): Track error outcomes and reasons for AI query analytics by @aliu39 in #115699
- deps(ui): Upgrade jest to 30.4 by @scttcper in #115725