You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Replace persistedQueryStorage with MMKVPersister
* Memoize favorites
* Conditionally load boot-related modules
* Clean up AppDelegate, fix warnings
* Propagate dapps data changes to browser search
Now when the data changes, search results will always update — fixes a bug where results would occasionally be empty if data only became available after initial mount
* [Dev fix] Remove codegen changes from react-native-screen-corner-radius patch
* Remove @tanstack/query-async-storage-persister dep
* Fix userAssets memory management
The previous Map structure was resulting in all userAssets stores accessed during runtime being held permanently in memory.
On top of that, `useWalletsHiddenBalances` was repeatedly looping through all wallets on app launch, causing every userAssets store to be accessed and thus held in memory.
Now, hidden asset balances are summed any time a specific wallet's assets are synced to Zustand, and any time `setHiddenAssets` is called. That total is saved to `userAssetsStoreManager`'s persisted state, allowing all of the user's hidden wallet balances to be read from a single source, with no need to loop through individual stores.
The tradeoff here, which I think is acceptable, is that users will temporarily see their hidden balances reflected in each wallet's total balance, until that wallet next fetches assets. That seems benign enough to forgo a migration.
* Add `time` util
* Bump packages
* Add `maxAge`, increase `queryClient` throttle time, remove `ENABLE_LOGS`
* Make `isLoadingUserAssets` check more accurate
`chainBalances.size` will only be zero if `setUserAssets` has never been called for the active store.
If `setUserAssets` has been called, `chainBalances` will be populated, regardless of whether the wallet has assets.
* [Browser] Avoid JS thread Shared Value reads
The first run of any `useAnimatedStyle` or `useDerivedValue` is executed on the JS thread.
The first run can be detected by checking if `_WORKLET` is `false`, which allows bypassing expensive JS thread SV reads if you can set the hook's initial return value through other means.
These changes bypass the vast majority of JS thread SV reads throughout the browser, which reduces JS thread blocking post app launch and during browser tab creation.
* [Browser] Fix tab switch gesture activation criteria
Prevents tab switch gestures from activating when the browser search UI is open
* Clean up `hiddenAssetsBalance` calculations, types
* Fix `hiddenBalances` lookup
* [Android] Fix bottom bar handling and boot jank
- Fixes Android device height and safe area determinations, which were previously inconsistent in what was considered part of the safe area vs. part of the device height — this was causing various UI dimensions to be miscalculated, for instance browser tab heights
- Provides the `SafeAreaProvider` with `initialWindowMetrics` which on Android prevents layout shift on initial app launch
- Sets the bottom bar background to transparent when button navigation isn't being used
- Now correctly handling dimensions regardless of whether the device uses button navigation
* Reduce `useMeteorology` cache time
* Replace `SwapSheetGestureBlocker` with `DecoyScrollView`
The gesture blocking isn't needed
* Merge cleanup
* Fix Detox
0 commit comments