From 5dddcd52a1bd6dbbb7a8d0b76909dd23ecbdae3b Mon Sep 17 00:00:00 2001 From: JonasBa Date: Thu, 11 Dec 2025 15:57:16 -0800 Subject: [PATCH 1/5] theme: remove chonk feature flags --- src/sentry/features/temporary.py | 6 --- src/sentry/web/frontend/react_page.py | 14 +---- tests/sentry/web/frontend/test_react_page.py | 57 -------------------- 3 files changed, 1 insertion(+), 76 deletions(-) diff --git a/src/sentry/features/temporary.py b/src/sentry/features/temporary.py index 402cddf01ba822..45801e4d6cf0e8 100644 --- a/src/sentry/features/temporary.py +++ b/src/sentry/features/temporary.py @@ -68,14 +68,8 @@ def register_temporary_features(manager: FeatureManager) -> None: manager.add("organizations:detailed-data-for-seer", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False) # Enable GenAI features such as Autofix and Issue Summary manager.add("organizations:autofix-seer-preferences", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) - # Enables Chonk UI - manager.add("organizations:chonk-ui", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) - # Enables Chonk UI - manager.add("organizations:chonk-ui-enforce", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) # Enables Route Preloading manager.add("organizations:route-intent-preloading", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) - # Enables Chonk UI Feedback button - manager.add("organizations:chonk-ui-feedback", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) # Enable Prevent AI code review to run per commit manager.add("organizations:code-review-run-per-commit", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False) # Enabled for orgs that participated in the code review beta diff --git a/src/sentry/web/frontend/react_page.py b/src/sentry/web/frontend/react_page.py index 5662cc83d99fbe..9d47104cde91c8 100644 --- a/src/sentry/web/frontend/react_page.py +++ b/src/sentry/web/frontend/react_page.py @@ -101,18 +101,6 @@ def handle_react( ): user_theme = f"theme-{react_config['user']['options']['theme']}" - prefers_chonk_ui = False - if organization is not None and features.has("organizations:chonk-ui", organization): - if features.has("organizations:chonk-ui-enforce", organization): - prefers_chonk_ui = True - - if ( - prefers_chonk_ui is False - and react_config.get("user", None) - and react_config["user"].get("options", {}).get("prefersChonkUI", False) - ): - prefers_chonk_ui = react_config["user"]["options"]["prefersChonkUI"] - context = { "CSRF_COOKIE_NAME": settings.CSRF_COOKIE_NAME, "meta_tags": [ @@ -127,7 +115,7 @@ def handle_react( "org_context": org_context, "react_config": react_config, "user_theme": user_theme, - "prefers_chonk_ui": prefers_chonk_ui, + "prefers_chonk_ui": True, } # Force a new CSRF token to be generated and set in user's diff --git a/tests/sentry/web/frontend/test_react_page.py b/tests/sentry/web/frontend/test_react_page.py index 9d871521c46ccf..35e8f311e26fda 100644 --- a/tests/sentry/web/frontend/test_react_page.py +++ b/tests/sentry/web/frontend/test_react_page.py @@ -452,60 +452,3 @@ def test_preconnect(self) -> None: ' None: - user = self.create_user("bar@example.com") - org = self.create_organization(owner=user) - self.login_as(user) - - with self.feature( - { - "organizations:chonk-ui": [org.slug], - "organizations:chonk-ui-enforce": [org.slug], - } - ): - response = self.client.get("/issues/", HTTP_HOST=f"{org.slug}.testserver") - assert response.status_code == 200 - assert response.context["prefers_chonk_ui"] is True - - def test_prefers_chonk_ui_user_preference(self) -> None: - from sentry.users.models.user_option import UserOption - - user = self.create_user("bar@example.com") - org = self.create_organization(owner=user) - self.login_as(user) - - UserOption.objects.set_value(user=user, key="prefers_chonk_ui", value=True) - - with self.feature({"organizations:chonk-ui": [org.slug]}): - response = self.client.get("/issues/", HTTP_HOST=f"{org.slug}.testserver") - assert response.status_code == 200 - assert response.context["prefers_chonk_ui"] is True - - def test_prefers_chonk_ui_disabled(self) -> None: - user = self.create_user("bar@example.com") - org = self.create_organization(owner=user) - self.login_as(user) - - response = self.client.get("/issues/", HTTP_HOST=f"{org.slug}.testserver") - assert response.status_code == 200 - assert response.context["prefers_chonk_ui"] is False - - def test_prefers_chonk_ui_enforce_overrides_user_preference(self) -> None: - from sentry.users.models.user_option import UserOption - - user = self.create_user("bar@example.com") - org = self.create_organization(owner=user) - self.login_as(user) - - UserOption.objects.set_value(user=user, key="prefers_chonk_ui", value=False) - - with self.feature( - { - "organizations:chonk-ui": [org.slug], - "organizations:chonk-ui-enforce": [org.slug], - } - ): - response = self.client.get("/issues/", HTTP_HOST=f"{org.slug}.testserver") - assert response.status_code == 200 - assert response.context["prefers_chonk_ui"] is True From 39b6a6d880a1d6114629b8d480ecf1d0113c7b35 Mon Sep 17 00:00:00 2001 From: JonasBa Date: Fri, 12 Dec 2025 10:36:45 -0800 Subject: [PATCH 2/5] theme: remove prefers_chonk_ui --- .../templates/sentry/partial/loader.html | 18 ------------------ src/sentry/users/api/endpoints/user_details.py | 1 - src/sentry/users/api/serializers/user.py | 1 - src/sentry/users/models/user_option.py | 2 -- src/sentry/web/frontend/react_page.py | 1 - .../users/api/endpoints/test_user_details.py | 1 - 6 files changed, 24 deletions(-) diff --git a/src/sentry/templates/sentry/partial/loader.html b/src/sentry/templates/sentry/partial/loader.html index 69c94019bdf078..3980f4b08e6919 100644 --- a/src/sentry/templates/sentry/partial/loader.html +++ b/src/sentry/templates/sentry/partial/loader.html @@ -1,6 +1,5 @@ {% load sentry_assets sentry_helpers %} -{% if prefers_chonk_ui %}
@@ -133,20 +132,3 @@
- -{% else %} - -
-
- -
- -
- -
-

