Documentation

Go to Portal Website

Spotlight & Handoff Suppression

PlanPlatformsMASVS
TeamiOSMASVS-STORAGE-2, MASVS-PLATFORM-3

Overview

Spotlight & Handoff Suppression prevents your application's activities and content from being indexed for iOS Spotlight search and from being shared across devices via Handoff. When enabled, the control transparently forces all NSUserActivity eligibility flags to false and no-ops Core Spotlight indexing APIs, ensuring that sensitive application data never leaks into the system search index or appears on other devices signed into the same iCloud account.

This control is essential for healthcare, financial, enterprise, and any application where user activities or searchable content should remain strictly private and confined to the device where the app is actively running.

How It Works

The control operates at runtime by intercepting two iOS API families:

NSUserActivity Hardening

When your app creates or updates an NSUserActivity instance (used for Spotlight, Handoff, Siri Suggestions, and Shortcuts), the control automatically:

These flags are stripped before the activity becomes current, ensuring no data reaches Apple's indexing infrastructure.

Core Spotlight No-Op

When your app attempts to directly index content via CSSearchableIndex:

Important: Deletion methods (deleteSearchableItemsWithIdentifiers:, deleteAllSearchableItemsWithCompletionHandler:) are not intercepted, allowing a previously-installed app to purge its legacy index when this control is enabled in an update.

Threats Mitigated

ThreatMitigation
System Search LeakagePrevents sensitive strings (account numbers, patient names, document titles) from appearing in iOS Spotlight search results where unauthorized users with device access could discover them
Cross-Device Activity SharingBlocks Handoff from broadcasting user activities to other devices signed into the same iCloud account (Mac, iPad, iPhone), reducing the attack surface if one device is compromised
Siri Suggestions ExposurePrevents sensitive app activities from appearing in Siri Suggestions on the lock screen, Spotlight, or Safari
Cloud Search IndexBlocks Apple's optional public indexing, ensuring app content never reaches Apple's servers

Use Cases

This control is recommended for applications where:

Caveats

Legitimate Feature Impact

Applications that intentionally use Spotlight search or Handoff must carefully evaluate this control:

Recommendation: Enable this control only for applications where privacy requirements outweigh the user experience benefits of Spotlight and Handoff. For mixed-sensitivity apps, consider segmenting content and enabling the control conditionally per-session or per-user role.

Known Limitations

  1. SiriKit Direct Donations: INInteraction.donate() and INIntent.donate() (used for Siri Shortcuts) bypass NSUserActivity and are out of scope for this control. Apps that donate intents directly to SiriKit will still appear in Siri Suggestions.
  1. NSUserActivity Subclass Overrides: If your app or a third-party library subclasses NSUserActivity and overrides -becomeCurrent and the four setEligibleFor*: setters without calling super, the control cannot intercept those methods. This is a rare edge case but a documented limitation.
  1. CSImportExtension Out-of-Process: Spotlight import extensions (CSImportExtension) run in a separate process managed by iOS and are not covered by in-app runtime controls.

Support Matrix

PlatformMinimum VersionAvailability
iOSiOS 12.0+✅ Team, Enterprise
Android❌ Not applicable (Android has separate content indexing APIs)

iOS 12.0+ Requirement: The control requires eligibleForPrediction (iOS 12.0+) for comprehensive coverage. Deployment targets below iOS 12.0 will omit Siri Suggestions suppression but Spotlight/Handoff blocking will still function on iOS 11.

How to Enable the Control

Navigate to Preventative Controls from the AppTego portal, and expand the Data Sharing Protection section. Under this section you will find the Spotlight And Handoff Suppression control. Click Enable to enable it for the next build or for it to be applied with a live push (if enabled).

API Configuration Example

{
  "SpotlightIndexingPrevention": {
    "protection": true,
    "detection": false
  }
}

Plan Requirement

PlanAvailable
Free
Team
Enterprise