react / react/react-native

[iOS] Animated Bug: Animations do not run correctly in React Navigation

Offen
#56,347 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

API: Animated Needs: Triage :mag: Platform: iOS
Vorherrschende Sprache
C++
Sterne
127k
Forks
25.3k
Ø Merge
1 T. 23 Std.
Gemergte PRs (30 T.)
4

Beschreibung

Description

Hello!

I'm having some issues using the React Navigation library with the bottom tabs. I created a bottom tabs navigator, and I noticed that sometimes when I change the tab, the previous tab disappears and the focused tab doesn't show. This issue appears only when using animations for the tab switching. You can see in the reproduction example that I used "shift" animation.
I debugged the library "@react-navigation/bottom-tabs", and everything seems to be just fine, and I think the issue is in React Native, in the Animated API. The bottom tabs library animates an Animated.Value between -1 and 1, and then passes an interpolated value to the Screen. This interpolation seems to be broken.
I used version "7.15.9" of "@react-navigation/bottom-tabs".
You can find the code I'm talking about here: https://github.com/react-navigation/react-navigation/blob/f2ca954afa5a478de49489199444d7a5269df261/packages/bottom-tabs/src/views/BottomTabView.tsx#L296

Steps to reproduce
  1. Clone the reproducer app
  2. Install dependencies using "yarn"
  3. Start dev server
  4. Run the app from Xcode
  5. Swipe between the two tabs slow and fast many times, until you see the second tab won't render anything
React Native Version

0.84.1

Affected Platforms

Runtime - iOS

Output of npx @react-native-community/cli info
System:
  OS: macOS 26.3.1
  CPU: (14) arm64 Apple M3 Max
  Memory: 4.64 GB / 36.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 22.13.1
    path: /Users/george/.nvm/versions/node/v22.13.1/bin/node
  Yarn:
    version: 3.6.4
    path: /Users/george/.nvm/versions/node/v22.13.1/bin/yarn
  npm:
    version: 10.9.2
    path: /Users/george/.nvm/versions/node/v22.13.1/bin/npm
  Watchman:
    version: 2025.05.26.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.16.2
    path: /Users/george/.rvm/gems/ruby-3.0.0/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 25.0
      - iOS 26.0
      - macOS 26.0
      - tvOS 26.0
      - visionOS 26.0
      - watchOS 26.0
  Android SDK:
    API Levels:
      - "30"
      - "31"
      - "33"
      - "34"
      - "35"
      - "36"
      - "36"
    Build Tools:
      - 30.0.2
      - 30.0.3
      - 33.0.0
      - 34.0.0
      - 35.0.0
      - 36.0.0
      - 36.0.0
    System Images:
      - android-34 | Android TV ARM 64 v8a
      - android-35 | ARM 64 v8a
      - android-35 | Google Play ARM 64 v8a
      - android-35 | Google Play Tablet ARM 64 v8a
      - android-36 | Google Play ARM 64 v8a
      - android-36 | Pre-Release 16 KB Page Size Google Play ARM 64 v8a
    Android NDK: Not Found
IDEs:
  Android Studio: 2025.3 AI-253.30387.90.2532.14935130
  Xcode:
    version: 26.0.1/17A400
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.13
    path: /usr/bin/javac
  Ruby:
    version: 3.0.0
    path: /Users/george/.rvm/rubies/ruby-3.0.0/bin/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 20.1.0
    wanted: 20.1.0
  react:
    installed: 19.2.3
    wanted: 19.2.3
  react-native:
    installed: 0.84.1
    wanted: 0.84.1
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true
Stacktrace or Logs
No logs needed.
MANDATORY Reproducer

https://github.com/gmanole01/react-native-animated-issue

Screenshots and Videos

https://github.com/user-attachments/assets/e7ce45e9-1455-4f1f-853f-6c7c18a49245

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Führe den obligatorischen Reproducer mit yarn und Xcode aus und reproduziere den Fehler anschließend, indem du langsam und schnell zwischen seinen beiden Tabs wischst. Untersuche packages/bottom-tabs/src/views/BottomTabView.tsx rund um den verknüpften Animationscode und die beteiligte React Native Animated-Interpolation. Als erledigt gilt die Aufgabe, wenn der zuvor leere Tab bei wiederholten animierten Wechseln unter iOS nicht mehr auftritt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
ios, react-native
Bereich
mobile
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.