Skip to content

Entering animation leaves view invisible under Reduce Motion on iOS (with ENABLE_SHARED_ELEMENT_TRANSITIONS disabled) #9771

Description

@tomekzaw

Description

On iOS, a view with an entering animation stays invisible (stuck at the entering animation's initial opacity 0) when Reduce Motion is enabled. It happens only when the ENABLE_SHARED_ELEMENT_TRANSITIONS feature flag is disabled (which is the default).

Reduce Motion enabled (bug) Reduce Motion disabled (expected)

Reverting #9621 fixes the bug (reverting #9660 does not). The bug is iOS-only — the restoreOpacityInCaseOfFlakyEnteringAnimation workaround added in #9621 is gated #ifdef ANDROID, so iOS is left without it.

Steps to reproduce

  1. Enable Reduce Motion on the iOS simulator (Settings → Accessibility → Motion → Reduce Motion).
  2. Set ENABLE_SHARED_ELEMENT_TRANSITIONS: false (the default) in the reanimated staticFeatureFlags.
  3. Render a view with an entering animation:
    <Animated.View entering={FadeIn}>
      <Text>This text should be visible</Text>
    </Animated.View>
  4. The view is not visible.

Snack or a link to a repository

46f2ec4

Reanimated version

4.6.0-main (also affects 4.5.0)

Worklets version

0.11.0-main

React Native version

0.86.0

Platforms

iOS (not reproducible on Android)

JavaScript runtime

Hermes

Architecture

New Architecture (Fabric renderer)

Reanimated feature flags

Yes — ENABLE_SHARED_ELEMENT_TRANSITIONS: false (the bug requires this flag to be disabled).

Build type

Debug app & dev bundle

Device

iOS simulator

Acknowledgements

Yes

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions