Adding another data point — May 2026 rejection for LSApplicationWorkspace
Posting because this thread is the canonical reference and fresh rejection data points are the most useful thing affected developers can add. My iOS Screen Time app was rejected under guideline 2.5.1 — the static analyzer detected LSApplicationWorkspace in my ShieldActionExtension, which I was using to launch the host app from the shield's Unlock button after completionHandler(.defer).
I went into this knowing the API was non-public. Every public alternative either fails silently in this extension context (extensionContext.open(_:)), is unavailable in extensions (UIApplication.shared.open(_:)), or is documented broken on iOS 18+ (the responder-chain selector trick). The only Apple-compliant mechanism is a local notification with a deep link — works, but adds ~1 second and an extra tap compared to a direct launch.
I've filed FB22696417, referencing the existing FB17261679, asking for a public API equivalent to extensionContext.open(_:) for ShieldActionExtension, or a new ShieldActionResponse.openContainingApp case the system handles directly.
Two asks for the Apple team:
Add the public API. The current gap forces developers into a no-win choice between worse UX and private APIs. Neither is sustainable.
Document the official answer. If "local notification + deep link" is the intended pattern, please say so explicitly in the ManagedSettings docs. Right now it's reverse-engineered from rejection threads like this one.
To other developers: if you've hit the same rejection in 2025–2026, please add your data point.
Topic:
App & System Services
SubTopic:
General
Tags: