A high-activity week across the ecosystem. In rippled, 26+ PRs merged to develop including a new transaction-specific invariant framework, protocol version 2.3 reducing ledger sync bandwidth, granular permission templates for delegation, Linux package builds in CI, and retirement of the fixUniversalNumber amendment. In xrpl.js, 12 PRs merged including a breaking change defaulting signing to ed25519, custom definitions support for signing/submission, and the Q2 quarterly dependency upgrade. On the developer portal, a new AI Tools page, Batch transaction integration guidance, and modernized JS code samples for checks tutorials shipped. Clio published its first 2.8.0 beta and fixed a proxy IP resolution bug.
This was a productive week across the XRP Ledger development ecosystem, with significant progress on both the core server and the tools developers use to build on XRPL.
The biggest theme in the core server software (rippled) was improved architecture. A new system was added that lets individual transaction types define their own safety checks after execution — think of it as each type of transaction now having a customized checklist to verify everything went correctly, rather than relying only on a single set of universal checks. The network protocol itself got an upgrade (version 2.3) that reduces the amount of data nodes need to send each other during ledger synchronization by replacing large identifiers with much smaller ones. For developers building permission and delegation features, the server now enforces stricter templates for what delegated transactions can do, and delegation records are now discoverable from both sides of the relationship. Separately, the ability to build Linux installation packages (DEB and RPM) was added to the automated build system, which will make it easier for operators to install and update their nodes.
For JavaScript developers, the xrpl.js library made a significant breaking change: the default signing algorithm is now ed25519 instead of secp256k1. If your application doesn't explicitly specify a signing algorithm, this will affect you when you upgrade. The library also gained support for custom transaction definitions in its signing and submission methods — previously you had to drop down to a lower-level library for this. TypeScript users benefit from improved type narrowing, meaning the compiler can now tell you the exact shape of a response based on what you requested, catching errors before your code even runs. On the API server side (Clio), the first beta of version 2.8.0 was published, and a bug was fixed where client IP addresses were being misidentified when a reverse proxy reused connections for different users. The developer documentation at xrpl.org added a new page listing AI tools for XRPL development, guidance on integrating with Batch transactions, and modernized JavaScript code samples.
For ongoing updates, follow @XRPLF and @RippleXDev on X, or check the XRPLF GitHub repos directly.
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.
LedgerNodeDepth) — Replaces 32-byte node IDs with 2-byte depth values in TMLedgerNode leaf messages during ledger sync, reducing bandwidth consumption (+781/−118, 25 files). rippled#6353Delegate objects are now discoverable from both delegator and delegatee owner directories, mirroring the pattern used by other bidirectional ledger objects. Part of the PermissionDelegationV1_1 amendment (in development, not yet voting) (+296/−36, 8 files). rippled#6681delegate filter parameter for account_tx RPC — Adds the ability to filter transaction history by delegate. Labeled API Change (+393/−4). rippled#6126--definitions flag and artifact — Adds a CLI flag to emit protocol definitions as a build artifact, useful for client libraries and tooling (+88/−8). rippled#6858ConfidentialMPTSend — Adds destination tag field to confidential MPT transfers. rippled#6988fixUniversalNumber amendment — This amendment was activated over 2 years ago and its guard code has been removed (+53/−341). rippled#5962Number/STAmount scale differences. Targeting the 3.1.3 release (+495/−73). rippled#6955LoanPay "funds are conserved" assertion fix — Adjusts assertion tolerance when a Vault and a Loan are at significantly different scales, preventing false failures. Originated from an ImmuneFi attackathon finding (+323/−41). rippled#6967LoanPay base fee cap — Caps the base fee for LoanPay when payment exceeds periodicPayment * loanMaximumPaymentsPerTransaction. rippled#6969visitEntry. Backported to 3.1.x. rippled#6961sfAdditionalBooks in the hybrid offer invariant, targeting 3.1.3. rippled#6945TxQ and PerfLog CI tests. rippled#7005ConfidentialMPTSend. rippled#7017JobQueue.h. Contributed by community member @pratikmankawde. rippled#6993AccountRoot — Began making SLE helpers type-safe, introducing read-only and writable ledger entry classes (+1,727/−1,238, 104 files). rippled#6620ValidVault into per-transactor finalizeInvariants methods (+3,630/−981, 143 files). rippled#6618LendingHelpers moved to libxrpl — Pure refactor moving lending helpers into the shared library. rippled#6638tec object deletion cleanup — Cleaned up deletion logic in Transactor.cpp (+120/−102). rippled#6588modernize-* checks — Enabled modernize checks across the codebase (+4,629/−5,295, 699 files). rippled#6975modernize-use-nodiscard — Added [[nodiscard]] across 283 files (+1,496/−1,493). rippled#7015Taker.h. rippled#6984-fix flag addition (rippled#6990), diff upload (rippled#6983), additional cleanups (rippled#6992, rippled#6979).SECURITY.md — Bug bounty program now goes through Bugcrowd. rippled#7006actions/cache 5.0.4→5.0.5 (clio#3039), tj-actions/changed-files 47.0.5→47.0.6 (clio#3040).nightly-20260423 published (development only).AssetPrice and Scale interactions — Improved documentation for Oracle data pairs distinguishing new vs. existing pair behavior (+13/−11). xrpl-dev-portal#3625ed25519 is now used instead of secp256k1, aligning fromSeed and generateSeed defaults. Replaces the 2-year-old xrpl.js#2658 (+145/−17, 10 files). xrpl.js#3273utils.encode, utils.decode, utils.encodeForSigning, Wallet.sign, client.submit(), and client.submitAndWait. Previously, custom definitions required using ripple-binary-codec directly (+4,104/−51, 18 files). xrpl.js#3229LedgerEntryRequest — client.request() now returns a more specific LedgerEntryResponse based on which lookup field is provided (+250/−27, 8 files). xrpl.js#3230LedgerEntryRequest response type narrows based on the binary flag (+121/−14). xrpl.js#3231MPTAmount field type fix — Changed from MPTAmount to string to match the actual data (+2/−3). xrpl.js#3232rippled to xrpld for Docker container startup (+185/−22, 15 files). xrpl.js#3270@eslint/js 9.39.4→10.0.1 (xrpl.js#3257), typescript 5.2.2→6.0.2 (xrpl.js#3244), eslint 9.39.2→10.1.0 (xrpl.js#3249), globals 16.3.0→17.4.0 (xrpl.js#3245), eslint-plugin-jsdoc 52.0.4→62.9.0 (xrpl.js#3265).RippledContainer and test config from rippleci/rippled:develop to rippleci/xrpld:develop, with updated filesystem paths (+7/−20). xrpl4j#766xrpl.js: Sponsorship (XLS-68) (xrpl.js#3238, +3,906/−35, 44 files) — Adds SponsorshipSet, SponsorshipTransfer types, and sponsor signing utilities for the Sponsored Fees and Reserves feature. Under active review with automated comments.
xrpl.js: TxResponse type narrowing (xrpl.js#3328, +147/−37) — Makes TxResponse type-safe based on binary field and api_version, so TypeScript correctly narrows response shapes. Multiple review rounds.
xrpl.js: Redact private key material in errors (xrpl.js#3327, +39/−7) — Private keys now appear as [redacted] in error messages to prevent leakage to logs and error-tracking services. One review round.
xrpl.js: Smart contracts (draft) (xrpl.js#3274, +3,300/−448, 61 files) — Explicitly marked "[DO NOT MERGE]". Early exploratory draft adding Contract* transaction types and binary-codec updates. Not intended for merge.
xrpl.js: Ticket property rename (xrpl.js#3237, +53/−4) — Fixes ledger_entry request model for ticket objects, renaming owner→account and ticket_sequence→ticket_seq to match the API. Reviewer requested integration test; contributor has added it.
xrpl-py: Collection of bug fixes (xrpl-py#993, +286/−30, 15 files) — Four fixes addressing silent data corruption and secret-material leakage: redacts sensitive fields in model reprs, prevents seed leakage in Wallet exceptions, fixes IOU underflow serialization, and strengthens validation. Addresses five open issues.
xrpl4j: Single Asset Vault (XLS-65) (xrpl4j#713, +7,767/−170, 96 files) — Adds support for VaultCreate, VaultSet, VaultDelete, VaultDeposit, VaultWithdraw, VaultClawback, and related MPT and Lending Protocol transactions. 45 review rounds, patch coverage at 97.6%.
xrpl4j: Sponsored Fees and Reserves (XLS-68) (xrpl4j#720, +5,483/−5, 58 files) — Java library support for SponsorshipSet and SponsorshipTransfer. 17 review rounds.
xrpl4j: Disable BatchTransactionIT on Devnet (xrpl4j#768, +2/−1) — The Batch amendment is disabled on Devnet; this skips the integration test to avoid CI failures.
xrpl-dev-portal: Improved faucet page (xrpl-dev-portal#3622, +213/−136) — Adds widgets for refilling existing addresses and requesting specific XRP amounts. Has change requests on UI spacing/layout.
xrpl-dev-portal: Revised transaction types landing page (xrpl-dev-portal#3623, +100/−5) — Groups transaction types by feature area with tables for improved readability.
xrpl-dev-portal: Java code samples for credentials (xrpl-dev-portal#3618, +580/−0) — Adds Java code samples and a Manage Credentials tutorial.
xrpl-dev-portal: Feedback scale widget (xrpl-dev-portal#3526, +17/−96) — Approved by @mDuo13, awaiting minor conflict resolution.
Clio: Refactor make_address() calls (clio#3044, +191/−55) — Replaces exception-throwing IP address parsing with error code handling. Approved by @godexsoft.
Clio: Optional log rotation (clio#3016, +203/−11) — Adds an option to disable log rotation.
XRPL-Standards: LaTeX rendering (XRPL-Standards#522, +89/−6) — Adds KaTeX support to the standards website for rendering math expressions.
XRPL-Standards: Float host functions and versioning (XRPL-Standards#504, +308/−15) — Adds six new host functions and §5.11 Host Function Versioning Rules. 40 review rounds with active discussion.
opensource.ripple.com: Sponsored fees tutorials (opensource.ripple.com#214, +1,860/−4, 18 files) — Python tutorials for Sponsored Fees and Reserves. Currently only works with local rippled since the feature isn't on Devnet yet.
make_address() refactor (clio#3044) — Already approved by a core reviewer. Improves error handling by replacing exception-based IP parsing with error codes. Should merge soon.XRPL-Standards discussions — Three new discussion proposals were filed this week:
BlacklistSet, BlacklistTrustSet) implementing the Provider/Trustee pattern as first-class ledger features. Discussion #525Community contribution in rippled — Community member @pratikmankawde contributed the MSVC Debug build fix (rippled#6993), resolving a preprocessor collision that blocked Windows debug builds.
xrpl.js ticket property fix — Community member @Platonenkov (authorAssociation: NONE) opened xrpl.js#3237 fixing the ledger_entry ticket model to match the API specification. Reviewer @ckeshava requested an integration test, which the contributor added.
xrpl4j: Sidechain issue closed — The long-standing issue xrpl4j#245 requesting sidechain-specific features was closed, as the Sidechain amendment does not have voting support and is likely to be deprecated.
Developer portal dark mode issue — A new issue (xrpl-dev-portal#3624) reports the "Ask AI" modal is nearly unreadable in dark mode.
Compared to last week (April 13–19, 2026):
| Metric | This Week | Last Week | Change |
| Repos with activity | 8 | 7 | ↑1 |
| rippled PRs merged | 26 | 22 | ↑4 |
| xrpl-dev-portal PRs merged | 4 | 12 | ↓8 |
| xrpl-dev-portal PRs opened | 7 | 10 | ↓3 |
| xrpl-dev-portal commits | 8 | 9 | ↓1 |
| xrpl.js PRs merged | 12 | 0 | ↑12 |
| xrpl.js PRs opened | 5 | 14 | ↓9 |
| xrpl.js commits | 5 | 0 | ↑5 |
| xrpl-py PRs merged | 0 | 0 | flat |
| xrpl-py PRs opened | 1 | 3 | ↓2 |
| XRPL-Standards PRs merged | 1 | 0 | ↑1 |
| XRPL-Standards PRs opened | 3 | 3 | flat |
| XRPL-Standards discussions | 3 | 0 | ↑3 |
| clio PRs merged | 3 | 7 | ↓4 |
| clio PRs opened | 2 | 2 | flat |
| clio commits | 3 | 7 | ↓4 |
| xrpl4j PRs merged | 1 | 0 | ↑1 |
| xrpl4j PRs opened | 3 | 0 | ↑3 |
| opensource.ripple.com PRs opened | 1 | 0 | ↑1 |
| Releases | 2 | 1 | ↑1 |
Notable carryovers from last week's "In Progress": The xrpl.js quarterly dependency upgrade (xrpl.js#3271), default signing algorithm change (xrpl.js#3273), and XLS-68 Sponsorship PR (xrpl.js#3238) were all in progress last week — the first two merged, while XLS-68 remains under review. The XRPL-Standards proof naming PR (XRPL-Standards#518) also carried over and merged. After last week's zero xrpl.js merges, this week saw a strong rebound with 12 merges. The XRPL-Standards repo saw a notable spike in community engagement with three new discussion proposals. The addition of opensource.ripple.com to this week's activity brings the total active repos to 8.