A cross-platform Xcode replacement that builds, signs and installs iOS apps from SwiftPM packages on Linux, Windows and macOS.
sparrowcode/PermissionsKit
A Swift library for iOS that provides one unified API to request system permissions and read their status.
- Stars
- 5,812
- Forks
- 479
- Open issues
- 4
- Last commit
- 2 months ago
What is it?
PermissionsKit gives iOS apps a single API for requesting system permissions such as camera, location, notifications, photos and contacts, and for checking whether each one is authorized, denied or not determined. Each permission ships as its own Swift package product, so an app only links the permissions it actually uses.
The library also helps with the surrounding setup. It exposes the Info.plist usage description key for each permission and supports localising those descriptions through xliff export or InfoPlist.strings files. FaceID is a documented exception: it cannot distinguish authorized from not determined, so only the denied state is reliable.
Key features
- 01Request permissions and read their status through one API.
- 02Each permission is a separate Swift package product, keeping binaries small.
- 03Covers Bluetooth, Calendar, Camera, Location, Notifications, Photos, Health and more.
- 04Provides the Info.plist usage description key for each permission.
- 05Supports localising usage descriptions via xliff export or InfoPlist.strings.
Use cases
- Adding a permission request flow to an iOS app with consistent handling across permission types.
- Checking current permission status before showing a feature that depends on camera or location.
- Keeping an iOS app's linked permission APIs minimal for App Review.
Quick start
- 1
Add the package in Xcode via File → Add Package Dependencies using the repository URL
- 2
Select only the permission products your app uses, then import them in Swift
Things to know
- Targets iOS only.
- FaceID cannot distinguish .authorized from .notDetermined, so only .denied is reliable for it.
In collections
Topics
FAQ
- What is PermissionsKit?
- A Swift library for iOS that provides one unified API to request system permissions and read their status. PermissionsKit gives iOS apps a single API for requesting system permissions such as camera, location, notifications, photos and contacts, and for checking whether each one is authorized, denied or not determined. Each permission ships as its own Swift package product, so an app only links the permissions it actually uses.
- Is PermissionsKit free to use? What license does it have?
- PermissionsKit is open source under the MIT license. Check the license terms before using it in commercial products.
- Is PermissionsKit still maintained?
- Updated within 6 months. The last commit to PermissionsKit was on Sep 12, 2026.
- What can I use PermissionsKit for?
- Adding a permission request flow to an iOS app with consistent handling across permission types. Checking current permission status before showing a feature that depends on camera or location. Keeping an iOS app's linked permission APIs minimal for App Review.
- How do I install PermissionsKit?
- Add the package in Xcode via File → Add Package Dependencies using the repository URL Select only the permission products your app uses, then import them in Swift
- Where can I get PermissionsKit?
- The source code and installation instructions are on GitHub: https://github.com/sparrowcode/PermissionsKit
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A WeChat-style photo picker for iOS that selects photos, GIFs, Live Photos and videos, with built-in image and video editing.
An iOS app that records from two cameras at once using AVCaptureMultiCamSession, with split-screen or picture-in-picture preview and a Liquid Glass UI.
A framework for building native Android and iOS apps using React, with JavaScript UI rendered by native platform components.
A drop-in iOS library that stops the keyboard from covering UITextField and UITextView, with no code required.
Official source code for the Telegram messenger iOS app, with a build system for compiling it yourself in Xcode.