v2.103.0
Changelog:
- Added: Controller and library behaviour logging via a new Debug controller #2495
- Toggleable at runtime (even in production) to debug controllers without reloading the extension background.
- Logs are structured and filterable per controller/flow, and kept in memory for future log dumps.
- Added: Disconnect all connected dApps at once #2509
- New capability to disconnect every connected app in a single action.
- Added: Gas Tank fee sponsorship for Safe accounts #2524
- Safe accounts can now pay transaction fees from the Gas Tank and broadcast through the bundler.
- Adds a Safe-specific user operation flow, paymaster signature handling, and bundler gas estimation.
- Unsupported Safe fee options (native/account-paid) are disabled but still shown; Gas Tank deposits are restricted for unsupported tokens and networks.
- Changed: Faster app startup by optimizing the storage migration sweep #2491
- Steady-state boot now does 1 storage read instead of ~44 (~97% fewer), noticeably speeding up load, especially on mobile.
- No behavioral change to the migrations themselves.
- Changed: Hide the previous failure banners when retrying a swap or bridge #2500
- Retrying a failed swap/bridge no longer keeps showing the old activity and Swap & Bridge failure banners.
- Changed: Improve the quality of unit tests across controllers #2497
- Changed: Cache DeFi position updates to reduce external API calls #2462
- Cuts server-side external API calls when refreshing DeFi positions in the portfolio.
- Changed: Reduce ENS reverse lookups for better privacy #2484
- ENS profiles are no longer refreshed for all accounts in a batch by default (behind a new keepEnsProfilesUpToDate flag, off by default), reducing address exposure to ENS resolvers.
- Reverse lookups are now controlled per context (skipped in the account list, still fresh for the humanizer), and the ENS batch size is reduced for better performance.
- Changed: Remember the amount field mode (token/fiat) in Swap & Bridge across sessions #2514
- Changed: Migrate the Socket/Bungee swap provider to Socket Swap V3 #2510
- New swap and bridge quotes now use Socket Swap V3 endpoints.
- The legacy Bungee provider is kept route-only, so already-active routes still complete.
- Fixes Socket v3 bridge status parsing and keeps Socket/Bungee route branding instead of falling back to Li.Fi.
- Changed: Move portfolio hints logic into a dedicated HintsController #2515
- Fixed: Slow keystore unlock when the browser JIT is disabled #2501
- Keystore unlock now uses WASM scrypt (~0.3s) instead of pure JS (~45s) when users disable JIT for security, with a JS fallback. Output is byte-identical, so existing keystores unlock unchanged.
- Fixed: Resolve a Socket.dev-reported CVE in dependencies #2508
Full Changelog: v2.102.3...v2.103.0