github LedgerHQ/ledger-live live-mobile@4.6.0

5 hours ago

4.6.0

Minor Changes

  • #17499 d7c5ad3 Thanks @LucasWerey! - Add @ledgerhq/lumen-ui-rnative-visualization dependency and expose a standalone Settings → Debug → "Lumen Visualization" preview screen rendering a sample LineChart.

  • #17676 7f11be9 Thanks @deepyjr! - Display the addresses count next to the section title on Asset Detail and add a "See all" action when an asset has more than 5 accounts.

  • #17532 72347d3 Thanks @LucasWerey! - Display PnL metric cards (Unrealised return, Cost basis) on the Analytics screen for the Wallet 4.0 release. Pressing the Unrealised card opens the PnL detail drawer (Unrealised / Realised / Total return); pressing the Cost basis card opens an info drawer. Portfolio data is sourced from @ledgerhq/wallet-pnl, visibility is gated by the pnl feature param and values respect discreet mode.

  • #17678 2b37ead Thanks @deepyjr! - Open the "See all" addresses entry from the Asset Detail screen in a bottom-sheet drawer instead of navigating to the CryptoAddresses screen. The portfolio-wide entry to the CryptoAddresses screen is unchanged.

  • #17433 bdcd8f0 Thanks @deepyjr! - Add asset detail coin options (NavBar trailing button + bottom sheet) to favourite/unfavourite a coin and hide/show it from the portfolio, with state persisted across sessions

  • #17644 193ff3e Thanks @LucasWerey! - Use interactive Card type for Asset Detail Earn banner and deposit card

  • #17586 2fda0b0 Thanks @deepyjr! - Update Asset Detail v4 loading state to render animated Skeleton placeholders (from @ledgerhq/lumen-ui-rnative) for the BalanceGraph header (Market price), BalanceDetails, Addresses, Transactions, MarketStats and PricePerformance sections. Section titles are also skeletoned during loading for visual consistency.

  • #17402 5c6c279 Thanks @gre-ledger! - Make formatAccount and formatOperation async to forward-compatibly await getAccountBridge

  • #17284 446020d Thanks @gre-ledger! - chore: async prep — toOperationRaw, toSignedOperationRaw and remaining bridge callers (LIVE-29186)

    Make toOperationRaw, toSignedOperationRaw and toSignOperationEventRaw async in @ledgerhq/live-common,
    widen WalletSyncDataManagerResolutionContext.getAccountBridge in @ledgerhq/live-wallet to accept a Promise,
    and update remaining callers (apps/cli, apps/wallet-cli, apps/web-tools, mobile concordium, coin-tester-evm/solana,
    coin-modules-monitoring) to await the bridge.

  • #16892 a361e56 Thanks @qperrot! - Feat: evm delegation table lwm

  • #17338 19b82d1 Thanks @gre-ledger! - Remove the 6 deprecated top-level helpers from @ledgerhq/live-common: isAccountEmpty, clearAccount, getVotesCount, isEditableOperation, isStuckOperation, getStuckAccountAndOperation. Consumers must now resolve an AccountBridge first (via useAccountBridge/useAccountBridgeMany in React, or getAccountBridge/getAccountBridgeByFamily elsewhere) and call the corresponding method on the bridge. Desktop and mobile apps have been migrated.

  • #17436 74e82f8 Thanks @OlivierFreyssinet! - Add final device initializer UI states on mobile

  • #17498 20920de Thanks @LucasWerey! - Bump d3-array, d3-scale and d3-shape to their latest majors (and matching @types) in preparation for adopting @ledgerhq/lumen-ui-rnative-visualization.

  • #17537 6a0a6be Thanks @deepyjr! - Cap the Asset Detail addresses section to 5 items and add a "See all" button that opens the CryptoAddresses screen filtered by the current asset (with the "Add account" footer hidden). The portfolio-wide entry to CryptoAddresses is unchanged.

  • #17621 af015b3 Thanks @benruseau! - Add Lumen UI for DIE discovery and connection errors

  • #17704 e278291 Thanks @gre-ledger! - Gate the device-ids push middleware behind the analyticsOptIn feature flag in addition to the user analytics consent. Device IDs are now only sent to /v2/pushdevices when the FF is enabled AND the user has opted in.

  • #17504 76ac9d9 Thanks @benruseau! - Fix duplicated known devices Redux slice

  • #17592 efbc7ee Thanks @OlivierFreyssinet! - Tighten the Device Intent Executor error model:

    • Replace the catch-all connectionError executor state with a focused deviceDisconnected state entered only via the DEVICE_DISCONNECTED event. The DeviceConnectionComponent no longer receives onError, and ExecutorPlatformConfiguration requires a DeviceDisconnectedComponent in place of the previous ConnectionErrorComponent.
    • Funnel any unexpected error escaping the inner connect-device state machine into a new terminal UnknownError ConnectDeviceUIState via a catchError wrapper in connectDeviceUseCase, so the observable's error channel is never reached in normal operation.
    • Add a UnknownErrorState component in the LWM connection view that renders the shared intentError wording for this terminal state.
  • #17295 0c205fb Thanks @cfloume! - Default analytics sharing to off until you explicitly opt in via the consent prompt. Existing preferences are preserved for returning users.

  • #17489 00b7cb9 Thanks @LucasWerey! - Fix asset detail addresses showing parent account balance instead of token balance

  • #17480 f6e40be Thanks @LucasWerey! - Fix discreet mode not hiding balances on Asset Detail screen

  • #17572 bf16e7e Thanks @deepyjr! - Fix the APY percentage shown in the Asset Detail Earn banner. The interest rate value is a decimal fraction (e.g. 0.04 for 4%) and was rendered as-is, which made every banner display "0.0% APY". The value is now converted to a percentage before formatting, and the parameterized banner is only shown when the rounded display percentage is greater than zero (the generic banner is used otherwise).

  • #17571 cd6a9ef Thanks @deepyjr! - Fix Earn redirection from the Asset Detail page. The Earn banner and the Earn deposit card now open the stake drawer filtered on the current asset, leading the user to the coin-specific Earn page instead of the generic Earn entry point.

  • #17548 f2bd7c9 Thanks @LucasWerey! - Fix transfer bottom sheet opening on Portfolio instead of Asset Detail screen

  • #17637 809a266 Thanks @LucasWerey! - Fix Android crash on clear cache flow. Dispatching wipeCountervalues inside useCleanCache caused every mounted CounterValue consumer to re-render against the wiped state in a separate React commit from the subsequent reboot(); under Fabric this produced an IllegalStateException: The specified child already has a parent. Wipe is now dispatched from the reboot middleware in the same synchronous tick as the reboot action so React batches both updates and the RebootProvider key change unmounts the subtree before any countervalue consumer re-renders.

  • #17478 3fc6c42 Thanks @LucasWerey! - Add safe area bottom padding to AssetDetail tooltip content

  • #17591 4e9a077 Thanks @cfloume! - Make sure push notifications data is initialized even if the user is not onboarded

  • #17406 256801c Thanks @tonykhaov! - Fix mobile swiper gesture resistance and single-card swipe handling

  • #17693 00445f8 Thanks @mcayuelas-ledger! - fix default values for wallet v4 params related to Q2

  • #17656 847ed47 Thanks @LucasWerey! - Add hidden asset banner on the Asset Detail screen with a quick action to unhide the asset

  • #17554 295c8af Thanks @YazhuEth! - Fix memo tag drawer briefly flashing on the device selection step when ignoring the memo prompt

  • #17662 bb25536 Thanks @mcayuelas-ledger! - Centralize price formatting with consistent digit rules (2/6 fractional digits) and threshold marker for tiny variations

  • #17663 b294262 Thanks @aussedatlo! - Show a stuck-loader hint after 10s on mobile device-action loading screens to invite users to check their device

  • #17617 6cbcbdd Thanks @OlivierFreyssinet! - Improve console log readability when debugging via Chrome / React Native DevTools: mobile's ConsoleLogger now uses console.groupCollapsed with raw objects instead of stringifying everything to JSON, and the DMK logger emits a clearer DMK[tag] log type (with backward-compatible filtering in the logs viewer) instead of the generic live-dmk-logger.

  • #17542 a04a4c0 Thanks @mitchellv-ledger! - Add lwmAnalyticsConsentOnboarding feature flag (default disabled) for mobile

  • #17589 a5caa23 Thanks @qperrot! - feat (lwm): add undelegate flow on evm native staking

  • #17493 13749a8 Thanks @gre-ledger! - Per-family mobile accountActions (bitcoin, celo, evm, tron) now receive the resolved AccountBridge as a parameter and use bridge.isAccountEmpty instead of the deprecated top-level helper; useAccountActions resolves the bridge via useAccountBridge and passes it through.

  • #17491 703084e Thanks @gre-ledger! - Replace the CLEAN_CACHE reducer handler with a thunk in useCleanCache that resolves the AccountBridge per account and dispatches replaceAccounts.

  • #17494 427d8c0 Thanks @gre-ledger! - Migrate mobile empty-account checks (account/portfolio screens, asset screen, select-account, quick-actions, transfer drawer, analytics operations list, device-scan add-account flow) from the deprecated isAccountEmpty top-level helper to bridge-resolved equivalents. Replace areAccountsEmptySelector with the new useAreAccountsEmpty hook.

    Also fix the Operations list empty/no-op state when filtered on token accounts whose parent is not in the filtered slice, and stabilize useAreAccountsEmpty by selecting through the existing memoized shallow accounts selector to avoid re-rendering consumers on irrelevant account updates.

  • #17492 c5d36d3 Thanks @gre-ledger! - Migrate the mobile operations layer (OperationRow, OperationDetails, SendFunds recipient stuck-tx detection, account screen header) from deprecated isEditableOperation / isStuckOperation / getStuckAccountAndOperation top-level helpers to AccountBridgeExtensions via useAccountBridge / useAccountBridgeOrNull.

  • #17238 e82e99b Thanks @ysitbon! - Move @features/market-banner to @features/flow-market-banner under features/flow/ per the Iteration 5 Data Layer ADR. LIVE-30363

  • #17530 c7b92c1 Thanks @LucasWerey! - Add PnlCard shared component under src/mvvm/features/Pnl with interactive (trend + chevron) and info (ⓘ icon) variants, gated by shouldDisplayPnl and respecting discreet mode.

  • #17531 0f6217b Thanks @LucasWerey! - Add PnlDetailDrawer shared component under src/mvvm/features/Pnl, a Lumen bottom sheet that displays per-asset or portfolio PnL detail rows (title, value, optional definition) and respects discreet mode. Items prop is optional, so the drawer can also be used as a header-only info drawer.

  • #17640 f4a57a8 Thanks @LucasWerey! - Add address row press handler on Asset Detail to navigate to the corresponding account

  • #17513 1577356 Thanks @deepyjr! - Route asset/:currencyId and market/:currencyId deeplinks to the new Asset Detail screen when the Wallet 4.0 aggregatedAssets feature flag is enabled, with tracking source "deeplink_asset" / "deeplink_market".

  • #17503 f799d7f Thanks @LucasWerey! - Aggregate AssetDetail total balance and addresses across every network of an asset on mobile (W4.0), and extract resolveDistributionItem / parentAccountLookup from desktop into @ledgerhq/asset-aggregation so both apps share one source.

  • #17557 3603d91 Thanks @OlivierFreyssinet! - Add generic error UI for the DeviceIntentExecutor (LWM) covering connection, intent and invalid-operation failures, and wire the executor's onUserCancel callback to every phase as a uniform onClose prop so platform and intent components can offer a close action.

  • #17679 6b9e437 Thanks @deepyjr! - Fix "Hide from portfolio" not hiding parent CryptoCurrencies (e.g. Ethereum) in the new portfolio asset lists

  • #17616 d8d05da Thanks @deepyjr! - Fix Asset Detail transactions filtering so token assets (e.g. USDC, USDT) only show their own operations on both the preview and the "See all" history list, instead of bleeding parent-network and sibling-token operations.

  • #17517 2eabd7f Thanks @LucasWerey! - Remove debug Asset Detail FAB and its DEBUG_ASSET_DETAIL_FAB env toggle. Asset/market detail is now reachable from regular navigation entry points.

  • #17560 9ccd154 Thanks @lysyi3m! - Move Concordium ID App store links (App Store / Google Play) to a new concordiumIdAppLinks feature flag with runtime override support via Firebase

  • #17635 603f343 Thanks @RobinVncnt! - feat: lwm feature flag for new notification opt in

  • #17682 07a9a91 Thanks @deepyjr! - Display currency ticker instead of name in asset details coin capsule

  • #17639 c2dd827 Thanks @deepyjr! - Fix Asset Detail showing the Receive CTA on top of the balance graph for token assets the user already holds (e.g. ERC-20 stablecoins). The funds check now walks token sub-accounts in addition to parent accounts.

  • #17556 cc9c784 Thanks @tonykhaov! - Add generic awareness modal drawer on mobile

  • #17523 9d8f0c2 Thanks @LucasWerey! - Fix MyWallet top bar avatar size to match Figma design

  • #17685 fbda1dc Thanks @qperrot! - fix(mobile): guard EVM AccountBalanceSummaryFooter against TokenAccount

    Move the account.type !== "Account" early return before account.currency.id
    is accessed in AccountBalanceFooter. TokenAccount objects have no currency
    property, causing a crash ("Cannot read property 'id' of undefined") when
    navigating to any EVM token account (e.g. USDT).

  • #17584 3a5a8d6 Thanks @mcayuelas-ledger! - Fix asset detail favorites to use Coingecko market ids so starring tokens matches the Market list

  • #17655 524c7c0 Thanks @deepyjr! - Adjust asset detail page UI: show Earn entry point on non-owned stakeable assets, replace plus with chevron icon in the Earn banner, and resize the Transfer CTA.

  • #16745 21290f4 Thanks @Moustafa-Koterba! - [LWM] Delegated balance in account summary

  • #17293 a98c300 Thanks @mitchellv-ledger! - Add lotties and tracking calls to lwm product tour

  • #17626 574f1da Thanks @cunhabruno! - Dedupe staking summary rotate animation into a shared useChangeValidatorRotateAnim hook and stop leaking the looping Animated.loop on unmount.

  • #17445 dd293fe Thanks @benruseau! - Add connect device state machine

Patch Changes

  • Updated dependencies [839537d, 446020d, e278291, efbc7ee, 157ec37, d1e22fc, 00445f8, 483bc1c, b2ee27c, ef47541, bb25536, 6cbcbdd, a04a4c0, 9b75461, 822bc92, 2188360, fe04e44, dd293fe, 40f9d3b, 3603d91, 74e82f8, 2eabd7f, 62ec3e5, 9ccd154, c4d44f6, 603f343, c9ec82a, 59c2b56, 73e9f74, a61f904, 5de991c, d35f56c, d15fc5d, 21290f4, 75b3b3c]:
    • @ledgerhq/cryptoassets@13.49.0
    • @ledgerhq/types-cryptoassets@7.37.0
    • @ledgerhq/live-wallet@0.27.0
    • @ledgerhq/client-ids@0.10.0
    • @ledgerhq/device-intent@3.0.0
    • @ledgerhq/live-dmk-mobile@0.23.0
    • @ledgerhq/live-dmk-shared@0.25.0
    • @ledgerhq/coin-bitcoin@0.42.0
    • @shared/feature-flags@0.8.0
    • @ledgerhq/coin-evm@4.0.0
    • @ledgerhq/types-live@6.109.0
    • @ledgerhq/live-currency-format@0.9.0
    • @ledgerhq/ledger-wallet-framework@1.6.0
    • @ledgerhq/coin-cosmos@0.34.0
    • @ledgerhq/coin-concordium@0.12.0
    • @ledgerhq/coin-canton@0.25.0
    • @ledgerhq/live-env@2.36.0
    • @ledgerhq/wallet-pnl@0.3.0
    • @ledgerhq/coin-casper@2.13.4
    • @ledgerhq/coin-filecoin@1.24.4
    • @ledgerhq/coin-multiversx@0.17.1
    • @ledgerhq/coin-stacks@0.21.4
    • @ledgerhq/live-countervalues@0.18.5
    • @ledgerhq/live-countervalues-react@0.14.4
    • @ledgerhq/domain-service@1.8.4
    • @ledgerhq/hw-ledger-key-ring-protocol@0.10.3
    • @ledgerhq/ledger-key-ring-protocol@0.13.3
    • @ledgerhq/live-dmk-speculos@0.8.8
    • @ledgerhq/live-network@2.6.2

Don't miss a new ledger-live release

NewReleases is sending notifications on new releases.