What a query library does
A data fetching library such as a query client turns asynchronous server data into a simple declarative hook. You give it a key and a function that fetches, and it returns the data, a loading flag, and an error. It manages the hard parts behind the scenes.
- It deduplicates requests so two components asking for the same key fetch once.
- It caches results by key so revisiting a screen is instant.
- It tracks status so you read loading and error instead of writing them.
Why declare instead of imperatively fetch
Hand written fetching scatters effects, flags, and cleanup across components. A query library centralizes that lifecycle so each component only says what it wants.
- Components become thin because the library owns retries and timing.
- A shared cache means many components reuse one network result.
- Background refetching keeps data fresh without manual triggers.
You move from telling the app exactly when to fetch toward declaring the data a screen depends on and letting the library decide the rest.
Key idea
A query library lets components declare data by key while the library owns deduplication, caching, and loading and error status for you.