Updeto is a Swift library for checking if your app is up-to-date on the App Store. It uses a provider-based architecture, supporting Combine, async/await, and completion handler APIs.
- Check for updates using the App Store (iTunes Lookup API)
- Pluggable provider system (use your own server or logic)
- Supports Combine, async/await, and completion handlers
- Returns rich result types (
AppStoreLookupResult)
Add Updeto to your project using Swift Package Manager:
.package(url: "https://github.com/yourusername/Updeto.git", from: "1.0.0")import Updeto
let updeto = Updeto()
// Combine (iOS 15+, macOS 12+)
if #available(iOS 15.0, macOS 12.0, *) {
let cancellable = updeto.isAppUpdated()
.sink { result in
print(result) // .updated, .outdated, .developmentOrBeta, .noResults
}
}
// Completion Handler
updeto.isAppUpdated { result in
print(result)
}
// Async/Await (iOS 15+, macOS 12+)
if #available(iOS 15.0, macOS 12.0, *) {
Task {
let result = await updeto.isAppUpdated()
print(result)
}
}You can provide your own update logic by conforming to UpdateProvider or AsyncUpdateProvider:
class MyCustomProvider: UpdateProvider {
// ...implement required properties and methods...
}
let updeto = Updeto(provider: MyCustomProvider())AppStoreLookupResult can be:
.updated– The app is up to date.outdated– An update is available.developmentOrBeta– Installed version is newer (e.g., beta).noResults– No app found for the bundle ID
Updeto: Main entry point, facade for update checkingAppStoreProvider: Default provider using the App StoreUpdateProvider: Protocol for custom providersAsyncUpdateProvider: Protocol for async/await support
let updeto = Updeto()
updeto.isAppUpdated { result in
switch result {
case .updated:
print("App is up to date!")
case .outdated:
print("Update available!")
case .developmentOrBeta:
print("Running a development or beta version.")
case .noResults:
print("App not found on the App Store.")
}
}MIT © 2025 Manuel Sánchez