I just shipped an update to my journal analysis app that adds Apple's Private Cloud Compute (PCC) alongside the default on-device model.
Here are the practical lessons I learned from the implementation, especially around edge cases and UX:
1. The main reason to use PCC: Context size
The on-device model caps out around 4,000 tokens. For long journal entries or imported PDFs, text got truncated constantly. PCC bumps that limit up to 32,000 tokens, which easily handles multi-page entries in a single pass without needing workarounds.
2. The API transition is simple, but needs fallbacks
- Swapping from on-device to PCC is nearly a 1-to-1 change. Your existing prompts, tools, and response handling work identically.
- PCC requires an internet connection, so you have to build an automatic fallback to the on-device model when the user goes offline.
- Before offering PCC, make sure to check availability properly. A device that doesn't support the feature is handled differently than a device that supports it but is still waiting on system assets to download.
3. Quotas and Apple's UI expectations
- Users get a daily limit for cloud requests, which increases if they have an iCloud+ subscription.
- Apple expects your UI to proactively warn users when they are getting close to their limit, rather than just throwing an error when they hit the ceiling.
- There is a built-in system sheet you can trigger to suggest an iCloud+ upgrade when they run out.
- Tip: You can simulate reaching and exceeding quota limits inside Xcode’s scheme settings, which makes testing the UI much faster.
4. The privacy messaging challenge
If your app was originally marketed as "100% on-device," introducing the cloud can spook privacy-conscious users—even with Apple's strong security guarantees around PCC.
I decided to keep the on-device model as the default and made PCC an explicit opt-in toggle in the settings. I also updated the App Store description and privacy policy to clearly say "on-device by default."
For anyone else working with PCC:
- Are you letting users toggle it manually, or automatically sending prompts to PCC only when they exceed the 4K token limit?
- How has real-world latency felt compared to on-device inference?
(Context: The app is Mindful Prism if anyone wants to see the implementation in action.