Skip to content

live-mobile@4.28.0

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Nov 10:21
· 450 commits to develop since this release
6788aa9

4.28.0

Minor Changes

  • #24189 711b543 Thanks @liviuciulinaru! - Let users pick the network when they swap a multi-network asset from Market or Asset Detail, also when they have no account for it. Show only the networks of the asset itself, so USDC no longer opens an extra asset step. When the drawer keeps only one network, open the account step on that network.

  • #24195 1fa3701 Thanks @LucasWerey! - Account Detail sends the events of its tracking plan, with the same names and properties on both apps

  • #24262 4bd0f62 Thanks @ovoronkov-ledger! - chore(lumen): bump ui-rnative to 0.1.72 for rn 0.86 (LIVE-39312)

    Bump lumen-ui-rnative to 0.1.72, lumen-ui-react to 0.1.69 and lumen-utils-shared to 0.1.19. The new lumen-ui-rnative peer ranges accept react-native 0.86, react-native-worklets 0.10 and expo-haptics 57. Lumen native inputs now expose their label as the TextInput accessibility label and hide the visual label from accessibility, so mobile tests query these inputs with getByLabelText.

  • #24412 39cb975 Thanks @cted-ledger! - Sample estimateFees and validateIntent successes in coin_module_call with a new preparationSampleRate param of the coinObservability flag (default 0.1): the bridge calls them on every edit of a transaction, so sending each call made them most of the volume. Their failures are still always sent, and craftTransaction, craftRawTransaction, craftTransactionData, combine and broadcast stay unsampled. Each coin_module_call now carries its tier's sampleRate and an inSample flag, so dashboards can compute unbiased failure rates and estimate volumes from the sample.

  • #24339 eac050d Thanks @LucasWerey! - Account Detail shows the Cardano delegation and balances with the shared Lumen components

  • #24215 7185de6 Thanks @gre-ledger! - Value each operation in the fiat a query asks for, at its date, with the countervalue query

  • #24235 0ebe8ea Thanks @claudiiafg! - Hide the account detail empty state when a receive updates the balance before operations

  • #24557 5fda2a0 Thanks @deepyjr! - Let the mobile Analytics chart and PnL sections take their data as props, keeping the Portfolio-wide screen unchanged, and keep room above a flat chart for its value label.

  • #24352 64c16b8 Thanks @deepyjr! - Show the Analytics introduction on mobile Account Detail: the package exposes the introduction from a universal entry with a native view, and mobile persists its dismissal locally and passes the account scope (account, native asset, Balance) to Analytics.

  • #24393 cc4eced Thanks @deepyjr! - Add the account-detail DevTools tool on mobile to reset the Account Detail Analytics card

  • #24230 e0ca3f0 Thanks @valeriiboiko-ext-ops! - Add test ids to the unlock screen Log in button and the post-onboarding hub step descriptions

  • #24443 c842892 Thanks @LucasWerey! - Send network instead of currency and drop isTokenAccount on the account detail page events

  • #24226 d701bc7 Thanks @qperrot! - fix(coin-bitcoin): do not spend the inputs of pending operations

    prepareTransaction and estimateMaxSpendable exclude the UTXOs spent by the account's own
    pending operations. When the explorer does not report mempool spends, a sync listed them as
    spendable again and the next send was rejected with txn-mempool-conflict. An RBF edit keeps
    the inputs of the operation it replaces.

    addPendingOperation keeps every pending UTXO operation (those with extra.inputs) instead of
    only the latest one, and removes one only when the new operation spends one of its inputs (an RBF
    replacement). Operations of other coins are unchanged.

    isOldestBitcoinPendingOperation takes the operation instead of its date: a pending operation
    can be sped up unless it spends an output of another unconfirmed operation of the account. Pending
    sends of unrelated UTXOs no longer block each other's speed-up.

  • #24520 f781149 Thanks @ysitbon! - Brand AggregatedAssetId and MarketId, and replace both copies of dadaIdToMarketId with the typed toMarketId and parseMarketRef bridge in @domain/api-aggregated-assets

  • #24318 fb3956b Thanks @vpenskyi-ledger! - Sign the Perps SwapKit withdrawal on the Ethereum app and submit it on desktop and mobile

  • #24320 d02425e Thanks @LucasWerey! - Align the native devtools with Lumen and the desktop: tiles for the categories, kind and owner tags, one icon per tool, Lumen inputs, one horizontal gutter

  • #24411 74beafc Thanks @tonykhaov! - Dev, nightly and RC builds get push notifications from Braze staging: each build now uses its own Braze staging app ("Dev", "Nightly", "RC"), and the iOS simulator always asks for an APNs token

  • #24350 d36ed0a Thanks @OlivierFreyssinet! - Remove the supportDeviceApex feature flag: Apex is always listed in onboarding device selection and BLE pairing

  • #24469 34b5e47 Thanks @RobinVncnt! - Show a success screen at the end of the seeded Ledger Sync offer

  • #24278 6a9a001 Thanks @ovoronkov-ledger! - chore(mobile): bump react-native-video to 6.19.3 (LIVE-40457)

  • #24500 6da9b38 Thanks @gre-ledger! - Bump ts-libs packages (@ledgerhq/auth 0.2.0, @ledgerhq/devices 8.19.0, @ledgerhq/domain-service 1.10.0, @ledgerhq/evm-tools 2.1.0, @ledgerhq/hw-ledger-key-ring-protocol 1.1.0, @ledgerhq/hw-transport 6.37.0, @ledgerhq/hw-transport-mocker 6.36.0, @ledgerhq/ledger-key-ring-protocol 1.2.0, @ledgerhq/live-config 3.10.0, @ledgerhq/live-currency-format 0.17.0, @ledgerhq/live-env 4.2.0, @ledgerhq/live-network 3.3.0, @ledgerhq/live-promise 0.5.0, @ledgerhq/logs 6.20.0, @ledgerhq/psbtv2 0.7.0).

  • #24167 cf6fb55 Thanks @ovoronkov-ledger! - fix(rn-upgrade): restore native startup time with @shared/native-performance (LIVE-40286)

  • #24607 b282f26 Thanks @benruseau! - Bump @ledgerhq/device-management-kit to 1.11.1 and @ledgerhq/dmk-ledger-wallet to 0.9.0, so the OS update restore ends with an out-of-memory status when the app storage restore (0x6733) or the custom lock screen upload (0x5102) runs out of memory

  • #24345 9edfe90 Thanks @dgreen-ledger! - Fix the empty screen when the ledgerlive://sync-onboarding deep link opens the Bluetooth pairing screen before the app onboarding is complete.

  • #24245 c533e40 Thanks @vpenskyi-ledger! - Add the Perps withdraw summary screen with an auto-refreshing SwapKit quote on desktop and mobile

  • #24346 72da4b1 Thanks @RobinVncnt! - Confirm before leaving an unseeded device setup, and keep onboarding incomplete until the end

  • #24472 55a43bc Thanks @claudiiafg! - Show the 1D market variation for an unchanged account balance

  • #24437 716dba7 Thanks @mcayuelas-ledger! - Drop the legacy currency distribution and always build the asset distribution

  • #24298 498cbdd Thanks @mcayuelas-ledger! - Always show mobile transaction history and drop the lwmWallet40 operationsList param

  • #24415 4db45b9 Thanks @LucasWerey! - Add the coin-config DevTool on desktop and mobile to override LiveConfig values. The overrides slice moves to the new @shared/live-config-overrides package, and mobile now keeps the overrides across restarts

  • #24217 298bf8d Thanks @ysitbon! - ContactDetailActionsMenu moves to the native platform entry @features/flow-contacts-detail/native and reads its bottom inset from the sheet context; ContactDetailActions becomes internal. The universal entry is one unconditioned src/index.ts, ContactAddressDetailDialog and ContactsEditSignerMismatchDialog each have one props contract, ContactDetailView takes onOpenLedgerWalletAccounts and onOpenAddressDetail, and the web address detail dialog shows a Share tile when onShareAddress is set.

  • #24419 13609b7 Thanks @francois-guerin-ledger! - Fix Cosmos staking amount screen enabling Continue with stale fees

  • #24370 cea0076 Thanks @ysitbon! - Add CryptoOrTokenCurrencyIdSchema and CryptoOrTokenCurrencyId to @domain/entity-currency, replacing the duplicated BalanceAssetIdSchema, ContactCurrencyIdSchema and the send flow's local union. Runtime parsing is unchanged.

  • #24575 235a1ae Thanks @OlivierFreyssinet! - Make onExecutorStateChanged and cancelIntentRequestId optional on the device intent executor

  • #24237 57b51f5 Thanks @tonykhaov! - Device onboarding: the close button on Check your device and Sync your wallet is at the same height as on Connect new device. The Sync your wallet buttons stay above the Android bottom bar.

  • #24303 e8ca231 Thanks @ysitbon! - Split device onboarding by job: @features/platform-device-onboarding runs the actor with useDeviceOnboardingActor, and @devtools/bindings builds the devtool's log, context and next states with useDeviceOnboardingToolState and useDeviceOnboardingToolProps. The mobile funnel no longer imports @devtools/*, and the desktop device onboarding code moves under DevTools

  • #24271 ef95b2e Thanks @mcayuelas-ledger! - Drop the CoinGecko market client and keep the USD chart fallback

  • #24297 6464950 Thanks @ysitbon! - @features/flow-contacts exposes ContactsView and ContactsButton from a single . entry with shared ContactsViewProps and ContactsButtonProps contracts. List logic and platform contact hooks are imported from @features/flow-contacts-list and @features/platform-contacts. Desktop and mobile hosts mount feature and Ledger Sync introduction UI outside ContactsView.

  • #24487 c0c5bff Thanks @amaslakov! - Enable the Tron votes panel earn rewards and desktop vote now actions, routed like the account Earn action

  • #23539 310127f Thanks @ishaba! - Show the energy provider's terms on the Tronify rent signature step, which the user accepts by signing, and align the rent, polling and transfer step copy with the validated wording

  • #23466 ad006b9 Thanks @ishaba! - Resolve TRON TRC10 tokens by their CAL token_identifier

  • #24406 3a0d8aa Thanks @mcayuelas-ledger! - Always show aggregated assets and drop the lwmWallet40 aggregatedAssets param

  • #24448 96fac1e Thanks @mcayuelas-ledger! - Always show asset discoverability and drop the lwmWallet40 assetDiscoverability param

  • #24347 0d83181 Thanks @mcayuelas-ledger! - Always show the mobile asset section and drop the lwmWallet40 assetSection param

  • #24202 e186896 Thanks @mcayuelas-ledger! - Always show mobile My Wallet and drop the lwmWallet40 myWallet param

  • #24499 7228545 Thanks @ovoronkov-ledger! - fix(settings): ignore empty stored settings on import (LIVE-39321)

    On a fresh install no settings are stored, so getSettings returns null (AsyncStorage) or undefined (MMKV). The SETTINGS_IMPORT reducer now treats that as an empty import instead of throwing Cannot convert null value to object during startup.

  • #24279 579165e Thanks @OlivierFreyssinet! - Join a mock server session from a ledgerlive://mockserver/config deeplink, after a warning that mock devices have no security

  • #24250 a6c95e2 Thanks @OlivierFreyssinet! - Add a floating bar to Ledger Wallet Mobile's mock server mode, with the mock server overlay and the live screen of each mocked device

  • #23473 6196234 Thanks @ishaba! - Keep a paid Tronify rental in mind after Send is closed: a reopened USDT send no longer offers a second rental while the energy is arriving, tells the user it is on its way, and re-estimates the fee on the amount step once it lands. Add the mobile E2E for the Tronify sponsored send. InfoState gives its description a testID derived from its own

  • #24310 2cee99e Thanks @benruseau! - Show when the existing backup was saved in the OS update backup selection sheet, and update its wording and icon

  • #24301 8777c73 Thanks @benruseau! - Offer to restart the OS update or send a report once the device has stayed disconnected for 60 seconds, and track the connection timeout

  • #24451 49ae0f6 Thanks @benruseau! - Align the OS update screens with the latest designs and add an OS update screen gallery to the debug menu

  • #24355 52622fa Thanks @benruseau! - Show the OS update success screen for full, partial and out-of-memory restores, with the installed OS version and a banner about what was not reinstalled, drop the backup in every case, and track an out-of-memory restore with its own outOfMemory restore status

  • #24277 7282cc0 Thanks @benruseau! - Let the user retry the OS update install after refusing it on the device, track the retry, and take the progress bar back to where an install, flash or restore starts when it restarts

  • #24273 8dae360 Thanks @RobinVncnt! - Keep polling the device through seed entry before treating the transport as lost

  • #24295 3571671 Thanks @ysitbon! - @features/flow-pay-contact exports PaySuccess and the address picker from ., with ./web and ./native platform entries for Contacts. PaySuccess shares one props contract; suffix imports are removed from the package.

  • #24081 54191e9 Thanks @jiyuzhuang! - Show Synchronizing instead of Connecting once onboarding is past the connection, and hide the firmware offer while the device is locked

  • #24512 2be7893 Thanks @gre-ledger! - Render polkadot nomination addresses in the nominations drawer

  • #24449 1ca6846 Thanks @YazhuEth! - Add custom.predictions.bindAccount and custom.predictions.reportSetup: Ledger Wallet asks the user to confirm on their device that they own the account picked in Predictions, then shows the trading wallet setup the live app reports. AnimatedHeight now counts SVG children, like a loading spinner, so the dialog no longer clips its bottom

  • #24149 1c210e4 Thanks @YazhuEth! - Add a Predictions card to the portfolio services entry points and a Predictions screen that opens the live app, behind the ptxPredictionsLiveAppDesktop and ptxPredictionsLiveAppMobile flags

  • #24407 9c375d0 Thanks @tonykhaov! - Fix "Cancel set up" in the device onboarding Genuine Check error drawer so it leaves onboarding

  • #24240 ae675f9 Thanks @claudiiafg! - Cover the remaining Account Detail integration scenarios on desktop and mobile

  • #24432 5730f10 Thanks @gre-ledger! - Drop the unused Intl.RelativeTimeFormat and Intl.Locale polyfills; keep Intl.PluralRules for i18next plurals

  • #24047 34df591 Thanks @cunhabruno! - Add an importLocalManifests e2e bridge message that adds local live app manifests under Detox, so mobile e2e can load buy-sell-ui from BUY_SELL_UI_URL

  • #23551 4a22a1d Thanks @YazhuEth! - Add the Predictions onboarding sheet behind the custom.predictions.onboard and custom.predictions.close Wallet API methods

  • #24050 6a70efc Thanks @OlivierFreyssinet! - Run Ledger Wallet Mobile on the device mock server from Settings > Debug > Connectivity > Mock server, with mock devices in DIE, SelectDevice2 and legacy flows

  • #24441 e0ac369 Thanks @RobinVncnt! - Show the unlock sheet when a device locks during onboarding checks

  • #24110 7324065 Thanks @qperrot! - Remove Fantom, whose network migrated to Sonic

  • #24205 7647d9b Thanks @henri-ly! - Block sends of known non-transferable ERC-20 tokens with a TokenNonTransferable amount error

  • #24371 32be7d2 Thanks @ysitbon! - Lock the universal-components waiver list empty, remove waiver helpers from enforce-package-structure, and record the rollout as complete in the ADR.

  • #24134 b582a36 Thanks @renovate-operator-ledger! - chore(deps): update dependency @ledgerhq/crypto-icons to v2.0.7

    • Updated @ledgerhq/crypto-icons to 2.0.7
  • #24290 94df3d0 Thanks @renovate-operator-ledger! - [LWDM] chore(deps): update dependency oxfmt to v0.75.0

    • Updated oxfmt to 0.75.0
  • #24291 4fc4674 Thanks @renovate-operator-ledger! - chore(deps): update dependency oxlint to v1.90.0

    • Updated oxlint to 1.90.0
  • #24392 934970a Thanks @renovate-operator-ledger! - chore(deps): update dependency @reduxjs/toolkit to v2.13.0

    • Updated @reduxjs/toolkit to 2.13.0
  • #24438 bc1d1a6 Thanks @renovate-operator-ledger! - chore(deps): update repack to v5.4.2

    • Updated @callstack/repack-plugin-expo-modules to 5.4.2
    • Updated @callstack/repack-plugin-reanimated to 5.4.2
    • Updated @callstack/repack to 5.4.2
  • #24480 351b230 Thanks @ishaba! - Restore the Intl.Locale polyfill: the Intl.PluralRules polyfill needs it, and without it Sui crashed the app on Hermes

  • #24112 e2223f5 Thanks @ovoronkov-ledger! - chore(firebase): bump react-native-firebase to 26.4.1 (LIVE-37320)

  • #24157 d528ea0 Thanks @claudiiafg! - Share the account asset picker across desktop and mobile

  • #24568 e7b21f8 Thanks @qperrot! - Remove Stargaze from Ledger Wallet

  • #24362 8639f2b Thanks @RobinVncnt! - Keep the pairing success screen up until onboarding knows the next screen

  • #24351 ce88f08 Thanks @LL782! - The StorageMigration analytics event now reports the correct to storage: migration events go from AsyncStorage to MMKV, and rollback events go from MMKV to AsyncStorage.

  • #24431 41c9607 Thanks @lysyi3m! - Count staked SUI in the account balance; spend and stake checks use the spendable balance only. Stake operations move the balance by their gas only, and an unstake also by its reward, so the balance history stays consistent.

  • #23599 0d2268d Thanks @CremaFR! - Run the custom.exchange device steps (nonce, Exchange app confirmation, signature) and their errors of wallet-api live apps in the Device Intent Executor drawer, behind the llmWalletApiDeviceIntentExchange flag, and send its A/B assignment to analytics and the swap live app. Keep the httpdebug compat device id of HTTP proxy devices instead of prefixing it with usb|

  • #24522 e67063f Thanks @gre-ledger! - Import bignumber.js through its default export, the form bignumber.js 11 types support

  • #24509 aeb64c8 Thanks @RobinVncnt! - Open the old onboarding checks above the previous screen when an unseeded device falls back, so back returns to it

  • #24199 f53d517 Thanks @RobinVncnt! - Open the unseeded device funnel from Set up your Ledger, and skip Ledger Sync after setup

