Skip to content

Feature: Vault Rankings Page#1292

Merged
achowdhry-ripple merged 26 commits intomainfrom
vault-rankings-page-v2
Mar 20, 2026
Merged

Feature: Vault Rankings Page#1292
achowdhry-ripple merged 26 commits intomainfrom
vault-rankings-page-v2

Conversation

@achowdhry-ripple
Copy link
Collaborator

@achowdhry-ripple achowdhry-ripple commented Mar 11, 2026

High Level Overview of Change


Summary

  • Vault Rankings Page (/vaults): New listing page with server-side pagination,
    sorting (TVL, outstanding loans, utilization ratio, interest rate), asset type
    filtering (All/XRP/Stablecoins), and text search across vault names, accounts,
    assets, and websites
  • Vault Detail Page (/vault/:id): Individual vault view with header metadata
    (owner, asset, TVL, max supply, withdrawal policy, credentials, website),
    transaction history, loan broker tabs with per-broker loan tables, and
    depositor/shareholder breakdown with share value calculations
  • Aggregate Metrics: Header stats showing Total Value Locked, Outstanding Loans,
    Loans Originated, Avg. Interest Rate, # of Vaults, and Utilization Ratio — all
    converted from XRP to USD using the live oracle rate
  • Asset Price Conversion: Server-side caching of xrplmeta token prices for RWA
    assets (refreshed every 5 minutes), enabling accurate USD conversion for all vault
    assets — not just XRP-denominated ones
  • Vault Transaction Components: Simple, Description, and TableDetail views for
    VaultCreate, VaultDeposit, VaultWithdraw, VaultSet, VaultDelete, and VaultClawback
    transaction types
  • Test Coverage: Full test suites for the rankings page (container rendering,
    metrics, filters, table headers/rows, search, empty state, disclaimer), API layer
    (field mapping, sort/filter/search param handling, asset prices endpoint), vault
    detail page, vault header, loans, depositors, currency toggle, transactions, and
    utilities

Test plan

  • Verify /vaults loads with correct aggregate metrics in the header
  • Confirm TVL and outstanding loan values display in USD for both XRP and non-XRP
    vaults
  • Test sorting by each column (TVL, outstanding loans, utilization, interest rate)
    in both directions
  • Test asset type filters (All Assets, XRP, Stablecoins) update the table
  • Test search filters results by vault name/account/asset/website
  • Click through to a vault detail page (/vault/:id) and verify header,
    transactions, loans, and depositors tabs
  • Verify navigation link appears in sidebar on mainnet only
  • Run npx jest src/containers/Vaults/test/ src/containers/Vault/test/ — all 88
    tests pass
Screenshot 2026-03-20 at 3 26 34 PM Screenshot 2026-03-20 at 3 26 29 PM

Context of Change

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Refactor (non-breaking change that only restructures code)
  • Tests (You added tests for code that already exists, or your new feature included in this PR)
  • Documentation Updates
  • Translation Updates
  • Release

Codebase Modernization

  • Updated files to React Hooks
  • Updated files to TypeScript

Before / After

Test Plan

@achowdhry-ripple achowdhry-ripple changed the title Vault rankings page v2 Feature: Vault Rankings Page Mar 11, 2026
achowdhry-ripple and others added 8 commits March 16, 2026 11:38
Implements the Vaults ranking page matching the Figma design (Vault Rankings v2).
Includes metrics cards with tooltips, filter bar, search bar, sortable table,
pagination, and responsive styling. API calls use placeholders with mock data.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Fixed tooltip icon sizing in metric cards (flex-shrink: 0, 16x16px)
- Search bar focus: purple border on wrapper, removed inner focus ring
- Table: percentage-based column widths with min-width for mobile scroll
- Vault ID: responsive short/long display based on viewport
- Sort headers: always show caret, white text for active sort column
@achowdhry-ripple achowdhry-ripple marked this pull request as ready for review March 17, 2026 18:01
pdp2121
pdp2121 previously approved these changes Mar 19, 2026
Copy link
Collaborator

@pdp2121 pdp2121 left a comment

Choose a reason for hiding this comment

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

LGTM

@kuan121
Copy link
Contributor

kuan121 commented Mar 19, 2026

Can you provide some screenshots?

Comment on lines +38 to +39
FEATURE_VAULTS_PAGE &&
process.env.VITE_ENVIRONMENT === 'mainnet' && {
Copy link
Contributor

@kuan121 kuan121 Mar 19, 2026

Choose a reason for hiding this comment

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

Do you mean to set FEATURE_VAULTS_PAGE to false? If it's true, we will show the Vault Ranking page for mainnet after we deploy this change to prod.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It is set to that during development right now so I can see it. I'll change it to false once I make any code changes based on your review, so that I can confirm it works before feature flagging it

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

toggled it, should be false now. will keep true on local to test

Copy link
Collaborator Author

@achowdhry-ripple achowdhry-ripple Mar 20, 2026

Choose a reason for hiding this comment

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

Thank you for raising this -- The fundamental truth of vault information comes from Clio/rippled ledger data, and the data this UI sources comes from LOS (https://los.prod.ripplex.io/). the data and any discrepancies will be auditable from there. I hope this clarifies your question!

@achowdhry-ripple
Copy link
Collaborator Author

Can you provide some screenshots?

added

@achowdhry-ripple achowdhry-ripple merged commit 4db3421 into main Mar 20, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants