A week of protocol housekeeping and cross-repo polish. In rippled, 10 PRs merged to develop — headlined by the complete removal of the XChainBridge feature (−17,095 lines) and the retirement of three legacy amendments (FillOrKill, AMM/AMMOverflowOffer, XRPFees). In xrpl4j, 4 PRs merged and a v7.0.0-rc.5 release candidate shipped with Batch validation, ZonedDateTime serialization, Single Asset Vault (XLS-65), and HopType fixes. On the developer portal, 4 PRs merged including new Clio MPToken reference docs and a rewritten "Send a Trust Line Token" tutorial. In xrpl.js, 2 PRs merged fixing Confidential Batch handling and dropping Node 20 from CI.
This week's XRP Ledger development was focused on cleaning house. The biggest change: the Cross-Chain Bridge feature (XChainBridge) was entirely removed from the core server codebase, deleting over 17,000 lines of code. This feature, which allowed bridging assets between XRPL sidechains, has been marked as obsolete — meaning validators can no longer vote to enable it, and all the related transaction types, data structures, and tests are gone from the development branch. For anyone running a node, this won't affect anything until a future tagged release ships, but it signals that the protocol is moving on from this approach. In addition, three other "amendments" (protocol changes that were adopted long ago) — FillOrKill, AMM, and XRPFees — had their legacy conditional code paths removed. Since these amendments are already permanently enabled on the network, this is purely a codebase simplification that makes the server easier to maintain.
On the tools and SDK side, the Java library (xrpl4j) published a release candidate (v7.0.0-rc.5) that fixes several issues Java developers have hit. Most notably, it corrects a validation rule that was rejecting valid Batch transactions — the library was enforcing a stricter rule than the actual protocol requires, making it impossible to deserialize certain transactions that the network had already validated. The release also fixes a date-formatting bug that could break applications mixing xrpl4j types with their own Java objects. The developer portal (xrpl.org) received a rewritten tutorial for sending trust-line-based tokens, new reference pages for two Clio-only API methods related to Multi-Purpose Tokens (MPTs), and a fix for the WebSocket developer tool that was showing annoying error popups while typing. Community contributors were especially active this week, with at least six people from outside the core teams submitting bug fixes and improvements across multiple repositories — from fixing undefined behavior in JSON parsing to aligning error codes between specs and code.
For the latest updates, follow @XRPLF and @RippleXDev on X, and explore the XRPLF repos directly for full development activity.
Note: All rippled changes below were merged to the develop branch and are not yet live on the network. A tagged release is required for any change to reach production.
Note: SDK PRs below were merged to each library's main branch. They become available to application developers only after a tagged release is published (npm for xrpl.js, Maven Central for xrpl4j, PyPI for xrpl-py). If no corresponding SDK release appears in the data, treat the feature as merged-but-pending-release and phrase availability accordingly.
Bridge, XChainOwnedClaimID, XChainOwnedCreateAccountClaimID), the STXChainBridge and XChainAttestations serialized types, RPC handling, and tests. XChainBridge (XLS-38) and fixXChainRewardRounding become VoteBehavior::Obsolete, so validators can no longer vote for them. The removed type and keylet values are preserved as [[deprecated]] enumerators to prevent accidental reuse. This is the single largest deletion merged this week.FillOrKill amendment, keeping only the enabled behavior.AMM (XLS-30) and AMMOverflowOffer amendments, deleting legacy conditionals.deposit_authorized, nft_buy_offers, and nft_sell_offers onto xrpl-rpc-spec 0.1.29, continuing the systematic migration of hand-written RPC parsing to the shared spec library.xrpl-rpc-spec to 0.1.29 and simplifies account_info and account_lines handlers, removing the nested optional wrapper pattern. Approved by a core team member.xrpl-rpc-spec 0.1.29 bump as rippled, simplifying account_info and account_lines handlers in Clio.account_mptokens and account_mptoken_issuances methods.markdown requirement to permit 3.11.1.bug) — The previous validation rejected any Batch whose outer account appeared inside another BatchSigner's nested multi-sign Signers array. XLS-56 §2.3 only forbids a signature from the BatchSigner's own Account, which is what rippled enforces. The fix makes validated Testnet Batch transactions deserializable again. Included in xrpl4j v7.0.0-rc.5.bug) — The previous mapper-wide ZonedDateTime registration broke ISO-8601 parsing for consumer-owned types sharing an object graph with xrpl4j. Now only the four xrpld date fields use the custom format. Included in v7.0.0-rc.5.LendingProtocolV1_1 updates to vault transaction and ledger-object models, including VaultDelete.MemoData and related changes. Merged — pending release.HopType.toJson() incorrectly writing the issuer value into the account field when the TYPE_ISSUER bit was set. Included in v7.0.0-rc.5.prepareConfidentialBatch no longer throws when a ConfidentialMPTSend credits a holder whose balances an earlier ConfidentialMPTClawback in the same Batch reset. Merged — pending npm release.rippled — config_reload admin RPC: rippled#8630 (+416/−18, 15 files) — Adds a new admin command allowing operators to reload specific config sections (starting with [transaction_queue]) without restarting the server. Approved by the AI reviewer; has outstanding Copilot-suggested improvements. This would be a notable quality-of-life improvement for node operators.
rippled — Batch preflight performance: rippled#8627 (+29/−25, 1 file) — Replaces std::unordered_set/map with std::flat_set backed by boost::container::small_vector in Batch (XLS-56) preflight checks, eliminating per-insertion heap allocations. Copilot recommended approval.
rippled — Reduce log verbosity: rippled#8628 (+35/−46, 5 files) — Adjusts debug log levels to reduce noise. Author notes it "dramatically improves the life of developers staring at debug logs."
rippled — Remove unchecked-optional-access suppressions: rippled#8637 (+136/−21, 5 files) — Refactors ApplyContext to hold a std::reference_wrapper instead of using optional-access suppressions. Approved by AI reviewer and Copilot.
rippled — Isolate gtest headers per directory: rippled#8635 (+462/−362, 199 files) — Compiles each test directory into its own object library to enforce header isolation. Approved by AI reviewer.
rippled — RPC handler migration part F: rippled#8626 (+1,316/−807, 27 files) — Continues the rpc-spec migration with six more handlers. Currently has merge conflicts.
rippled — Apply DeliverMax to inner Batch Payments: rippled#8558 (+366/−25, 9 files) — Ensures DeliverMax normalization applies to inner Batch Payments, simulate, and submit with tx_blob. Approved by AI reviewer; has outstanding Copilot finding.
xrpl4j — Defensive UnsignedByte copy: xrpl4j#857 (+323/−23, 7 files, labeled bug) — UnsignedByteArray now defensively copies mutable UnsignedByte instances, preventing destroy() from mutating shared static constants like ED2559_PREFIX. Approved by AI reviewer.
xrpl4j — Scope ObjectMapperFactory to xrpl4j types: xrpl4j#850 (+663/−22, 17 files) — Breaking change moving five Jackson behaviors from mapper-wide to xrpl4j-type-scoped via a custom AnnotationIntrospector. Approved by 2 reviewers.
xrpl.js — Fix OracleSet Scale max: xrpl.js#3553 (+21/−11, 4 files) — Raises SCALE_MAX from 10 to 20 to match rippled's kMaxPriceScale. Closes #3435.
xrpl.js — Return BigNumber from dropsToXrp: xrpl.js#3341 (+171/−90, 12 files) — Changes dropsToXrp() to return BigNumber instead of JavaScript number to prevent precision loss for large amounts. Approved by AI reviewer across 4 reviews; browser tests still failing.
xrpl-py — Update definitions generation: xrpl-py#1002 (+1,965/−353, 7 files) — Artifact-based definitions.json generation with CI validation against a live rippled container. Approved by AI reviewer.
xrpl-dev-portal — Ruby SDK tutorial: xrpl-dev-portal#3837 (+339/−3, 9 files) — Adds a "Get Started Using Ruby" tutorial and Ruby code samples for Send XRP. Foundation-approved; in infosec review.
XRPL-Standards — XLS-85 error code alignment: XRPL-Standards#671 (+2/−2) — Updates XLS-85 §1.2.2–1.2.3 so the documented MPT missing-holding error matches rippled's current tecNO_PERMISSION return. Approved by a reviewer.
XRPL-Standards — XLS-99 inline proof sizes: XRPL-Standards#664 (+5/−4) — Adds inline proof sizes and a both-mirrors failure condition to the XLS-99 spec. Approved by a reviewer.
UnsignedByte copying (xrpl4j#857) and ObjectMapperFactory scoping (xrpl4j#850) — are both approved and appear headed for the next release. The latter is a breaking change that will restore Jackson defaults for consumer types.config_reload admin RPC nearing merge: rippled#8630 is approved and would let operators update [transaction_queue] settings without restarting. Operator impact: hot-reloading transaction queue parameters during fee spikes.fixCleanup3_5_0. One approach will likely be chosen next week.Community-contributed bug fixes: @hmalinski (community member) opened rippled#8638 and rippled#8633, fixing undefined behavior in Json::Value::asBool() and an incorrect variable read in amountFromJson. The asBool PR carries forward @rick-mingyu-liu's earlier work from rippled#7684 with the requested changes applied. @hmalinski also opened xrpl.js#3553 fixing OracleSet scale validation. @praveenpretto-cloud opened rippled#8625 handling oversized unsigned ledger indexes in ledger_request. @Handy4ndy opened both the XLS-85 spec fix (XRPL-Standards#671) and the corresponding rippled fix (rippled#8634) for MPT escrow error codes. @saravanan619 contributed fixes in both xrpl.js#3551 (wallet seed/algorithm mismatch) and xrpl-py#1065 (canonical ledger entry names in AccountObjects). @nabe3m contributed token tutorial typo fixes (xrpl-dev-portal#4001) and continues Japanese translation work across multiple dev portal PRs (#4024, #4013, #4008).
New issues: @trungkien1992 reported rippled#8641 — an AMMDeposit in tfLPToken mode whose computed amount overflows returns tecINTERNAL instead of the expected tecAMM_FAILED under fixCleanup3_4_0. @Yut0Miura proposed adding shared, versioned X-address conformance test fixtures for XLS-5 (XRPL-Standards#672) to help SDK maintainers test against a canonical dataset. @cybele-ripple filed xrpl.js#3547 documenting that walletFromSecretNumbers produces an unrecoverable wallet due to a seed-family/algorithm mismatch.
New standards proposals: @quantova-inc's draft Qstamp Post-Quantum Evidence Anchor Memo spec (XRPL-Standards#665) awaits initial review. @poetsd opened XRPL-Standards#669, a non-normative FAQ entry for XLS-96 clarifying that enabling confidential balances permanently rules out a non-zero TransferFee. @whawk46's XLS-104 (Ephemeral Attested Credentials) draft (XRPL-Standards#651) has change requests; a companion discussion is at #656.
Clio CI: A new address-sanitizer issue was auto-filed (clio#3283) after tests failed one or more sanitizer checks, triggered by the xrpl-rpc-spec bump.
Compared to last week (October 12–18, 2026):
| Metric | This Week | Last Week | Change |
| Repos with activity | 7 | 7 | flat |
| rippled PRs merged | 10 | 68 | ↓58 |
| rippled PRs opened | 16 | 27 | ↓11 |
| rippled new issues | 1 | 6 | ↓5 |
| rippled closed issues | 1 | 1 | flat |
| rippled releases | 0 | 0 | flat |
| rippled commits | 10 | 59 | ↓49 |
| xrpl.js PRs merged | 2 | 0 | ↑2 |
| xrpl.js PRs opened | 9 | 7 | ↑2 |
| xrpl.js new issues | 1 | 0 | ↑1 |
| xrpl.js releases | 0 | 0 | flat |
| xrpl.js commits | 2 | 0 | ↑2 |
| xrpl-py PRs merged | 0 | 0 | flat |
| xrpl-py PRs opened | 3 | 2 | ↑1 |
| xrpl-py releases | 0 | 1 | ↓1 |
| xrpl-dev-portal PRs merged | 4 | 4 | flat |
| xrpl-dev-portal PRs opened | 17 | 15 | ↑2 |
| xrpl-dev-portal new issues | 0 | 1 | ↓1 |
| xrpl-dev-portal closed issues | 2 | 1 | ↑1 |
| xrpl-dev-portal commits | 6 | 7 | ↓1 |
| Clio PRs merged | 3 | 16 | ↓13 |
| Clio PRs opened | 0 | 2 | ↓2 |
| Clio new issues | 1 | 0 | ↑1 |
| Clio closed issues | 2 | 9 | ↓7 |
| Clio releases | 1 | 1 | flat |
| Clio commits | 3 | 16 | ↓13 |
| XRPL-Standards PRs merged | 1 | 1 | flat |
| XRPL-Standards PRs opened | 5 | 15 | ↓10 |
| XRPL-Standards new issues | 1 | 1 | flat |
| XRPL-Standards commits | 1 | 1 | flat |
| xrpl4j PRs merged | 4 | 4 | flat |
| xrpl4j PRs opened | 2 | 8 | ↓6 |
| xrpl4j new issues | 1 | 2 | ↓1 |
| xrpl4j releases | 1 | 0 | ↑1 |
| xrpl4j commits | 4 | 4 | flat |
| Total PRs merged (all repos) | 24 | 93 | ↓69 |
| Total releases | 2 | 2 | flat |
Carryovers from last week: The xrpl4j Single Asset Vault PR (xrpl4j#832), noted as "In Progress" last week with outstanding change requests, merged this week after revisions. The dev portal "Send Trust Line Token" tutorial (xrpl-dev-portal#3732), also in progress last week, went through a final review round and merged. The RPC-spec migration part E (rippled#8613), listed as "In Progress" last week, merged on Monday.
Trends: After last week's exceptional 93-merge burst driven by the FixedPrecision Vault stack and SHAMap hardening, this week returned to a steadier pace of 24 merges. The focus shifted to protocol cleanup — four amendment retirements and the XChainBridge removal collectively deleted over 18,000 lines of legacy code from rippled's develop branch. xrpl4j shipped its first release candidate of the week (v7.0.0-rc.5), consolidating several weeks of bug fixes. Community contributions were notably strong, with at least six external contributors opening PRs across rippled, xrpl.js, xrpl-py, the dev portal, and XRPL-Standards.