react / react/react-native

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

Aperta
#56,347 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

API: Animated Needs: Triage :mag: Platform: iOS
Lingua principale
C++
Stelle
127k
Fork
25.3k
Merge medio
1g 23h
PR unite (30g)
4

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Esegui il riproduttore obbligatorio con yarn e Xcode, quindi riproduci il problema scorrendo lentamente e rapidamente tra le sue due schede. Ispeziona packages/bottom-tabs/src/views/BottomTabView.tsx intorno al codice di animazione collegato e all’interpolazione React Native Animated coinvolta. Il lavoro è completato quando la scheda che in precedenza risultava vuota non si verifica più durante cambi animati ripetuti su iOS.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
ios, react-native
Ambito
mobile
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.