Skip to content

Rename ReactiveStore to ReactiveStreamStore#1554

Merged
mcintyre94 merged 1 commit into
mainfrom
rename-reactive-store
May 7, 2026
Merged

Rename ReactiveStore to ReactiveStreamStore#1554
mcintyre94 merged 1 commit into
mainfrom
rename-reactive-store

Conversation

@mcintyre94
Copy link
Copy Markdown
Member

@mcintyre94 mcintyre94 commented Apr 22, 2026

See discussion: #1550 (comment)

We decided to rename ReactiveStore to ReactiveStreamStore, to make space for an orthogonal ReactiveActionStore.

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 22, 2026

🦋 Changeset detected

Latest commit: 248de10

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

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

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

Copy link
Copy Markdown
Member Author

mcintyre94 commented Apr 22, 2026

@mcintyre94
Copy link
Copy Markdown
Member Author

@trevor-cortex

@bundlemon
Copy link
Copy Markdown

bundlemon Bot commented Apr 22, 2026

BundleMon

Unchanged files (147)
Status Path Size Limits
@solana/kit production bundle
kit/dist/index.production.min.js
51.92KB -
errors/dist/index.node.mjs
20.54KB -
errors/dist/index.browser.mjs
20.52KB -
errors/dist/index.native.mjs
20.52KB -
rpc-graphql/dist/index.browser.mjs
18.82KB -
rpc-graphql/dist/index.native.mjs
18.81KB -
rpc-graphql/dist/index.node.mjs
18.81KB -
wallet-account-signer/dist/index.node.mjs
17.38KB -
wallet-account-signer/dist/index.browser.mjs
17.37KB -
wallet-account-signer/dist/index.native.mjs
17.37KB -
transaction-messages/dist/index.browser.mjs
11.32KB -
transaction-messages/dist/index.native.mjs
11.32KB -
transaction-messages/dist/index.node.mjs
11.32KB -
instruction-plans/dist/index.browser.mjs
6.58KB -
instruction-plans/dist/index.native.mjs
6.58KB -
instruction-plans/dist/index.node.mjs
6.58KB -
fixed-points/dist/index.browser.mjs
5.08KB -
fixed-points/dist/index.native.mjs
5.07KB -
fixed-points/dist/index.node.mjs
5.07KB -
codecs-data-structures/dist/index.browser.mjs
5.04KB -
codecs-data-structures/dist/index.native.mjs
5.03KB -
codecs-data-structures/dist/index.node.mjs
5.03KB -
offchain-messages/dist/index.browser.mjs
4.89KB -
offchain-messages/dist/index.native.mjs
4.89KB -
offchain-messages/dist/index.node.mjs
4.89KB -
transactions/dist/index.browser.mjs
4.07KB -
transactions/dist/index.native.mjs
4.07KB -
transactions/dist/index.node.mjs
4.07KB -
kit/dist/index.browser.mjs
3.97KB -
kit/dist/index.native.mjs
3.97KB -
kit/dist/index.node.mjs
3.97KB -
codecs-core/dist/index.browser.mjs
3.62KB -
codecs-core/dist/index.native.mjs
3.62KB -
codecs-core/dist/index.node.mjs
3.62KB -
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 -
signers/dist/index.browser.mjs
3.26KB -
signers/dist/index.native.mjs
3.26KB -
signers/dist/index.node.mjs
3.26KB -
rpc-transformers/dist/index.browser.mjs
3.16KB -
rpc-transformers/dist/index.native.mjs
3.16KB -
rpc-transformers/dist/index.node.mjs
3.16KB -
react/dist/index.browser.mjs
3.09KB -
react/dist/index.native.mjs
3.09KB -
react/dist/index.node.mjs
3.09KB -
keys/dist/index.node.mjs
3.06KB -
addresses/dist/index.browser.mjs
2.93KB -
addresses/dist/index.native.mjs
2.92KB -
addresses/dist/index.node.mjs
2.92KB -
keys/dist/index.browser.mjs
2.85KB -
keys/dist/index.native.mjs
2.85KB -
codecs-strings/dist/index.browser.mjs
2.55KB -
codecs-strings/dist/index.node.mjs
2.51KB -
codecs-strings/dist/index.native.mjs
2.47KB -
transaction-confirmation/dist/index.node.mjs
2.41KB -
sysvars/dist/index.browser.mjs
2.37KB -
sysvars/dist/index.native.mjs
2.37KB -
sysvars/dist/index.node.mjs
2.37KB -
transaction-confirmation/dist/index.native.mj
s
2.36KB -
transaction-confirmation/dist/index.browser.m
js
2.35KB -
subscribable/dist/index.node.mjs
2.32KB -
subscribable/dist/index.native.mjs
2.26KB -
subscribable/dist/index.browser.mjs
2.26KB -
rpc-subscriptions-spec/dist/index.node.mjs
2.25KB -
rpc-subscriptions-spec/dist/index.native.mjs
2.2KB -
rpc-subscriptions-spec/dist/index.browser.mjs
2.2KB -
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-types/dist/index.browser.mjs
1.8KB -
rpc/dist/index.browser.mjs
1.8KB -
rpc-types/dist/index.native.mjs
1.8KB -
rpc-types/dist/index.node.mjs
1.8KB -
rpc-transport-http/dist/index.node.mjs
1.72KB -
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 -
program-client-core/dist/index.browser.mjs
1.21KB -
program-client-core/dist/index.native.mjs
1.21KB -
program-client-core/dist/index.node.mjs
1.21KB -
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.17KB -
accounts/dist/index.native.mjs
1.17KB -
accounts/dist/index.node.mjs
1.16KB -
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.native.mjs
841B -
promises/dist/index.node.mjs
840B -
promises/dist/index.browser.mjs
839B -
plugin-core/dist/index.browser.mjs
820B -
plugin-core/dist/index.native.mjs
819B -
plugin-core/dist/index.node.mjs
817B -
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 -
programs/dist/index.native.mjs
327B -
programs/dist/index.node.mjs
325B -
fs-impl/dist/index.browser.mjs
245B -
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
145B -
codecs/dist/index.native.mjs
144B -
codecs/dist/index.node.mjs
142B -
event-target-impl/dist/index.browser.mjs
133B -
ws-impl/dist/index.node.mjs
131B -
text-encoding-impl/dist/index.browser.mjs
122B -
fs-impl/dist/index.node.mjs
120B -
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 -

