perf(core): split monolithic worker bundle into lazy-loaded chunks#1085
Merged
perf(core): split monolithic worker bundle into lazy-loaded chunks#1085
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9bcebe9502
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
9bcebe9 to
cc46bc4
Compare
Convert snapshot and fakeTimers from static imports to dynamic imports, and extract assertion vendor deps into a stable named chunk. This reduces Worker startup cost by deferring code that is only needed on first use (snapshot matching, fake timers) and improves V8 compile cache hit rate via stable chunk filenames.
cc46bc4 to
a26c392
Compare
9aoy
approved these changes
Mar 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Benchmark
tested in Rstest self codebase.
unit test
sliced E2E test (exclude noisy cases like browser mode)
Summary
Background
The Worker process loaded a single monolithic 742KB chunk (
1949.js) at startup, containing all runtime dependencies including snapshot utilities and fake timers — even when they weren't needed for every test run. This added unnecessary parse/compile overhead to Worker initialization.Implementation
SnapshotPluginfrom a static import to a dynamicimport()increateRstestRuntime(), parallelized withcreateRunner()viaPromise.allFakeTimersfrom a static import to a dynamicimport()increateRstestUtilities()snapshotPluginan optional parameter oncreateExpect()(passed fromcreateRstestRuntimeafter dynamic load)vendor-assertionsplitChunks cache group to extract chai/@vitest/expect/spy/utils into a stable-named chunk for better V8 compile cache reuseUser Impact
Reduced Worker startup overhead by deferring ~165KB of code (snapshot + fake-timers) to first use. The stable
vendor-assertion.jschunk name improves V8 compile cache hit rate across rebuilds.Checklist