Patch Changes

  • Updated dependencies [711b543, 39cb975, 7185de6, 522d62b, 0ebe8ea, cd66cae, cc73a3f, 2c728a2, be81b1c, 64c16b8, cc4eced, 59280f5, c842892, b77803f, a95a6bc, d701bc7, 93aef61, ac116ba, f781149, 842a9a5, d02425e, d36ed0a, 3835bab, 6da9b38, cf6fb55, b282f26, 72da4b1, 55a43bc, 420409b, 498cbdd, 4db45b9, 6ab5a87, ed8d437, 360d6c9, 298bf8d, cea0076, 31f7eba, 235a1ae, e8ca231, ef95b2e, e051c84, 6464950, ad006b9, 62bdc34, b67184a, 3a0d8aa, 96fac1e, 0d83181, e186896, 579165e, a6c95e2, 6196234, 2cee99e, 8777c73, 49ae0f6, 52622fa, 7282cc0, 8dae360, cc6d736, 3571671, 1ca6846, 1c210e4, 4a22a1d, 6a70efc, e0ac369, 7324065, 80b6233, b582a36, 934970a, d528ea0, 77e21f9, e7b21f8, 0d2268d, e67063f, 73bd4ee, 6f71acd, f53d517, d3f59ae]:
    • @features/platform-aggregated-assets@0.7.0
    • @shared/feature-flags@0.30.0
    • @domain/entity-account-operation@0.2.0
    • @domain/api-market-countervalues@0.3.0
    • @devtools/bindings@0.15.0
    • @features/platform-account-source-coin-module@0.2.0
    • @features/flow-account-detail-hero@0.4.0
    • @features/flow-account-detail-delegations@0.3.0
    • @features/flow-account-detail-analytics-notice@0.3.0
    • @features/flow-account-detail@0.4.0
    • @ledgerhq/types-live@6.131.0
    • @domain/entity-currency-crypto@0.19.0
    • @ledgerhq/coin-bitcoin@1.2.0
    • @ledgerhq/ledger-wallet-framework@3.11.0
    • @domain/entity-currency-fiat@0.6.0
    • @domain/api-aggregated-assets@0.7.0
    • @domain/api-account-data@0.5.0
    • @devtools/shell@0.14.0
    • @ledgerhq/live-wallet@1.2.0
    • @shared/native-performance@0.1.0
    • @ledgerhq/live-dmk-shared@0.39.0
    • @features/platform-device-onboarding@0.5.0
    • @shared/env@0.13.0
    • @features/platform-feature-flags@0.12.0
    • @shared/live-config-overrides@0.2.0
    • @ledgerhq/coin-canton@1.7.0
    • @ledgerhq/coin-casper@3.8.0
    • @ledgerhq/coin-concordium@1.8.0
    • @ledgerhq/coin-filecoin@2.7.0
    • @ledgerhq/coin-multiversx@1.6.0
    • @ledgerhq/coin-stacks@0.36.0
    • @domain/entity-contact@0.13.0
    • @features/flow-contacts-detail@0.4.0
    • @domain/entity-currency@0.5.0
    • @domain/entity-account-balance@0.3.0
    • @domain/entity-account-balance-history@0.2.0
    • @features/platform-device-intent@5.4.0
    • @features/flow-contacts@0.18.0
    • @domain/api-currency-token@0.8.0
    • @features/flow-portfolio-services-entry-points@0.3.0
    • @features/flow-device-mock-server@0.1.0
    • @features/platform-device-mock-server@0.1.0
    • @ledgerhq/live-dmk-mobile@0.34.0
    • @shared/ui-info-state@0.7.0
    • @features/flow-pay-card-assets@0.7.0
    • @features/flow-pay-card-details@0.11.0
    • @features/flow-pay-card@0.9.0
    • @features/flow-pay-contact@0.9.0
    • @features/flow-predictions@0.2.0
    • @features/platform-predictions@0.4.0
    • @domain/entity-predictions@0.3.0
    • @features/flow-pay-balance@0.10.0
    • @features/flow-pay-request@0.10.0
    • @domain/api-card-management@0.9.0
    • @domain/api-currency-fiat@0.6.0
    • @domain/api-market-index-altcoin-season@0.5.0
    • @domain/api-market-index-fear-and-greed@0.5.0
    • @domain/api-push-devices@0.3.0
    • @domain/entity-account@0.3.0
    • @domain/entity-account-data@0.5.0
    • @domain/entity-account-name@0.4.0
    • @domain/entity-client-identity@0.5.0
    • @domain/entity-market-countervalues@0.5.0
    • @domain/entity-recent-addresses@0.3.0
    • @domain/entity-starred-account@0.1.0
    • @domain/entity-wallet-sync@0.2.0
    • @features/flow-large-screen-upsell@2.4.0
    • @features/flow-pay-card-auth@0.12.0
    • @features/flow-pay-card-widget@0.7.0
    • @features/flow-pay-feature-tour@0.9.0
    • @features/platform-app-lock@0.8.0
    • @features/platform-card@0.9.0
    • @features/platform-currencies@0.13.0
    • @features/platform-market-countervalues@0.5.0
    • @ledgerhq/live-engagement@0.2.0
    • @shared/api-services@0.13.0
    • @shared/app-config@0.3.0
    • @shared/auth@0.9.0
    • @ledgerhq/live-send@0.2.0
    • @ledgerhq/wallet-pnl@0.9.0
    • @features/flow-contacts-add-address@0.9.1
    • @features/platform-contacts@0.12.2
    • @features/platform-feature-flags-firebase@0.1.4
    • @ledgerhq/device-core@0.11.23
    • @ledgerhq/live-signer-evm@0.24.5
    • @ledgerhq/transaction-observability@0.6.2
    • @ledgerhq/wallet-analytics@0.5.5
    • @domain/entity-currency-token@0.5.9
    • @features/flow-account-detail-notices@0.3.0
    • @features/flow-account-detail-settings@0.3.1
    • @features/platform-account-analytics@0.2.0
    • @ledgerhq/live-signer-tron@0.2.5
    • @features/platform-env@0.4.5
    • @features/flow-analytics-consent@0.2.13
    • @features/flow-contacts-add-contact@0.10.1
    • @features/flow-contacts-delete-address@0.4.1
    • @features/flow-contacts-delete-contact@0.5.1
    • @features/flow-contacts-edit-address@0.7.1
    • @features/flow-contacts-edit-contact@0.9.1
    • @features/flow-contacts-list@0.12.1
    • @features/platform-intent-verify-address@0.3.2
    • @features/flow-app-longer-password@0.1.3
    • @features/flow-app-password-removal@0.2.1
    • @features/flow-app-protection-prompt@0.1.3
    • @features/flow-app-unlock@0.2.1
    • @features/flow-pay-card-transactions@0.7.2
    • @features/flow-fear-and-greed@0.5.2
    • @features/flow-app-availability@0.3.2
    • @features/flow-app-password-setup@0.2.1
    • @features/platform-content-ab-tests@0.2.4