PackageTrack
Sign in Get early access

permission_handler_apple

Permission plugin for Flutter. This plugin provides the iOS API to request and check permissions.

9.6.1 3.5M downloads/mo #180 most downloaded on pub.dev baseflow/flutter-permission-handler

What this package is like to depend on

Last release 13 days ago

11 Aug 2026

Release timing varies

gaps range from 9 days to 1.1 years

Nearly every release is documented

notes for 30 of 30 stable releases

Nothing withdrawn

no release was ever pulled

5 years old

30 releases · first in 2022

7 releases in the last 12 months

see the full history below

Release timeline

30 releases · Feb 2022 to Aug 2026
2023 2024 2025 2026
Release Pre-release

Releases

latest 30
  1. 9.6.1 11 Aug 2026
    Release notes
    • Fixes small mistakes in the README.md documentation.
    Open source →
  2. 9.6.0 10 Aug 2026
    Release notes

    Add opt-in per-flavor permissions for Swift Package Manager builds (2…

    Open source →
    Release notes
    • Adds opt-in per-flavor permissions for Swift Package Manager builds. An app can declare a permission_handler.yaml next to its pubspec.yaml mapping each flavor to the Info.plist that defines it, and only the selected flavor's permissions are compiled in — a permission declared by dev can no longer reach a prod binary. Without this file the previous behaviour is unchanged. This is a Swift Package Manager feature: CocoaPods builds set the PERMISSION_* macros from the Podfile and are unaffected, including by the build phase below.
    • Adds dart run permission_handler_apple:select <flavor>, which records the active flavor and clears the caches that would otherwise keep serving the previously resolved permissions. Xcode does not re-evaluate a package manifest when an environment variable or the selection changes, so this step is required when switching flavors. select is also the only YAML reader: a Swift package manifest cannot parse YAML, so the command translates the config into a generated ios/Flutter/permission_handler.resolved.json (gitignore it) that the manifest and the build phase read with their native JSON parsers. A translation older than the YAML fails the build instead of shipping stale permissions.
    • Adds tool/verify_flavor_selection.sh, a build phase for the app target that fails the build when the selected flavor does not match the configuration being built. A package manifest is evaluated once and cannot detect that its own result went stale, so this is what catches a forgotten select. It is a no-op without a permission_handler.yaml and on CocoaPods builds.
    • Adds the PERMISSION_HANDLER_FLAVOR and PERMISSION_HANDLER_CONFIG environment variables to set the active flavor and the configuration file location explicitly.
    • select validates the configuration up front and refuses anything ambiguous: a build configuration claimed by more than one flavor, a configurations that is not a list, a non-string flavor name, or a strict that is not a boolean. Being the only reader of the YAML, it is the only place where these can be reported at all.
    Open source →
  3. 9.5.1 10 Aug 2026
    Release notes

    Fix SPM Info.plist discovery for flavored and multi-configuration app…

    Open source →
    Release notes
    • Fixes the Swift Package Manager permission auto-detection, which failed to find the host app's Info.plist and silently compiled out every permission. Apps hit this in two ways: the manifest only ever looked at ios/Runner/Info.plist, so build-configuration or flavor specific plists such as Info-Debug.plist were never seen (#1548), and the app-root lookup could walk past the app entirely. Info.plist locations are now resolved from INFOPLIST_FILE in the Xcode project and any .xcconfig files, with a scan of ios/ as a fallback, and the usage description keys found across them are merged.
    • Adds the PERMISSION_HANDLER_INFO_PLIST environment variable, which points the manifest at one or more Info.plist files and replaces automatic discovery. This is required for builds started from Xcode.app, which run with / as their working directory and cannot be detected automatically.
    • Adds the PERMISSION_HANDLER_VERBOSE environment variable, which logs the app root, the Info.plist files used, and the resolved PERMISSION_* macros.
    • Emits a warning when no Info.plist can be located, instead of silently disabling every permission. Note that Xcode discards Swift package manifest output, so this warning is only visible through the swift package command line.
    Open source →
  4. 9.5.0 31 Jul 2026
    Release notes

    Update version to reflect new feature

    Open source →
    Release notes
    • Adds support for the new Android 17 permission ACCESS_LOCAL_NETWORK.
    Open source →
  5. 9.4.10 12 Jun 2026
    Release notes
    • Fixed Info.plist lookup in Package.swift to auto-apply permissions.
    • You may see build log "Plugin permission_handler_apple has a Package.swift for ios but is missing a dependency on FlutterFramework". FlutterFramework hasn't been added intentionally because it requires to bump flutter constraint to >=3.41.0.
    Open source →
  6. 9.4.9 01 Jun 2026
    Release notes
    • Rewrites copyleft code from stackoverflow to fix compliance issue.
    Open source →
  7. 9.4.8 29 May 2026
    Release notes
    • Adds Swift Package Manager (SPM) support for Flutter 3.24+. Permissions are enabled automatically based on usage description keys present in Info.plist — no additional configuration required beyond clearing DerivedData once after changes: rm -rf ~/Library/Developer/Xcode/DerivedData.
    • Moves ObjC sources to SPM-compatible layout (Sources/permission_handler_apple/). CocoaPods continues to work unchanged.
    • Bumps minimum iOS deployment target to 12.0.
    Open source →
  8. 9.4.7 10 Apr 2025
    Release notes
    • Increases minimum supported Flutter version to 3.3.0, and removes code only required for iOS versions prior to iOS 11.
    Open source →
  9. 9.4.6 20 Feb 2025
    Release notes
    • Adds the ability to handle CNAuthorizationStatusLimited introduced in ios18
    Open source →
  10. 9.4.5 04 Jun 2024
    Release notes
    • Fixes issue #1002, Xcode warning of the unresponsive of main thread when checking isLocationEnabled.
    Open source →
  11. 9.4.4 26 Mar 2024
    Release notes
    • Fixes potentially-nil return type of EventPermissionStrategy#getEntityType.
      • Fixes typo in comment for full calendar access.
    Open source →
  12. 9.4.3 26 Mar 2024
    Release notes
    • Adds the PERMISSION_LOCATION_WHENINUSE macro, which can be used instead of the PERMISSION_LOCATION macro, and exclusively enables the requestWhenInUseAuthorization and remove the requestAlwaysAuthorization when requesting location permission.
    • Improves error handling when Info.plist doesn't contain the correct declarations.
    • Adds support for the NSLocationAlwaysAndWhenInUseUsageDescription property list key.
    Open source →
  13. 9.4.2 21 Mar 2024
    Release notes
    • Updates the privacy manifest to include the use of the NSUserDefaults API. The permission_handler stores a boolean value to track if permission to always access the device location has been requested.
    Open source →
  14. 9.4.1 18 Mar 2024
    Release notes
    • Adds empty privacy manifest.
    Open source →
  15. 9.4.0 12 Feb 2024
    Release notes
    • Adds a new permission Permission.backgroundRefresh to check the background refresh permission status.
    Open source →
  16. 9.3.1 08 Feb 2024
    Release notes
    • Updates plist key from NSPhotoLibraryUsageDescription to NSPhotoLibraryAddUsageDescription.
    Open source →
  17. 9.3.0 17 Jan 2024
    Release notes
    • Adds support to request authorization to access SiriKit via the Permission.assistant permission.
    Open source →
  18. 9.2.0 15 Nov 2023
    Release notes
    • Adds the support for Permission.calendarWriteOnly and Permission.calendarFullAccess permissions which are introduced in iOS 17+.
    Open source →
  19. 9.1.4 13 Jul 2023
    Release notes
    • Adds checking whether Bluetooth service is enabled through Permission.bluetooth.serviceStatus.
    Open source →
  20. 9.1.3 06 Jul 2023
    Release notes
    • Fixes an issue where the Permission.location.request(), Permission.locationWhenInUse.request() and Permission.locationAlways.request() calls returned PermissionStatus.denied regardless of the actual permission status.
    Open source →
  21. 9.1.2 30 Jun 2023
    Release notes
    • Fixes an issue where the Permission.locationAlways.request() call hangs when the application was granted "Allow once" permissions for fetching location coordinates.
    Open source →
  22. 9.1.1 29 Jun 2023
    Release notes
    • Adds the new Android 13 permission "BODY_SENSORS_BACKGROUND" to PermissionHandlerEnums.h.
    Open source →
  23. 9.1.0 07 Jun 2023
    Release notes
    • Adds the "Provisional" permission status which is introduced in iOS 12+.
    Open source →
  24. 9.0.8 25 Mar 2023
    Release notes
    • Adds missing return statement causing the permission_handler to freeze when already requesting permissions.
    Open source →
  25. 9.0.7 17 Oct 2022
    Release notes
    • Adds new Android 13 permissions "SCHEDULE_EXACT_ALARM, READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and READ_MEDIA_AUDIO" to PermissionHandlerEnums.h
    Open source →
  26. 9.0.6 05 Oct 2022
    Release notes
    • Prevents appearing popup that asks to turn on Bluetooth on iOS
    Open source →
  27. 9.0.5 05 Oct 2022
    Release notes
    • Adds new Android 13 NEARBY_WIFI_DEVICES permission to PermissionHandlerEnums.h
    Open source →
  28. 9.0.4 31 Mar 2022
    Release notes
    • Adds flag inside UserDefaults to save whether locationAlways has already been requested and prevent further requests, which would be left unanswered by the system.
    Open source →
  29. 9.0.3 28 Feb 2022
    Release notes
    • Ensures a request for locationAlways permission returns a result unblocking the permission request and preventing the ERROR_ALREADY_REQUESTING_PERMISSIONS error for subsequent permission requests.
    Open source →
  30. 9.0.2 17 Feb 2022
    Release notes
    • Moves Apple implementation into its own package.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive