Repository navigation
feat(slack): Gate the React team link page behind an option - #130562
Open
sentry-junior[bot] wants to merge 2 commits into
Open
sentry-junior[bot] wants to merge 2 commits into
sentry-junior[bot] wants to merge 2 commits into
Conversation
Contributor
Sentry Snapshot Testing
|
sentry-junior
Bot
force-pushed
the
feat/slack-link-team-react-cutover
branch
from
November 10, 2026 00:35
d70ebaa to
55b6f27
Compare
sentry-junior
Bot
force-pushed
the
feat/slack-link-team-react-cutover
branch
from
November 10, 2026 00:44
55b6f27 to
7a2c89d
Compare
The React team link page can only fix multi-cell linking once Slack sends people to it on the primary domain, served from control instead of whichever cell received the command. Register `slack.link-team-react-enabled`, defaulting to false. When enabled, `/sentry link team` builds its link without the cell locality, the Slack request parser sends GET requests for the page to control, and `SlackLinkTeamView` serves the React app there. The Django form POST still runs in the cell, so a Django page that is already open can still submit after the switch. Keep the page on the primary domain in multi-region deployments, matching the OAuth pages. Co-Authored-By: Evan Purkhiser <evan.purkhiser@sentry.io> Co-Authored-By: Michi Hoffmann <michael.hoffmann@sentry.io>
The cell that handles /sentry link team only sees its own memberships, so a user whose qualifying org lives in another cell was told their role was insufficient before they ever saw a link. With the React page on, leave that check to the page, which lists linkable teams from every cell. In control, serve the React page for any GET instead of rereading the option. The parser already checked it, and a flip between the two reads would 404 a request the parser meant for React. Keep never_cache on that response, since it embeds user config and a CSRF token behind a signed URL. Cover the control and cell paths that only ran in monolith before. Co-Authored-By: Evan Purkhiser <evan.purkhiser@sentry.io> Co-Authored-By: Michi Hoffmann <michael.hoffmann@sentry.io>
sentry-junior
Bot
force-pushed
the
feat/slack-link-team-react-cutover
branch
from
November 10, 2026 00:57
7a2c89d to
2129988
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The React team link page only fixes multi-cell linking if Slack sends people to it on the primary domain, served from control. Today they land on whichever cell received the command (
cells[0], which happens to bede).This registers
slack.link-team-react-enabled, defaulting to false. When it's enabled:build_team_linking_urldrops the cell locality prefix, so links point atsentry.io.SlackRequestParsersends GET requests for the link-team page to control instead of the first cell.SlackLinkTeamViewis now an all-silo view and serves the React app for GET. Its@cell_silo_viewmoved off the abstractTeamLinkageView, which otherwise blocked control. The Django form POST still runs in the cell, so an already-open Django page can still submit. Unlink stays cell-only.sentry-integration-slack-link-teamjoinsMULTI_REGION_NON_CUSTOMER_DOMAIN_URL_NAMES, so an active org doesn't push the page onto a customer domain, the same as the OAuth pages. That also redirects links already sent on a cell domain to the primary domain./sentry link teamskips its role check. The cell only sees its own memberships, so someone whose qualifying org is in another cell was turned away before getting a link. The React page lists linkable teams from every cell and explains when there are none.Rollout:
cells[0], which is the bug this fixes.Removing the Django view, its templates, and the option will be a follow-up.
Stacked on #130561.
via evan.purkhiser.
--
View Session [Sentry]