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
Releases
latest 30-
9.6.111 Aug 2026 -
9.6.010 Aug 2026Release notes
Open source →- Adds opt-in per-flavor permissions for Swift Package Manager builds. An app can declare a
permission_handler.yamlnext to itspubspec.yamlmapping each flavor to theInfo.plistthat defines it, and only the selected flavor's permissions are compiled in — a permission declared bydevcan no longer reach aprodbinary. Without this file the previous behaviour is unchanged. This is a Swift Package Manager feature: CocoaPods builds set thePERMISSION_*macros from thePodfileand 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.selectis also the only YAML reader: a Swift package manifest cannot parse YAML, so the command translates the config into a generatedios/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 forgottenselect. It is a no-op without apermission_handler.yamland on CocoaPods builds. - Adds the
PERMISSION_HANDLER_FLAVORandPERMISSION_HANDLER_CONFIGenvironment variables to set the active flavor and the configuration file location explicitly. selectvalidates the configuration up front and refuses anything ambiguous: a build configuration claimed by more than one flavor, aconfigurationsthat is not a list, a non-string flavor name, or astrictthat is not a boolean. Being the only reader of the YAML, it is the only place where these can be reported at all.
- Adds opt-in per-flavor permissions for Swift Package Manager builds. An app can declare a
-
9.5.110 Aug 2026Release notes
Open source →- Fixes the Swift Package Manager permission auto-detection, which failed to find the host app's
Info.plistand silently compiled out every permission. Apps hit this in two ways: the manifest only ever looked atios/Runner/Info.plist, so build-configuration or flavor specific plists such asInfo-Debug.plistwere never seen (#1548), and the app-root lookup could walk past the app entirely.Info.plistlocations are now resolved fromINFOPLIST_FILEin the Xcode project and any.xcconfigfiles, with a scan ofios/as a fallback, and the usage description keys found across them are merged. - Adds the
PERMISSION_HANDLER_INFO_PLISTenvironment variable, which points the manifest at one or moreInfo.plistfiles 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_VERBOSEenvironment variable, which logs the app root, theInfo.plistfiles used, and the resolvedPERMISSION_*macros. - Emits a warning when no
Info.plistcan be located, instead of silently disabling every permission. Note that Xcode discards Swift package manifest output, so this warning is only visible through theswift packagecommand line.
- Fixes the Swift Package Manager permission auto-detection, which failed to find the host app's
-
9.5.031 Jul 2026 -
9.4.1012 Jun 2026Release notes
Open source →- 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.
-
9.4.901 Jun 2026 -
9.4.829 May 2026Release notes
Open source →- 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.
- Adds Swift Package Manager (SPM) support for Flutter 3.24+. Permissions are
enabled automatically based on usage description keys present in
-
9.4.710 Apr 2025Release notes
Open source →- Increases minimum supported Flutter version to 3.3.0, and removes code only required for iOS versions prior to iOS 11.
-
9.4.620 Feb 2025Release notes
Open source →- Adds the ability to handle
CNAuthorizationStatusLimitedintroduced in ios18
- Adds the ability to handle
-
9.4.504 Jun 2024Release notes
Open source →- Fixes issue #1002, Xcode warning of the unresponsive of main thread when checking isLocationEnabled.
-
9.4.426 Mar 2024Release notes
Open source →- Fixes potentially-nil return type of EventPermissionStrategy#getEntityType.
-
- Fixes typo in comment for full calendar access.
-
9.4.326 Mar 2024Release notes
Open source →- Adds the
PERMISSION_LOCATION_WHENINUSEmacro, which can be used instead of thePERMISSION_LOCATIONmacro, and exclusively enables therequestWhenInUseAuthorizationand remove therequestAlwaysAuthorizationwhen requesting location permission. - Improves error handling when
Info.plistdoesn't contain the correct declarations. - Adds support for the
NSLocationAlwaysAndWhenInUseUsageDescriptionproperty list key.
- Adds the
-
9.4.221 Mar 2024Release notes
Open source →- Updates the privacy manifest to include the use of the
NSUserDefaultsAPI. The permission_handler stores a boolean value to track if permission to always access the device location has been requested.
- Updates the privacy manifest to include the use of the
-
9.4.118 Mar 2024 -
9.4.012 Feb 2024Release notes
Open source →- Adds a new permission
Permission.backgroundRefreshto check the background refresh permission status.
- Adds a new permission
-
9.3.108 Feb 2024Release notes
Open source →- Updates plist key from
NSPhotoLibraryUsageDescriptiontoNSPhotoLibraryAddUsageDescription.
- Updates plist key from
-
9.3.017 Jan 2024Release notes
Open source →- Adds support to request authorization to access SiriKit via the
Permission.assistantpermission.
- Adds support to request authorization to access SiriKit via the
-
9.2.015 Nov 2023Release notes
Open source →- Adds the support for
Permission.calendarWriteOnlyandPermission.calendarFullAccesspermissions which are introduced in iOS 17+.
- Adds the support for
-
9.1.413 Jul 2023Release notes
Open source →- Adds checking whether Bluetooth service is enabled through
Permission.bluetooth.serviceStatus.
- Adds checking whether Bluetooth service is enabled through
-
9.1.306 Jul 2023Release notes
Open source →- Fixes an issue where the
Permission.location.request(),Permission.locationWhenInUse.request()andPermission.locationAlways.request()calls returnedPermissionStatus.deniedregardless of the actual permission status.
- Fixes an issue where the
-
9.1.230 Jun 2023Release notes
Open source →- Fixes an issue where the
Permission.locationAlways.request()call hangs when the application was granted "Allow once" permissions for fetching location coordinates.
- Fixes an issue where the
-
9.1.129 Jun 2023Release notes
Open source →- Adds the new Android 13 permission "BODY_SENSORS_BACKGROUND" to PermissionHandlerEnums.h.
-
9.1.007 Jun 2023Release notes
Open source →- Adds the "Provisional" permission status which is introduced in iOS 12+.
-
9.0.825 Mar 2023Release notes
Open source →- Adds missing return statement causing the permission_handler to freeze when already requesting permissions.
-
9.0.717 Oct 2022Release notes
Open source →- Adds new Android 13 permissions "SCHEDULE_EXACT_ALARM, READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and READ_MEDIA_AUDIO" to PermissionHandlerEnums.h
-
9.0.605 Oct 2022 -
9.0.505 Oct 2022Release notes
Open source →- Adds new Android 13 NEARBY_WIFI_DEVICES permission to PermissionHandlerEnums.h
-
9.0.431 Mar 2022Release notes
Open source →- Adds flag inside
UserDefaultsto save whetherlocationAlwayshas already been requested and prevent further requests, which would be left unanswered by the system.
- Adds flag inside
-
9.0.328 Feb 2022Release notes
Open source →- Ensures a request for
locationAlwayspermission returns a result unblocking the permission request and preventing theERROR_ALREADY_REQUESTING_PERMISSIONSerror for subsequent permission requests.
- Ensures a request for
-
9.0.217 Feb 2022