next.js
84457f4e - Turbopack: compute code hash per `use cache` function (#94234)

Commit
46 days ago
Turbopack: compute code hash per `use cache` function (#94234) This computes the implementation hash of a given `use cache`: - it includes the module containing the `use cache` function, plus all transitive imports of that module (including externals via NFT) - what does it hash - for bundled code, it hashes the generated code (so including any AST transforms, inlined env vars, etc) - for NFTd files, it hashes the file content on disk - So this is basically equivalent to hashing the generated JS chunks, except that it's scoped to only what the given actions module uses - (so notably, if you have multiple use cache functions in a given file, then they will all have the same hash) <br/> - [x] Gate behind experimental flag - [x] Only compute hash for `use cache` functions, not all server actions - [ ] `final_read_hint` is a problem. Some chunk items are now codgened twice, so it recomputes the AST - [x] disable for dev for now - [ ] Measure perf impact ```jsonc // .next/server/server-reference-manifest.json { "node": { "806f4954cfbb75404a19d6d405065ed9059cc0cab2": { "workers": { "app/rsc/page": { "moduleId": "[project]/bench/app-router-server/.next-internal/server/app/rsc/page/actions.js { ACTIONS_MODULE0 => \"[project]/bench/app-router-server/app/rsc/logic.js [app-rsc] (ecmascript)\" } [app-rsc] (server actions loader, ecmascript)", "async": false, "exportedName": "$$RSC_SERVER_CACHE_0", "filename": "bench/app-router-server/app/rsc/logic.js", "codeHash": "413e394d9597b35df12828a6a7fd6363" // <------------ } }, "filename": "bench/app-router-server/app/rsc/logic.js", "exportedName": "$$RSC_SERVER_CACHE_0" } }, "edge": {}, "encryptionKey": "jOF2TbpNLjp2oOhl3VPBwGE7luodnei9clJPq/gaYQo=" } ```
Author
Parents
Loading