Thingy alternatives and similar libraries
Based on the "Device" category.
Alternatively, view Thingy alternatives based on common mentions on social networks and blogs.
-
Luminous
Luminous provides you a lot of information about the system and a lot of handy methods to quickly get useful data on the iOS platform.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Thingy or a related project?
README
Thingy
A modern device detection and querying library.
Features
- [x] Swift 5 support
- [x] Modern syntax
- [x] Documentation
- [x] Device detection
- [x] Device family detection
- [x] Device screens
- [x] Simulator detection
- [x] Simple querying
Requirements
Installation
Swift Packager Manager (SPM)
Use Xcode 11 to add Thingy as a package or update your Package.swift
for manual setups:
import PackageDescription
let package = Package(
name: "HelloWorld",
dependencies: [
.Package(url: "https://github.com/bojan/Thingy.git", "3.0.0")
]
)
Carthage
Add this to your Cartfile
:
github "bojan/Thingy"
Manually
Add the repository as a submodule to your project.
git submodule add https://github.com/bojan/Thingy.git Vendor/Thingy
Open the newly created folder in Finder and drag Thingy.xcodeproj
to your project.
In your project's settings, select your target and under General > Embedded Binaries, add the framework depending on the target OS (iOS, watchOS or tvOS).
Usage
Import the module where needed:
import Thingy
Device properties
Inspect the current device:
let myDevice = Device()
// Compare models or product families
if myDevice.family == .tv {
print("This is an Apple TV device.")
}
if myDevice.model != .iPhoneXSMax {
print("This is NOT an iPhone XS Max.")
}
// Pretty printed device properties
print(myDevice.family.marketingName) // e.g. iPad
print(myDevice.model.marketingName) // e.g. iPhone 7 Plus
print(myDevice.productLine.marketingName) // e.g. Air
Model comparison
let myDevice = Device()
do {
let result = try myDevice.isEqual(to: Thingy.iPadPro12Inch)
}
catch {
print("The devices are incompatible.")
}
do {
let result = try myDevice.isOlder(than: Thingy.iPadPro10Inch)
}
catch {
print("The devices are incompatible.")
}
Device size
let myDevice = Device()
if myDevice.display == .screen10_5Inch {
print("This is the 10.5in iPad Pro.")
}
Contributions
All contributions and suggestions are welcome and very much appreciated.
Should you have a feature request or a problem that you may experience, feel free to open an issue.
If you are willing to contribute by adding a feature or squashing a bug or two, please submit a pull request.
Author
Bojan Dimovski
License
Thingy is available under the WTFPL license. Check the LICENSE file for more info.
*Note that all licence references and agreements mentioned in the Thingy README section above
are relevant to that project's source code only.