Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> the updated tools tend to drop support for older SDKs and devices. You have to kind of go out of your way to keep your app targeting them. You can see how this plays out by getting a second hand iPhone 7 today and go to the AppStore looking for apps. It will be very difficult to find an app that will run on it. This phone is not that old, but the ecosystem abandons you pretty quickly.

Well, you're mixing 2 things here: Apple's tooling support for older versions of iOS, and what developers choose to do.

Today, you can create a new app in Xcode, choose "iOS 15" as the minimum deployment version for your project, and you'll have an app that runs on devices going back to the iPhone 6S/first generation iPhone SE.

Even supporting back to iOS versions prior to that is fairly straightforward (you'll just have to edit a plist by hand rather than use the UI picker if creating a new project) - I have some older iOS 9 projects that still compile without any issues (just tested for the sake of this comment).

But to your issue of most apps not working on an iPhone 7 - that's because many developers will choose to only support iOS 16/17 or later (and the iPhone 7, a 9 year old device, stops at iOS 15). That's their choice though, not a failing of Apple's tooling.



Apple requires developers to build the apps with at least Xcode 16 targeting the SDK of least iOS 18 to submit new apps / updates to the App Store [1]. This limits how far back you can go with the iOS version, thus dropping older phones.

Yes, you can definitely download older SDKs and target older iOS versions, but you cannot publish those apps on the App Store anymore.

[1] https://developer.apple.com/news/upcoming-requirements/


That phrasing is misleading.

You can absolutely publish apps that target versions of iOS prior to iOS 18; eg all my apps are iOS 15+, I published one as recently as last week.

You can build an app with the iOS 18 SDK that target previous versions just fine (as long as your calls to APIs posterior to the version you’re targeting, if any, are wrapped in the proper macros) and submit them to the App Store.

So yes, you have to build your apps with the latest SDK to publish them - but that doesn’t restrict the target OS version in any way (ie I can build apps that target iOS 9 with the iOS 18 SDK).

Where it starts to be a pain for new apps built in 2025 is if you want to target pre iOS 13, as you’ll have to use the older AppDelegate mechanism, but still totally doable. (That’s getting deprecated with the next release, but deprecated APIs still build just fine).


The "target SDK" and "minimum SDK" versions can be set separately. It's mostly just a cultural norm in the Apple ecosystem not to support older versions.

This is supported by 1. Apple being relatively good at releasing new versions iOS for older hardware. 2. Users (at least historically) typically being on a ~2 year upgrade cycle. But it's also just the case that the Apple ecosystem (including on macOS) tends not to value backwards compatibility as much as other ecosystems.


This is different from the Minimum Deployment, which I current have set to iOS 12.0 in Xcode 16.2.


I just submitted a bug to Apple because of an api that crashes the simulator unless you target the latest version of iOS. On device you can target any previous version of iOS easily.

This is just one annoyance of many I encounter on regular basis.

They do go to great extend to allow you to support older versions, but they don’t make it always easy.

Last versions of iOS have been specially rough because SwiftUI has been constantly evolving, and keeping backward support is just a nightmare.


>and what developers choose to do.

I disagree. Developers are VERY strongly encouraged by Apple to move their minimum deployment versions up.

New APIs and frameworks are never backported (Swift Concurrency and the COVID tracking API were notable exceptions), and additionally if you dipped your feet into SwiftUI, you've essentially jumped into river rapids. Despite its age at this point, SwiftUI is still very immature, and all the new stuff to fix its holes requires you to jump up versions or fall back to UIKit.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: