Skip to content

chore(deps): migrate subxt from v0.44 to v0.50#1229

Merged
gilescope merged 20 commits into
mainfrom
ozgb-toolkit-subxt-bump
Apr 8, 2026
Merged

chore(deps): migrate subxt from v0.44 to v0.50#1229
gilescope merged 20 commits into
mainfrom
ozgb-toolkit-subxt-bump

Conversation

@ozgb

@ozgb ozgb commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

Overview

Complete the API migration across toolkit, upgrader, relay, e2e tests,
and scripts for the subxt v0.50 rewrite. Release notes: https://github.com/paritytech/subxt/releases/tag/v0.50.0

Requirement for updating to the next stable polkadot SDK: #1244

🗹 TODO before merging

  • Ready

📌 Submission Checklist

  • Changes are backward-compatible (or flagged if breaking)
  • Pull request description explains why the change is needed
  • Self-reviewed the diff
  • I have included a change file, or skipped for this reason:
  • If the changes introduce a new feature, I have bumped the node minor version
  • Update documentation (if relevant)
  • Updated AGENTS.md if build commands, architecture, or workflows changed
  • No new todos introduced

🧪 Testing Evidence

Please describe any additional testing aside from CI:

  • Additional tests are provided (if possible)

🔱 Fork Strategy

  • Node Runtime Update
  • Node Client Update
  • Other:
  • N/A

Links

ozgb added 4 commits April 2, 2026 15:22
Complete the API migration across toolkit, upgrader, relay, e2e tests,
and scripts for the subxt v0.50 rewrite. Key changes:

- Block-centric API: api.blocks().at() → api.at_block(), api.storage().at_latest() → api.at_current_block().storage()
- Transaction types: TxProgress → TransactionProgress, TxInBlock → TransactionInBlock, TxStatus → TransactionStatus
- api.tx() is now async, encode_call_data() → tx().call_data()
- api.metadata() removed from OnlineClient; use at_current_block().metadata_ref()
- Metadata no longer Clone; use ArcMetadata (Arc<Metadata>) for shared ownership
- Granular error types: OnlineClientAtBlockError, ExtrinsicError, RuntimeApiError, etc.
- Event API: variant_name() → event_name(), as_event() → decode_fields_as(), field_values() removed
- Storage API: key now passed to fetch(addr, key) instead of address constructor
- Block from streams: extrinsics/events accessed via block.at().await? first
- dynamic::tx().into_value() requires Composite::unnamed() instead of Vec
- RpcConfig trait impl required for LegacyRpcMethods
@gilescope gilescope mentioned this pull request Apr 7, 2026
2 tasks
ozgb added 6 commits April 7, 2026 09:57
Share the RPC WebSocket connection within each client, cap fetch workers
to actual workload size, and retry transient transport errors during
transaction submission with exponential backoff.
@ozgb ozgb marked this pull request as ready for review April 7, 2026 14:04
@ozgb ozgb requested a review from a team as a code owner April 7, 2026 14:04

@gilescope gilescope left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks good

@gilescope gilescope enabled auto-merge April 8, 2026 10:56
@gilescope

Copy link
Copy Markdown
Contributor

/bot rebuild-metadata

@gilescope gilescope mentioned this pull request Apr 8, 2026
15 tasks
@ozgb

ozgb commented Apr 8, 2026

Copy link
Copy Markdown
Contributor Author

/bot rebuild-metadata

@github-actions

github-actions Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

✅ Metadata rebuild complete. No changes detected.

@github-actions

github-actions Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

✅ Metadata rebuild complete! Changes have been committed.

@gilescope gilescope added this pull request to the merge queue Apr 8, 2026
Merged via the queue into main with commit 1e6237c Apr 8, 2026
32 checks passed
@gilescope gilescope deleted the ozgb-toolkit-subxt-bump branch April 8, 2026 15:29
m2ux added a commit that referenced this pull request Apr 23, 2026
* chore(deps): migrate subxt from v0.44 to v0.50

