Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,35 @@
# Changelog

## Version 5.7.0

Releasedate: 2025-09-12

```ruby
pod 'DeviceKit', '~> 5.7'
```

### New September 2025 devices

This version adds support for the iPhone 17 series, Apple Watch Ultra 3 and Apple Watch Series 11:

| Device | Case value |
| --- | --- |
| iPhone 17 | `Device.iPhone17` |
| iPhone 17 Pro | `Device.iPhone17Pro` |
| iPhone 17 Pro Max | `Device.iPhone17ProMax` |
| iPhone Air | `Device.iPhoneAir` |
| Apple Watch Ultra 3 | `Device.appleWatchUltra3` |
| Apple Watch Series 11 42mm | `Device.appleWatchSeries11_42mm` |
| Apple Watch Series 11 46mm | `Device.appleWatchSeries11_46mm` |

### Bug fixes

- Missing device identifiers for Apple Watch Series 9 were added.
- Docs for Apple Watch Series 9 was updated to include specs links

Thanks to all the contributers of this release!
- [Jager-yoo](https://github.com/Jager-yoo)

## Version 5.6.0

Releasedate: 2025-03-27
Expand Down
2 changes: 1 addition & 1 deletion DeviceKit.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'DeviceKit'
s.version = '5.6.0'
s.version = '5.7.0'
s.summary = 'DeviceKit is a µ-framework that provides a value-type replacement of UIDevice.'

s.description = <<-DESC
Expand Down
4 changes: 2 additions & 2 deletions DeviceKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.6.0;
MARKETING_VERSION = 5.7.0;
MERGEABLE_LIBRARY = YES;
MTL_ENABLE_DEBUG_INFO = YES;
PRODUCT_BUNDLE_IDENTIFIER = me.dennisweissmann.DeviceKit;
Expand Down Expand Up @@ -444,7 +444,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 5.6.0;
MARKETING_VERSION = 5.7.0;
MERGEABLE_LIBRARY = YES;
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = me.dennisweissmann.DeviceKit;
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

`DeviceKit` is a value-type replacement of [`UIDevice`](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/).

## Current version 5.6.0
## Current version 5.7.0
See our detailed [changelog](CHANGELOG.md) for the latest features, improvements and bug fixes.

## Features
Expand Down
121 changes: 103 additions & 18 deletions Source/Device.generated.swift

Large diffs are not rendered by default.

24 changes: 24 additions & 0 deletions Source/Device.swift.gyb
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ iPhones = [
Device("iPhone16Pro", "Device is an [iPhone 16 Pro]()", "", ["iPhone17,1"], 6.3, (9, 19.5), "iPhone 16 Pro", "iPhone 16 Pro", 460, False, False, True, True, False, True, True, True, True, True, 0, False, 123, True, "a18Pro", True, True),
Device("iPhone16ProMax", "Device is an [iPhone 16 Pro Max]()", "", ["iPhone17,2"], 6.9, (9, 19.5), "iPhone 16 Pro Max", "iPhone 16 Pro Max", 460, True, False, True, True, False, True, True, True, True, True, 0, False, 123, True, "a18Pro", True, True),
Device("iPhone16e", "Device is an [iPhone 16e](https://support.apple.com/en-us/122208)", "https://cdsassets.apple.com/live/7WUAS350/images/tech-specs/122208-iphone-16e.png", ["iPhone17,5"], 6.1, (9, 19.5), "iPhone 16e", "iPhone 16e", 460, False, False, False, True, False, True, True, True, True, False, 0, False, 1, False, "a18", True, True),
Device("iPhone17", "Device is an [iPhone 17]()", "", ["iPhone18,3"], 6.3, (9, 19.5), "iPhone 17", "iPhone 17", 460, False, False, False, True, False, True, True, True, True, True, 0, False, 13, False, "a19", True, True),
Device("iPhone17Pro", "Device is an [iPhone 17 Pro]()", "", ["iPhone18,1"], 6.3, (9, 19.5), "iPhone 17 Pro", "iPhone 17 Pro", 460, False, False, True, True, False, True, True, True, True, True, 0, False, 123, True, "a19Pro", True, True),
Device("iPhone17ProMax", "Device is an [iPhone 17 Pro Max]()", "", ["iPhone18,2"], 6.9, (9, 19.5), "iPhone 17 Pro Max", "iPhone 17 Pro Max", 460, True, False, True, True, False, True, True, True, True, True, 0, False, 123, True, "a19Pro", True, True),
Device("iPhoneAir", "Device is an [iPhone Air]()", "", ["iPhone18,4"], 6.5, (9, 19.5), "iPhone Air", "iPhone Air", 460, True, False, False, True, False, True, True, True, True, True, 0, False, 13, False, "a19Pro", True, True),
]

iPads = [
Expand Down Expand Up @@ -317,6 +321,24 @@ watches = [
"",
["Watch7,9", "Watch7,11"], 2.0, (416,496), "Apple Watch Series 10 46mm", "Apple Watch Series 10 46mm", 326, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s10", False, False),

Device(
"appleWatchUltra3",
"Device is an [Apple Watch Ultra 3]()",
"",
["Watch7,12"], 2.2, (4,5), "Apple Watch Ultra 3", "Apple Watch Ultra 3", 338, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s10", False, False),

Device(
"appleWatchSeries11_42mm",
"Device is an [Apple Watch Series 11]()",
"",
["Watch7,17", "Watch7,19"], 1.9, (374,446), "Apple Watch Series 11 42mm", "Apple Watch Series 11 42mm", 326, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s10", False, False),

Device(
"appleWatchSeries11_46mm",
"Device is an [Apple Watch Series 11]()",
"",
["Watch7,18", "Watch7,20"], 2.0, (416,496), "Apple Watch Series 11 46mm", "Apple Watch Series 11 46mm", 326, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s10", False, False),

]

iOSDevices = iPods + iPhones + iPads + homePods
Expand Down Expand Up @@ -1496,6 +1518,8 @@ iOS_cpus = [
CPU("a17Pro" , "A17 Pro"),
CPU("a18" , "A18"),
CPU("a18Pro" , "A18 Pro"),
CPU("a19" , "A19"),
CPU("a19Pro" , "A19 Pro"),
CPU("m1", "M1"),
CPU("m2", "M2"),
CPU("m3", "M3"),
Expand Down
18 changes: 18 additions & 0 deletions Tests/Tests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,8 @@ class DeviceKitTests: XCTestCase {
.iPhone15ProMax,
.iPhone16Plus,
.iPhone16ProMax,
.iPhone17ProMax,
.iPhoneAir,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Collection literals should not have trailing commas.
trailing_comma Tests.swift:463

])
}

Expand All @@ -476,6 +478,8 @@ class DeviceKitTests: XCTestCase {
.iPhone15ProMax,
.iPhone16Pro,
.iPhone16ProMax,
.iPhone17Pro,
.iPhone17ProMax,
.iPadPro9Inch,
.iPadPro12Inch,
.iPadPro12Inch2,
Expand Down Expand Up @@ -521,6 +525,10 @@ class DeviceKitTests: XCTestCase {
.iPhone16Plus,
.iPhone16Pro,
.iPhone16ProMax,
.iPhone17,
.iPhone17Pro,
.iPhone17ProMax,
.iPhoneAir,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Collection literals should not have trailing commas.
trailing_comma Tests.swift:531

]
for device in Device.allRealDevices {
XCTAssertTrue(device.hasDynamicIsland == device.isOneOf(dynamicIslandDevices), "testHasDynamicIsland failed for \(device.description)")
Expand Down Expand Up @@ -551,6 +559,10 @@ class DeviceKitTests: XCTestCase {
.iPhone16Pro,
.iPhone16ProMax,
.iPhone16e,
.iPhone17,
.iPhone17Pro,
.iPhone17ProMax,
.iPhoneAir,
.iPad10,
.iPadA16,
.iPadAir5,
Expand Down Expand Up @@ -644,6 +656,8 @@ class DeviceKitTests: XCTestCase {
.iPhone15ProMax,
.iPhone16Pro,
.iPhone16ProMax,
.iPhone17Pro,
.iPhone17ProMax,
.iPadPro11Inch2,
.iPadPro12Inch4,
.iPadPro11Inch3,
Expand All @@ -669,6 +683,10 @@ class DeviceKitTests: XCTestCase {
.iPhone16Pro,
.iPhone16ProMax,
.iPhone16e,
.iPhone17,
.iPhone17Pro,
.iPhone17ProMax,
.iPhoneAir,
.iPad10,
.iPadA16,
.iPadAir4,
Expand Down