Add browser bundle size checks - #640
Open
andrewiggins wants to merge 7 commits into
Open
Conversation
Contributor
|
We detected some changes in public packages, and there are no updates in the |
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.
What this changes
This adds browser bundle size checks for Remote DOM’s public packages.
The checks build the packages, bundle their public browser entry points with esbuild, compress the result with Brotli, and fail when a bundle grows past its limit. Core, Preact, and React have separate checks for host and remote code because those entry points run in different environments and are not normally shipped together.
The change also adds:
pnpm sizefor checking the limits locallypnpm size:whyfor generating bundle visualizationsBundle size 📦CI jobAll Size Limit configuration, fixtures, and dependencies live in the private
@remote-dom/size-limitworkspace package.Why
Remote DOM code can run on either side of a connection: host receivers and renderers run on the main thread, while remote authoring code and polyfills can run in an iframe or worker. Measuring those bundles separately makes it clearer which consumer is affected by a change.
The limits include regular dependencies but exclude framework peer dependencies supplied by the consuming application. They have 15% initial headroom, rounded up to 500-byte boundaries, so routine changes do not require constant budget updates.
Validation
pnpm install --frozen-lockfilepnpm lintpnpm type-checkpnpm testpnpm sizepnpm size:whyNo changeset is included because this only changes repository tooling, documentation, and CI.