
Lightweight library streamlining deep link management by abstracting platform-specific details, enabling unified cross-platform logic execution, rapid setup, and compatibility with various navigation libraries.
Rinku is a lightweight Kotlin Multiplatform library designed to simplify deep link handling across iOS and Android platforms. By abstracting platform-specific details, Rinku enables developers to manage deep links in a unified manner, enhancing code reuse and maintaining consistency across platforms.
The library is available via Maven Central
implementation("dev.theolm:rinku:<latest_version>")
implementation("dev.theolm:rinku-compose-ext:<latest_version>")For iOS, Swift export, filters, mappers, and other platforms, see the full documentation.
Inside MainActivity.onCreate, call RinkuInit():
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
RinkuInit()
setContent { App() }
}
}If you use Compose Multiplatform, wrap your root instead:
setContent {
Rinku { App() }
}@Composable
fun RootApp() {
var deepLink by remember { mutableStateOf<DeepLink?>(null) }
DeepLinkListener { deepLink = it }
MainScreen(deepLink)
}Rinku.handleDeepLink("https://example.com/second/third?user={\"name\":\"Theo\"}")
// Access parsed components
deepLink?.host
deepLink?.pathSegments // ["second", "third"]
deepLink?.parameters // { "user" = "{\"name\":\"Theo\"}" }For type-safe arguments, custom URL schemes, filters, and iOS setup, see the full documentation.
The samples/ directory contains runnable examples demonstrating integration with popular navigation libraries:
samples/common — Shared UI components and screen definitions used by both samplessamples/voyager — Voyager integration (shared module, Android app, iOS app)samples/decompose — Decompose integration (shared module, Android app)You can find the full documentation here
Rinku is released under the MIT License. See the LICENSE file for more details.
Rinku is a lightweight Kotlin Multiplatform library designed to simplify deep link handling across iOS and Android platforms. By abstracting platform-specific details, Rinku enables developers to manage deep links in a unified manner, enhancing code reuse and maintaining consistency across platforms.
The library is available via Maven Central
implementation("dev.theolm:rinku:<latest_version>")
implementation("dev.theolm:rinku-compose-ext:<latest_version>")For iOS, Swift export, filters, mappers, and other platforms, see the full documentation.
Inside MainActivity.onCreate, call RinkuInit():
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
RinkuInit()
setContent { App() }
}
}If you use Compose Multiplatform, wrap your root instead:
setContent {
Rinku { App() }
}@Composable
fun RootApp() {
var deepLink by remember { mutableStateOf<DeepLink?>(null) }
DeepLinkListener { deepLink = it }
MainScreen(deepLink)
}Rinku.handleDeepLink("https://example.com/second/third?user={\"name\":\"Theo\"}")
// Access parsed components
deepLink?.host
deepLink?.pathSegments // ["second", "third"]
deepLink?.parameters // { "user" = "{\"name\":\"Theo\"}" }For type-safe arguments, custom URL schemes, filters, and iOS setup, see the full documentation.
The samples/ directory contains runnable examples demonstrating integration with popular navigation libraries:
samples/common — Shared UI components and screen definitions used by both samplessamples/voyager — Voyager integration (shared module, Android app, iOS app)samples/decompose — Decompose integration (shared module, Android app)You can find the full documentation here
Rinku is released under the MIT License. See the LICENSE file for more details.