NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
A cross-platform Flutter plugin for age assurance, age gating, parental consent, and regulatory age requirements on iOS and Android.
Last release 1 months ago
08 Sep 2026
Too new to tell
only 2 release windows
Nearly every release is documented
notes for 3 of 3 stable releases
Nothing withdrawn
no release was ever pulled
1 months old
3 releases · first in 2026
One column per month.
Native iOS support for AgeGatingKit — an open-source SDK that simplifies Apple's age assurance, regulatory features, parental consent, and significant
Native iOS support for AgeGatingKit — an open-source SDK that simplifies Apple's age assurance, regulatory features, parental consent, and significant app change APIs.
This release includes a complete UIKit example project demonstrating the recommended AgeGatingKit integration flow.
async/await)In Xcode:
https://github.com/Sritejathuraka/AgeGatingKit.git
Then import the package:
import AgeGatingKitAdd the Declared Age Range capability to your application target:
Target → Signing & Capabilities → + Capability → Declared Age Range
Make sure your application is properly configured for Apple's age-related APIs before calling AgeGatingKit.
The recommended integration flow is:
Check Age
↓
Check Eligibility
↓
Read Age Range
↓
Inspect Regulatory Features
↓
Request Parental Consent (if required)
↓
Observe Parent Decision
↓
Show Adult Notification (if required)
Start by calling:
let result = try await AgeGating.check(
ageGates: [13, 16, 18],
presentingViewController: self
)AgeGatingResult provides:
result.isEligibleForAgeFeatures
result.ageRange
result.regulatoryFeaturesThe age gates [13, 16, 18] are an example. Applications should provide the age thresholds appropriate for their own product.
Before using the returned age information, check whether age features are available:
guard result.isEligibleForAgeFeatures == true else {
// Age features are unavailable.
// Apply your application's fallback behavior.
return
}isEligibleForAgeFeatures is optional, so applications can also explicitly handle all states:
switch result.isEligibleForAgeFeatures {
case true:
print("Age features available")
case false:
print("Age features unavailable")
case nil:
print("Eligibility unknown")
}When available, AgeGatingKit returns the age range provided by the platform:
if let ageRange = result.ageRange {
let lowerBound = ageRange.lowerBound
let upperBound = ageRange.upperBound
print("Lower Bound:", lowerBound as Any)
print("Upper Bound:", upperBound as Any)
}Either boundary may be unavailable depending on the range returned by the platform.
Your application should use this result according to its own age-gating requirements.
After checking eligibility, inspect the regulatory features:
guard let features = result.regulatoryFeatures else {
return
}AgeGatingKit exposes:
features.declaredAgeRangeRequired
features.significantAppChangeRequiresParentalConsent
features.significantAppChangeRequiresAdultNotificationThese values tell your application which platform flows are required for the current user and regulatory context.
Check:
if features.declaredAgeRangeRequired {
// Declared age range handling is required.
}If:
features.significantAppChangeRequiresParentalConsent == truerequest parental consent:
try await AgeGating.requestSignificantAppUpdatePermission(
description: "Parental consent required for changes in the latest release.",
presentingViewController: self
)The parental decision may arrive asynchronously.
Calling this method starts the parental consent flow; it should not be treated as the final approval result.
Listen for parental consent responses:
for await response in AgeGating.significantAppUpdateResponses() {
switch response.decision {
case .approved:
print("Parent approved")
case .denied:
print("Parent denied")
case .unknown:
print("Parent decision unknown")
@unknown default:
print("Unrecognized parent decision")
}
}For example, an application can keep an observation task:
private var responseTask: Task<Void, Never>?
private func observeParentalConsentResponses() {
responseTask = Task {
for await response in
AgeGating.significantAppUpdateResponses() {
switch response.decision {
case .approved:
// Parent approved the request.
break
case .denied:
// Parent denied the request.
break
case .unknown:
break
@unknown default:
break
}
}
}
}Cancel the observation when it is no longer needed:
deinit {
responseTask?.cancel()
}If:
features.significantAppChangeRequiresAdultNotification == trueshow the adult notification:
try await AgeGating.showSignificantAppUpdateAdultNotification(
description: "Please review changes in the latest release.",
presentingViewController: self
)do {
let result = try await AgeGating.check(
ageGates: [13, 16, 18],
presentingViewController: self
)
guard result.isEligibleForAgeFeatures == true else {
return
}
// Age Range
if let ageRange = result.ageRange {
print("Lower Bound:", ageRange.lowerBound as Any)
print("Upper Bound:", ageRange.upperBound as Any)
}
// Regulatory Features
guard let features = result.regulatoryFeatures else {
return
}
print(
"Declared Age Range Required:",
features.declaredAgeRangeRequired
)
// Parental Consent
if features.significantAppChangeRequiresParentalConsent {
try await AgeGating.requestSignificantAppUpdatePermission(
description:
"Parental consent required for changes in the latest release.",
presentingViewController: self
)
}
// Adult Notification
if features.significantAppChangeRequiresAdultNotification {
try await AgeGating.showSignificantAppUpdateAdultNotification(
description:
"Please review changes in the latest release.",
presentingViewController: self
)
}
} catch {
print("AgeGatingKit Error:", error)
}Note: Parental consent responses are asynchronous. Use
AgeGating.significantAppUpdateResponses()to observe the parent's final decision.
A complete UIKit example application is included in the repository:
examples/
└── example-ios/
└── example-age-gating-iOS/
The example demonstrates:
Clone the repository:
git clone https://github.com/Sritejathuraka/AgeGatingKit.gitThen open:
examples/example-ios/example-age-gating-iOS/
example-age-gating-iOS.xcodeproj
Configure your development team and required capabilities, then build and run on a supported device.
A standalone iOS example project is also available in the Assets section of this release.
Download:
AgeGatingKit-iOS-Example-v1.0.2.zip
Unzip the project and open:
example-age-gating-iOS.xcodeproj
This allows developers to explore AgeGatingKit without cloning the complete repository.
AgeGatingKit provides a simplified interface to platform-provided age assurance and regulatory signals.
Applications remain responsible for determining:
AgeGatingKit is a developer tool and does not constitute legal advice.
AgeGatingKit is released under the MIT License.
Built for developers integrating age-aware experiences on iOS.
AgeGatingKit — one API for age assurance across iOS, Android, and Flutter.
checkAge payload consistency by always returning platform: ios and ageSignalsAccessStatus: notApplicable in SwiftPM implementation.AgeGatingResult platform parsing to tolerate casing/whitespace differences.Fix SwiftPM package paths
Fix SwiftPM package paths
AgeGatingKit is a cross-platform Flutter plugin that provides a unified API for integrating platform-provided age assurance and age-gating capabilitie
AgeGatingKit is a cross-platform Flutter plugin that provides a unified API for integrating platform-provided age assurance and age-gating capabilities on iOS and Android.
This is the first public release of the AgeGatingKit Flutter plugin.
The plugin provides a Flutter-friendly abstraction over Apple's age-related APIs and Android's age signals, allowing applications to make age-appropriate access decisions while keeping platform-specific implementation details behind a consistent Dart API.
Use a single Flutter API to retrieve age-related signals from the underlying platform.
AgeGatingKit handles the communication between Flutter and the native iOS and Android implementations.
Integration with Apple's age-related APIs, including:
The plugin exposes the platform-provided results to Flutter so applications can apply their own age-gating and access policies.
Integration with Android age signals to retrieve available age-related information and regulatory requirements.
The Android implementation exposes the platform response through the same Flutter API used by iOS.
Applications can initiate the supported parental consent flow when the platform indicates that parental authorization is required.
Applications can trigger the supported platform flow for notifying an adult or acknowledging significant application changes when required.
AgeGatingKit exposes regulatory feature information returned by the underlying platform so applications can determine whether additional actions are required.
Add AgeGatingKit to your Flutter project's pubspec.yaml:
dependencies:
age_gating_kit: ^1.0.0Then install the dependency:
flutter pub getImport the package:
import 'package:age_gating_kit/age_gating_kit.dart';Use AgeGatingKit to request the available age-gating information from the current platform.
final result = await AgeGatingKit.checkAgeGate();The returned result can be used by your application to determine the appropriate experience based on the age information and regulatory features provided by the operating system.
The exact information available depends on the platform, OS version, account configuration, region, and platform eligibility.
AgeGatingKit is designed to rely on age-related signals provided by the operating system rather than requiring applications to directly collect a user's date of birth.
The library does not provide its own identity verification service and does not independently determine a user's age.
Developers are responsible for determining how platform-provided signals should be used within their application and for complying with applicable laws, platform policies, and regulatory requirements.
| Platform | Support |
|---|---|
| iOS | ✅ Supported |
| Android | ✅ Supported |
| Flutter | ✅ Unified API |
Some functionality depends on platform APIs and may only be available on supported operating-system versions and eligible accounts/devices.
AgeGatingKit provides an abstraction over platform-provided age signals.
It does not guarantee regulatory compliance by itself.
Applications integrating the library are responsible for:
See the repository README for installation instructions, platform configuration, API usage, and implementation examples.
Version: 1.0.0
Flutter tag: flutter-v1.0.0
This release introduces the initial Flutter implementation of AgeGatingKit for iOS and Android.
AgeGatingKit is available under the MIT License.
Initial public release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →