A value-type Swift library for detecting iOS, tvOS, and watchOS device models and capabilities.
DeviceKit is a Swift library that replaces Apple's UIDevice class with a value-type API for detecting iOS, tvOS, and watchOS device models, capabilities, and states. It solves the problem of UIDevice's limited and sometimes cumbersome API by providing a more comprehensive, type-safe, and Swifty way to access device information like model identification, battery status, screen metrics, and feature availability.
iOS, tvOS, and watchOS developers who need to tailor app behavior, UI, or features based on the specific device, its capabilities, or current state (e.g., battery level, Low Power Mode).
Developers choose DeviceKit over UIDevice because it offers a more modern, Swifty API with value semantics, comprehensive device detection (including simulators), and extended features like battery monitoring, sensor detection, and disk space checks—all in a single, well-maintained package.
DeviceKit is a value-type replacement of UIDevice.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Replaces UIDevice with a value-type design and equatable enums, making device checks intuitive and less error-prone, as emphasized in the library's philosophy.
Identifies specific models (e.g., iPhone 15 Pro), families, and simulators with data sourced from theiphonewiki.com and Xcode, covering a wide range of Apple devices.
Provides battery state, sensor availability (Touch ID/Face ID), disk space, and more—features not fully available or cumbersome in UIDevice, as listed in the README.
Regular updates, high code coverage badges, and support for multiple Swift versions and package managers, indicating a well-supported project.
Device identifiers rely on theiphonewiki.com, which may not be instantly updated for new Apple devices, risking accuracy until the library is patched.
Using DeviceKit in Playground requires manually building the framework for a simulator first, adding an extra step compared to direct API usage, as noted in the README.
Only supports iOS, tvOS, and watchOS, making it unsuitable for projects targeting macOS, Linux, or other non-Apple ecosystems.