Arkadaşlar merhaba, uzun zamandır uğraştığım bir mobil uygulama projem var. React Native kullanıyorum ve özellikle buton tıklama animasyonlarında garip bir gecikme sorunu yaşıyorum. Mesela bir butona bastığımda, kullanıcıya anında geri bildirim vermesi gereken bir basınç efekti (scale veya opacity değişimi) var ama bu animasyon bazen 100-200 milisaniye kadar gecikmeli başlıyor. Uygulamanın genel akıcılığı iyi, performans monitörde herhangi bir darboğaz görünmüyor. Acaba bu gecikme nereden kaynaklanıyor olabilir? Native modüller mi karışıyor yoksa JS thread'inde bir tıkanıklık mı var anlamadım. Özellikle Android'de daha belirgin, iOS'ta nispeten daha az hissediyorum.
Animated API kullanıyorum, LayoutAnimation da denedim. Butonları Pressable ile sarmaladım, onPressIn ve onPressOut olaylarını dinliyorum. Animasyonu tetikleyen fonksiyon çok basit aslında, sadece bir state değişimiyle scale değerini 0.95 yapıp geri çekiyorum. Fakat sanki bu state değişimi hemen render'a yansımıyor, bir tur gecikiyor. useNativeDriver true yapmıştım, hatta false da denedim; fark yok. Bu konuda daha önce karşılaşan var mı? Belki de animasyonu doğrudan JS tarafında değil de Reanimated gibi bir kütüphaneyle yapmalıyım? Yoksa butonun bulunduğu ekranın karmaşıklığıyla ilgili bir durum mu?
Bir de şu sorun var: Bazen animasyon çalışıyor ama butonun altındaki metin veya ikonlar titriyor gibi oluyor. Sanırım layout hesaplarıyla animasyon çakışıyor. Bunu çözmek için animasyon sırasında "willChange" veya "transform" kullanmayı denedim ama pek işe yaramadı. Sizce bu gecikme sorununu çözmek için performans profili oluşturup hangi metrikleri incelemeliyim? Veya daha önce bu sorunu yaşayan varsa nasıl bir yol izledi? Yardımcı olursanız sevinirim, gerçekten can sıkıcı bir durum çünkü kullanıcı deneyimini baltalıyor.
Animated API kullanıyorum, LayoutAnimation da denedim. Butonları Pressable ile sarmaladım, onPressIn ve onPressOut olaylarını dinliyorum. Animasyonu tetikleyen fonksiyon çok basit aslında, sadece bir state değişimiyle scale değerini 0.95 yapıp geri çekiyorum. Fakat sanki bu state değişimi hemen render'a yansımıyor, bir tur gecikiyor. useNativeDriver true yapmıştım, hatta false da denedim; fark yok. Bu konuda daha önce karşılaşan var mı? Belki de animasyonu doğrudan JS tarafında değil de Reanimated gibi bir kütüphaneyle yapmalıyım? Yoksa butonun bulunduğu ekranın karmaşıklığıyla ilgili bir durum mu?
Bir de şu sorun var: Bazen animasyon çalışıyor ama butonun altındaki metin veya ikonlar titriyor gibi oluyor. Sanırım layout hesaplarıyla animasyon çakışıyor. Bunu çözmek için animasyon sırasında "willChange" veya "transform" kullanmayı denedim ama pek işe yaramadı. Sizce bu gecikme sorununu çözmek için performans profili oluşturup hangi metrikleri incelemeliyim? Veya daha önce bu sorunu yaşayan varsa nasıl bir yol izledi? Yardımcı olursanız sevinirim, gerçekten can sıkıcı bir durum çünkü kullanıcı deneyimini baltalıyor.