Relay Modern
Relay adalah GraphQL client untuk aplikasi React, berasal dari Facebook. Fragment mendeklarasikan kebutuhan data komponen, lalu compiler dan runtime mengatur pengambilan serta pembaruannya. Lihat Relay.
Catatan ini membahas arsitektur Relay pada dokumentasi aktif, bukan tutorial API Relay Classic. GraphQL menyediakan schema dan operasi; Relay mengatur penggunaannya di sisi client.
Fragment dan compiler
Komponen membaca data lewat useFragment. Fragment tidak mengambil data sendiri: fragment harus masuk ke query induk, sehingga kebutuhan komponen dapat digabungkan. Lihat fragment.
loadQuery dapat memulai pengambilan saat navigasi; usePreloadedQuery membaca hasilnya. Pola ini memisahkan waktu memulai request dari pembacaan data saat rendering. Lihat query.
Compiler menghasilkan artifact runtime serta tipe TypeScript atau Flow dari operasi dan fragment. Konfigurasi menentukan lokasi source dan schema. Lihat compiler.
Biaya adopsinya mencakup integrasi compiler dan transformasi build. relay-compiler --validate memeriksa artifact yang kedaluwarsa tanpa menulis berkas. Lihat validasi.
Cache dan pembaruan
Runtime memakai cache ternormalisasi di memori. Environment menggabungkan Store dan Network; hasil operasi menjadi record beridentitas. Lihat arsitektur.
Mutation response dengan ID yang cocok memperbarui field record yang ada. Perubahan relasi atau daftar dapat membutuhkan directive atau updater. Lihat mutation.
store-or-network memakai cache, lalu mengambil query jika data hilang atau stale. store-and-network selalu meminta jaringan sambil memakai cache. Lihat policy.
network-only selalu meminta jaringan; store-only tidak melakukannya. Cache bukan jaminan bahwa client mengetahui setiap perubahan server. Lihat kebijakan.
Optimistic UI dan realtime
optimisticResponse atau optimisticUpdater menampilkan hasil perkiraan. Relay melakukan rollback saat gagal dan memakai hasil server saat sukses. Lihat optimisme.
Prediksi bertumpuk berbasis nilai store bisa keliru setelah rollback. Perubahan fragment bisa membuat payload optimistis tidak lengkap. Lihat batas mutation.
useSubscription dan requestSubscription menerima event server. Network layer perlu konfigurasi subscriptions, umumnya memakai WebSocket. Lihat subscriptions.
Realtime bukan sinkronisasi otomatis. Config useSubscription perlu dimemoisasi agar render tidak membuat ulang subscription. Lihat panduan.
Kapan dipilih
Relay layak dievaluasi ketika banyak komponen berbagi entitas dan perubahan kebutuhan data sulit dikoordinasikan. Fragment dan compiler menukar pekerjaan manual dengan disiplin schema serta build. Lihat adopsi.
Dukungan pagination berbasis connections bergantung pada schema server. Identitas objek stabil membantu cache dan merge, bukan persyaratan bahwa setiap schema wajib mengikuti seluruh pola Relay. Lihat Relay.
Klaim performa di sini menjelaskan mekanisme, bukan hasil benchmark. Sumber seluruhnya dokumentasi proyek; tidak ada pengujian aplikasi atau pembandingan terukur dengan Apollo.