Yesterday Apple declared that as of June 1 all iOS apps submitted to the AppStore MUST support IPv6-only networking. Back at their June 2015 WWDC event, Apple announced that all iOS 9 applications must support IPv6 — the news this week is reinforcing that requirement. From Apple's blog post:

At WWDC 2015 we announced the transition to IPv6-only network services in iOS 9. Starting June 1, 2016 all apps submitted to the App Store must support IPv6-only networking. Most apps will not require any changes because IPv6 is already supported by NSURLSession and CFNetwork APIs. If your app uses IPv4-specific APIs or hard-coded IP addresses, you will need to make some changes.

As Apple continues to point out, the vast majority of application developers will not need to do anything to support IPv6. If developers use the standard networking APIs provided by Apple, they should not experience any problems in an IPv6-only network. It should "just work". It's only when developers use IPv4-specific APIs or addresses that there is a problem.

Why This Matters

This is an extremely important step. As I wrote last year after WWDC 2015, this requirement means that iOS apps will work in the IPv6-only networks that are starting to appear.

More than that, this requirement will drive millions of developers to test their apps in an IPv6-only network. This kind of testing will increase basic knowledge developers have of IPv6 — and will lead to better networking knowledge all around.

Additionally, if the app connects back to a web site or service, this requirement may encourage developers to understand what they need to do to make that site / service reachable via IPv6. It seems that Apple may be testing for an "IPv6-only" network that also has IPv4-translation at the edge. From Apple's developer documentation:

"A DNS64/NAT64 network is an IPv6-only network that continues to provide access to IPv4 content through translation."

So to meet the June 1 requirement, apps may only need to:

work over IPv6 network connections; and use DNS over IPv6.

At the current time it appears from what I can read that the site / service to which an application connects will NOT need to be reachable over IPv6 because of the ability to use IPv4 translation. However, developers may want to explore what they need to do to be reachable over IPv6 as that may be simpler and faster than dealing with IPv4 translation.

Eventually the sites and services will need to be reachable over IPv6 — and so this requirement may drive more requests for IPv6 connectivity to ISPs and other hosting providers.

All in all it is a great move to help drive IPv6 usage!

Getting Help

Apple suggests that people read their developer documentation "Supporting IPv6 DNS64/NAT64 Networks” and watch the WWDC 2015 video "Your App and Next Generation Networks”. I previously provided a summary of this video along with screenshots of the major points.

I would also suggest developers visit the Deploy360 Start Here page to find IPv6 resources for different types of organization. Specifically for app developers I suggest:

Developer Resources for IPv6

Making Content Available Over IPv6 - if your app needs to connect back from an IPv6-only network to your site/services, this explains options for making your web content available over IPv6.

The key point is to start NOW, if you haven't already, as any AppStore submissions after June 1 will require IPv6-only testing.

Thank you, Apple, for making this hard requirement! It will only help as we continue to work to transition the Internet from the "beta" of IPv4 to the "production" IPv6 network!

* * *

More discussion of this topic: