Python grapples with Apple App Store rejections
Immediate issue: Python apps rejected on iOS/macOS stores
- Apps embedding Python are being rejected because binaries contain the string
itms-services, which App Review associates with installing other apps and violating guideline 2.5.2. - The affected apps do not actually use that URL scheme at runtime; the rejection is based on static string scanning.
- Current Python-side workaround is a compiler/config flag to exclude the problematic code on iOS, rather than obfuscation, which is seen as risky with Apple.
Apple’s review and security practices
- Several comments describe Apple’s checks as crude substring scans (“cockroach security”) layered on top of other mechanisms.
- Others argue Apple likely has more sophisticated checks too, but evidence in this case points to a simple string match.
- App Review feedback is criticized as vague; developers want precise locations of offending strings and clearer remediation paths.
- Some question why the sandbox doesn’t just block
itms-servicesfor App Store–signed apps, instead of relying on static scanning. - Enterprise distribution and out-of-store macOS apps do legitimately use this scheme, complicating a blanket ban.
Why itms-services is in Python at all
- The string lives in
urllib.parse’s list of schemes that have a “netloc”, to correctly parse Apple’s nonstandard URL format. - Discussion notes that Python’s URL handling is partly working around other software’s quirks; some argue proprietary schemes should be handled heuristically, not hard-coded.
- There’s debate over whether Python’s URL implementation is spec-correct regarding empty vs null hosts.
- Some suggest the immediate fix could be as trivial as changing a test case string or restructuring tests so they don’t ship.
OSS responsibility vs platform bugs
- One view: OSS can accept small, localized workarounds for big-vendor bugs, but only with a time limit and after filing upstream reports, to avoid being the permanent band-aid.
- Others are skeptical this works in practice, given perceptions that Apple’s bug reporting is a “black hole.”
Wider ecosystem: signing, AV, and small developers
- Parallels are drawn to Windows Defender and SmartScreen falsely flagging small, unsigned binaries (including Python/PyInstaller) as malware.
- Code-signing costs and platform hurdles push some small or OSS developers away from macOS/Windows or from updating apps, and toward Linux or niche distribution methods.
Platform control and user freedom
- Strong debate over whether Apple’s tightly controlled model is acceptable “custodianship” or “digital serfdom.”
- Some emphasize that users can choose Android, including de-Googled variants with sideloading and FOSS-only setups.
- Others argue a duopoly still leaves too little real freedom, and criticize Apple’s browser engine lock-in and limits on running arbitrary code on owned hardware.