A powerful data fetching and caching library for Kotlin Multiplatform, built for speed, simplicity, and reliability.
- Declarative query definition & execution
- Automatic background refetching
- Multiplatform caching layer
- Observables for UI integration
- Customizable retry policies
- Automatic garbage collection
- Type-safe API surface
Add the dependency to your common source set:
commonMain.dependencies {
implementation("io.github.abappi19:kmp-query:1.0.0")
}val queryClient = QueryClient(config = QueryConfig(
cacheTime = Duration.minutes(5),
staleTime = Duration.seconds(30)
))
// Create query
val userQuery = queryClient.createQuery(
queryKey = listOf("user", userId),
queryFn = { fetchUser(userId) }
)
// React to state changes
userQuery.observe { state ->
when {
state.isLoading -> showLoading()
state.isError -> showError(state.error)
else -> displayUser(state.data)
}
}
// Manual invalidation
fun updateProfile() {
queryClient.invalidateQueries(listOf("user", userId))
}val postsQuery = queryClient.createQuery(listOf("posts"), fetchPosts)
val commentsQuery = queryClient.createQuery(listOf("comments"), fetchComments)
// Combine using coroutines
val combinedData = suspend {
awaitAll(postsQuery.await(), commentsQuery.await())
}val updateUser = queryClient.createMutation(
mutationFn = { user -> api.updateUser(user) },
onSuccess = { invalidateUserQueries(it.id) }
)See for guidelines.
Distributed under Apache 2.0 License