Original release notes
4.10.0
Minor Changes
- #18943
d60474cThanks @francois-guerin-ledger! - fix(llc): use Arc native USDC's ERC20 token CAL descriptor for the exchange config, so the device shows the correct (6-decimal) swap amount
- #18641
104d174Thanks @claudiiafg! - Fix Asset Detail favourites for tokens opened from Market or Assets by resolving market data via the /v3/marketsledgerIdsfilter while keeping backward compatibility with the legacyidsfilter.
- #18363
26be121Thanks @sarneijim! - Add Ledger Recover Backup Hub feature intro bottom-sheet with backup-hub deeplink
- #18492
8a8b22fThanks @RobinVncnt! - fix: large mover currency
- #18614
e636885Thanks @Valentin-Ledger! - Add acustom.bottomSheet.errorwallet-api method for the mobile Borrow Live App. The embedded webview can now open an error-toned bottom sheet that resolves with{ confirmed: true }when the CTA is pressed and{ confirmed: false }when the sheet is closed or dragged down, mirroring thecustom.dialog.confirmationcontract.
Shared param validation lives in @ledgerhq/live-common/wallet-api/Borrow/errorBottomSheetParams. On mobile the sheet is driven by a Redux Toolkit slice (borrow.errorBottomSheet) and a module-level resolver store, and its UI is rendered via the shared InfoState component with preset="error", which both tints the parent QueuedDrawerBottomSheet with the error gradient (via useBottomSheetBackgroundTone) and renders the icon, title, description and CTA.
The legacy vanilla-redux borrow reducer (actions/borrow.ts, BorrowActionTypes) has been migrated to createSlice; the slice now exports setInfoBottomSheet and setErrorBottomSheet actions directly.
- #18977
f832e06Thanks @Valentin-Ledger! - AddborrowFeatureanalytics property derived from theptxBorrowLiveAppfeature flag, included in identify traits and track events on both desktop and mobile.
- #18832
52a9ddbThanks @LucasWerey! - Add the bottom fade gradient (same as the transactions history) at the bottom of the Assets, Stablecoins and Stocks lists so content fades out at the bottom of the screen
- #18586
6304f4fThanks @tonykhaov! - Fix missing displayedPosition on Wallet Braze carousel content card analytics (impression, click, dismiss)
- #18774
ca99ba2Thanks @deepyjr! - Fix mobile market countervalue fallback and formatting for unsupported fiats and crypto units.
Adds two fields to the broadcast_success and broadcast_failure Datadog events, on both success and failure paths:
isTestnet: derived from the currency model (isTestnetFor)isSendMax: derived fromtransaction.useAllAmount
Existing fields are left unchanged.
- #18627
7fcf623Thanks @OlivierFreyssinet! - Bump Device Management Kit to 1.7.1
- #18627
7fcf623Thanks @OlivierFreyssinet! - Bump React Native HID transport to 1.0.4
- #18612
0ffa53eThanks @claudiiafg! - Fix asset detail chart transaction marker clustering with per-timeframe spacing (wider gaps on 5y/all) via shared@ledgerhq/asset-detailutils.
- #18741
913f4a8Thanks @qperrot! - Fix: handle the "RBF requires an additional sats fee" error and show it in the frontend
- #18771
9a5d4d5Thanks @OlivierFreyssinet! - Track Device Intent Executor drawer close clicks only from explicit header close and backdrop press interactions
- #18767
01cf3a8Thanks @LucasWerey! - Disable the Mood index (Fear & Greed) for users in the UK on both mobile and desktop, based on the device region (same mechanism as the Earn APY). Adds a sharedisMoodIndexAvailablehelper and hides the Mood index card/tile from the Market screen and the Market banner when the region is "GB".
- #18744
1bc567cThanks @beths-ledger! - Ensure navigation header is set correctly when navigating between earn simulator and earn deposit flows via deeplinks.
- #18552
0fe1b2dThanks @claudiiafg! - Fix desktop asset detail all-time price variation to derive from chart endpoints instead of the 1y market change, and correct the 6m range mapping. Extract shared market chart and variation helpers to live-common for desktop and mobile.
- #18848
88c89b0Thanks @dilaouid! - fix(lwdm): new send flow fix no more unit hardcoding for btc fees
- #18807
5363ac7Thanks @ishaba! - fix(lwm): polyfill structuredClone for Hermes to fix SUI send crash
- #18681
ad68778Thanks @mitchellv-ledger! - Remove llmAnalyticsOptInPrompt feature flag and unused variant B code
- #18678
aa7896eThanks @amaslakov! - Update Tezos unstake-required modal copy
- #18776
b7a676dThanks @RobinVncnt! - fix: lwm top wallet cards spacing, lwd bottom cards radius
- #18743
e963396Thanks @claudiiafg! - Rename the global search crypto category label from "Cryptos" to "Crypto" on mobile and desktop.
- #18411
229b30aThanks @RobinVncnt! - feat: lwm backup hub
- #18660
1f41eeeThanks @mitchellv-ledger! - Remove "llmHomescreen" feature flag and legacy code in lwm
- #18811
cbfdde5Thanks @koda-apps! - Fix lazy onboarding analytics back navigation
- #18683
5ec842bThanks @LucasWerey! - Fix the Market screen "Total market cap" highlight card overflowing in locales with longer compact-number suffixes (e.g. French "billions"). The value now shrinks to fit the card width while the trend indicator keeps its size.
- #18665
1dff6faThanks @LucasWerey! - Share the Asset Detail trade-availability gating between mobile and desktop. ExtracteduseTradeAvailabilityand the ramp ledger-id resolution helpers (resolveRampLedgerIds,ledgerIdsFromLedgerCurrency,isAvailableOnBuy,isAvailableOnSwap) into@ledgerhq/asset-detail, and refactored desktop to consume them. Mobile now gates the Asset Detail CTAs (Buy/Swap/Receive) on the same logic: a currency that is not supported by the build or deactivated by a feature flag exposes no transfer actions (footer and in-page), while supported assets without buy/swap show the existing "Swap and Buy are not supported for this asset." banner.
- #18645
6dc80faThanks @LucasWerey! - Update asset discovery analytics on mobile: addsource(previous page) to the Global Searchasset_clickedevent, enrich thePage Marketevent withsortVolume/sortMarketCap/sortChange/timeframe/category, add the selectedcategoryto the market assetbutton_clickedevent, and reshapesort_market_listto report each sort column independently.
- #18635
57bc639Thanks @LucasWerey! - Bump Lumen (design-core 0.1.17 / ui-react 0.1.41 / ui-react-visualization 0.1.20 / ui-rnative 0.1.42 / ui-rnative-visualization 0.1.19) and adapt the asset-detail price chart to its new four-state rendering. The chart now drives its loading and empty states through the LumenLineChartloading/emptyLabelprops instead of bespoke skeleton/error components, derives loading from the chart query's fetching state so changing the timeframe shows a loading state (not "No data"), and keeps the previous timeframe's line while the next one loads - scoped to the current asset so switching to an asset with no data shows the empty state rather than the previous asset's graph.

