age_verification
A Flutter plugin for querying platform age signals via Google Play Age Signals on Android and Apple DeclaredAgeRange on iOS, for regional age verification compliance.
What this package is like to depend on
Last release 1 months ago
07 Jul 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 8 of 8 stable releases
2 versions withdrawn
withdrawn after publishing
2 months old
10 releases · first in 2026
10 releases in the last 12 months
see the full history below
Release timeline
10 releases · Jun 2026 to Jul 2026Releases
latest 10-
0.2.707 Jul 2026Release notes
Open source →Dart
- Added
AgeVerification.resolveErrorCode(String? code)— resolves a rawPlatformException.codestring into a typedAgeVerificationErrorCode, ornullif it doesn't match a known value
- Added
-
0.2.607 Jul 2026Release notes
Open source →Replace the vague
playServicesErrorcatch-all with seven dedicated
error codes (playStoreNotFound,playServicesNotFound,
cannotBindToService,playStoreVersionOutdated,
playServicesVersionOutdated,clientTransientError,appNotOwned)
and addinternalError, giving everyAgeSignalsErrorCodevalue its
own correspondingAgeVerificationErrorCode. Fix a test typo
(NOT_INITIALISED→NOT_INITIALIZED). Bump version to 0.2.6.BREAKING CHANGE:
AgeVerificationErrorCode.playServicesErrorremoved.Release notes
Open source →Android
- Fixed a test typo (
NOT_INITIALISED→NOT_INITIALIZED) that referenced a non-existent enum constant
Breaking changes
AgeVerificationErrorCode.playServicesErrorhas been removed. It was a vague catch-all for five distinctAgeSignalsErrorCodeconditions; each now has its own dedicated value:playStoreNotFound,playServicesNotFound,cannotBindToService,playStoreVersionOutdated,playServicesVersionOutdated. Two more Android-only conditions that previously fell back toapiNotAvailable/apiErrornow also have dedicated values:clientTransientError,appNotOwned,internalError. Together with the existingapiNotAvailable,networkError, andsdkVersionOutdated, everyAgeSignalsErrorCodevalue now maps 1:1 to anAgeVerificationErrorCodevalue.
- Fixed a test typo (
-
0.2.507 Jul 2026Release notes
Open source →Android
- Fixed
AgeSignalsExceptionerror code mapping to use theAgeSignalsErrorCodeenum instead of hardcoded numeric literals, avoiding mismatches if the SDK's internal codes change
- Fixed
-
0.2.412 Jun 2026Release notes
Open source →iOS
- Added
skipEligibilityCheckparameter toverifyAge— whentrue, theisEligibleForAgeFeaturescheck on iOS 26.2+ is bypassed andrequestAgeRangeis called directly; useful ifisEligibleForAgeFeatureshangs or is unreliable in your region. Has no effect on Android. Defaults tofalse(existing behavior).
- Added
-
0.2.306 Jun 2026 -
0.2.206 Jun 2026Release notes
Open source →iOS
- Replaced deprecated
UIApplication.keyWindowandUIWindowScene.windowsusage inpresentationViewController()withUIWindowScene.keyWindow(available since iOS 15); primary path targets the foreground-active scene, fallback searches all connected scenes
Breaking changes
verifyAgeparameterageGatesis now named instead of positional — call sites must be updated toverifyAge(ageGates: [...])orverifyAge()AgeVerificationis now a singleton — useAgeVerification.instanceinstead of constructing instances directly
Housekeeping
- Added
topicstopubspec.yamlfor pub.dev discoverability - Reformatted Android and iOS source files to consistent 4-space indentation (no logic changes)
- Replaced deprecated
-
0.2.103 Jun 2026Release notes
Open source →iOS
- Added CocoaPods podspec (
ios/age_verification.podspec) for compatibility with older Flutter tooling that does not support Swift Package Manager
Example
- Fixed example iOS Xcode project to correctly reference the
age_verificationSwift Package Manager package
- Added CocoaPods podspec (
-
0.2.003 Jun 2026Release notes
Open source →Breaking changes
- Renamed
AgeSignalsStatus→AgeVerificationStatusfor naming consistency across the public API
- Renamed
-
0.1.003 Jun 2026 withdrawnRelease notes
Open source →Initial working release.
Android
- Integrated Google Play Age Signals API (
com.google.android.play:age-signals:0.0.3) - Implements
AgeSignalsManagerFactory,AgeSignalsManager.checkAgeSignals(), and fullAgeSignalsVerificationStatusmapping - Reports
ageLower,ageUpper, andinstallIdfromAgeSignalsResult - Maps all
AgeSignalsExceptionerror codes to typedAgeVerificationErrorCodevalues - Mock mode uses Google's official
FakeAgeSignalsManagerfor accurate simulation
iOS
- Integrated Apple DeclaredAgeRange framework (iOS 26.0+)
- Calls
AgeRangeService.shared.requestAgeRange(ageGates:in:)with 1–3 age gates - Checks
isEligibleForAgeFeatureson iOS 26.2+ to skip prompt for non-applicable regions - Maps
AgeRangeDeclaration(.selfDeclared,.guardianDeclared) toAgeDeclarationSource - Catches
AgeRangeService.Error.notAvailableand.invalidRequestas typed errors - Returns
apiNotAvailableon iOS < 26.0 or when DeclaredAgeRange is not linked - Uses Swift Package Manager (CocoaPods podspec added in 0.2.1)
Dart
- Type-safe pigeon channel:
AgeVerificationApi,AgeVerificationResult,AgeVerificationStatus,AgeDeclarationSource,AgeVerificationErrorCode - Public API:
AgeVerification.init({mockConfig})andAgeVerification.verifyAge(ageGates) AgeVerificationMockConfig— pass toinit()to bypass native APIs on both platforms for testing
- Integrated Google Play Age Signals API (
-
0.0.103 Jun 2026 withdrawn