diff --git a/apps/web/src/components/ui/menu.tsx b/apps/web/src/components/ui/menu.tsx
index b66782ebe2d1..f3a2e99f7dc8 100644
--- a/apps/web/src/components/ui/menu.tsx
+++ b/apps/web/src/components/ui/menu.tsx
@@ -121,7 +121,7 @@ function MenuCheckboxItem({
<>
{children}
diff --git a/apps/web/src/components/ui/switch.test.tsx b/apps/web/src/components/ui/switch.test.tsx
new file mode 100644
index 000000000000..ae31b70a299f
--- /dev/null
+++ b/apps/web/src/components/ui/switch.test.tsx
@@ -0,0 +1,27 @@
+import { renderToStaticMarkup } from "react-dom/server";
+import { describe, expect, it } from "vite-plus/test";
+
+import { Menu, MenuCheckboxItem } from "./menu";
+import { Switch } from "./switch";
+
+describe("switch colors", () => {
+ it("keeps the unchecked track visible when a theme has a transparent input border", () => {
+ const html = renderToStaticMarkup();
+
+ expect(html).toContain("data-unchecked:bg-muted-foreground/30");
+ expect(html).not.toContain("data-unchecked:bg-input");
+ });
+
+ it("uses the same visible unchecked track in switch menu items", () => {
+ const html = renderToStaticMarkup(
+ ,
+ );
+
+ expect(html).toContain("data-unchecked:bg-muted-foreground/30");
+ expect(html).not.toContain("data-unchecked:bg-input");
+ });
+});
diff --git a/apps/web/src/components/ui/switch.tsx b/apps/web/src/components/ui/switch.tsx
index 4b65b5466bb0..c8adccfb52c1 100644
--- a/apps/web/src/components/ui/switch.tsx
+++ b/apps/web/src/components/ui/switch.tsx
@@ -8,7 +8,7 @@ function Switch({ className, ...props }: SwitchPrimitive.Root.Props) {
return (