{% loading_message %}

-

You may need to disable adblocking extensions to load Sentry.

-
-
- -{% endif %} diff --git a/src/sentry/users/api/endpoints/user_details.py b/src/sentry/users/api/endpoints/user_details.py index b34edb295d86da..e24437aa777cee 100644 --- a/src/sentry/users/api/endpoints/user_details.py +++ b/src/sentry/users/api/endpoints/user_details.py @@ -304,7 +304,6 @@ def put(self, request: Request, user: User) -> Response: "defaultIssueEvent": "default_issue_event", "clock24Hours": "clock_24_hours", "prefersIssueDetailsStreamlinedUI": "prefers_issue_details_streamlined_ui", - "prefersChonkUI": "prefers_chonk_ui", } options_result = serializer_options.validated_data diff --git a/src/sentry/users/api/serializers/user.py b/src/sentry/users/api/serializers/user.py index 78e2f03240a13e..ddaf4d88acb229 100644 --- a/src/sentry/users/api/serializers/user.py +++ b/src/sentry/users/api/serializers/user.py @@ -215,7 +215,6 @@ def serialize( "prefersIssueDetailsStreamlinedUI": options.get( "prefers_issue_details_streamlined_ui" ), - "prefersChonkUI": options.get("prefers_chonk_ui"), } d["flags"] = {"newsletter_consent_prompt": bool(obj.flags.newsletter_consent_prompt)} diff --git a/src/sentry/users/models/user_option.py b/src/sentry/users/models/user_option.py index 56e3a02134b763..67fa58efc4ddf8 100644 --- a/src/sentry/users/models/user_option.py +++ b/src/sentry/users/models/user_option.py @@ -164,8 +164,6 @@ class UserOption(Model): - unused - prefers_issue_details_streamlined_ui - Whether the user prefers the new issue details experience (boolean) - - prefers_chonk_ui - - Whether the user prefers the new Chonk UI experience (boolean) - language - which language to display the app in - mail:email diff --git a/src/sentry/web/frontend/react_page.py b/src/sentry/web/frontend/react_page.py index 9d47104cde91c8..61ec348dc46ff5 100644 --- a/src/sentry/web/frontend/react_page.py +++ b/src/sentry/web/frontend/react_page.py @@ -115,7 +115,6 @@ def handle_react( "org_context": org_context, "react_config": react_config, "user_theme": user_theme, - "prefers_chonk_ui": True, } # Force a new CSRF token to be generated and set in user's diff --git a/tests/sentry/users/api/endpoints/test_user_details.py b/tests/sentry/users/api/endpoints/test_user_details.py index ca74af1d22f8fe..6b792020ea635c 100644 --- a/tests/sentry/users/api/endpoints/test_user_details.py +++ b/tests/sentry/users/api/endpoints/test_user_details.py @@ -143,7 +143,6 @@ def test_simple(self) -> None: assert UserOption.objects.get_value( user=self.user, key="prefers_issue_details_streamlined_ui" ) - assert UserOption.objects.get_value(user=self.user, key="prefers_chonk_ui") assert not UserOption.objects.get_value(user=self.user, key="extra") From 6ad1d5dca7160c0b71a93d12baff3838dc36f26d Mon Sep 17 00:00:00 2001 From: JonasBa Date: Fri, 12 Dec 2025 11:06:56 -0800 Subject: [PATCH 3/5] theme: remove lingering chonk usage --- tests/sentry/users/api/endpoints/test_user_details.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/sentry/users/api/endpoints/test_user_details.py b/tests/sentry/users/api/endpoints/test_user_details.py index 6b792020ea635c..4a959b5128cd3d 100644 --- a/tests/sentry/users/api/endpoints/test_user_details.py +++ b/tests/sentry/users/api/endpoints/test_user_details.py @@ -49,7 +49,6 @@ def test_lookup_self(self) -> None: assert resp.data["options"]["stacktraceOrder"] == int(StacktraceOrder.DEFAULT) assert not resp.data["options"]["clock24Hours"] assert not resp.data["options"]["prefersIssueDetailsStreamlinedUI"] - assert not resp.data["options"]["prefersChonkUI"] def test_superuser_simple(self) -> None: self.login_as(user=self.superuser, superuser=True) @@ -120,7 +119,6 @@ def test_simple(self) -> None: "clock24Hours": True, "extra": True, "prefersIssueDetailsStreamlinedUI": True, - "prefersChonkUI": True, }, ) From bfb98576d3198f1b31f8911b370bb1e8233b3de7 Mon Sep 17 00:00:00 2001 From: JonasBa Date: Fri, 12 Dec 2025 11:17:32 -0800 Subject: [PATCH 4/5] theme: remove lingering chonk usage --- src/sentry/users/api/serializers/user.py | 1 - static/app/types/user.tsx | 1 - 2 files changed, 2 deletions(-) diff --git a/src/sentry/users/api/serializers/user.py b/src/sentry/users/api/serializers/user.py index ddaf4d88acb229..fc67e058f7dd5f 100644 --- a/src/sentry/users/api/serializers/user.py +++ b/src/sentry/users/api/serializers/user.py @@ -73,7 +73,6 @@ class _UserOptions(TypedDict): timezone: str clock24Hours: bool prefersIssueDetailsStreamlinedUI: bool | None - prefersChonkUI: bool | None class UserSerializerResponseOptional(TypedDict, total=False): diff --git a/static/app/types/user.tsx b/static/app/types/user.tsx index 9399671a279325..1d912f6b312e0f 100644 --- a/static/app/types/user.tsx +++ b/static/app/types/user.tsx @@ -51,7 +51,6 @@ export interface User extends Omit { clock24Hours: boolean; defaultIssueEvent: 'recommended' | 'latest' | 'oldest'; language: string; - prefersChonkUI: boolean | null; prefersIssueDetailsStreamlinedUI: boolean | null; stacktraceOrder: StacktraceOrder; theme: 'system' | 'light' | 'dark'; From 45b2da11211f5181265ee4fe5ada49a2933fc7d7 Mon Sep 17 00:00:00 2001 From: JonasBa Date: Mon, 15 Dec 2025 11:03:10 -0800 Subject: [PATCH 5/5] user: remove chonk from user details --- src/sentry/users/api/endpoints/user_details.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/sentry/users/api/endpoints/user_details.py b/src/sentry/users/api/endpoints/user_details.py index e24437aa777cee..3f8cc0faf7087f 100644 --- a/src/sentry/users/api/endpoints/user_details.py +++ b/src/sentry/users/api/endpoints/user_details.py @@ -135,7 +135,6 @@ class UserOptionsSerializer(serializers.Serializer[UserOption]): required=False, ) prefersIssueDetailsStreamlinedUI = serializers.BooleanField(required=False) - prefersChonkUI = serializers.BooleanField(required=False) class BaseUserSerializer(CamelSnakeModelSerializer[User]):