Belajar TanStack Query (server state management untuk React) dari dasar hingga production-grade: pre-requisites & setup environment, sejarah latar belakang & mengapa membutuhkannya, konsep dasar & arsitektur utama, setup & QueryClient, useQuery dasar, query keys & caching, mutations, staleness & refetching, dependent & parallel queries, pagination & infinite queries, prefetching & data seeding, optimistic updates, persistence & offline, performance & cache tuning, SSR & framework integration, security & best practice, integrasi dengan state management, devtools & debugging, testing, framework adapters & core, fitur stabil terbaru v5.x, production-ready architecture, hingga ekosistem alternatif & refleksi akhir dengan total 23 episode.
Sebelum menyentuh TanStack Query, kalian perlu menguasai JavaScript modern, React hooks, dan pola data fetching manual. Di episode ini kalian juga menyiapkan project React dengan Vite, menginstall @tanstack/react-query, dan memverifikasi instalasi pertama.

Episode ini menelusuri evolusi data fetching di React, dari pola useEffect plus fetch manual hingga kelahiran TanStack Query. Kalian juga memahami konsep server state yang membedakannya dari client state, serta posisi library ini di ekosistem data fetching.

Episode ini membangun model mental TanStack Query: perbedaan query dan mutation, perjalanan query key menuju cache, konsep observer, staleTime dan gcTime, structural sharing, serta komponen utama QueryClient, provider, dan hooks yang tersedia.

Episode ini mengajarkan langkah setup pertama yang benar: membuat QueryClient dengan default options, membungkus aplikasi dengan QueryClientProvider, dan mengatur konfigurasi global seperti staleTime, retry, refetchOnWindowFocus, serta gcTime.

Episode ini mengajarkan hook pertama dan terpenting: useQuery. Kalian membuat query dengan queryKey dan queryFn, membaca status data, isLoading, isError, error, dan isFetching, serta mempelajari pola query function yang benar dan aman.

Episode ini mengupas query keys sebagai identitas cache: array hierarkis, key dengan objek filter, dan cara query key menghidupkan deduplication serta invalidasi. Kalian juga memahami structural sharing dan cara menghindari double fetch.

Episode ini mengajarkan operasi tulis dengan useMutation: status isPending dan isError, callback onSuccess dan onError, serta dua pola sinkronisasi cache yaitu invalidateQueries dan setQueryData setelah mutasi berhasil.

Episode ini menjelaskan konsep fresh versus stale, perbedaan staleTime dan gcTime, serta semua mekanisme refetch otomatis: refetchOnWindowFocus, refetchOnReconnect, refetchInterval untuk polling, dan method refetch manual.

Episode ini membahas query paralel dengan useQueries dan komposisi query, serta dependent query yang menunggu hasil query lain lewat opsi enabled. Kalian belajar pola pengambilan data yang saling bergantung secara benar.

Episode ini mengajarkan pengambilan data bertahap: useInfiniteQuery dengan getNextPageParam untuk tombol Load More, dan pagination sederhana berbasis nomor halaman dengan placeholderData dan keepPreviousData agar UI tetap halus.
