Skip to content

Add a default export for each package, matching browser#1159

Closed
mcintyre94 wants to merge 2 commits into
mainfrom
default-export
Closed

Add a default export for each package, matching browser#1159
mcintyre94 wants to merge 2 commits into
mainfrom
default-export

Conversation

@mcintyre94
Copy link
Copy Markdown
Member

Problem

Good detail in the issue: #1158

TLDR: Without this, NextJS runs the Node bundle for client components in SSR, and then complains that there's no ws

Summary of Changes

Add a default export that matches the browser export for each public package

Fixes #1158

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Jan 5, 2026

🦋 Changeset detected

Latest commit: 265573a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 43 packages
Name Type
@solana/rpc-subscriptions-channel-websocket Patch
@solana/webcrypto-ed25519-polyfill Patch
@solana/transaction-confirmation Patch
@solana/codecs-data-structures Patch
@solana/rpc-subscriptions-spec Patch
@solana/fast-stable-stringify Patch
@solana/rpc-subscriptions-api Patch
@solana/transaction-messages Patch
@solana/rpc-transport-http Patch
@solana/instruction-plans Patch
@solana/offchain-messages Patch
@solana/rpc-subscriptions Patch
@solana/rpc-parsed-types Patch
@solana/rpc-transformers Patch
@solana/codecs-numbers Patch
@solana/codecs-strings Patch
@solana/rpc-spec-types Patch
@solana/instructions Patch
@solana/subscribable Patch
@solana/transactions Patch
@solana/codecs-core Patch
@solana/plugin-core Patch
@solana/rpc-graphql Patch
@solana/assertions Patch
@solana/functional Patch
@solana/addresses Patch
@solana/rpc-types Patch
@solana/accounts Patch
@solana/programs Patch
@solana/promises Patch
@solana/rpc-spec Patch
@solana/options Patch
@solana/rpc-api Patch
@solana/signers Patch
@solana/sysvars Patch
@solana/codecs Patch
@solana/compat Patch
@solana/errors Patch
@solana/react Patch
@solana/keys Patch
@solana/kit Patch
@solana/rpc Patch
@solana/nominal-types Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@socket-security
Copy link
Copy Markdown

socket-security Bot commented Jan 5, 2026

@bundlemon
Copy link
Copy Markdown

bundlemon Bot commented Jan 5, 2026

BundleMon

