You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Build time regression since 1.0.0-beta.7: action owner manifest repeats getModuleInfo/resolve per route (#2520) #3414
Upgrading from 1.0.0-beta.6 to 1.0.0-beta.7 made our production build about 1.75x slower: 27.5s -> 49.7s locally (Apple M4 Max) and 137s -> 245s in CI. A local bisect points at #2520 (0736fdd). Its parent 6736c31 builds our app in 26.9s; 0736fdd takes 45.2s. The code is unchanged on main (07fa109) and in 1.0.0-beta.11.
Environment
App Router app with server actions, 380 routes, ~10.2k client modules
vite 8.1.5, @vitejs/plugin-rsc 0.5.35, next 16.3.5, Node 25
vinext:action-owner-manifest's generateBundle walks the final module graph once per route (collectRscActionReachability, addClientActionReachability in packages/vinext/src/build/action-owner-manifest.ts). Every walk calls Rolldown's this.getModuleInfo() for each visited module, with no reuse across routes. The client pass also awaits this.resolve() for every client reference of every route (resolveClientReferenceImportIds), serially.
Memoizing module info by id and resolved client reference ids by import id, per helper call, brings those passes down to 0.23s and 1.0s and the build back to beta.6 speed, with an identical action owner manifest. I have a small PR ready with that change and a regression test; it will follow this issue.
Activity