Beberapa hari setelah upload build React ke S3, saya baru sadar ada langkah yang kelewat: cache invalidation.
Bucket S3 itu jadi origin buat CloudFront di depannya. Masalahnya, CloudFront nyimpen cache dari file lama, jadi walau file baru sudah naik ke S3, user yang buka situs masih dapat versi lama karena diserve dari cache.
Solusinya, tiap habis deploy harus bikin invalidation di CloudFront, minimal buat path index.html dan /* biar cache lama dibuang dan CloudFront ambil ulang file baru dari S3. Baru ngeh kalau tanpa langkah ini, perubahan kode bisa kelihatan sudah “ke-deploy” padahal user masih lihat versi lama.