I’m building a macOS app with a MailKit extension. The containing app needs to show whether the Mail extension is enabled and actually being invoked.
Currently the extension writes a “last seen” timestamp to app group defaults when Mail invokes it. The containing app reads that timestamp and shows a waiting/active state.
During App Review, this behaviour was challenged: enabling the MailKit extension in Mail Settings does not immediately change the state reported in the containing app. The extension is only invoked when Mail receives or reloads messages, so the main app cannot confirm it is active at the moment the user enables it.
The review challenge is that App Review may enable the extension, open Mail, select existing messages, and still see the containing app stuck in a waiting state. From what I can tell, selecting old messages does not reliably cause Mail to invoke the extension.
I looked for a direct API like:
let isEnabled = try await MEExtensionManager.shared().isEnabled
But I do not see any public MailKit API that reports whether the extension is enabled in Mail Settings. MEExtensionManager seems limited to reload-style APIs such as reloadVisibleMessages.
Questions:
- Is there a supported way to check whether a MailKit extension is enabled?
- Is “first extension invocation” the expected confirmation signal?
- Can reloadVisibleMessages be relied on during review, or can Mail skip/throttle old messages?
- Is the right App Review instruction: enable the extension, quit/reopen Mail if needed, then send a new test email?
If possible, I want the app to report that the extension has been enabled as soon as the user turns it on in Mail Settings, even if Mail has not invoked the extension yet, but I do not see a public API that exposes that enabled state.