RTK Query là tầng data fetching và caching có sẵn trong Redux Toolkit, cạnh tranh trực tiếp với React Query/SWR.
Hơn fetch thủ công ở đâu:
- Tự quản lý loading/error/success — không phải viết ba case trong reducer nữa.
- Cache theo endpoint kèm params, và tự refetch khi args đổi.
- Deduplication: 10 component cùng gọi useGetUserQuery(1) chỉ tạo đúng một request.
Cache invalidation bằng tag: query khai providesTags: ['Post'], mutation khai invalidatesTags: ['Post'] — mutation xong là mọi query mang tag 'Post' tự refetch.
So với React Query: RTK Query nằm sẵn trong Redux store nên không phải thêm thư viện, còn React Query có API linh hoạt hơn và không bắt buộc dùng Redux.
Lưu ý: project đã dùng React Query mà thêm RTK Query là có hai lớp cache chồng nhau — chọn một thôi. Và nhớ ranh giới: server state thuộc về React Query/RTK Query, còn client UI state thuộc về Zustand/Redux; trộn hai thứ là sinh trùng lặp.