Skip to main content
PoolKit reads a person’s photos and screenshots on their device and turns them into things your app can use: products, places, events, recipes, books, music, movies, articles, posts and links. Your app asks for a narrow grant, then asks questions. Photos never leave the device.

Requirements

  • iOS 18 or later.
  • Xcode 27, the version PoolKit is built and tested with.
  • An app key from the dashboard. Test keys start with pk_test_ and live keys with pk_live_. PoolKit is in early access: book a demo and we turn on your account for keys.

1. Add the package

In Xcode choose File, Add Package Dependencies and enter the package URL, or add it to Package.swift:
Building with React Native or Expo, or with CocoaPods? See React Native and Expo; the same SDK ships as an Expo module, a pod and an XCFramework. PoolKit builds on four open source packages: GRDB, SQLiteData, Swift Async Algorithms and Swift Collections. SQLiteData uses Swift macros, so Xcode asks you once to trust them; on a build machine pass -skipMacroValidation to xcodebuild. The engine’s models, about 375 MB, are not in the package. PoolKit downloads them on Wi-Fi after indexing starts, and answers from text and labels until they arrive. See Indexing.

2. Say why you need photos

iOS shows this sentence in the photo library prompt. Write the benefit to the person, in your app’s own words.

3. Open the client

Open one client at launch and keep it. Opening is fast and works offline.

4. Ask for access

A grant names which sources, which kinds of things and which operations your feature needs, and why. The first request shows the system photo prompt. Indexing starts once a grant exists and never before.

5. Ask a question

That is the whole loop. Next, read Grants to scope access well, Search and browse to find the photos themselves, and Testing to run all of this in unit tests without a photo library.