Total files change +36B +0.01%

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

Copy link
Copy Markdown

@trevor-cortex trevor-cortex left a comment

Choose a reason for hiding this comment

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

Pure rename of ReactiveStore<T>ReactiveStreamStore<T> to make room for the orthogonal ReactiveActionStore planned in #1550. No behavioural changes.

What the PR does:

  • Renames the source file reactive-store.tsreactive-stream-store.ts (and its test counterpart) and updates the subscribable package barrel.
  • Renames the exported type and re-exports ReactiveStore<T> as a @deprecated alias of ReactiveStreamStore<T> so existing consumers don't break.
  • Updates all {@link} references (in the subscribable, kit, and rpc-subscriptions-spec packages) and the matching prose in both READMEs and the SOLANA_ERROR__SUBSCRIBABLE__RETRY_NOT_SUPPORTED message.
  • Updates the consumer-facing return types of PendingRpcSubscriptionsRequest.reactive() / reactiveStore() and of createReactiveStoreWithInitialValueAndSlotTracking to the new name.
  • Adds a minor changeset for @solana/subscribable documenting the rename and the deprecation alias.

Things I checked:

  • The deprecated alias export type ReactiveStore<T> = ReactiveStreamStore<T> is structurally identical, so existing user code typed against ReactiveStore<T> continues to compile.
  • All {@link ReactiveStore...} references I could find in the touched files have been updated; the only remaining ReactiveStore mentions are the deprecated alias itself and its JSDoc, which is intentional.
  • README narrative correctly notes the deprecated alias.
  • Filename rename is consistent across source, test, and barrel import.

Minor observation, not blocking:

  • The changeset only declares @solana/subscribable as bumping minor, but the visible API surface of @solana/rpc-subscriptions-spec (and transitively @solana/rpc-subscriptions, @solana/kit) also changed — reactive() / reactiveStore() now return ReactiveStreamStore<TNotification>. Because the publishable packages are version-locked via the fixed config, they'll all bump together regardless, so this isn't a release-correctness issue. Worth being aware of if anyone reads only the changeset to understand the change footprint.

LGTM from my side — leaving as a comment review since I don't have approve rights on this repo.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 22, 2026

Documentation Preview: https://kit-docs-26mc7imm7-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.

I know I suggested ReactiveStreamStore but spending a bit more time discussing that with Claude we came across ReactiveEventStore which I think is pretty spot-on and is a better sibling to ReactiveActionStore. The latter could even become ReactiveCommandStore to really lean into the Event/Command language and give more meaning to the dispatch function. Wdyt?

@mcintyre94
Copy link
Copy Markdown
Member Author

@lorisleiva I slightly prefer Stream to Event, because I think Event implies append-only and access/replay to the whole event log, where our semantic (for the reactive interface) is that it's the latest data. I also slightly prefer Action because Command (to me) implies mutation, which works for useSendTransaction but less well for reads. For context, a later PR adds rpc.getAccountInfo().reactiveStore(): ReactiveActionStore. I'm not sure how well Action works for that either, but I think it does feel a bit more generic.

@lorisleiva
Copy link
Copy Markdown
Member

@mcintyre94 Ah yeah these are fair points. Stream/Action it is!

@mcintyre94 mcintyre94 force-pushed the subscription-reactive-store branch from 57fd7dd to 330cffd Compare April 23, 2026 09:39
@mcintyre94 mcintyre94 force-pushed the rename-reactive-store branch from b1fcac1 to 4e1f9d1 Compare April 23, 2026 09:39
@mcintyre94 mcintyre94 force-pushed the rename-reactive-store branch from 4e1f9d1 to 09c9c22 Compare May 7, 2026 13:25
@mcintyre94 mcintyre94 force-pushed the subscription-reactive-store branch from 330cffd to a9b4199 Compare May 7, 2026 13:25
Copy link
Copy Markdown
Member Author

mcintyre94 commented May 7, 2026

Merge activity

  • May 7, 2:56 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • May 7, 3:11 PM UTC: Graphite rebased this pull request as part of a merge.
  • May 7, 3:20 PM UTC: @mcintyre94 merged this pull request with Graphite.

@mcintyre94 mcintyre94 changed the base branch from subscription-reactive-store to graphite-base/1554 May 7, 2026 14:58
@mcintyre94 mcintyre94 changed the base branch from graphite-base/1554 to main May 7, 2026 15:09
@mcintyre94 mcintyre94 force-pushed the rename-reactive-store branch from 09c9c22 to 248de10 Compare May 7, 2026 15:10
@mcintyre94 mcintyre94 merged commit 47a785b into main May 7, 2026
14 checks passed
@mcintyre94 mcintyre94 deleted the rename-reactive-store branch May 7, 2026 15:20
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

🔎💬 Inkeep AI search and chat service is syncing content for source 'Solana Kit Docs'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants