Back to Freedom.Tech Back
All Ledger Live Mobile releasesAll versions
Release Tue, Aug 4, 2026 6 min read

Ledger Live Mobile 4.14.0

Original release notes

4.14.0

Minor Changes

  • #20129 ba20e39 Thanks @gre-ledger! - Migrate checkLibs and its two callers off @ledgerhq/errors as part of the errors sunset (LIVE-32915).

checkLibs detects duplicated npm packages by comparing class identity, so sanityChecks.ts and both app entrypoints must import NotEnoughBalance from the same module. All three now use @ledgerhq/ledger-wallet-framework/errors. The duplicate-package warning also names @ledgerhq/ledger-wallet-framework so the pnpm why hint points at the package actually being checked.

  • #20172 6dd18aa Thanks @LucasWerey! - Remove the legacy Gorhom QueuedDrawer implementation (migrating the last consumer, the Cardano DRep delegation drawer, to the Lumen bottom sheet) and rename QueuedDrawerBottomSheet to QueuedBottomSheet.
  • #20349 f715aa5 Thanks @cted-ledger! - Fix Zcash sends failing before the device prompt when the coin being spent came from a V4-format transaction (PROD-12599).

Signing a transparent Zcash transaction whose input came from a V4 (Sapling-format) transaction failed immediately: no review screen appeared on the device, and Ledger Live showed "Something went wrong" with no detail. V4 is still valid on mainnet and still emitted by exchanges and older wallets, while Ledger Live itself emits V5 - so an account funded from within Ledger Live never hit this, which is why the failure looked intermittent. It is in fact deterministic, decided by which software created the funding transaction.

serializedPreviousTransactionOverride carries the source transaction's raw on-chain bytes so the device can compute the correct ZIP-244 txid for a V5 transaction, whose Orchard bundle the signer kit's serialization would otherwise strip. It was being set for every version. The kit chunks a V4 transaction expecting Ledger's internal serialization, whose header carries a consensus branch id absent from the on-chain bytes; given those bytes it read the input count four bytes late and threw while chunking that input. The override is now restricted to the versions that need it, and a V4 source transaction goes back through the serialization path that has always handled it, its Sapling fields travelling in extraData as before.

The decision is made per input, which is what a send spending several coins looks like from the outside: the V5 inputs are chunked and their trusted inputs obtained from the device first, then the transaction dies when the V4 input's turn comes. The device has already answered several times by then, yet no review screen is ever reached - so the failure looks like a device problem rather than a serialization one.

Untagged device action errors are also no longer flattened into a message-less Error, so a failure inside a device action task names itself in the logs instead of surfacing only as "Something went wrong".

  • #20099 37dac39 Thanks @deepyjr! - Add contact address asset and network selection through the Modular Dialog, with shared asset

filtering across Desktop and Mobile.

  • #19964 86bbd1d Thanks @claudiiafg! - Add the one-time Contacts feature introduction drawer on Mobile with shared native content and dismissal preference.
  • #19807 2cf4a29 Thanks @sarneijim! - Reset mobile navigation state for sequential token deeplinks and redirect invalid asset deeplinks to Market
  • #20033 d390840 Thanks @RobinVncnt! - Loop Product Tour post-onboarding card animations and restart them when revisiting a slide
  • #19985 808c4cd Thanks @deepyjr! - Reorganize the contacts flow package around a /steps folder (List, AddContact, Introduction, Detail), promote shared helpers to src/utils, curate root barrels, and rename public views to ContactsListView and ContactDetailView. No runtime behavior change.
  • #20070 52253f7 Thanks @ysitbon! - Remove the now-dead @ledgerhq/cryptoassets currency/fiat store injection from the app bootstraps. Nothing reads the legacy currency/fiat accessors anymore (the runtime source of truth is the domain-backed wallet-framework currency resolver), so setCryptoCurrenciesStore / setFiatCurrenciesStore injected a store no consumer queried. Drop the calls, drop the @ledgerhq/cryptoassets dependency from the apps, and remove the remaining stale references to the package in comments.
  • #20175 b953d34 Thanks @deepyjr! - Add a reusable queued drawer flow and an embeddable Modular Drawer presentation
  • #19992 452adf8 Thanks @sarneijim! - Gate each existing mobile Nano S upsell banner placement through the shared large-screen upsell flag.
  • #19715 cf63f27 Thanks @YazhuEth! - Hide Send and Receive for HyperCore accounts on mobile: HyperCore has no on-chain send on Ledger Wallet and a plain receive is misleading (deposits go through bridging). Both actions are now hidden across the account actions (FAB), the asset actions, the quick-action drawers and the no-funds empty state, reusing the shared isSendDisabledForFamily / isReceiveDisabledForFamily predicates from @ledgerhq/live-common. The account "Quick actions" section is also hidden entirely when it has no actions left (e.g. HyperCore), instead of showing an empty titled section.
  • #20027 6131b15 Thanks @deepyjr! - Add shared Add Address session state and start it from Mobile contact details
  • #20035 67df284 Thanks @deepyjr! - Select a native asset or token and its eligible network with the Mobile modular drawer before

entering a contact address.

  • #19880 26ee89d Thanks @deepyjr! - Add the shared native empty contact detail page and wire it into Mobile.
  • #20091 ef5945a Thanks @LucasWerey! - Bump Lumen design-system packages to latest (design-core 0.1.23, ui-react 0.1.49, ui-rnative 0.1.52, ui-react-visualization 0.1.28, ui-rnative-visualization 0.1.29).
  • Migrate the desktop tables to the new TableCellContent compound API (TableCellItem / TableCellContent / TableCellContentTitle / TableCellContentDescription / TableCellContentRow).
  • Migrate the interactive My Wallet avatar to the new AvatarButton component on both apps, and fix the vertical centering of the desktop top-bar trigger.
  • Use the currency image fallback (MediaImage, circular) in the market list so it matches the crypto-icon shape.
  • Simplify getDotIndicatorProps avatar sizing now that the helper is typed for the full avatar size range.
  • #20159 534d2c5 Thanks @jiyuzhuang! - Migrate engagement-scope screens to SafeAreaViewFixed for experimental header compatibility
  • #20122 8677d5c Thanks @LucasWerey! - Migrate the mobile Modular Drawer to Lumen components (BottomSheet, ListItem, SearchInput, Banner, CardButton, Trend, Tag, Box/Text) and drop the legacy native-ui primitives and the pre-ldls composites it used. Removes the now-unused pre-ldls staging components (AssetItem, NetworkItem, AccountItem, Address, Tag, Input, Search, AssetTypeList, NetworkList, MarketPriceIndicator, MarketPercentIndicator) and the orphaned useDebouncedCallback hook from @ledgerhq/native-ui (CryptoIcon and AddAccountButton are kept). Adds the empty-account state (header description + "Add account" CardButton) on the account step.