Complete the API migration across toolkit, upgrader, relay, e2e tests,
and scripts for the subxt v0.50 rewrite. Key changes:

- Block-centric API: api.blocks().at() → api.at_block(), api.storage().at_latest() → api.at_current_block().storage()
- Transaction types: TxProgress → TransactionProgress, TxInBlock → TransactionInBlock, TxStatus → TransactionStatus
- api.tx() is now async, encode_call_data() → tx().call_data()
- api.metadata() removed from OnlineClient; use at_current_block().metadata_ref()
- Metadata no longer Clone; use ArcMetadata (Arc<Metadata>) for shared ownership
- Granular error types: OnlineClientAtBlockError, ExtrinsicError, RuntimeApiError, etc.
- Event API: variant_name() → event_name(), as_event() → decode_fields_as(), field_values() removed
- Storage API: key now passed to fetch(addr, key) instead of address constructor
- Block from streams: extrinsics/events accessed via block.at().await? first
- dynamic::tx().into_value() requires Composite::unnamed() instead of Vec
- RpcConfig trait impl required for LegacyRpcMethods

* chore: add change file for subxt v0.50 migration

* chore: fix tags in change file

* docs: add pr link to change file

* chore: cargo fmt

* fix(toolkit): add retry with backoff for RPC 429 rate limiting

Share the RPC WebSocket connection within each client, cap fetch workers
to actual workload size, and retry transient transport errors during
transaction submission with exponential backoff.

* chore: cargo fmt

* docs: add issue link to change file

* fix: compile tests in e2e tests

* chore: fix metadata

* test: fix deploy_tx race condition causing test failures

* more robust decoding

Signed-off-by: Giles Cope <gilescope@gmail.com>

* test: update test error detection for new subxt version

* chore: rebuild metadata

---------

Signed-off-by: Giles Cope <gilescope@gmail.com>
Co-authored-by: Giles Cope <gilescope@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Signed-off-by: Mike Clay <mike.clay@shielded.io>
m2ux added a commit that referenced this pull request Apr 23, 2026
* chore(deps): migrate subxt from v0.44 to v0.50

Complete the API migration across toolkit, upgrader, relay, e2e tests,
and scripts for the subxt v0.50 rewrite. Key changes:

- Block-centric API: api.blocks().at() → api.at_block(), api.storage().at_latest() → api.at_current_block().storage()
- Transaction types: TxProgress → TransactionProgress, TxInBlock → TransactionInBlock, TxStatus → TransactionStatus
- api.tx() is now async, encode_call_data() → tx().call_data()
- api.metadata() removed from OnlineClient; use at_current_block().metadata_ref()
- Metadata no longer Clone; use ArcMetadata (Arc<Metadata>) for shared ownership
- Granular error types: OnlineClientAtBlockError, ExtrinsicError, RuntimeApiError, etc.
- Event API: variant_name() → event_name(), as_event() → decode_fields_as(), field_values() removed
- Storage API: key now passed to fetch(addr, key) instead of address constructor
- Block from streams: extrinsics/events accessed via block.at().await? first
- dynamic::tx().into_value() requires Composite::unnamed() instead of Vec
- RpcConfig trait impl required for LegacyRpcMethods

* chore: add change file for subxt v0.50 migration

* chore: fix tags in change file

* docs: add pr link to change file

* chore: cargo fmt

* fix(toolkit): add retry with backoff for RPC 429 rate limiting

Share the RPC WebSocket connection within each client, cap fetch workers
to actual workload size, and retry transient transport errors during
transaction submission with exponential backoff.

* chore: cargo fmt

* docs: add issue link to change file

* fix: compile tests in e2e tests

* chore: fix metadata

* test: fix deploy_tx race condition causing test failures

* more robust decoding

Signed-off-by: Giles Cope <gilescope@gmail.com>

* test: update test error detection for new subxt version

* chore: rebuild metadata

---------

Signed-off-by: Giles Cope <gilescope@gmail.com>
Co-authored-by: Giles Cope <gilescope@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Signed-off-by: Mike Clay <mike.clay@shielded.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants