github LedgerHQ/ledger-live @ledgerhq/live-desktop@4.11.0

6 hours ago

4.11.0

Minor Changes

  • #19082 ba55b01 Thanks @Valentin-Ledger! - Rename the desktop analytics property emitted for the ptxBorrowLiveApp feature flag from ptxBorrowLiveApp to borrowFeature so it matches mobile and the documented borrowFeature Segment trait.

  • #19180 343208d Thanks @Valentin-Ledger! - Update borrow entry point copy and icon in Portfolio, and move the borrow section into the Wallet Assets group on mobile

  • #18987 98ee95c Thanks @Valentin-Ledger! - Add borrowFeature analytics property derived from the ptxBorrowLiveApp feature flag, included in identify traits and track events on both desktop and mobile.

  • #19233 7e5eb6c Thanks @francois-guerin-ledger! - Replace deprecated findCryptoCurrencyByTicker with findCryptoCurrencyById in EVM staking provider icon

  • #19101 4b615c2 Thanks @dilaouid! - fix(lwdm): fix countervalue magnitude in the new send flow

  • #18866 e0be780 Thanks @OlivierFreyssinet! - Add desktop DeviceActionContent component and developer playground

  • #19087 b98cce3 Thanks @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 eff921d Thanks @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 ac338b3 Thanks @mcayuelas-ledger! - fix analytics chart overflow clipping by removing overflow-hidden class

  • #19314 4232eab Thanks @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 8e3b521 Thanks @live-github-bot! - Merge release branch into hotfix support branch, resolving version and changelog conflicts

  • #18917 3b9ad8e Thanks @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 b50b405 Thanks @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 dedicated createSmallestUnitFiatLineChartValueFormatter is now used for smallest-atom data, and the variation text is shifted down by the unit magnitude.

  • #18856 c0c3a63 Thanks @dilaouid! - chore(lwdm): remove all evm mention in the new send flow

  • #18887 8b6614e Thanks @lysyi3m! - Remove the concordiumVerifyAddress feature flag and its "address verification unavailable" fallback. On-device address verification is now the unconditional path for all Concordium accounts.

  • #19055 0675175 Thanks @OlivierFreyssinet! - Add MVVM connect device flow on desktop with a WebHID discovery source

  • #19010 d3c7634 Thanks @OlivierFreyssinet! - Add a desktop known devices store: a persisted knownDevices reducer (seeded on settings load from lastSeenDevice / lastOnboardedDevice, upserted from device sources, deduped per model id) using the shared KnownDevice shape, with WebHID serialization helpers for robust persistence.

  • #18914 9a79fe3 Thanks @YazhuEth! - Fix Cosmos "Reward from" row layout in transaction details so the validator name and amount display inline with the other rows

  • #19324 5c5064f Thanks @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 7a3c4a5 Thanks @mateuszpalosz-ext! - private sync for mobile Aleo part 1

  • #18973 799e2db Thanks @gre-ledger! - Revert the @datadog/electron-sdk main-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 renderer beforeSend is kept.

  • #19062 5ccd2a9 Thanks @abdurrahman-ledger! - Extract E2E test-support code out of @ledgerhq/live-common

    Moved 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 under e2e/, alongside the Desktop and Mobile E2E suites). This keeps test-only code
    out of live-common, which is in maintenance mode.

    • @ledgerhq/live-common: removed the internal ./e2e export.
    • @shared/feature-flags: now exports getAllFeatureFlags (previously in the live-common e2e
      module), so production debug tooling no longer depends on test code.
    • ledger-live-desktop: the devices reducer 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 6400154 Thanks @francois-guerin-ledger! - Promote the EVM edit-transaction (speed-up / cancel) helpers to the bridge contract.

    AccountBridgeExtensions is 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-evm into ledger-live-common (families/evm), and every app/LLC call site now reaches them through getAccountBridge(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 9f8ab96 Thanks @mcayuelas-ledger! - Remove the newReceiveDialog feature flag and make the new Lumen receive options dialog the permanent default on desktop. This drops the legacy StepOptions receive step, the useLegacyReceiveOptions path, and the related shouldDisplayNewReceiveDialog config across the feature-flags packages and types.

  • #18934 edebe91 Thanks @dilaouid! - feat(lwdm): restore recent address store for lwdm

  • #19480 131e127 Thanks @dilaouid! - feat(lwd): open MAD on send from aggregated assets page

  • #19220 996c76b Thanks @ysitbon! - Make the @ledgerhq/cryptoassets fiat registry injectable (setFiatCurrenciesStore) and inject the @domain/entity-currency-fiat registry 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 2ac4833 Thanks @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 2caa65c Thanks @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 131af70 Thanks @jiyuzhuang! - Fix Flex onboarding completion confetti animation stuck in the top-left corner

  • #19207 b786830 Thanks @dilaouid! - chore(lwd): add linter rules for the new send flow

  • #18951 bfb5437 Thanks @deepyjr! - Add Desktop transaction history dust filtering controls.

  • #19272 e2d74f7 Thanks @francois-guerin-ledger! - chore(coin-evm): raise an error if gas price is less than the network minimum

  • #19036 addef52 Thanks @mcayuelas-ledger! - remove marketbanner param from wallet4.0 FF

  • #19063 eab9b13 Thanks @dilaouid! - chore(llc): refactor useFeePresetFiatValues to use in both LWDM

  • #19245 b5699a5 Thanks @dilaouid! - feat(algo): remove memo algorand in new send flow lwdm

  • #18985 2584bc0 Thanks @mdomanski-ext-ledger! - fix: small aleo UI tweaks

  • #18965 cc01b77 Thanks @ishaba! - perf(sui): populate staking extras at sync, drop per-drawer transaction(digest:) re-fetch

  • #19007 f495213 Thanks @ysitbon! - Inject the domain-backed crypto-currency registry (@domain/entity-currency-crypto) at app bootstrap via setCryptoCurrenciesStore, making the domain registry the runtime source of truth for currency data. The bundled data in @ledgerhq/cryptoassets stays as the fallback.

  • #18946 e3f7101 Thanks @OlivierFreyssinet! - Bootstrap the Device Intent Executor integration on desktop with an initialization playground.

  • #18849 8559583 Thanks @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 6ddd641 Thanks @gre-ledger! - feat(lkrp): per-application close on Wallet Sync deactivation

    Deactivating 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).

    • CommandStreamResolver now observes CloseStream (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 }).
    • restoreTrustchain throws TrustchainEjected when the application stream is closed, and getOrCreateTrustchain reopens on the next index after a close.
    • LLD/LLM useDestroyTrustchain hooks now call destroyApplication.
    • web-tools trustchain playground exposes a sdk.destroyApplication action to exercise the per-application close.
  • #18870 efd0670 Thanks @gre-ledger! - Make the lldDatadog feature 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 e820e40 Thanks @RobinVncnt! - lldRebordABTest feature flag clean up

  • #19181 d23bb3e Thanks @LucasWerey! - Bump Lumen design-system dependencies to the 6/26/2026 release

  • #19424 8d5087e Thanks @desirendr! - LWD 4.11.0 release notes

  • #18918 3899691 Thanks @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 2761740 Thanks @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 ba433a1 Thanks @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 export meaningfulPercentage from live-countervalues.

  • #19115 f2fa7b5 Thanks @claudiiafg! - Display percentage evolution alongside absolute values in the LWD PnL detail modal on Asset Detail and Analytics pages.

  • #18960 199eb86 Thanks @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 the llRobinhoodDisclaimer feature flag. Adds the shared isRobinhoodExclusiveAsset helper to @ledgerhq/asset-detail. Implements LIVE-32756.

  • #19023 3f71b7a Thanks @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 5b42843 Thanks @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.0 SideBar is now always used, and the old MainSideBar, TopBar, Stars, Help modal, ScrollUpButton, and related unused icons/components have been deleted.

  • #18633 e9b1707 Thanks @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 eccd24f Thanks @mcayuelas-ledger! - Remove the temporary Wallet 4.0 graphRework and balanceRefreshRework feature-flag gating on the portfolio. The reworked balance graph, balance refresh animation and two-decimal value-change percentage are now always on, and the related shouldDisplayGraphRework / shouldDisplayBalanceRefreshRework props and config reads have been dropped.

  • #19187 0e30cdc Thanks @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 c6cf445 Thanks @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 the useModularDrawerVisibility hook is removed in favor of a dedicated ModularDrawerVisibleParams type.

  • #18906 df96477 Thanks @OlivierFreyssinet! - Add getProductName to @ledgerhq/devices returning the plain, canonical device product name (e.g. "Ledger Flex"), and deprecate the app-level getProductName utils that strip the "Ledger" prefix.

  • #19000 5d4cc7a Thanks @YazhuEth! - Translate the "To:" prefix label in the new Send flow recipient input

  • #19009 1f25437 Thanks @claudiiafg! - Track Funds received analytics when a new receive operation is synced on desktop and mobile.

  • #18855 df6ca42 Thanks @sarneijim! - Remove the llmRebornLP feature flag (always enabled with variant A) and inline the enabled behavior

  • #19003 e3c0327 Thanks @mcayuelas-ledger! - Remove the quickActionCtas sub-flag of lwdWallet40 (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 271334e Thanks @mcayuelas-ledger! - refactor: remove the Wallet 4.0 feature flag and delete the legacy classic dashboard

    The Wallet 4.0 layout is now the default. Removed the isWallet40Enabled branching 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 MVVM PortfolioPage directly.

  • #19046 ee09168 Thanks @mateuszpalosz-ext! - refactored max number of records per account type

  • #18778 b9ffdc9 Thanks @qperrot! - Fix: add a check for minimum staking amount on solana

  • #19254 0ccdd6c Thanks @mcayuelas-ledger! - Reorganize PortfolioPage into screens subdirectory and simplify AssetDistribution Header by removing unused isResponsiveLayout prop.

  • #18928 b2e12ce Thanks @qperrot! - fix(sei): determine Sei EVM account association via on-chain RPC

    isSeiAccountUnassociated now 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 an operations argument; the delegation
    flow screens (desktop & mobile) resolve the warning asynchronously.

  • #19058 5fc438e Thanks @vtaranushenko-ext-ledger! - Extract useAleoViewKeyApproval hook and buildAccountsWithViewKeys utility to live-common for shared Desktop and Mobile use

  • #19234 62bf9dd Thanks @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 360cea4 Thanks @iqbalibrahim-ledger! - Upgrade React Native to 0.81.6, Expo SDK 54 for LWM; React 19.1.4 for LWM and LWD

  • #19176 16f7a29 Thanks @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 696a1ee Thanks @VicAlbr! - chore(e2e): use ETH instead of SOL/XRP/XLM/SUI for smoke tests where possible (BTC kept)

  • #18829 b3ffa2f Thanks @gre-ledger! - Sunset the CryptoCurrency.terminated field: remove it from the type/schema, delete the 5 currencies it marked (clubcoin, hcash, poswallet, stakenet, stratis), drop the now-unused withTerminated parameter from listCryptoCurrencies, and clean up the dead code orphaned by those deletions.

  • #18971 5aada6f Thanks @sarneijim! - Remove the always-enabled nanoOnboardingFundWallet feature flag and clean up the dead onboarding tutorial code it gated (the Aside illustration sidebar, per-screen Illustration/Footer statics, related shared helpers, and orphaned i18n keys).

  • #19112 8169225 Thanks @dilaouid! - chore(lwdm): refacto gas and memo in the new send flow

  • #18993 69b201e Thanks @RobinVncnt! - feat: lwd sync onboarding feature flag clean up

  • #19178 3da6b44 Thanks @LucasWerey! - Remove the balanceRefreshRework param of the wallet 4.0 feature flag everywhere; the reworked balance refresh is now always used on mobile

  • #19318 432075b Thanks @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's devtools-opened / devToolsWebContents capture, which became unreliable on Electron 42 and left the DevTools window open; it is now discovered app-wide via its devtools:// URL.

  • #19059 b79b845 Thanks @gre-ledger! - chore(lld): upgrade Electron from 40.6.0 to 42.5.0

  • #19224 29ac004 Thanks @claudiiafg! - Extract shared Analytics chart utils into @ledgerhq/wallet-analytics

  • #19302 f9411d1 Thanks @LucasWerey! - Remove the graphRework param 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 the lwmWallet40 / lwdWallet40 schemas, the shared Feature_Wallet40_Params type, the analytics helper, the shouldDisplayGraphRework getter in useWalletFeaturesConfig, 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 / PortfolioGraphCard components 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 6eea36b Thanks @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 e5d7497 Thanks @jiyuzhuang! - Add Welcome analytics opt-in screen v2 UI with consent illustration

  • #19068 0e302a5 Thanks @dilaouid! - chore(llc): share useNetworkFee hooks through lwd and lwm in common

  • #18874 e0b2f53 Thanks @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 aea723c Thanks @semeano! - zcash: add ZIP-316 Unified Address classifier and shielded recipient validation

Patch Changes

Don't miss a new ledger-live release

NewReleases is sending notifications on new releases.