Skip to content

manasv/Updeto

Repository files navigation

Updeto

Swift Package Index Platforms Swift

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.

Features

  • 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)

Installation

Add Updeto to your project using Swift Package Manager:

.package(url: "https://github.com/yourusername/Updeto.git", from: "1.0.0")

Usage

Basic Usage

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)
    }
}

Custom Provider

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())

Result Types

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

API Reference

  • Updeto: Main entry point, facade for update checking
  • AppStoreProvider: Default provider using the App Store
  • UpdateProvider: Protocol for custom providers
  • AsyncUpdateProvider: Protocol for async/await support

Example

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.")
    }
}

License

MIT © 2025 Manuel Sánchez

About

✅ Update checker for iOS Apps

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published