Version Packages - #8
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
July 30, 2026 20:38
146e445 to
1cfe38d
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 13, 2026 18:23
1cfe38d to
ed8985f
Compare
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@solana/errors@7.1.0
Minor Changes
#1811
7022c26Thanks @mcintyre94! - AddbridgeStoreToAsyncIterableto@solana/subscribablebridgeStoreToAsyncIterableadapts aReactiveStreamStoreinto the pull-basedAsyncIterablecontract that consumers like TanStack Query'sexperimental_streamedQueryexpect. It is now a public export of@solana/subscribable(and re-exported from@solana/kit). It was previously an internal helper of@solana/react, but it is not React- or TanStack-specific and is useful to any consumer that needs to drive a stream store byfor await-ing it.The bridge only observes the store — consistent with the rest of the ecosystem, the caller owns the store's lifecycle (
connect()it yourself, bound to the same signal, andreset()it when done). The bridge subscribes, seeds from the store's current snapshot, yields values, and unsubscribes when iteration ends.It throws the new
SOLANA_ERROR__SUBSCRIBABLE__STREAM_CLOSED_WITHOUT_ERRORwhen a store closes in an error state with a nullish payload. This is the erroruseSubscriptionQueryanduseTrackedDataQuerynow surface in that case; the SWR bridge is unaffected.#1888
14a3e5bThanks @mcintyre94! - Add anassertOffchainMessageV1Equalhelper that asserts that a version 1 offchain message you received from an untrusted signer (eg. a wallet) is the message you expected it to sign. Verifying a signature proves only that the signer produced it over the bytes it handed back, not that those bytes represent the message you asked for, so assert this before verifying signatures withverifyOffchainMessageEnvelope. The helper compares the content and the required signatories, and reports each kind of mismatch with its own error code: the newSOLANA_ERROR__OFFCHAIN_MESSAGE__CONTENT_DOES_NOT_MATCH_EXPECTEDandSOLANA_ERROR__OFFCHAIN_MESSAGE__REQUIRED_SIGNATORIES_DO_NOT_MATCH_EXPECTED. Required signatories are compared without regard to order, since a decoded message lists them in the order the specification mandates while yours may be in any order. It accepts anOffchainMessageV1rather than theOffchainMessageunion that decoding produces, so narrow the decoded message to a version 1 message before calling it.@solana/kit@7.1.0
Minor Changes
#1811
7022c26Thanks @mcintyre94! - AddbridgeStoreToAsyncIterableto@solana/subscribablebridgeStoreToAsyncIterableadapts aReactiveStreamStoreinto the pull-basedAsyncIterablecontract that consumers like TanStack Query'sexperimental_streamedQueryexpect. It is now a public export of@solana/subscribable(and re-exported from@solana/kit). It was previously an internal helper of@solana/react, but it is not React- or TanStack-specific and is useful to any consumer that needs to drive a stream store byfor await-ing it.The bridge only observes the store — consistent with the rest of the ecosystem, the caller owns the store's lifecycle (
connect()it yourself, bound to the same signal, andreset()it when done). The bridge subscribes, seeds from the store's current snapshot, yields values, and unsubscribes when iteration ends.It throws the new
SOLANA_ERROR__SUBSCRIBABLE__STREAM_CLOSED_WITHOUT_ERRORwhen a store closes in an error state with a nullish payload. This is the erroruseSubscriptionQueryanduseTrackedDataQuerynow surface in that case; the SWR bridge is unaffected.#1898
4a5f717Thanks @lorisleiva! - Add helpers to create client interfaces from a rawRpcAdd
createClientWithGetMinimumBalanceFromRpc,createClientWithFetchAccountsFromRpcandcreateClientWithInterfacesFromRpcto@solana/kit. These convenience helpers let consumers that only have a rawRpcobject construct the corresponding client interfaces (ClientWithGetMinimumBalanceandClientWithFetchAccounts) without assembling a full Kit client.createClientWithInterfacesFromRpcfills in whichever interfaces the RPC supports and narrows its return type accordingly.#1824
b47feb6Thanks @mcintyre94! - Re-export@solana/promisesfrom@solana/kit@solana/kitnow re-exports the@solana/promisespackage, so its helpers —isAbortError,getAbortablePromise, andsafeRace— are available directly from@solana/kitwithout a separate dependency. This is particularly useful alongside@solana/react'suseAction, whose superseded or aborted dispatches reject with anAbortErrorthat callers filter usingisAbortError.Patch Changes
#1883
a900eebThanks @mcintyre94! - FixwithCleanupthrowingDisposableStack is not definedon SafariwithCleanupconstructed aDisposableStackunconditionally, but Safari has not shipped explicit resource management — as of Safari 27 it provides neitherDisposableStacknorSymbol.dispose— so any plugin that registers a cleanup function threwReferenceError: Can't find variable: DisposableStackwhile the client was being built.The runtime's own
DisposableStackis still used whenever it exists. Only where it is missing doeswithCleanupfall back to an internal stack that reproduces the behaviour it depends on. ThewithCleanuptest suite now runs twice, once against each stack, so the two cannot drift apart.Note that this fixes disposal on Safari but not
usingdeclarations in your own code, which additionally need aSymbol.disposepolyfill; disposing a client explicitly works either way.Updated dependencies [
7022c26,c45d5e0,c8235ca,327760c,82c4ceb,14a3e5b,a900eeb,aa0b625]:@solana/offchain-messages@7.1.0
Minor Changes
14a3e5bThanks @mcintyre94! - Add anassertOffchainMessageV1Equalhelper that asserts that a version 1 offchain message you received from an untrusted signer (eg. a wallet) is the message you expected it to sign. Verifying a signature proves only that the signer produced it over the bytes it handed back, not that those bytes represent the message you asked for, so assert this before verifying signatures withverifyOffchainMessageEnvelope. The helper compares the content and the required signatories, and reports each kind of mismatch with its own error code: the newSOLANA_ERROR__OFFCHAIN_MESSAGE__CONTENT_DOES_NOT_MATCH_EXPECTEDandSOLANA_ERROR__OFFCHAIN_MESSAGE__REQUIRED_SIGNATORIES_DO_NOT_MATCH_EXPECTED. Required signatories are compared without regard to order, since a decoded message lists them in the order the specification mandates while yours may be in any order. It accepts anOffchainMessageV1rather than theOffchainMessageunion that decoding produces, so narrow the decoded message to a version 1 message before calling it.Patch Changes
7022c26,da10c5a,204ed6e,14a3e5b]:@solana/plugin-interfaces@7.1.0
Minor Changes
#1897
aa0b625Thanks @lorisleiva! - Add aClientWithFetchAccountsinterfaceThis new plugin interface represents a client that can fetch the encoded content of accounts from their addresses via a
fetchAccounts(addresses, config?)method. Like the other@solana/plugin-interfacescapabilities, it lets plugins provide or require account-fetching without coupling to a concrete RPC. The returned array matches the provided addresses in length and order, usingMaybeEncodedAccountto represent accounts that may not exist.Patch Changes
@solana/react@7.1.0
Minor Changes
#1811
7022c26Thanks @mcintyre94! - AddbridgeStoreToAsyncIterableto@solana/subscribablebridgeStoreToAsyncIterableadapts aReactiveStreamStoreinto the pull-basedAsyncIterablecontract that consumers like TanStack Query'sexperimental_streamedQueryexpect. It is now a public export of@solana/subscribable(and re-exported from@solana/kit). It was previously an internal helper of@solana/react, but it is not React- or TanStack-specific and is useful to any consumer that needs to drive a stream store byfor await-ing it.The bridge only observes the store — consistent with the rest of the ecosystem, the caller owns the store's lifecycle (
connect()it yourself, bound to the same signal, andreset()it when done). The bridge subscribes, seeds from the store's current snapshot, yields values, and unsubscribes when iteration ends.It throws the new
SOLANA_ERROR__SUBSCRIBABLE__STREAM_CLOSED_WITHOUT_ERRORwhen a store closes in an error state with a nullish payload. This is the erroruseSubscriptionQueryanduseTrackedDataQuerynow surface in that case; the SWR bridge is unaffected.#1876
d6a1adbThanks @mcintyre94! - AddusePayeranduseIdentityReact hooks. Each reads the corresponding value off the client and, when the client advertisessubscribeToPayer/subscribeToIdentity, subscribes so the returned signer always reflects the latest payer/identity. Clients whose value is fixed fall back to a one-time read.If the plugin value throws (for example as the wallet plugin does when it owns payer/identity and a wallet is not connected), this is surfaced as
undefinedin the hooks.#1841
94f49bbThanks @mcintyre94! - Make theTClienttype parameter ofuseClientrequired by removing itsobjectdefault, matchinguseClientCapability. Callers should always pass their client's shape (typically an exportedAppClienttype) so installed capabilities are typed at the call site.#1869
2193459Thanks @mcintyre94! - AddusePlanTransaction,usePlanTransactions,useSendTransaction, anduseSendTransactionshooks for driving a client's transaction-planning and -sending capabilities as reactive actions.#1879
c27ce2fThanks @mcintyre94! - Add auseAirdrophook that wraps a client'sairdropcapability (ClientWithAirdrop) as a trackeduseAction.dispatch(address, amount)requests an airdrop with an injectedAbortSignal, resolving with the transactionSignature(orundefinedwhen the airdrop is applied without a transaction).Patch Changes
#1907
9d6be07Thanks @mcintyre94! - Widen the@solana/kitpeer dependency of@solana/reactfrom an exact version to a caret range.@solana/reactpreviously declared"@solana/kit": "workspace:*", which publishes as an exact pin ("@solana/kit": "7.0.0"), so a consumer who advanced@solana/kitwithout advancing@solana/reactin the same step hit an unsatisfiable peer range even though the two are compatible. It now declaresworkspace:^and publishes as^7.1.0. The two packages continue to be released in lockstep at identical versions, so this does not loosen which combinations are actually shipped — it only stops describing a compatible pair as incompatible.#1825
d54b899Thanks @mcintyre94! - Bump the@wallet-standard/uiand@wallet-standard/ui-registrydependencies to^1.0.3and^1.1.1respectively. The1.1.xregistry line is a backward-compatible superset that continues to export the names@solana/reactrelies on, and aligning with it lets consumers that also pull in@solana/kit-plugin-walletresolve a single, shared copy of the wallet-standard UI registry (which is a runtime singleton) instead of splitting across two incompatible copies.Updated dependencies [
7022c26,327760c]:@solana/rpc-api@7.1.0
Minor Changes
#1776
c8235caThanks @mcintyre94! - Add thegetTransactionsForAddressRPC method type. This method combines address-history discovery and per-transaction fetching into a single query, with server-side filtering, bidirectional sorting, and cursor-based pagination. It will be part of the upcoming solana-rpc spec and is part of thesolana-rpc/superbankproject, and is already available from major RPC providers.It supports both
signaturesandfull(json/jsonParsed/base58/base64) response modes. The shared transaction metadata types also gain an optionalmeta.costUnitsfield, which surfaces ongetTransactionas well.Patch Changes
#1917
82c4cebThanks @amilz! - Stop upcasting transactionversiontobigintThe response transformer upcasts every JSON integer to a
bigintunless its keypath appears in an allow-list.versionwas missing from that allow-list ongetTransaction,getBlocktransactions, andgetTransactionsForAddress, so it arrived at runtime as0nwhile still typechecking asTransactionVersion('legacy' | 0 | 1).A check like
if (transaction.version === 0)therefore compiled cleanly and was always false, with no compiler error and no runtime error. The keypath is now allow-listed andversionarrives as a number, matching its declared type.Updated dependencies [
7022c26,327760c,14a3e5b]:@solana/subscribable@7.1.0
Minor Changes
#1811
7022c26Thanks @mcintyre94! - AddbridgeStoreToAsyncIterableto@solana/subscribablebridgeStoreToAsyncIterableadapts aReactiveStreamStoreinto the pull-basedAsyncIterablecontract that consumers like TanStack Query'sexperimental_streamedQueryexpect. It is now a public export of@solana/subscribable(and re-exported from@solana/kit). It was previously an internal helper of@solana/react, but it is not React- or TanStack-specific and is useful to any consumer that needs to drive a stream store byfor await-ing it.The bridge only observes the store — consistent with the rest of the ecosystem, the caller owns the store's lifecycle (
connect()it yourself, bound to the same signal, andreset()it when done). The bridge subscribes, seeds from the store's current snapshot, yields values, and unsubscribes when iteration ends.It throws the new
SOLANA_ERROR__SUBSCRIBABLE__STREAM_CLOSED_WITHOUT_ERRORwhen a store closes in an error state with a nullish payload. This is the erroruseSubscriptionQueryanduseTrackedDataQuerynow surface in that case; the SWR bridge is unaffected.Patch Changes
7022c26,14a3e5b]:@solana/transaction-introspection@7.1.0
Minor Changes
c45d5e0Thanks @mcintyre94! -decodeTransactionFromRpcResponsenow accepts confirmed transactions from any RPC method that returns them, not justgetTransaction. It reads only the sharedtransaction/meta/versionenvelope, sogetTransactionsForAddressresults (map over itsdataarray) andgetBlockresults (map over itstransactionsarray, withtransactionDetails: 'full') decode identically, including legacy transactions fetched withoutmaxSupportedTransactionVersion. The'json'overload now types its omittedtransactionasneverrather than an optionalTransaction, reflecting that the JSON path never yields re-encodable wire bytes.Patch Changes
7022c26,327760c,14a3e5b]:@solana/accounts@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/addresses@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/assertions@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/codecs@7.1.0
Patch Changes
da10c5a,204ed6e]:@solana/codecs-core@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/codecs-data-structures@7.1.0
Patch Changes
#1884
da10c5aThanks @Swift42! - Avoid copying the remaining buffer ingetArrayDecoder's emptiness checkgetArrayDecoder'sread()tested for an empty byte array withbytes.slice(offset).length === 0, which allocates and copies every byte fromoffsetto the end just to read.lengthoff the result. On large accounts containing many prefixed arrays, maps, or sets this made decoding quadratic in account size. The check is now the equivalent O(1) comparisonoffset >= bytes.length.getMapDecoderandgetSetDecoderdelegate togetArrayDecoderand benefit as well.#1809
204ed6eThanks @mcintyre94! - Allow boolean predicates passed togetPatternMatchCodecandgetPatternMatchEncoderto narrow to a subtype of the variant's value type. Previously, matching against codecs whose value type is a union — such as the number codecs, whose encode type isnumber | bigint— forced predicates to be typed against the full union (e.g.(value: number | bigint) => …). The predicate parameter is now checked bivariantly, so a narrower predicate like(value: number) => …is accepted, mirroring the ergonomics ofgetPredicateCodecandgetPredicateEncoder.Updated dependencies [
7022c26,14a3e5b]:@solana/codecs-numbers@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/codecs-strings@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/compat@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/fixed-points@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/instruction-plans@7.1.0
Patch Changes
7022c26,327760c,14a3e5b]:@solana/instructions@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/keys@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/options@7.1.0
Patch Changes
7022c26,da10c5a,204ed6e,14a3e5b]:@solana/plugin-core@7.1.0
Patch Changes
#1883
a900eebThanks @mcintyre94! - FixwithCleanupthrowingDisposableStack is not definedon SafariwithCleanupconstructed aDisposableStackunconditionally, but Safari has not shipped explicit resource management — as of Safari 27 it provides neitherDisposableStacknorSymbol.dispose— so any plugin that registers a cleanup function threwReferenceError: Can't find variable: DisposableStackwhile the client was being built.The runtime's own
DisposableStackis still used whenever it exists. Only where it is missing doeswithCleanupfall back to an internal stack that reproduces the behaviour it depends on. ThewithCleanuptest suite now runs twice, once against each stack, so the two cannot drift apart.Note that this fixes disposal on Safari but not
usingdeclarations in your own code, which additionally need aSymbol.disposepolyfill; disposing a client explicitly works either way.@solana/program-client-core@7.1.0
Patch Changes
7022c26,c8235ca,82c4ceb,14a3e5b,aa0b625]:@solana/programs@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/rpc@7.1.0
Patch Changes
7022c26,c8235ca,82c4ceb,14a3e5b]:@solana/rpc-graphql@7.1.0
Patch Changes
@solana/rpc-spec@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/rpc-spec-types@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/rpc-subscriptions@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/rpc-subscriptions-api@7.1.0
Patch Changes
327760c]:@solana/rpc-subscriptions-channel-websocket@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/rpc-subscriptions-spec@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/rpc-transformers@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/rpc-transport-http@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/rpc-types@7.1.0
Patch Changes
7022c26,14a3e5b]:@solana/signers@7.1.0
Patch Changes
7022c26,327760c,14a3e5b]:@solana/sysvars@7.1.0
Patch Changes
7022c26,da10c5a,204ed6e,14a3e5b]:@solana/transaction-confirmation@7.1.0
Patch Changes
7022c26,327760c,14a3e5b]:@solana/transaction-messages@7.1.0
Patch Changes
#1874
327760cThanks @mcintyre94! - Update type of compressTransactionMessageUsingAddressLookupTables to reject v1 transactionsUpdated dependencies [
7022c26,da10c5a,204ed6e,14a3e5b]:@solana/transactions@7.1.0
Patch Changes
7022c26,da10c5a,204ed6e,327760c,14a3e5b]:@solana/wallet-account-signer@7.1.0
Patch Changes
327760c]:@solana/fast-stable-stringify@7.1.0
@solana/functional@7.1.0
@solana/nominal-types@7.1.0
@solana/promises@7.1.0
@solana/rpc-parsed-types@7.1.0
@solana/webcrypto-ed25519-polyfill@7.1.0