Fundamentals 11 min read

Python 3.12 App Store Rejection Caused by an itms‑services String and CPython’s Planned Fix

Upgrading Python from 3.11 to 3.12 introduced an "itms‑services" string in the standard library, causing macOS App Store rejections, which led developers and CPython core contributors to discuss the issue, propose patches, and plan a compliance option for future Python releases.

Python Programming Learning Circle
Python Programming Learning Circle
Python Programming Learning Circle
Python 3.12 App Store Rejection Caused by an itms‑services String and CPython’s Planned Fix

Recent reports indicate that developers who upgraded the Python runtime in their macOS applications from version 3.11 to 3.12 encountered unexpected rejections from the Apple App Store. The rejection stemmed from the presence of the literal string itms-services in the standard library's urllib.parse module, which Apple's automated review flags as a violation of guideline 2.5.2 (Performance – Software Requirements).

Eric Froemling, a developer, shared his experience on the Python GitHub issue tracker, describing how his app was rejected without a clear explanation, only receiving the terse response “we cannot provide more information.” After investigation, he identified the offending files as Lib/urllib/parse.py and its compiled .pyc counterpart, which now contain the problematic string.

By removing the string from his code, Froemling succeeded in passing the review and publishing the app. The incident sparked a broader discussion among CPython core developers about how to handle such store‑specific constraints.

Russell Keith‑Magee, a CPython maintainer, outlined two possible strategies: (1) make App Store compliance a design goal for CPython, integrating necessary patches directly into the interpreter, and (2) treat the issue as a distribution problem, relying on packaging tools (e.g., Briefcase, py2app, Buildozer) to apply patches during the build process. He also noted the risk of creating “ugly” work‑arounds and the need for ongoing maintenance as store policies evolve.

Keith‑Magee later proposed a concrete implementation: a new configure option --with-app-store-patch (or --with-app-store-compliance ) that can apply a predefined diff removing the offending URL handling code at build time. This option would be disabled by default on most platforms but enabled for iOS, and could accept a custom patch file for future policy changes. The patch is slated to appear in Python 3.13.

Other core contributors, such as Alex Gaynor, suggested a third approach inspired by the cryptography library: accept short‑lived, localized pull requests that temporarily bypass the check, with the understanding that they will be removed once the underlying store rule changes.

The discussion highlights the tension between open‑source language development and opaque commercial app‑store review processes, and raises questions about the sustainability of maintaining compatibility across multiple platforms.

PythonpackagingcompliancemacOSApp StoreCPython
Python Programming Learning Circle
Written by

Python Programming Learning Circle

A global community of Chinese Python developers offering technical articles, columns, original video tutorials, and problem sets. Topics include web full‑stack development, web scraping, data analysis, natural language processing, image processing, machine learning, automated testing, DevOps automation, and big data.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.