Skip to content

Reshape single TransactionPlanResults#1276

Merged
lorisleiva merged 1 commit into
mainfrom
01-30-reshape_single_transactionplanresults_
Feb 3, 2026
Merged

Reshape single TransactionPlanResults#1276
lorisleiva merged 1 commit into
mainfrom
01-30-reshape_single_transactionplanresults_

Conversation

@lorisleiva
Copy link
Copy Markdown
Member

@lorisleiva lorisleiva commented Jan 30, 2026

Problem

Only successful transaction plan results can carry additional context (e.g. the transaction signature). When a transaction fails or is canceled, there is no way to retrieve the signature or other contextual data that was accumulated during execution. This makes debugging and logging difficult — for instance, a failed transaction may still have a signature if it was sent but not confirmed, yet the current API provides no way to access it.

Additionally, the TransactionPlanExecutor may progressively build up state during execution — fetching a blockhash, estimating compute units, signing the transaction — and any of these steps could fail. Ideally, the most recent state (the latest message, the signed transaction, the signature) should remain accessible on the result regardless of the outcome.

Summary of Changes

  • Reshape SingleTransactionPlanResult from a single object type with a status discriminated union into three distinct types: SuccessfulSingleTransactionPlanResult, FailedSingleTransactionPlanResult, and CanceledSingleTransactionPlanResult. The status field is now a string literal ('successful', 'failed', or 'canceled') and properties like context, error, and signature live at the top level of each variant.
  • Rename the message property to plannedMessage on all single transaction plan result types to clarify that this is the original planned message from the TransactionPlan, not the final message sent to the network.
  • Move the context object from inside the status field to the top level of each result variant. All variants now carry a context — not just successful ones.
  • Expand TransactionPlanResultContext to optionally include message, signature, and transaction properties.
  • Remove the now-unused TransactionPlanResultStatus type.
  • failedSingleTransactionPlanResult and canceledSingleTransactionPlanResult now accept an optional context parameter.

Relates to #1273

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Jan 30, 2026

🦋 Changeset detected

Latest commit: c799380

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

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

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

@bundlemon
Copy link
Copy Markdown

bundlemon Bot commented Jan 30, 2026

BundleMon

Files updated (1)
Status Path Size Limits
@solana/kit production bundle
kit/dist/index.production.min.js
40.79KB (+17B +0.04%) -
Unchanged files (135)
Status Path Size Limits
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.62KB -
errors/dist/index.browser.mjs
17.6KB -
errors/dist/index.native.mjs
17.6KB -
transaction-messages/dist/index.browser.mjs
7.29KB -
transaction-messages/dist/index.native.mjs
7.29KB -
transaction-messages/dist/index.node.mjs
7.29KB -
instruction-plans/dist/index.browser.mjs
5.16KB -
instruction-plans/dist/index.native.mjs
5.16KB -
instruction-plans/dist/index.node.mjs
5.16KB -
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 -
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
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 -
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 -
kit/dist/index.browser.mjs
2.22KB -
kit/dist/index.native.mjs
2.22KB -
kit/dist/index.node.mjs
2.22KB -
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 -
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.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.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 -

Total files change +21B +0.01%

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 30, 2026

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

@lorisleiva lorisleiva force-pushed the 01-30-reshape_single_transactionplanresults_ branch from 357555e to e2b92ca Compare February 2, 2026 13:49
@lorisleiva lorisleiva force-pushed the 01-30-add_missing_type_parameters_to_transactionplanresult_types_and_helpers branch from 8a7a344 to 463398c Compare February 2, 2026 13:49
@lorisleiva lorisleiva force-pushed the 01-30-add_missing_type_parameters_to_transactionplanresult_types_and_helpers branch from 463398c to dfcb34d Compare February 2, 2026 16:59
@lorisleiva lorisleiva force-pushed the 01-30-reshape_single_transactionplanresults_ branch from e2b92ca to 1f23642 Compare February 2, 2026 16:59
@lorisleiva lorisleiva marked this pull request as ready for review February 2, 2026 17:04
@lorisleiva lorisleiva requested a review from mcintyre94 February 2, 2026 17:04
@lorisleiva lorisleiva force-pushed the 01-30-reshape_single_transactionplanresults_ branch from 1f23642 to fa87b2f Compare February 3, 2026 11:26
@lorisleiva lorisleiva force-pushed the 01-30-add_missing_type_parameters_to_transactionplanresult_types_and_helpers branch from dfcb34d to 81da3bc Compare February 3, 2026 11:26
Copy link
Copy Markdown
Member

@mcintyre94 mcintyre94 left a comment

Choose a reason for hiding this comment

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

This looks great! I think this will be much more useful and easier to work with. Great changeset migration guide too!

Copy link
Copy Markdown
Member Author

lorisleiva commented Feb 3, 2026

Merge activity

  • Feb 3, 2:45 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Feb 3, 2:47 PM UTC: Graphite rebased this pull request as part of a merge.
  • Feb 3, 3:02 PM UTC: @lorisleiva merged this pull request with Graphite.

@lorisleiva lorisleiva changed the base branch from 01-30-add_missing_type_parameters_to_transactionplanresult_types_and_helpers to graphite-base/1276 February 3, 2026 14:45
@lorisleiva lorisleiva changed the base branch from graphite-base/1276 to main February 3, 2026 14:46
@lorisleiva lorisleiva force-pushed the 01-30-reshape_single_transactionplanresults_ branch from fa87b2f to c799380 Compare February 3, 2026 14:46
@lorisleiva lorisleiva merged commit 2fbad6a into main Feb 3, 2026
16 checks passed
@lorisleiva lorisleiva deleted the 01-30-reshape_single_transactionplanresults_ branch February 3, 2026 15:02
@github-actions github-actions Bot mentioned this pull request Feb 3, 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 Feb 18, 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.

2 participants