4.11.0
Minor Changes
-
#19082
ba55b01Thanks @Valentin-Ledger! - Rename the desktop analytics property emitted for theptxBorrowLiveAppfeature flag fromptxBorrowLiveApptoborrowFeatureso it matches mobile and the documentedborrowFeatureSegment trait. -
#19180
343208dThanks @Valentin-Ledger! - Update borrow entry point copy and icon in Portfolio, and move the borrow section into the Wallet Assets group on mobile -
#18987
98ee95cThanks @Valentin-Ledger! - AddborrowFeatureanalytics property derived from theptxBorrowLiveAppfeature flag, included in identify traits and track events on both desktop and mobile. -
#19233
7e5eb6cThanks @francois-guerin-ledger! - Replace deprecated findCryptoCurrencyByTicker with findCryptoCurrencyById in EVM staking provider icon -
#19101
4b615c2Thanks @dilaouid! - fix(lwdm): fix countervalue magnitude in the new send flow -
#18866
e0be780Thanks @OlivierFreyssinet! - Add desktop DeviceActionContent component and developer playground -
#19087
b98cce3Thanks @YazhuEth! - Use the node's min relay fee as the minimum for manual Bitcoin-family fees in the send flow (BTC falls back to 1 sat/vB). A fee below it is now rejected in the form instead of at broadcast. -
#18857
eff921dThanks @jiyuzhuang! - Improve GAM dev tools (campaign id overview, clear dismissed ids, skip APP_START launch hydration) and gate APP_START modal on campaign completeness -
#19327
ac338b3Thanks @mcayuelas-ledger! - fix analytics chart overflow clipping by removing overflow-hidden class -
#19314
4232eabThanks @claudiiafg! - Fix Analytics and Asset Detail charts keeping scrubber focus when moving the pointer below the graph. Use the default chart height with Y-axis domain padding instead of an extra 50px SVG hit area. -
#19627
8e3b521Thanks @live-github-bot! - Merge release branch into hotfix support branch, resolving version and changelog conflicts -
#18917
3b9ad8eThanks @YazhuEth! - celo: deprecate the "Ledger by Figment" validator. It is no longer shown or selectable in the vote flow and is never the default — the validator list is now ranked by TVL with none selected by default. Existing delegations remain fully manageable (unvote / unlock / withdraw). -
#19198
b50b405Thanks @mcayuelas-ledger! - Fix the portfolio Analytics chart displaying countervalues inflated by x100. The chart data and variation text are already expressed in the fiat unit's smallest atom, but the formatter applied an extra magnitude shift. A dedicatedcreateSmallestUnitFiatLineChartValueFormatteris now used for smallest-atom data, and the variation text is shifted down by the unit magnitude. -
#18856
c0c3a63Thanks @dilaouid! - chore(lwdm): remove all evm mention in the new send flow -
#18887
8b6614eThanks @lysyi3m! - Remove theconcordiumVerifyAddressfeature flag and its "address verification unavailable" fallback. On-device address verification is now the unconditional path for all Concordium accounts. -
#19055
0675175Thanks @OlivierFreyssinet! - Add MVVM connect device flow on desktop with a WebHID discovery source -
#19010
d3c7634Thanks @OlivierFreyssinet! - Add a desktop known devices store: a persistedknownDevicesreducer (seeded on settings load fromlastSeenDevice/lastOnboardedDevice, upserted from device sources, deduped per model id) using the sharedKnownDeviceshape, with WebHID serialization helpers for robust persistence. -
#18914
9a79fe3Thanks @YazhuEth! - Fix Cosmos "Reward from" row layout in transaction details so the validator name and amount display inline with the other rows -
#19324
5c5064fThanks @mcayuelas-ledger! - Resolve crypto counter-values by Ledger id instead of ticker, and migrate existing users' persisted crypto counterValue (BTC/ETH) to ids. Fiats keep ticker-based resolution. -
#19256
7a3c4a5Thanks @mateuszpalosz-ext! - private sync for mobile Aleo part 1 -
#18973
799e2dbThanks @gre-ledger! - Revert the@datadog/electron-sdkmain-process integration (#17844) due to boot-time issues. The Electron main process no longer initializes Datadog/dd-trace; renderer Datadog reporting is unchanged. The asar source-map URL rewrite in the rendererbeforeSendis kept. -
#19062
5ccd2a9Thanks @abdurrahman-ledger! - Extract E2E test-support code out of@ledgerhq/live-commonMoved the E2E enums, models, family helpers and speculos/device utilities that lived under
@ledgerhq/live-common/e2e/*into a new dedicated, private package@ledgerhq/live-e2e-shared
(located undere2e/, alongside the Desktop and Mobile E2E suites). This keeps test-only code
out oflive-common, which is in maintenance mode.@ledgerhq/live-common: removed the internal./e2eexport.@shared/feature-flags: now exportsgetAllFeatureFlags(previously in the live-common e2e
module), so production debug tooling no longer depends on test code.ledger-live-desktop: thedevicesreducer now derives the Speculos device model from a small
local map instead of importing from the e2e module.- Desktop/Mobile apps and E2E suites now import from
@ledgerhq/live-e2e-shared.
-
#19184
6400154Thanks @francois-guerin-ledger! - Promote the EVM edit-transaction (speed-up / cancel) helpers to the bridge contract.AccountBridgeExtensionsis now generic over the transaction type and exposes the app-facing edit-transaction methods (getEditTransactionPatch,getEditTransactionStatus,getFormattedFeeFields,hasMinimumFundsToCancel,hasMinimumFundsToSpeedUp,isStrategyDisabled,isTransactionConfirmed). The implementations move out of@ledgerhq/coin-evmintoledger-live-common(families/evm), and every app/LLC call site now reaches them throughgetAccountBridge(account)instead of importing@ledgerhq/coin-evm/editTransaction/*. The contract uses only base types so other families (e.g. Bitcoin RBF) can implement the same surface later. -
#18817
9f8ab96Thanks @mcayuelas-ledger! - Remove thenewReceiveDialogfeature flag and make the new Lumen receive options dialog the permanent default on desktop. This drops the legacyStepOptionsreceive step, theuseLegacyReceiveOptionspath, and the relatedshouldDisplayNewReceiveDialogconfig across the feature-flags packages and types. -
#18934
edebe91Thanks @dilaouid! - feat(lwdm): restore recent address store for lwdm -
#19480
131e127Thanks @dilaouid! - feat(lwd): open MAD on send from aggregated assets page -
#19220
996c76bThanks @ysitbon! - Make the@ledgerhq/cryptoassetsfiat registry injectable (setFiatCurrenciesStore) and inject the@domain/entity-currency-fiatregistry at each app's bootstrap, so the domain registry is the single runtime source of truth for fiat currency data. The bundled fiat list stays as the fallback and is kept in sync by the existing parity test. -
#19220
2ac4833Thanks @ysitbon! - Add supported-fiats RTK slice to @domain/entity-currency-fiat; wire currencyFiatApi onQueryStarted to dispatch it; register currencyFiatApi in desktop and mobile stores with cvsApiExtra extraArgument composition. -
#19141
2caa65cThanks @jiyuzhuang! - Fix content card displayedPosition analytics by stripping Braze string values in sanitizeExtras and finalizing numeric indices at the tracking gateway (mobile trackContentCardEvent, desktop trackContentCard) instead of at each call site. -
#19001
131af70Thanks @jiyuzhuang! - Fix Flex onboarding completion confetti animation stuck in the top-left corner -
#19207
b786830Thanks @dilaouid! - chore(lwd): add linter rules for the new send flow -
#18951
bfb5437Thanks @deepyjr! - Add Desktop transaction history dust filtering controls. -
#19272
e2d74f7Thanks @francois-guerin-ledger! - chore(coin-evm): raise an error if gas price is less than the network minimum -
#19036
addef52Thanks @mcayuelas-ledger! - remove marketbanner param from wallet4.0 FF -
#19063
eab9b13Thanks @dilaouid! - chore(llc): refactor useFeePresetFiatValues to use in both LWDM -
#19245
b5699a5Thanks @dilaouid! - feat(algo): remove memo algorand in new send flow lwdm -
#18985
2584bc0Thanks @mdomanski-ext-ledger! - fix: small aleo UI tweaks -
#18965
cc01b77Thanks @ishaba! - perf(sui): populate staking extras at sync, drop per-drawer transaction(digest:) re-fetch -
#19007
f495213Thanks @ysitbon! - Inject the domain-backed crypto-currency registry (@domain/entity-currency-crypto) at app bootstrap viasetCryptoCurrenciesStore, making the domain registry the runtime source of truth for currency data. The bundled data in@ledgerhq/cryptoassetsstays as the fallback. -
#18946
e3f7101Thanks @OlivierFreyssinet! - Bootstrap the Device Intent Executor integration on desktop with an initialization playground. -
#18849
8559583Thanks @mcayuelas-ledger! - Add a data-testid on the My Ledger entry and adapt desktop E2E page objects for the Wallet 4.0 Q2 feature flags (myWallet, operationsList) defaulting ON -
#18568
6ddd641Thanks @gre-ledger! - feat(lkrp): per-application close on Wallet Sync deactivationDeactivating Wallet Sync now closes only the current application's stream instead of destroying the whole trustchain root, so other applications sharing the same root (e.g. wallet-cli
ring) keep working. If the application being closed is the last open one, the whole trustchain is still destroyed (previous behaviour).CommandStreamResolvernow observesCloseStream(ResolvedCommandStream.isClosed()).StreamTree.getApplicationStreams()/hasAnotherOpenApplication()enumerate application streams to detect the last open application.- New
TrustchainSDK.destroyApplication()primitive, software-key signed (no hardware device): closes only the current application's stream, or destroys the whole trustchain when it is the last open application ({ trustchainDestroyed }). restoreTrustchainthrowsTrustchainEjectedwhen the application stream is closed, andgetOrCreateTrustchainreopens on the next index after a close.- LLD/LLM
useDestroyTrustchainhooks now calldestroyApplication. - web-tools trustchain playground exposes a
sdk.destroyApplicationaction to exercise the per-application close.
-
#18870
efd0670Thanks @gre-ledger! - Make thelldDatadogfeature flag an exclusive (XOR) switch between Datadog and Sentry crash monitoring for A/B testing. When the flag is on, telemetry goes to Datadog (renderer only) and Sentry is muted; when off, Sentry stays on. The flag is resolved only in the renderer, so it is mirrored to the main process over IPC to also mute the main-process Sentry. Both backends remain gated by the user's "Bug reports" opt-in (sentryLogs). -
#18936
e820e40Thanks @RobinVncnt! - lldRebordABTest feature flag clean up -
#19181
d23bb3eThanks @LucasWerey! - Bump Lumen design-system dependencies to the 6/26/2026 release -
#19424
8d5087eThanks @desirendr! - LWD 4.11.0 release notes -
#18918
3899691Thanks @claudiiafg! - Add Lumen portfolio chart to Analytics when PnL is enabled, with balance header and range-aware variation (first receive baseline for all-time). -
#18959
2761740Thanks @LucasWerey! - Global Search now surfaces testnets when developer mode is enabled, mirroring the Receive flow's DADA query logic (includeTestNetworks+ staging environment). Fixes LIVE-33220. -
#18916
ba433a1Thanks @claudiiafg! - Add shared LineChart axis/formatters utilities, custom ranges prop, and chart label inset fix. Refactor AssetDetail chart VM to use shared helpers. Add Analytics all-time value change helpers and exportmeaningfulPercentagefrom live-countervalues. -
#19115
f2fa7b5Thanks @claudiiafg! - Display percentage evolution alongside absolute values in the LWD PnL detail modal on Asset Detail and Analytics pages. -
#18960
199eb86Thanks @LucasWerey! - Add an informational disclaimer banner on the Wallet 4.0 asset detail screen for assets supported exclusively on a Robinhood chain (e.g. tokenized stocks on robinhood_testnet) when the user holds a positive balance. The banner is gated by thellRobinhoodDisclaimerfeature flag. Adds the sharedisRobinhoodExclusiveAssethelper to@ledgerhq/asset-detail. Implements LIVE-32756. -
#19023
3f71b7aThanks @francois-guerin-ledger! - Monad staking: pin the Ledger validator ("Ledger by P2P.org") to the top of the validator list so it is selected by default when delegating -
#19105
5b42843Thanks @mcayuelas-ledger! - Remove the legacy Wallet 4.0 main-nav feature toggle (shouldDisplayWallet40MainNav) and the now-dead legacy navigation code it gated. The new Wallet 4.0SideBaris now always used, and the oldMainSideBar,TopBar,Stars,Helpmodal,ScrollUpButton, and related unused icons/components have been deleted. -
#18633
e9b1707Thanks @dilaouid! - feat(lwdm): move the Celo "Pay fees in" selector from the Amount step to the Custom fees step using a generic, family-agnostic fee asset descriptor -
#19133
eccd24fThanks @mcayuelas-ledger! - Remove the temporary Wallet 4.0graphReworkandbalanceRefreshReworkfeature-flag gating on the portfolio. The reworked balance graph, balance refresh animation and two-decimal value-change percentage are now always on, and the relatedshouldDisplayGraphRework/shouldDisplayBalanceRefreshReworkprops and config reads have been dropped. -
#19187
0e30cdcThanks @sarneijim! - Persist onboardingDate in the shared post-onboarding store to power the post-onboarding upsell cooldown. It is preserved when reopening or hiding the wallet entry point for the same device, refreshed when a different device is onboarded, and backfilled to today once for legacy users on first launch. -
#18913
c6cf445Thanks @mcayuelas-ledger! - Remove the legacy add-account modal, DataSelector drawers and modular drawer visibility gating now that the Modular Drawer is the only flow. All Live App, stake, send and account-selection entry points use the modular flows unconditionally, and theuseModularDrawerVisibilityhook is removed in favor of a dedicatedModularDrawerVisibleParamstype. -
#18906
df96477Thanks @OlivierFreyssinet! - AddgetProductNameto@ledgerhq/devicesreturning the plain, canonical device product name (e.g. "Ledger Flex"), and deprecate the app-levelgetProductNameutils that strip the "Ledger" prefix. -
#19000
5d4cc7aThanks @YazhuEth! - Translate the "To:" prefix label in the new Send flow recipient input -
#19009
1f25437Thanks @claudiiafg! - Track Funds received analytics when a new receive operation is synced on desktop and mobile. -
#18855
df6ca42Thanks @sarneijim! - Remove thellmRebornLPfeature flag (always enabled with variant A) and inline the enabled behavior -
#19003
e3c0327Thanks @mcayuelas-ledger! - Remove thequickActionCtassub-flag oflwdWallet40(always enabled) and inline the enabled behavior: QuickActions are now always shown in the Portfolio and the legacy send/receive/exchange sidebar entries are removed -
#19182
271334eThanks @mcayuelas-ledger! - refactor: remove the Wallet 4.0 feature flag and delete the legacy classic dashboardThe Wallet 4.0 layout is now the default. Removed the
isWallet40Enabledbranching across the Page, Portfolio and layout components, and deleted the unused legacy dashboard screens (classic dashboard, empty states, featured buttons, no-accounts illustration). The/route now renders the MVVMPortfolioPagedirectly. -
#19046
ee09168Thanks @mateuszpalosz-ext! - refactored max number of records per account type -
#18778
b9ffdc9Thanks @qperrot! - Fix: add a check for minimum staking amount on solana -
#19254
0ccdd6cThanks @mcayuelas-ledger! - Reorganize PortfolioPage into screens subdirectory and simplify AssetDistribution Header by removing unusedisResponsiveLayoutprop. -
#18928
b2e12ceThanks @qperrot! - fix(sei): determine Sei EVM account association via on-chain RPCisSeiAccountUnassociatednow resolves whether a Sei EVM (0x) address is linked
on-chain to its Cosmos (sei1) address by querying the chain's address precompile
(getSeiAddr) instead of inferring it from the local operation history. The
function is now async and no longer takes anoperationsargument; the delegation
flow screens (desktop & mobile) resolve the warning asynchronously. -
#19058
5fc438eThanks @vtaranushenko-ext-ledger! - Extract useAleoViewKeyApproval hook and buildAccountsWithViewKeys utility to live-common for shared Desktop and Mobile use -
#19234
62bf9ddThanks @ishaba! - fix: keep the caret in place when editing the EVM advanced-mode fee inputs (Max Priority Fee / Max Fee). InputCurrency now maps the caret through sanitizeValueString so editing a value already at the unit's max decimals (e.g. 9 Gwei decimals) no longer teleports the cursor to the end. -
#17924
360cea4Thanks @iqbalibrahim-ledger! - Upgrade React Native to 0.81.6, Expo SDK 54 for LWM; React 19.1.4 for LWM and LWD -
#19176
16f7a29Thanks @ysitbon! - Register a single crypto-assets token cache per app store, backed by the new domain token api and its persistence, and inject the legacy getCryptoAssetsStore singleton over it. This guarantees one runtime source of token data: the UI and coin-modules share the same cache. -
#19034
696a1eeThanks @VicAlbr! - chore(e2e): use ETH instead of SOL/XRP/XLM/SUI for smoke tests where possible (BTC kept) -
#18829
b3ffa2fThanks @gre-ledger! - Sunset theCryptoCurrency.terminatedfield: remove it from the type/schema, delete the 5 currencies it marked (clubcoin, hcash, poswallet, stakenet, stratis), drop the now-unusedwithTerminatedparameter fromlistCryptoCurrencies, and clean up the dead code orphaned by those deletions. -
#18971
5aada6fThanks @sarneijim! - Remove the always-enablednanoOnboardingFundWalletfeature flag and clean up the dead onboarding tutorial code it gated (theAsideillustration sidebar, per-screenIllustration/Footerstatics, related shared helpers, and orphaned i18n keys). -
#19112
8169225Thanks @dilaouid! - chore(lwdm): refacto gas and memo in the new send flow -
#18993
69b201eThanks @RobinVncnt! - feat: lwd sync onboarding feature flag clean up -
#19178
3da6b44Thanks @LucasWerey! - Remove the balanceRefreshRework param of the wallet 4.0 feature flag everywhere; the reworked balance refresh is now always used on mobile -
#19318
432075bThanks @Justkant! - Fix orphaned Live App<webview>DevTools window on Electron 42: leaving a Live App now reliably closes its DevTools window again. The previous cleanup relied on the webview'sdevtools-opened/devToolsWebContentscapture, which became unreliable on Electron 42 and left the DevTools window open; it is now discovered app-wide via itsdevtools://URL. -
#19059
b79b845Thanks @gre-ledger! - chore(lld): upgrade Electron from 40.6.0 to 42.5.0 -
#19224
29ac004Thanks @claudiiafg! - Extract shared Analytics chart utils into @ledgerhq/wallet-analytics -
#19302
f9411d1Thanks @LucasWerey! - Remove thegraphReworkparam of the Wallet 4.0 feature flag on both platforms. The param is no longer consumed on desktop (LIVE-33502) nor mobile, so it is dropped entirely: from thelwmWallet40/lwdWallet40schemas, the sharedFeature_Wallet40_Paramstype, the analytics helper, theshouldDisplayGraphReworkgetter inuseWalletFeaturesConfig, and both platforms' debug dev-tool lists.On mobile the Wallet 4.0 balance hero is now always rendered: the legacy portfolio graph card is dropped from the portfolio header and read-only screens (the
GraphCard/GraphCardContainer/PortfolioGraphCardcomponents stay, still used by the Analytics screen), and the graphRework gating is removed from every mobile call site (Portfolio screen/VM,Delta, settings reducer, WalletAssets VM). -
#19203
6eea36bThanks @LucasWerey! - Remove the mainNavigation param of the wallet 4.0 feature flag; the wallet 4.0 main navigation is now always used on mobile and the legacy tab-bar/top-bar code paths are removed -
#18852
e5d7497Thanks @jiyuzhuang! - Add Welcome analytics opt-in screen v2 UI with consent illustration -
#19068
0e302a5Thanks @dilaouid! - chore(llc): share useNetworkFee hooks through lwd and lwm in common -
#18874
e0b2f53Thanks @YazhuEth! - Block XRP send and show an error when the recipient requires a destination tag and none is provided (bumps @ledgerhq/coin-xrp to 7.23.5) -
#19131
aea723cThanks @semeano! - zcash: add ZIP-316 Unified Address classifier and shielded recipient validation
Patch Changes
- Updated dependencies [
b837f65,bb1bbc3,80d44ad,6df2017,a7734c2,20efcc6,4b615c2,a2621e2,e18fe2d,b98cce3,fe580b7,8e3b521,6d9da62,19aa0b4,70a706e,8b6614e,bb4e6db,0675175,f9caf32,3cb6159,c5763f6,7a3c4a5,3b35b5e,7c27a44,38728f9,d91f849,1838412,86ca231,714411f,1e17c12,ca07aac,63dcc63,5ccd2a9,6400154,9f8ab96,e6566ff,edebe91,acaf6d9,7914bd1,996c76b,2ac4833,4f541c2,50ab44f,2caa65c,8d7f2b3,8dd5685,bfb5437,e2d74f7,973118a,addef52,eab9b13,b5699a5,81373c1,7fe5f11,c1e9aa3,5c2bc46,34bccb5,cc01b77,966d6a1,b1d2ae6,7c39ea3,d686e93,e97314e,f495213,f495213,0225804,c8b4ee7,6ddd641,e820e40,007f27e,ba433a1,199eb86,8ecbdde,3f71b7a,e9b1707,5f735a2,c22afcb,babad68,fa0123a,0e30cdc,b10ca6a,fa25271,5a64d39,c6cf445,df96477,c4ee26d,1f25437,edacd7c,cf3aad1,df6ca42,e3c0327,628f21f,0fa8c6c,b2e12ce,5fc438e,b3ffa2f,57a48a5,4b2f537,57a48a5,57a48a5,57a48a5,376915c,b9f3ba5,5aada6f,154ff71,8169225,69b201e,df088d2,2160260,3da6b44,607b032,29ac004,9c42adf,f9411d1,6eea36b,35d4af9,596a445,0e302a5,363ac4d,e0b2f53,e9a51af,aea723c,1c1e25d]:- @domain/api-currency-fiat@0.2.0
- @domain/entity-currency-fiat@0.2.0
- @domain/api-currency-token@0.2.0
- @ledgerhq/live-common@36.4.0
- @ledgerhq/cryptoassets@13.54.0
- @ledgerhq/coin-evm@4.5.0
- @ledgerhq/types-live@6.114.0
- @shared/feature-flags@0.13.0
- @ledgerhq/coin-bitcoin@0.46.0
- @ledgerhq/asset-aggregation@0.10.0
- @ledgerhq/asset-detail@0.8.0
- @ledgerhq/live-dmk-desktop@0.20.0
- @ledgerhq/coin-cardano@0.29.0
- @ledgerhq/live-env@2.41.0
- @ledgerhq/coin-cosmos@0.38.0
- @ledgerhq/live-dmk-shared@0.28.0
- @domain/entity-currency-crypto@0.5.0
- @features/platform-feature-flags@0.6.0
- @ledgerhq/coin-concordium@0.15.0
- @ledgerhq/coin-filecoin@1.27.0
- @ledgerhq/coin-canton@0.28.0
- @ledgerhq/coin-casper@2.15.0
- @ledgerhq/ledger-wallet-framework@2.3.0
- @features/platform-currencies@0.2.0
- @ledgerhq/live-currency-format@0.12.0
- @ledgerhq/types-cryptoassets@7.39.0
- @ledgerhq/hw-ledger-key-ring-protocol@0.11.0
- @ledgerhq/ledger-key-ring-protocol@0.16.0
- @ledgerhq/live-countervalues@0.22.0
- @ledgerhq/react-ui@0.53.0
- @ledgerhq/devices@8.17.0
- @ledgerhq/wallet-analytics@0.2.0
- @ledgerhq/live-wallet@0.28.0
- @ledgerhq/wallet-pnl@0.7.1
- @ledgerhq/domain-service@1.8.9
- @ledgerhq/live-countervalues-react@0.16.1
- @ledgerhq/client-ids@0.11.1
- @ledgerhq/live-dmk-speculos@0.10.1
- @ledgerhq/live-network@2.6.7
- @ledgerhq/hw-transport@6.35.6
- @ledgerhq/device-intent@4.0.1
- @ledgerhq/hw-transport-http@6.36.6
- @ledgerhq/hw-transport-vault@1.7.6