React Mention E-postalarında Çift Gönderim Nasıl Önlenir
React tabanlı mention bildirimlerinin neden iki kez gönderildiğini ve tek bir eventId sözleşmesiyle bu hatanın nasıl önlenebileceğini ele alıyoruz.
Mention e-postalarının iki kez gönderilmesi, küçük görünen ama kullanıcı güvenini hızla aşındıran bir hata sınıfıdır. Sorun genelde React tarafındaki optimistic UI güncellemeleri ile ağ gecikmesine bağlı retry akışlarının, aynı yorum eylemini API ve arka plandaki mail worker'a iki farklı iş olarak yansıtmasından kaynaklanır. Composer'daki state, debounced kaydetme, mutation onayı ve worker'ın e-posta üretimi birbirinden bağımsız hareket ettiğinde, tek kullanıcı tıklaması iki bildirim doğurabilir.
Önerilen çözüm büyük bir mimari değişiklik değil, dar kapsamlı bir sözleşme: istemci tek bir eventId üretir, API bu id'yi yorum kaydıyla birlikte saklar, worker ise aynı id daha önce işlenmişse gönderimi reddeder. Böylece React tarafı hızlı ve optimistic kalabilirken, e-posta teslimatı idempotent hale gelir. Test tarafında ise ağır uçtan uca senaryolara gerek yoktur; tek eventId için tek e-posta gelmesi, alıcı listesinin mention parser sonucuyla eşleşmesi ve header'larda aynı event id'nin görünmesi gibi birkaç net kontrol regresyonların büyük kısmını yakalar.
Bu yaklaşım özellikle önizleme ortamlarında ve CI'da izlenebilirliği artırır: her run için ayrı bir mailbox ve eventId, hangi mesajın hangi eyleme ait olduğunu belirsizlik olmadan gösterir. Sorun React'e özgü değildir; optimistic render ve retry yapan herhangi bir istemci aynı hata sınıfını tetikleyebilir, dolayısıyla bu disiplin genel bildirim sistemlerine de taşınabilir bir pratik olarak öne çıkıyor.