#51792: perf: backport startup performance improvements to 43-x-y (#51602, #51697, #51703)
Backport of #51602
Backport of #51697
Backport of #51703
Manual backport of three stacked startup-performance changes to 43-x-y, in a single PR (they build on each other, so they backport together):
- #51602 — perf: push sandboxed renderer startup data via mojo and cache preload bytecode
- #51697 — perf: build-time V8 code cache for the
electron/js2cframework bundles - #51703 — perf: boot the browser process from an embedded Node startup snapshot
#51697 stacks on #51602, and #51703 stacks on #51697, so they are cherry-picked in merge order. All three were originally labeled no-backport; this PR backports them deliberately on request. They are semver/patch (internal performance work, no public API change).
The three originals are cherry-picked unchanged. One extra commit regenerates filenames.auto.gni for the bundle change in #51602 (it drops the lib/renderer/ipc-renderer-internal-utils.ts dependency from the sandboxed renderer bundle), so the gen-filenames --check CI step passes.
Notes: Improved app startup performance — the main process now boots from an embedded Node.js startup snapshot, framework bundles and preload scripts are cached as compiled V8 bytecode, and sandboxed renderer startup data is pushed ahead of navigation instead of fetched via blocking IPC. Preload stack traces now show the correct file path and line number.
Backport Information
Semver Impact
Semantic Versioning helps users understand the impact of updates:
- Major (X.y.z): Breaking changes that may require code modifications
- Minor (x.Y.z): New features that maintain backward compatibility
- Patch (x.y.Z): Bug fixes that don't change the API
- None: Changes that don't affect using facing parts of Electron