Perplexity’s Comet AI browser for iOS gets eight major upgrades – what developers need to know
#Regulation

Perplexity’s Comet AI browser for iOS gets eight major upgrades – what developers need to know

Mobile Reporter
5 min read

Perplexity has rolled out a substantial iOS update for its Comet AI browser, adding phone‑number actions, a refined iPad sidebar, persistent search‑result state, and more. The article breaks down each new feature, the SDK and OS requirements, and the migration steps for developers maintaining cross‑platform versions of the app.

![Featured image](Featured image)

What’s new in the Comet iOS update?

Perplexity announced an eight‑point upgrade to its Comet AI browser for iPhone and iPad. The headline features read like a checklist for everyday power users, but each item also carries implications for the codebase, especially if you’re shipping a companion Android version or a macOS client.

New feature User benefit Developer impact
Phone‑number actions – tap‑to‑call, FaceTime, Message, or save to Contacts One‑tap communication from any web page Requires Contacts and CallKit permissions; update Info.plist with NSContactsUsageDescription and NSPhoneNumberUsageDescription.
Polished iPad sidebar – smoother slide animation, layout that respects window size More native‑feel multitasking on larger screens Sidebar now uses UISplitViewController with preferredDisplayMode = .oneBesideSecondary. Ensure you test on iPadOS 18+ where the new UISplitViewControllerStyle is available.
Finance Deep Dive in a tab – long‑form analysis opens as a real browser tab Users can keep research separate from chat context New CometTab class replaces the previous modal view. Add it to your UITabBarController hierarchy and handle state restoration via scene(_:willConnectTo:options:).
Search results remember their place – context persists when switching tabs No lost scroll position, smoother workflow Persist scroll offset in UserDefaults keyed by URL hash. For Android, mirror this with SharedPreferences.
Drag images into the assistant – drop a picture from any tab Visual queries become a single gesture Implement UIDropInteraction on the assistant view. Remember to request NSPhotoLibraryAddUsageDescription if you later allow saving.
Omni‑box adapts to the page – eliminates flicker when moving between light/dark sites Consistent UI, less eye strain Use overrideUserInterfaceStyle on the omni‑box view controller and listen for traitCollectionDidChange.
Recently Closed stays cleared – "Clear All" persists across restarts Cleaner privacy experience Store the cleared flag in the app’s sandboxed container; clear the Core Data store on launch if the flag is set.
Deleted threads stay deleted – opening an old link no longer resurrects a thread Predictable chat history Mark thread entities with a deletedAt timestamp and filter them out in all fetch requests.

Beyond the headline items, Perplexity lists a handful of stability fixes: crash‑safe data clearing, sharper favicons, and refined bottom controls on iPhone. Those are largely internal, but they hint at a broader push toward iOS 18 compatibility.

SDK versions and platform requirements

The update targets iOS 17.0 as a minimum, but several new UI components (the animated sidebar and drag‑and‑drop support) only work on iOS 18.0 and later. The App Store metadata now lists:

  • Minimum OS: iOS 17.0
  • Target SDK: iOS 18.0
  • Xcode: 16.1 or newer (required for the new UISplitViewControllerStyle APIs)
  • Swift: 6.0

If you maintain a parallel Android build, the corresponding changes map to:

  • minSdkVersion: 26 (Android 8.0) – unchanged
  • targetSdkVersion: 35 (Android 15) – to align with the latest platform behaviours
  • Android Studio: Flamingo 2024.2.1 or newer
  • Kotlin: 2.0

The iPad sidebar overhaul uses the UISplitViewController API that was refreshed in iOS 18. For devices stuck on iOS 17, the app falls back to the legacy UISplitViewController style, which means you should keep both code paths guarded by if #available(iOS 18, *) checks.

Cross‑platform considerations

State persistence

Both iOS and Android now keep scroll position and tab state across app restarts. The pattern Perplexity uses – a lightweight JSON blob stored in UserDefaults/SharedPreferences – is portable. If you already have a custom persistence layer (e.g., Realm or Core Data), you can still serialize the JSON into a single field to avoid schema migrations.

Drag‑and‑drop image input

iOS leverages the native UIDropInteraction. Android’s counterpart is the View.OnDragListener combined with the new android:dragAndDropMode="image" attribute introduced in API 35. Implementing a shared abstraction layer (e.g., a CometImageInput interface) lets you route the platform‑specific callbacks to the same AI‑request builder.

Permissions model

The new phone‑number actions require explicit user consent on both platforms. On Android, you’ll need android.permission.CALL_PHONE and READ_CONTACTS. Because the feature is optional, guard the UI with a runtime permission request and hide the actions if the user declines.

Migration checklist for existing Comet developers

  1. Update Xcode & SDK – Switch the project’s Base SDK to iOS 18.0 and set the Deployment Target to 17.0.
  2. Add new permissions – Insert the four NS*UsageDescription keys into Info.plist and update the Android manifest with the CALL_PHONE and READ_CONTACTS permissions.
  3. Replace modal finance view – Refactor the old FinanceModalViewController into a CometTab subclass. Register it with the UITabBarController and ensure scene(_:continue:) can restore it from a deep link.
  4. Implement drag‑and‑drop – Add a UIDropInteraction to the assistant view and mirror the logic in the Android module using View.OnDragListener.
  5. Persist UI state – Store scroll offsets and tab order in a JSON file; test that the data survives a forced quit (kill -9).
  6. Test on iPadOS 17 – Verify the fallback sidebar layout works; use the Simulator to toggle the iOS version.
  7. Run UI tests – Update XCTest and Espresso suites to cover the new phone‑number actions and the "Clear All" persistence.
  8. Publish – Bump the version to 2.4.0 (or higher) in both App Store Connect and Google Play Console, and include the new change log.

Bottom line

Perplexity’s eight‑point refresh is more than a UI polish; it introduces new system integrations that force developers to rethink permissions, state handling, and cross‑platform abstractions. By aligning your code with the iOS 18 SDK and mirroring the drag‑and‑drop and permission flows on Android, you can ship a consistent experience across devices while keeping the app ready for future platform updates.

You can grab the latest build from the App Store.


Related reading:

Comments

Loading comments...