diff --git a/CHANGELOG.md b/CHANGELOG.md index 14a0acb68a8..138cccdef26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - fixed: The side menu's dimming overlay works again on both platforms. React Native 0.86 removed the `StyleSheet.absoluteFillObject` the drawer's overlay spreads, which collapsed it to nothing, so tapping outside the menu no longer closed it. - fixed: Text inputs mounted in the disabled state (such as the spending-limit amount) no longer flash their enabled look before dimming when a scene appears. - fixed: Received-transaction and error dropdowns no longer slide in underneath the Android status bar on edge-to-edge devices. +- fixed: Home's promo card no longer covers the Buy and Sell tiles on Android when it appears after the screen loads. - fixed: The header, scene footer, tab bar, keyboard-avoiding buttons, and notification cards blur the scene behind them again on Android 12 and above, sampling the focused scene's content. Below Android 12 they keep their solid backgrounds. - fixed: See-through modal sheets on Android under the new architecture. Modals blur the screen behind them again on Android 12 and above via a new blur backend (the old one snapshots the window in a way the new architecture renders as empty), and use a solid background color below Android 12, where no blur implementation can render. - fixed: Zealot uploads of release merge builds, and failed Zealot uploads now fail the build diff --git a/src/components/common/EdgeAnim.tsx b/src/components/common/EdgeAnim.tsx index a5059ab24b2..d64dc906f5a 100644 --- a/src/components/common/EdgeAnim.tsx +++ b/src/components/common/EdgeAnim.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import type { ViewProps } from 'react-native' +import { Platform, type ViewProps } from 'react-native' import Animated, { type BaseAnimationBuilder, type ComplexAnimationBuilder, @@ -25,6 +25,14 @@ export const DEFAULT_ANIMATION_DURATION_MS = 300 export const LAYOUT_ANIMATION = LinearTransition.duration( DEFAULT_ANIMATION_DURATION_MS ) + +// On Android under the new architecture, Reanimated's layout transition can +// leave a view at its old position after its siblings change. On slow +// startups, Home's rows stayed where they were before the promo card +// appeared above them, so the card drew over the Buy and Sell tiles. Only +// animate layout changes by default on iOS: +const DEFAULT_LAYOUT_ANIMATION = + Platform.OS === 'android' ? undefined : LAYOUT_ANIMATION export const MAX_LIST_ITEMS_ANIM = 10 // Commonly used enter/exit animations. Use these to prevent @@ -100,7 +108,7 @@ interface Props { exit?: Anim /** - * The animation to use for all layout changes. (defaults {@link LAYOUT_ANIMATION}) + * The animation to use for all layout changes. (defaults to {@link LAYOUT_ANIMATION} on iOS, none on Android) * * TODO: Remove default once we have audited all instances of EdgeAnim * explicitly enabling the default LAYOUT_ANIMATION for those instances. @@ -176,7 +184,7 @@ export const EdgeAnim = ({ disableAnimation, enter, exit, - layout = LAYOUT_ANIMATION, + layout = DEFAULT_LAYOUT_ANIMATION, noLayoutAnimation = false, visible = true, ...rest