Skip to content

Start here

Getting started

Install the rndl CLI, print your app's deep-link route table, and validate your domain's universal-link files in a few minutes.

Install

Add the CLI to your app as a dev dependency:

npm install --save-dev react-native-deeplink-devtools

Or run it without installing:

npx react-native-deeplink-devtools routes

Once installed, the binary is rndl, so commands read rndl routes, rndl validate, and so on.

Requirements

  • Node >= 22 for the CLI.
  • React Native >= 0.76 on the New Architecture (bridgeless) for the in-app reporter.
  • Expo Router, or React Navigation 7+ with a linking configuration.

From your app's directory:

rndl routes

For Expo Router, rndl auto-detects the app/ or src/app/ directory (override with --app-dir). For React Navigation, point --config at your linking module:

rndl routes --config src/navigation/linking.ts          # default or `linking` export
rndl routes --config src/navigation/linking.ts#myExport # a specific named export

You get an aligned table of every deep-linkable route with its URL pattern and params. Add --json for machine-readable output (routes, API routes, layouts, and diagnostics).

See rndl routes for what each router adapter understands.

Validate your domain

rndl validate --domain example.com

This fetches your apple-app-site-association and assetlinks.json files and runs the checks Apple and Google actually enforce: HTTPS, no redirects, the 128KB AASA cap, JSON schema, appIDs, package names, and fingerprints. Run it from your app's directory and it also cross-checks the files against your route table. Errors exit 1, so the same command works as a CI gate.

See rndl validate for every check and flag.

Where next