A new open-source library called Grant is positioning itself as a unified permission manager for Kotlin Multiplatform (KMP) projects, targeting the long-standing friction of handling Android's ActivityResultLauncher and iOS's AVCaptureDevice.requestAccess in shared code.
The library uses coroutines to create linear permission flows inside ViewModels, avoiding the callback patterns and platform-specific delegates that typically fragment cross-platform codebases. Grant's core pitch: check permission status, request access, and handle permanent denials through a single enum-based API without injecting Android Context or iOS delegates into shared logic.
The permanently-denied scenario is the sharp edge here. When users click "Don't ask again" on Android or deny iOS permissions, subsequent requests fail silently. Grant detects this state across platforms and surfaces a direct path to system settings, addressing a genuine UX pain point that often makes apps look broken.
KMP adoption is accelerating in enterprise mobile development as teams consolidate business logic across platforms. Runtime permissions remain one of the messier integration points. Android requires manifest entries and API-level checks for approximately 20 permission types. iOS uses separate frameworks for camera, photo library, and location access. Libraries like Moko Permissions and custom PermissionManager implementations in projects like KMPSamples tackle similar abstractions, though approaches vary between full libraries and lightweight delegate patterns.
The trade-offs matter. Grant's "headless" architecture decouples permission logic from UI code, which aligns with Clean Architecture principles. The alternative view: custom interfaces without external dependencies give teams granular control for security-sensitive enterprise apps where third-party library audits add overhead.
Grant's GitHub describes itself as "production-ready" and "battle-tested," though those claims lack independent verification. The library launched recently amid ongoing KMP permission discussions in the developer community. For CTOs evaluating KMP for mobile consolidation, this is another data point in the tooling maturity conversation. The fragmentation problem is real. Whether this specific solution becomes standard depends on production deployments we haven't seen yet.