diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index b84dea2e..4c4c06dc 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -35,7 +35,10 @@ import ErrorDialog from "./components/ErrorDialog";
import VersionBanner from "./components/VersionBanner";
import DemoBanner from "./components/DemoBanner";
import { focusAccessRequestsTab } from "./lib/adminUsersTab";
-import { CURRENT_VERSION } from "./lib/releaseNotes";
+// The built app version, NOT imported from releaseNotes — importing anything from that module
+// pulls its whole ~900-line changelog into the eager App chunk and defeats the lazy ReleaseNotes
+// split. FRONTEND_VERSION equals RELEASE_NOTES[0].version by release convention (both bump together).
+import { FRONTEND_VERSION } from "./lib/version";
// The page modules (and their side rails) are code-split per route via the module registry
// (components/moduleRegistry). App keeps only the persistent-shell chunks + the channel page and the
@@ -389,7 +392,7 @@ export default function App() {
banners={
<>
{meQuery.data!.is_demo && }
- openReleaseNotes(CURRENT_VERSION)} />
+ openReleaseNotes(FRONTEND_VERSION)} />
>
}
>
diff --git a/frontend/src/lib/releaseNotes.ts b/frontend/src/lib/releaseNotes.ts
index c9846456..09d8beb7 100644
--- a/frontend/src/lib/releaseNotes.ts
+++ b/frontend/src/lib/releaseNotes.ts
@@ -923,5 +923,3 @@ export const RELEASE_NOTES: ReleaseEntry[] = [
],
},
];
-
-export const CURRENT_VERSION = RELEASE_NOTES[0]?.version ?? "dev";