Unchanged files (136)
Status Path Size Limits
@solana/kit production bundle
kit/dist/index.production.min.js
39.24KB -
rpc-graphql/dist/index.browser.mjs
18.82KB -
rpc-graphql/dist/index.native.mjs
18.81KB -
rpc-graphql/dist/index.node.mjs
18.81KB -
errors/dist/index.node.mjs
17.22KB -
errors/dist/index.browser.mjs
17.2KB -
errors/dist/index.native.mjs
17.2KB -
transaction-messages/dist/index.browser.mjs
7.29KB -
transaction-messages/dist/index.native.mjs
7.29KB -
transaction-messages/dist/index.node.mjs
7.29KB -
offchain-messages/dist/index.browser.mjs
4.89KB -
offchain-messages/dist/index.native.mjs
4.89KB -
offchain-messages/dist/index.node.mjs
4.89KB -
codecs-data-structures/dist/index.browser.mjs
4.69KB -
codecs-data-structures/dist/index.native.mjs
4.69KB -
codecs-data-structures/dist/index.node.mjs
4.69KB -
instruction-plans/dist/index.browser.mjs
3.81KB -
instruction-plans/dist/index.native.mjs
3.81KB -
instruction-plans/dist/index.node.mjs
3.81KB -
codecs-core/dist/index.browser.mjs
3.61KB -
codecs-core/dist/index.native.mjs
3.61KB -
codecs-core/dist/index.node.mjs
3.61KB -
webcrypto-ed25519-polyfill/dist/index.node.mj
s
3.61KB -
webcrypto-ed25519-polyfill/dist/index.browser
.mjs
3.59KB -
webcrypto-ed25519-polyfill/dist/index.native.
mjs
3.57KB -
rpc-subscriptions/dist/index.browser.mjs
3.37KB -
rpc-subscriptions/dist/index.node.mjs
3.34KB -
rpc-subscriptions/dist/index.native.mjs
3.31KB -
rpc-transformers/dist/index.browser.mjs
2.93KB -
rpc-transformers/dist/index.native.mjs
2.93KB -
rpc-transformers/dist/index.node.mjs
2.93KB -
addresses/dist/index.browser.mjs
2.93KB -
addresses/dist/index.native.mjs
2.92KB -
addresses/dist/index.node.mjs
2.92KB -
signers/dist/index.browser.mjs
2.9KB -
signers/dist/index.native.mjs
2.9KB -
signers/dist/index.node.mjs
2.9KB -
transactions/dist/index.browser.mjs
2.87KB -
transactions/dist/index.native.mjs
2.86KB -
transactions/dist/index.node.mjs
2.86KB -
codecs-strings/dist/index.browser.mjs
2.53KB -
codecs-strings/dist/index.node.mjs
2.49KB -
codecs-strings/dist/index.native.mjs
2.45KB -
transaction-confirmation/dist/index.node.mjs
2.41KB -
transaction-confirmation/dist/index.native.mj
s
2.36KB -
transaction-confirmation/dist/index.browser.m
js
2.35KB -
sysvars/dist/index.browser.mjs
2.35KB -
sysvars/dist/index.native.mjs
2.34KB -
sysvars/dist/index.node.mjs
2.34KB -
react/dist/index.browser.mjs
2.31KB -
react/dist/index.native.mjs
2.31KB -
react/dist/index.node.mjs
2.31KB -
rpc-subscriptions-spec/dist/index.node.mjs
2.18KB -
rpc-subscriptions-spec/dist/index.native.mjs
2.13KB -
rpc-subscriptions-spec/dist/index.browser.mjs
2.13KB -
keys/dist/index.browser.mjs
2.1KB -
keys/dist/index.native.mjs
2.1KB -
keys/dist/index.node.mjs
2.1KB -
rpc/dist/index.node.mjs
1.95KB -
codecs-numbers/dist/index.browser.mjs
1.95KB -
codecs-numbers/dist/index.native.mjs
1.95KB -
codecs-numbers/dist/index.node.mjs
1.94KB -
rpc-transport-http/dist/index.browser.mjs
1.91KB -
rpc-transport-http/dist/index.native.mjs
1.9KB -
rpc/dist/index.native.mjs
1.81KB -
rpc/dist/index.browser.mjs
1.8KB -
subscribable/dist/index.node.mjs
1.8KB -
subscribable/dist/index.native.mjs
1.75KB -
subscribable/dist/index.browser.mjs
1.74KB -
rpc-transport-http/dist/index.node.mjs
1.72KB -
kit/dist/index.browser.mjs
1.69KB -
kit/dist/index.native.mjs
1.69KB -
kit/dist/index.node.mjs
1.69KB -
rpc-types/dist/index.browser.mjs
1.53KB -
rpc-types/dist/index.native.mjs
1.53KB -
rpc-types/dist/index.node.mjs
1.53KB -
rpc-subscriptions-channel-websocket/dist/inde
x.node.mjs
1.33KB -
rpc-subscriptions-channel-websocket/dist/inde
x.native.mjs
1.27KB -
rpc-subscriptions-channel-websocket/dist/inde
x.browser.mjs
1.26KB -
options/dist/index.browser.mjs
1.18KB -
options/dist/index.native.mjs
1.18KB -
options/dist/index.node.mjs
1.17KB -
accounts/dist/index.browser.mjs
1.13KB -
accounts/dist/index.native.mjs
1.12KB -
accounts/dist/index.node.mjs
1.12KB -
rpc-api/dist/index.browser.mjs
976B -
rpc-api/dist/index.native.mjs
975B -
rpc-api/dist/index.node.mjs
973B -
compat/dist/index.browser.mjs
969B -
compat/dist/index.native.mjs
968B -
compat/dist/index.node.mjs
966B -
rpc-spec-types/dist/index.browser.mjs
962B -
rpc-spec-types/dist/index.native.mjs
961B -
rpc-spec-types/dist/index.node.mjs
959B -
rpc-subscriptions-api/dist/index.native.mjs
870B -
rpc-subscriptions-api/dist/index.node.mjs
869B -
rpc-subscriptions-api/dist/index.browser.mjs
868B -
rpc-spec/dist/index.browser.mjs
852B -
rpc-spec/dist/index.native.mjs
851B -
rpc-spec/dist/index.node.mjs
850B -
promises/dist/index.browser.mjs
799B -
promises/dist/index.native.mjs
798B -
promises/dist/index.node.mjs
797B -
assertions/dist/index.browser.mjs
783B -
instructions/dist/index.browser.mjs
771B -
instructions/dist/index.native.mjs
770B -
instructions/dist/index.node.mjs
768B -
fast-stable-stringify/dist/index.browser.mjs
726B -
fast-stable-stringify/dist/index.native.mjs
725B -
assertions/dist/index.native.mjs
724B -
fast-stable-stringify/dist/index.node.mjs
724B -
assertions/dist/index.node.mjs
723B -
programs/dist/index.browser.mjs
329B -
plugin-core/dist/index.browser.mjs
328B -
programs/dist/index.native.mjs
327B -
plugin-core/dist/index.native.mjs
326B -
programs/dist/index.node.mjs
325B -
plugin-core/dist/index.node.mjs
324B -
event-target-impl/dist/index.node.mjs
230B -
functional/dist/index.browser.mjs
154B -
functional/dist/index.native.mjs
152B -
text-encoding-impl/dist/index.native.mjs
152B -
functional/dist/index.node.mjs
151B -
codecs/dist/index.browser.mjs
137B -
codecs/dist/index.native.mjs
136B -
codecs/dist/index.node.mjs
134B -
event-target-impl/dist/index.browser.mjs
133B -
ws-impl/dist/index.node.mjs
131B -
text-encoding-impl/dist/index.browser.mjs
122B -
text-encoding-impl/dist/index.node.mjs
119B -
ws-impl/dist/index.browser.mjs
113B -
crypto-impl/dist/index.node.mjs
111B -
crypto-impl/dist/index.browser.mjs
109B -
rpc-parsed-types/dist/index.browser.mjs
66B -
rpc-parsed-types/dist/index.native.mjs
65B -
rpc-parsed-types/dist/index.node.mjs
63B -

