Testing iOS Apps on IPv6 Networks

Have you ever gotten this message from App Review?

Performance – 2.1
We were unable to review your app as it crashed on launch. We have attached detailed crash logs to help troubleshoot this issue.

Next Steps
Please revise your app and test it on a device while connected to an IPv6 network (all apps must support IPv6) to ensure it will launch without crashing.

The App Review Team regularly rejects apps that fail on IPv6 networks. Some of the time this feedback is a false positive. The app may have crashed for reasons unrelated to networking, but because it happened to crash while connected to an IPv6 network this is the feedback you receive. It is up to you to diagnose the source of the crash.

Some of the third party libraries you are using may not be compatible with IPv6 networks. For example, some analytics companies have provided SDKs in the past which crash randomly on IPv6 networks.

Another common culprit is any of the “reachability” libraries out there. The problem is not always the library itself but how it is used – your app should not try to check for network availability before a network request, and it should not use IP addresses.

So how do you test on an IPv6 network?

The Simplest Way To Test iOS Apps on an IPv6 network

The simplest way to test iOS apps on IPv6 networks is to use connection sharing from a Mac.

Things you will need

Depending on the ports your Mac has you may need an Ethernet adapter. Most desktop Macs have Ethernet ports, but MacBooks have not had them for several years.

If your Mac has Thunderbolt 3 / USB-C ports:
Belkin USB-C to Gigabit Ethernet Adapter

If it only has older USB ports:
Apple USB Ethernet Adapter

Setting Up the Network and Testing

Plug the ethernet port on the Mac into a port on your router using an ethernet cable. Try to browse the internet on the Mac with WiFi turned off. If the ethernet connection is working it will provide access to the internet. The Mac is going to share that connection with your iOS test device.

On the Mac open System Preferences. Hold down the Option key and click “Sharing”. When the sharing control panel opens you can release the Option key.

MacOS Sharing Control Panel for IPv6 connection sharing

Select the ethernet connection as the option for “Share your connection from:”, then find the checkbox for your Wi-Fi connection under “To computers using:”. You can set a WiFi password by clicking “Wi-Fi Options…”. Click the checkbox for “Create NAT64 Network”. If you don't see that option back out of the control panel and try opening it again (again, holding down the Option key).
Once those things are set turn on Internet Sharing by clicking the checkbox at the left.

Now on your iOS device connect to the WiFi provided by your computer and start testing your app. The network you just created does not fully replicate the network that App Review uses, but it is close enough to catch most issues.

When you are done testing don't forget to turn Internet Sharing off on the Mac.

If you are not able to use ethernet with your router it is possible to share a WiFi connection. The catch there is that you will need either a USB WiFi device or an ethernet adapter for the iOS device. The FindUWill Lightning to Ethernet adapter works well for this purpose. You would connect that to the iOS device and use an ethernet cable to connect to the ethernet adapter on your Mac.

Other Options

In the US the T-Mobile carrier network is all IPv6. Using T-Mobile data accounts for some of your test devices can work very well for testing on an IPv6 network. If your test devices are unlocked you can move a T-Mobile SIM card between devices easily for testing.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.