IPv6
App Store
Rejection
Mobile Apps
Networking Issues

IPv6 App Store Rejection

System Design practice on Codemia

Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.

Practice system design

In recent years, the shift towards IPv6 has gained momentum as the limitations of IPv4, such as address exhaustion, have become more pronounced. One aspect of this transition that has garnered attention is the policy of major app stores, particularly Apple's App Store, regarding IPv6 support. Many developers find their apps rejected due to insufficient IPv6 compatibility, raising concerns and questions about the requirements and best practices for developing IPv6-compliant applications.

Understanding IPv6 and IPv4

IPv4: Internet Protocol version 4 is the fourth version of the Internet Protocol (IP) and it uses a 32-bit address space, allowing for approximately 4.3 billion unique addresses. With the exponential growth of connected devices, IPv4 addresses are nearly exhausted.

IPv6: Developed to address the limitations of IPv4, Internet Protocol version 6 uses a 128-bit address space, providing an almost unlimited number of addresses, approximately 3.4×10383.4 \times 10^{38} unique ones. IPv6 also includes improvements in areas such as routing, security, and auto-configuration.

App Store Guidelines on IPv6

Why the Requirement?

Apple's App Store guidelines emphasize support for IPv6, driven by the need to future-proof applications and ensure compatibility with the latest internet standards. As many networks transition to IPv6, it's crucial for applications to function seamlessly in these environments.

Rejection Reasons:

Apps may face rejection for several IPv6-related reasons, including: • Hard-coded IPv4 Addresses: Applications that directly use IPv4 addresses without fallback mechanisms to handle IPv6. • Network Stack Misconfigurations: Improperly configured network protocols that do not support IPv6 environments. • Reliance on Deprecated APIs: Use of legacy APIs that are incompatible with IPv6 traffic.

Ensuring IPv6 Compatibility

To avoid rejection and facilitate a smooth approval process, developers need to implement the following best practices:

1. Use Hostnames Instead of IP Addresses

Applications should use domain names rather than hard-coded IP addresses. For example, resolving a hostname through DNS allows applications to retrieve either IPv4 or IPv6 addresses, as per network configuration.

2. Adopt Modern Networking APIs

Apple encourages the use of modern networking APIs like NSURLSession and CFNetwork, which handle both IPv4 and IPv6 natively. For instance, switching from the older NSURLConnection API to NSURLSession can streamline IPv6 compatibility.

3. Test in IPv6-Only Environment

Developers should test their applications under IPv6-only conditions. Apple provides documentation on setting up an IPv6 network using a Mac's internet sharing capabilities. This step ensures that an application can fully function in a network where only IPv6 is available.

Technical Examples

Example 1: Modifying HTTP Requests

Here's a sample Swift code snippet demonstrating using NSURLSession, ensuring it supports both IP protocols:


Related reading
Course
Beginner
27 lessons
10 hours
System Design Fundamentals

Build a strong foundation in designing scalable, reliable distributed systems.

View the course
Track what you have practised

A free account saves your progress, solutions and study plan across every problem on Codemia.

System Design practice on Codemia

Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.

Practice system design

All Rights Reserved.