Gravity
SwiftUI library for data fetching
Lightweight
Any Backend
Realtime
Designed for SwiftUI
SwiftPM Ready
WebSocket support
Gravity is a SwiftUI library for remote data fetching. It uses stale-while-revalidate technonology to fetch data from the server, a cache invalidation strategy popularized by HTTP RFC 5861.
Gravity first returns the data from cache (stale), then sends the fetch request (revalidate), and finally comes with the up-to-date data again.
With Gravity, components will get a stream of data updates constantly and automatically. And the UI will be always fast and reactive.
Overview
import SwiftUIimport Gravity
struct LandmarkList: View { @SWR<URL, Landmark>(url: "https://example.org/api/endpoint", model: Landmark) var api var body: some View { if let landmarks = api.data { List(landmarks, id: \.id) { landmark in LandmarkRow(landmark: landmark) } } }}In this example, the property wrapper @SWR accepts a url and a model.
The url is the URL of the API. And the model is a Codable object.
api will be a StateResponse object that has three children: data that will contain the decoded data, error in case there is an error and awaiting when the app is loading.