Kwery — это библиотека для управления серверным состоянием в Android-приложении. По смыслу она очень похожа на TanStack Query/React Query, только для Kotlin/Android. Она не заменяет Retrofit, Ktor или OkHttp, а работает поверх них. Автор формулирует идею так: «Room хранит данные, которыми владеет приложение. Kwery управляет данными, которыми владеет сервер».
Kwery предлагает взять на себя значительную часть типовой логики между UI и сетевым клиентом. При этом сам HTTP-запрос всё равно делает Retrofit/Ktor/OkHttp. Kwery однако решает, когда его вызывать, нужно ли вообще вызывать, можно ли отдать уже имеющиеся данные и как показывать состояние запроса.
Основные вещи, которые она делает:
- Кэширует ответы сервера. Если экран повторно запрашивает те же данные, Kwery может вернуть существующий результат вместо нового HTTP-запроса.
- Дедупликация запросов. Если несколько экранов/компонентов одновременно запросили один ресурс, не обязательно делать несколько одинаковых запросов.
- Управляет состояниями loading/success/error.
- Делает retry при ошибках.
- Может обновлять данные в фоне.
- Управляет устареванием кэша.
- Поддерживает offline-сценарии.
- Может переиспользовать один результат между несколькими подписчиками.
- Использует корутины Kotlin + Flow.
- Есть интеграция с Compose.

