Skip to content

Documentation

react-native-deeplink-devtools

Deep-link tooling for React Native: inspect your app's route table, validate universal links and Android App Links, open links on simulators and devices, debug matches live, and generate TypeScript types for your deep links.

Deep linking is one of the most error-prone parts of a React Native app, and the failures are silent: a universal link that opens Safari instead of your app, an AASA file behind a redirect, an assetlinks.json with the wrong fingerprint, a route that no applinks component covers. None of that shows up until a user taps a link in production.

rndl turns those footguns into a check you run locally and in CI, so you never ship a broken link again.

rndl interactive in a terminal: picking a route, filling params, firing it, and the live match from the app
rndl routes                             # aligned table of every deep-linkable route
rndl validate --domain example.com      # check AASA + assetlinks.json, exit 1 on errors
rndl open '/users/:id' --params id=42   # build the URL and open it on a running device
rndl interactive                        # pick a route, fire it, watch the live match
rndl typegen --out src/deeplinks.gen.ts # generate typed, tsc-checked deep-link helpers

Every command works with both Expo Router (auto-detected app/ or src/app/ directory) and React Navigation (point --config at your linking module). Start with Getting started, or jump straight to a command from the sidebar.

What is in the box

PackagePurpose
react-native-deeplink-devtoolsThe rndl CLI: routes, validate, open, interactive, typegen
@deeplink-devtools/coreRoute-table model, matchers, validators (pure TS, no RN deps)
@deeplink-devtools/adapter-expo-routerBuilds a route table from an Expo Router app/ directory
@deeplink-devtools/adapter-react-navigationBuilds a route table from a React Navigation linking config
@deeplink-devtools/runtimeTiny in-app reporter for live deep-link debugging (dev-only)
@deeplink-devtools/typegenGenerates typed route helpers from your route table

There is also a GitHub Action that wraps rndl validate and rndl routes in CI, annotates pull requests inline, and uploads SARIF to code scanning. It is distributed from the repo rather than npm.

Compared to the alternatives

Taskrndlnpx uri-schemeManual (curl + editor)Attribution SDKs (Branch, Adjust)
Print the app's deep-link route tableyesnonono
Validate AASA / assetlinks.json in CIyesnopartial (by hand)no
Cross-check routes against AASAyesnonono
Open a link on a deviceyesyesyes (xcrun/adb)no
Live match debugging (fired vs matched)yesnonono
Typed deep links (tsc-checked)yesnonono
Attribution / marketing linksnononoyes

rndl is developer tooling for testing and validating the links your app already declares. It is not an attribution platform, and it does not modify your linking configuration.

Compatibility

AreaSupported
React Native>= 0.76, New Architecture (bridgeless) only
PlatformsiOS (simulator via simctl) and Android (device/emulator via adb)
RoutersExpo Router and React Navigation 7+
ExpoExpo-compatible; example apps are Expo dev-client apps
Node (CLI)>= 22

Out of scope

Attribution and marketing links (Branch/Adjust territory), push-notification deep links, and modifying your app's linking configuration. The toolkit inspects and validates; it does not rewrite your app.

The source lives at github.com/deeplink-devtools/react-native-deeplink-devtools under the MIT license.