We are seeing a strange lifecycle issue on multiple MDM-managed iPads where application(_:didFinishLaunchingWithOptions:) is not called after the device is idle overnight.
Even if we terminate the app manually via the app switcher, the next morning the system does not perform a cold launch. Instead, the app resumes directly in:
applicationDidBecomeActive(_:)
This causes all initialization logic that depends on didFinishLaunching to be completely skipped.
This behavior is consistent across four different supervised MDM devices.
Environment
Devices: iPads enrolled in MDM (supervised)
iOS version: 18.3
Xcode: 16.4
macOS: Sequoia 15.7.2
App type: Standard UIKit iOS app
App: Salux Audiometer (App Store app)
Expected Behavior
If the app was terminated manually using the app switcher, the next launch should:
Start a new process
Trigger application(_:didFinishLaunchingWithOptions:)
Follow the normal cold-start lifecycle
Actual Behavior
After leaving the iPad idle overnight (8–12 hours):
The next launch skips didFinishLaunching
The app resumes directly in applicationDidBecomeActive
No new process is started
App behaves as if it had been suspended, even though it was manually terminated
Logs (Relevant Extracts) Day 1 — Normal cold launch [12:06:44.152 PM] PROCESS_STARTED [12:06:44.214 PM] DID_FINISH_LAUNCHING_START launchOptions=[] [12:06:44.448 PM] DID_FINISH_LAUNCHING_END
We then used the app and terminated it via app switcher.
Day 2 — Unexpected resume without cold start [12:57:49.328 PM] APP_DID_BECOME_ACTIVE
No PROCESS_STARTED No didFinishLaunching No cold-start logs
This means the OS resumed the app from a previous state that should not exist.
Reproducible Steps
Use an MDM-enrolled iPad.
Launch the app normally.
Terminate it manually via the multitasking app switcher.
Leave the device idle overnight (8–12 hours).
Launch the app the next morning.
Observe that:
didFinishLaunching does not fire
applicationDidBecomeActive fires directly
Questions for Apple Engineers / Community
Is this expected behavior on MDM-supervised devices in iOS 18?
Are there any known OS-level changes where terminated apps may be revived from disk/memory?
Could MDM restrictions or background restoration policies override app termination?
How can we ensure that our app always performs a clean initialization when launched after a long idle period?
Additional Information
We have full logs from four separate MDM iPads showing identical behavior. Happy to share a minimal reproducible sample if required.
These correspond to the issue we encountered again on January 16. Please review and let us know if you need anything else from our side.
I've looked over all three logs and, to be honest, I'm a bit confused as to what you're asking. I've looked over all three logs and basically found exactly what I expected. That is:
-
All logs include at least one case where the app was launched on one day and reopened the next day.
-
There's no evidence at all that any attempt was made to quit/terminate the app.
-
Everything in the log indicates that this is perfectly normal system behavior, as the app was simply suspended on one day and then resumed the next day.
There is one oddity in the console log from:
sysdiagnose_2026.01.16_09-00-46-0600_iPhone-OS_iPad_23A355
That log has two "overnight" runs (4774, 6054) mixed in with many other runs, with the oddity being that both apps run for ~2s after they return to the foreground (the next day), then stop running. I can't tell for certain exactly what happened from the available data, but it wasn't triggered by the system itself and the process simply exited, so I suspect this was something you chose to implement (by calling exit).
That leads me back to the question I asked here:
What are you actually trying to do here? Why is it important that your app cold launch?
Expanding on that, the basic behavior you're describing is entirely normal iOS behavior, which means the real question here isn't really "why is this happening?", but is actually "why is this a problem for your app?".
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware