github getsentry/sentry 26.5.1

6 hours ago

New Features ✨

Apigw

Autofix

Cells

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

Dashboards

Explore

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

Low Value Spans

Onboarding

Ourlogs

Preprod

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

Tracemetrics

Webhooks

Other

Bug Fixes 🐛

Alerts

Api

  • Correctly parse full parameter 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

Discover

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

Integrations

Issues

  • Align collapsed activity row in #116266
  • Fix undefined variable in StreamGroupSerializerSnuba feature 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.sort SDK 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

Monitors

Onboarding

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

Search

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

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

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

Api

  • Type nullable fields in the base group serializer by @cvxluo in #116068
  • Move GroupEventDetailsResponse to 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

Autofix

Conversations

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

Forms

Instrumentation Issues

Issues

  • Use standard logging pattern in group details endpoint in #116262
  • Remove redundant check on event_id in #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_features usage 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

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

Repositories

  • Simplify ProjectRepoLink serializer and make url better by @wedamija in #115826
  • Drop old project/repository columns by @wedamija in #115741
  • Remove project and repo columns from SeerProjectRepository and RepositoryProjectPathConfig by @wedamija in #115663
  • Add unique index on repository_project columns 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

Seer

  • Move agent access check from entrypoint to operator in #116143
  • Use elif instead of if in 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 action prop and remove hasPageFrame by @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

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_index from mypy ignore list in #116199
  • Remove tests.sentry.issues.test_utils from mypy ignore list in #116070

Utils

  • Make ParityChecker print out mismatches in a PII safe way in #116038
  • Various clarifications in SafeRolloutComparator code in #115946

Workflow Engine

  • Remove unused const in #116230
  • Edit flag with the correct prefix in #116198

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.Mock casts with jest.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 GroupTagExportView by @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

Don't miss a new sentry release

NewReleases is sending notifications on new releases.