Check if my app has a new version on AppStore
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Introduction
If you want an iOS app to know whether a newer App Store version exists, the usual approach is to query Apple’s lookup endpoint, read the latest version string for your bundle identifier, and compare it with the version bundled in the app. The implementation is straightforward, but the comparison logic and user experience deserve more care than the network request itself.
Query the App Store Lookup Endpoint
Apple’s lookup API can return metadata for an app by bundle identifier. A typical request looks like this:
You can call that from Swift and decode the result:
That gives you the store version and the App Store URL you can send the user to if an update is available.
Compare Versions Carefully
Do not compare version strings lexicographically. For example, "1.10" is newer than "1.9", but plain string comparison can get that wrong.
This helper compares dotted numeric versions:
And here is how you tie it together:
Decide How Aggressive the Prompt Should Be
Technically, checking the version is easy. Product behavior is the harder decision.
A reasonable strategy is:
- check occasionally, not on every foreground event
- prompt softly for optional updates
- reserve blocking prompts for critical compatibility or security updates
You should also expect App Store data to lag briefly after a release. If a fresh version just went live, the lookup response may not reflect it immediately in every region.
Regional and Packaging Details
If your app is not available in every storefront, the result can depend on the country context. Apple’s lookup API supports a country parameter when you need to be explicit.
Also decide which bundle value you compare:
- '
CFBundleShortVersionStringfor marketing version' - '
CFBundleVersionfor build number'
Most user-facing update checks compare the marketing version, because that is what appears in the App Store listing.
Common Pitfalls
The biggest mistake is comparing versions as plain strings. Numeric version components should be compared piece by piece.
Another issue is assuming the network result is always present. The app may be offline, the lookup may fail, or the bundle identifier may not return a result in the expected storefront.
Developers also sometimes prompt too often. Even a correct update checker becomes annoying if it interrupts users repeatedly for minor releases.
Finally, do not use the update checker as a security boundary. It is a user-experience feature, not a reliable enforcement mechanism.
Summary
- Query Apple’s lookup endpoint by bundle identifier to get the latest App Store version.
- Compare version numbers numerically, not as raw strings.
- Use
CFBundleShortVersionStringfor typical user-facing checks. - Prompt users thoughtfully instead of showing an alert on every launch.
- Expect occasional API lag and network failure cases.

