finds.dev← search

// the find

icerockdev/moko-permissions

★ 653 · Kotlin · Apache-2.0 · updated Aug 2025

Runtime permissions controls for mobile (android & ios) Kotlin Multiplatform development

moko-permissions is a Kotlin Multiplatform library that wraps runtime permission requests for Android and iOS behind a single coroutine-based API. It's part of the broader MOKO library ecosystem from IceRock. The target audience is KMP teams who want to write permission-handling logic once in shared code rather than maintaining separate platform implementations.

The coroutine-based API is the right call — suspending until a permission is resolved fits naturally into viewmodel logic without callbacks or state machines. Splitting permissions into separate Gradle artifacts (permissions-bluetooth, permissions-camera, etc.) means you only pull in what you need. The Compose Multiplatform integration with PermissionsControllerFactory and BindEffect handles lifecycle binding cleanly. The test module ships a mock controller, so unit-testing viewmodels that request permissions doesn't require a device or emulator.

The library is tightly coupled to the MOKO ecosystem — the Compose samples assume moko-mvvm, and teams not already using MOKO will pull in dependency weight they don't need. Android 13+ granular media permissions (READ_MEDIA_IMAGES, READ_MEDIA_VIDEO) aren't listed in the supported permissions, which means any app targeting modern Android will hit gaps immediately. The 653-star count and 64 forks suggest limited adoption outside IceRock's own projects, so you're betting on their continued maintenance. There's no mention of handling the 'request rationale' step that Android requires before a second permission prompt, which is a real workflow hole.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →