Hello, We ship a font provider app that installs fonts system-wide on iOS, delivering the font files through On-Demand Resources. Since iOS 27 shipped, customers have been reporting that their installed fonts vanish from the system font list after every restart. I would like to know whether the restore path for system-wide font registrations changed in iOS 27, and what a font provider app is expected to do after a device reboot. Environment
- iOS 27.0 and 27.0.0 only. We have no reports on iOS 26 or earlier.
- iPhone 18 Pro and iPhone 18 Pro Max
- Fonts delivered through On-Demand Resources and registered for system-wide installation using CoreText
Steps to reproduce
- Activate a font in the app. It appears in Settings > General > Fonts.
- Reboot the device.
- Without launching the app, open Settings > General > Fonts. The font is gone.
- The app still shows the font as active, because it keeps its own activation state.
- Deactivate and reactivate the font in the app. It comes back.
- Reboot again. It disappears again.
This happens on every reboot. It also happens with a single font activated, and it persists after updating or reinstalling the app. Because the font is missing from the system font list, it is also missing in other apps that use system fonts. What we have ruled out
- Not low storage. These are new devices with plenty of free space. The documented purge trigger for On-Demand Resources is low storage, which does not explain a result this consistent.
- Not a crash. Our crash data for the affected app version shows no elevated crash rate on iOS 27 compared to iOS 18.
- Not specific to one font or one app version.
Questions
- Did the restore path for system-wide font registrations change in iOS 27? Are registrations that reference files inside On-Demand Resources still restored at boot?
- If a font provider app now has to re-register after a reboot, when and how should it do that? There is no natural launch point, since someone may use the font in another app without opening ours first.
- Is there a supported way for the app to detect that a font it installed is no longer present in the system font list, so it can repair the registration quietly?
Context We deliver several thousand fonts this way, and Apple increased our On-Demand Resources limit for that reason (Case-ID 17273913, December 2025). On-Demand Resources is deprecated as of iOS 27. We have separately confirmed that fonts delivered through Background Assets cannot be registered system-wide: registration fails with CTFontManagerErrorDomain code 306, both from the Background Assets container and after copying the files into the app sandbox, because CoreText requires the file to sit inside the app bundle or On-Demand Resources. We have a separate question open about that migration path, so this post is only about the reboot behavior on iOS 27. Happy to provide a sysdiagnose from an affected device and a sample project. Thank you.
Thanks for the detailed report and the follow-up, especially the device pattern and the exact registration call.
I reproduced this on an iPhone 18 Pro Max running iOS 27.0, using a single font in the app bundle rather than On-Demand Resources. I registered it with CTFontManagerRegisterFontURLs(_:_:_:_:) and kCTFontManagerScopePersistent, confirmed it in Settings > General > Fonts, and restarted the device:
- The font was gone from Settings before the app launched.
- In the app,
CTFontManagerCopyRegisteredFontDescriptors(_:_:)with.persistentstill returned the font. ButCTFontCreateWithNamefell back to Helvetica, andUIFont(name:size:)returned nil. - Registering again failed with
kCTFontManagerErrorAlreadyRegistered(105), and the font stayed unavailable. - After I unregistered it with
CTFontManagerUnregisterFontURLs(_:_:_:)and registered it again, the font came back. No installation prompt appeared on this device.
This behavior doesn't match the documented scope. kCTFontManagerScopePersistent says the font "will be available in subsequent sessions unless unregistered," and the CoreText headers define a session on iOS as "the current booted session."
Please file a Feedback Assistant report with your sample project and a sysdiagnose captured right after a reboot on an affected device. Then post the Feedback number here. I'll pass it along to engineering so they can make sure your report goes to the right place. If you're not familiar with filing reports, take a look at Bug Reporting: How and Why?
I didn't find any documented step that a font provider app needs to take after a reboot. To detect the loss, checking CTFontManagerCopyRegisteredFontDescriptors didn't work in my test, but looking the font up by name did.
There's no FontServices or LaunchServices logging profile on the Profiles and Logs page, so a sysdiagnose attached to your Feedback report is the way to get those logs to engineering.
I can't comment on how system components implement font registration, so I can't confirm or rule out your fontservicesd analysis. I also can't discuss future releases.