No change in files bundle size

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jan 5, 2026

Documentation Preview: https://kit-docs-5g6qv3m25-anza-tech.vercel.app

Copy link
Copy Markdown
Member

@lorisleiva lorisleiva left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would love Steve's opinion on this but looks good to me. Thank you!

Copy link
Copy Markdown
Contributor

@steveluscher steveluscher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're super sure that ‘running the browser bundle in SSR’ solves more problems than it causes, right?

Like, what if SSR starts pulling in the browser bundle everywhere, and then something in the browser bundle tries to call AbortSignal.any() or window.localStorage.getItem() where the Node bundle would not have. The SSR will fatal, right?

@steveluscher
Copy link
Copy Markdown
Contributor

steveluscher commented Jan 5, 2026

More concretely, if the browser build was served to the Vercel Edge Runtime, this line would fatal owing to the absence of globalThis.navigator:

if (!__BROWSER__ || globalThis.navigator.onLine) {
restartPingTimer();
}

Now I don't actually think you can get to that line in an SSR pass, but my point is that browser builds can fatal the SSR runtime because they presume browser APIs like this one are present.

@mcintyre94
Copy link
Copy Markdown
Member Author

Yea I'm not convinced either. We need to document the ws dependency for Node, maybe that should include SSR?

@mcintyre94 mcintyre94 marked this pull request as draft January 6, 2026 18:03
@mcintyre94
Copy link
Copy Markdown
Member Author

Closing in favour of #1163 (merged)

@mcintyre94 mcintyre94 closed this Jan 7, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Because there has been no activity on this PR for 14 days since it was merged, it has been automatically locked. Please open a new issue if it requires a follow up.

@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Jan 22, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

package.json exports missing default condition breaks Next.js SSR

3 participants