Skip to content

CLI commands

rndl interactive

Fire deep links interactively and watch what your app matches, live: pick a route, fill in params, fire, and see the fired URL side by side with what the router resolved.

rndl interactive is the debugging loop for deep links: pick a route from your route table, fill in its params, fire it on a device, and see exactly what your app matched, side by side with what you fired. Mismatches are highlighted.

rndl interactive                                    # auto-detects your app; fires wherever a device runs
rndl interactive --platform ios --scheme myapp      # target one platform / scheme explicitly
rndl interactive --config src/navigation/linking.ts # React Navigation linking module

The live match view

The live view needs the runtime reporter in your development build. One hook:

// Expo Router: app/_layout.tsx
import { useDeepLinkReporter } from '@deeplink-devtools/runtime/expo-router';
useDeepLinkReporter();

The reporter connects to the CLI over a localhost WebSocket. On Android, rndl interactive sets up the adb reverse tunnel automatically, so the same localhost address works on emulators and USB devices. Without the reporter, interactive still builds and fires links; you just do not get the live match confirmation back.

When the app connects, any events it buffered while disconnected (including the app's initial launch URL) are delivered first, so you may see a few observed deep links before your first fire.

Flags

FlagDescription
--port <port>Dev-transport port the reporter connects to. Defaults to 7635.
--platform <ios|android|both>Require a specific platform instead of firing wherever a device runs.
--device <id>Simulator UDID/name or adb serial. Requires an explicit --platform.
--scheme <scheme>URL scheme or prefix for built links.
--app-dir <dir>Expo Router app directory for the route lookup.
--config <module[#export]>React Navigation linking module for the route lookup.
--package <name>Android package that should receive the intent.

interactive is a TUI and needs a real terminal: it refuses to start when stdin or stdout is not a TTY (for scripted runs, use rndl open instead).