From 32d6ac05619e0eeac6797a4e2bc85bc3d2286057 Mon Sep 17 00:00:00 2001 From: Nate Moore Date: Fri, 14 Nov 2025 10:22:10 -0600 Subject: [PATCH 1/3] fix(ui2): check if --- src/sentry/web/frontend/react_page.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sentry/web/frontend/react_page.py b/src/sentry/web/frontend/react_page.py index 696ac919e1876b..cc4dfefe634518 100644 --- a/src/sentry/web/frontend/react_page.py +++ b/src/sentry/web/frontend/react_page.py @@ -96,8 +96,8 @@ def handle_react( user_theme = f"theme-{react_config['user']['options']['theme']}" prefers_chonk_ui = False - if features.has("organizations:chonk-ui", org_context): - if features.has("organizations:chonk-ui-enforce", org_context): + if organization is not None and features.has("organizations:chonk-ui", organization): + if features.has("organizations:chonk-ui-enforce", organization): prefers_chonk_ui = True elif react_config.get("user", None) and react_config["user"].get("options", {}).get( "prefersChonkUI", False From 76d01b31fedd9b5112e8061703929585fc1d427a Mon Sep 17 00:00:00 2001 From: Nate Moore Date: Fri, 14 Nov 2025 13:49:30 -0600 Subject: [PATCH 2/3] fix(loader): user preference as fallback --- src/sentry/web/frontend/react_page.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/sentry/web/frontend/react_page.py b/src/sentry/web/frontend/react_page.py index cc4dfefe634518..2d8eb2375ad8d6 100644 --- a/src/sentry/web/frontend/react_page.py +++ b/src/sentry/web/frontend/react_page.py @@ -99,10 +99,13 @@ def handle_react( if organization is not None and features.has("organizations:chonk-ui", organization): if features.has("organizations:chonk-ui-enforce", organization): prefers_chonk_ui = True - elif react_config.get("user", None) and react_config["user"].get("options", {}).get( - "prefersChonkUI", False - ): - prefers_chonk_ui = react_config["user"]["options"]["prefersChonkUI"] + + 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, From 85ab24a3b9a46cd65b91c107e570375d1e839679 Mon Sep 17 00:00:00 2001 From: Nate Moore Date: Fri, 14 Nov 2025 13:50:01 -0600 Subject: [PATCH 3/3] test(loader): add chonk-ui tests --- tests/sentry/web/frontend/test_react_page.py | 57 ++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/tests/sentry/web/frontend/test_react_page.py b/tests/sentry/web/frontend/test_react_page.py index 35e8f311e26fda..9d871521c46ccf 100644 --- a/tests/sentry/web/frontend/test_react_page.py +++ b/tests/sentry/web/frontend/test_react_page.py @@ -452,3 +452,60 @@ 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