Deep linking in React Native

The library side is well documented. The failures come from the native configuration underneath it and from the browsers your links get tapped in.

6 August 2026 by PAD team

The two halves

React Native gives you Linking for reading incoming URLs and navigation libraries for turning them into screens. Neither of those is where things break. Every deep link problem I have seen in React Native projects lives in the native configuration below the JavaScript.

Reading the URL

import { Linking } from 'react-native';

// cold start
const url = await Linking.getInitialURL();

// warm start
Linking.addEventListener('url', ({ url }) => route(url));

Handle both. Using only the listener means links work when the app is running and silently do nothing when it is launched by the link, which is the most common report.

iOS configuration

The last one is quietly responsible for a lot of "universal links do not work in React Native" threads.

Android configuration

Intent filters in the manifest with android:autoVerify="true", plus assetlinks.json on the domain listing the correct signing fingerprint. With Play App Signing, the fingerprint that matters is the one Google re-signs with, not your upload key.

The part no library covers

If your links get tapped inside Instagram or Facebook, none of the above runs. The in-app browser intercepts navigation before the operating system decides anything, and a store link there ends on a blank page. That is a separate problem with a separate fix, and it lives in the link rather than in the app.

For marketing links that get tapped in social apps, our address handles the escape before your app ever sees the URL.

Create a link

Related