Not released yet
On-device indexing
- Indexing names things on the device only. Cloud assist names things during indexing only when you set the new
IndexOptions.namesWithCloudAssistand the device cannot run Apple’s on-device model, so a device with Apple Intelligence spends no cloud assist units on indexing. - The image model embeds photos in full batches: on an iPhone Air, 9 ms a photo instead of 677 ms.
- Search by meaning starts while the library is still being read, and the engine models download in the meantime.
November 2026, early access
Places and visits
- New category
.locations: neighbourhood, city, metro area, country, coordinates and time zone per photo, visits with their venue and context, and search by place words. See Places and visits. - Search plans gain the
locationoperation and theplace,placeTypeandcontentAndPlaceintents. Hits gain the.placereason,placeMatchesandplaceSimilarity.
People
- New category
.people: faces grouped on the device into unnamed people, withpeople(using:),photos(of:)and an apparent age range and gender when the on-device face model is sure (ages0-9and20-39for now). See People.
Index options
IndexOptionssets the window, media types, saved videos, a food focus, the most photos, cellular use, automatic updates, run reports, background progress text, places and people, at open or later withsetIndexOptions. See Indexing.SourceStatus.detailgives the step, counts, what indexing waits for, sensitive captures held back by kind, the time left and the background state;lastRunsays how the last run ended and when the next starts.sources.batches(using:)streams captures as they are indexed, andsources.deleteIndex()empties the index and keeps grants, options and models. See Indexing.- Background indexing:
PoolSources.registerBackgroundTasksregisters before a client exists; on iOS 26 the first index carries on after the person leaves the app, with progress iOS shows; an update task keeps the index current; a run iOS ends resumes where it stopped, and a failed one waits 10 minutes. List the new<bundle ID>.pool.updateand<bundle ID>.pool.continue.*identifiers in Info.plist. See Indexing. - The default window is now three months back, growing from there. Pass
.everythingto index the whole library as before.
Search and results
- Paging with
offset,totalCountandsearchPlanon every search, date and holiday words, anddetailson every hit. See Search and browse.
Answers and interests
askUpdatesstreams an answer as it is written. Questions can be 1,000 characters.- Interests read a taxonomy of 129 topics with strengths and sources. See Interests.
React Native, Expo and CocoaPods
@randomaccessmemories/pool-kitwraps the SDK as an Expo module with a config plugin, with the Swift names and typed results. From 0.2.1 the plugin installs thePoolKitpod from the pool-kit repo, so no CocoaPods trunk is involved. See React Native and Expo.- The SDK also ships as a binary XCFramework and a pod,
PoolKit, both from the public pool-kit repo.
Errors
- Every
PoolErrorhasretryable,retryAfterandserverCode. Existing switches still compile. See Errors.
Security and operations
- App Attest, off, report or enforce per app. See App Attest.
- Key rotation with a 30-day grace, apps that can be turned off, and bundle IDs held until approved. See Keys.
- Indexing run reports and their 30-day summary in the dashboard.
- An MCP server for coding agents. See Build with an agent.
November 2026
First release: grants, queries, evidence, signals, rank, trips, the reader, classify, cloud assist answers and profiles, live updates and test fixtures.

