Belajar GraphQL - Latest Specification & Future Developments
Episode 40 of 51

Belajar GraphQL - Latest Specification & Future Developments

Episode 40 membahas perkembangan spesifikasi GraphQL dan masa depannya: evolusi spesifikasi, direktif @defer dan @stream untuk incremental delivery, fitur mendatang seperti Client Controlled Nullability dan Fragment Arguments, hingga peran GraphQL Foundation dan komunitas.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

GraphQL bukan teknologi statis. Spesifikasinya terus berkembang lewat proposal dan RFC yang dibahas komunitas. Episode 40 memetakan perkembangan spesifikasi GraphQL dan arah masa depannya.

Kita akan menelusuri evolusi spesifikasi, membahas direktif @defer dan @stream untuk incremental delivery, fitur-fitur yang sedang dalam perjalanan, dan peran komunitas serta GraphQL Foundation.

GraphQL Specification Evolution

Perkembangan Spesifikasi

Spesifikasi GraphQL dikelola oleh GraphQL Foundation dengan proses RFC yang terbuka. Perkembangan utamanya:

  • 2015: spesifikasi awal dirilis bersama open-source.
  • 2016-2018: formalisasi, masuk Linux Foundation, dan ekosistem matang.
  • 2021: GraphQL over HTTP dan fragment arguments.
  • Terkini: incremental delivery (@defer dan @stream), schema coordinates, dan input unions sebagai proposal.

Penambahan fitur tidak pernah sembarangan — setiap proposal melewati diskusi panjang dan implementasi di beberapa bahasa sebelum masuk spesifikasi.

@defer dan @stream

Incremental Delivery dengan @defer

@defer memungkinkan response dikirim bertahap: field yang lambat ditandai @defer dikirim belakangan, sementara field yang cepat segera tampil:

Query dengan @defer
query PostPage($id: ID!) {
  post(id: $id) {
    id
    title
    body
    comments @defer {
      items { id body }
    }
  }
}

Use case: halaman detail yang menampilkan konten utama dulu, lalu komentar menyusul. Manfaat performanya nyata untuk field yang butuh waktu lama (analisis, panggilan eksternal) — user tidak menunggu seluruh response.

@stream untuk List Fields

@stream melakukan hal serupa untuk elemen list: setiap item (atau potongan item) dikirim begitu tersedia, bukan menunggu seluruh list selesai:

Query dengan @stream
query Feed {
  feed @stream(initialCount: 5) {
    id
    title
  }
}

Implementasi @stream membutuhkan dukungan transport yang bisa mengirim response bertahap — biasanya lewat multipart HTTP atau WebSocket. Dukungan ini masih berkembang di berbagai server dan client; pastikan versi library kalian mendukungnya.

Upcoming Features

Fitur yang Sedang Dikembangkan

Beberapa proposal yang menarik untuk diikuti:

  • Client Controlled Nullability: client bisa menandai field sebagai non-null (title!) pada response mereka — menggeser keputusan nullability sebagian ke client.
  • Fragment Arguments: fragment bisa menerima argumen, membuat fragment jauh lebih fleksibel.
  • Input Unions: union untuk input types — menyederhanakan input yang polymorphic.
  • Schema coordinates: format standar untuk menunjuk lokasi di schema (misalnya User.name), dipakai tools dan spesifikasi error.
  • Full-text search directive: proposal direktif untuk pencarian teks penuh di query.
  • Subscriptions improvements: penyempurnaan spesifikasi subscriptions untuk transport dan recovery yang lebih baik.
Client Controlled Nullability (contoh)
query UserPage($id: ID!) {
  user(id: $id) {
    username!
    email
  }
}

Perhatikan: fitur di atas berstatus proposal atau draft. Aturan praktis di production — gunakan hanya fitur yang sudah masuk spesifikasi stabil dan didukung library yang kalian pakai.

Community Initiatives

GraphQL Foundation dan Proses RFC

GraphQL Foundation di bawah Linux Foundation mengelola spesifikasi, trademark, dan program komunitas. Cara berkontribusi:

  • Ikuti working groups (graphql-spec) yang membahas proposal secara berkala.
  • Baca dan komentari RFC sebelum fitur ditetapkan.
  • Implementasikan proposal di library favorit kalian.
  • Hadiri GraphQL Conf dan meetup komunitas.

Lihat proposal aktif dengan meng-clone repo spesifikasi: git clone https://github.com/graphql/graphql-spec.git.

Berkontribusi ke spesifikasi bukan hanya untuk veteran — pertanyaan dan contoh kasus penggunaan dari developer sehari-hari sering menjadi bahan berharga bagi working group.

Penutup

Inti yang harus dibawa pulang:

  • Spesifikasi GraphQL berevolusi lewat proses RFC yang terbuka.
  • @defer mengirim field lambat belakangan; @stream mengirim item list bertahap.
  • Incremental delivery butuh dukungan transport multipart atau WebSocket.
  • Fitur mendatang: Client Controlled Nullability, Fragment Arguments, dan Input Unions.
  • Schema coordinates menstandardisasi penunjukan lokasi di schema.
  • GraphQL Foundation dan working groups terbuka untuk kontribusi siapa pun.

Di episode 41 selanjutnya kalian akan mempelajari proyek full-stack e-commerce — monorepo dengan Turborepo, arsitektur frontend Next.js dan backend Apollo Server, product catalog dengan search, shopping cart dengan mutations, integrasi Stripe, hingga produksi deployment dan monitoring. Semua yang kalian pelajari akan menyatu dalam satu proyek nyata!

Belajar GraphQL - Latest Specification & Future Developments | Belajar GraphQL