For React Native

One app store link for your React Native app

Last updated

Your React Native app runs on iPhone and Android from one codebase. A Jumper.to link does the same for its store link: the App Store on iPhone, Google Play on Android, your website on a computer, and it works inside Instagram and TikTok. Open it with Linking.openURL and, if you like, read the Google Play referrer to see which campaign brought an install.

From store listings to one link

  1. Paste a store link. At app.jumper.to/new, paste your App Store or Google Play link. Jumper finds the other store and fills in the rest.
  2. Save it with your email. Confirm the code we send. The link and its QR code are live at once.
  3. Put it in your app. Behind “Share the app” and “Rate us”, one constant for both platforms.
  4. Add install links per channel. One per place you share the app: the stores count installs for each.

With one Jumper link, the store button needs no Platform.OS check and no pair of store addresses. The same constant goes into your share sheet, so a friend on Android gets Google Play even when you share from an iPhone.

import { Linking, Share } from 'react-native';

/** Your Jumper link: the App Store on iPhone, Google Play on Android, your site elsewhere. */
export const APP_LINK = 'https://oxi.cc/urapp';

export async function openStore() {
  await Linking.openURL(APP_LINK);
}

/** One link for iPhone and Android friends. */
export async function shareApp() {
  await Share.share({ message: `Get the app: ${APP_LINK}` });
}

On your app’s page in the dashboard, “Add the social set” makes links for YouTube, TikTok, Instagram, Facebook at once; add others for a newsletter, a poster or an ad. Each is a short random address. When someone taps it, Apple receives ct (channel and campaign, cut to 30 characters) plus your pt, and Google Play receives a referrer with utm_source, utm_medium, utm_campaign and jumper=<link id>. Firebase Analytics (React Native Firebase) reads the utm values on its own. Without it, read the referrer as below.

Read the Google Play referrer

Optional, Android only: Apple gives apps no referrer, so iPhone campaigns are read in App Store Connect. This uses react-native-play-install-referrer and splits the query by hand, because React Native’s own URLSearchParams has not always implemented get. In Expo, add it to a development build.

// npm install react-native-play-install-referrer
import { Platform } from 'react-native';
import { PlayInstallReferrer } from 'react-native-play-install-referrer';

function parseQuery(raw: string): Record<string, string> {
  const out: Record<string, string> = {};
  for (const pair of raw.split('&')) {
    const [key, value = ''] = pair.split('=');
    if (key) out[decodeURIComponent(key)] = decodeURIComponent(value.replace(/\+/g, ' '));
  }
  return out;
}

/** Calls back with the Jumper link id and campaign, or null. Android only. */
export function readJumperReferrer(onResult: (r: { link: string; campaign: string | null } | null) => void) {
  if (Platform.OS !== 'android') return onResult(null);
  PlayInstallReferrer.getInstallReferrerInfo((info, error) => {
    if (error || !info?.installReferrer) return onResult(null);
    const query = parseQuery(info.installReferrer);
    onResult(query.jumper ? { link: query.jumper, campaign: query.utm_campaign ?? null } : null);
  });
}

Store badges on your website

On a React or Next.js website, link the official store badges through your Jumper link with ?_jb=ios and ?_jb=android. The badge still opens its own store, and Jumper counts the taps on each badge with your campaign tags.

<!-- README.md: official store badges through your Jumper link, so Jumper counts badge taps -->
<a href="https://oxi.cc/urapp?_jb=ios"><img alt="Download the app on the App Store" height="48"
  src="https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg"></a>
<a href="https://oxi.cc/urapp?_jb=android"><img alt="Get the app on Google Play" height="48"
  src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"></a>

Privacy policy, terms and support pages

Both stores ask for a privacy policy link before they accept your app, and Apple also asks for a support link. With Jumper.to you write or paste each page as plain text (or upload a .md file) and get an address like oxi.cc/<your link>/privacy-policy. Pages are text only: headings, lists, tables and links, no images or scripts. Each page uses one credit, like a link. Paste the privacy policy address in App Store Connect and Google Play Console before you submit.

What Jumper.to does not do

It does not open your app when it is already installed (that needs Universal Links and App Links on your own domain), it has no deferred deep links, and it does not follow people inside your app. It is a link and its numbers, not an attribution platform.

Make the link for your React Native app

Paste your App Store or Google Play link. 3 free credits: each link or page uses one. Nothing to install in your app.

  • 3 free credits: each link or page uses one.
  • Nothing to install in your app
  • No credit card

Start from scratch

Questions

Do I need to add an SDK to my React Native app?

No. Jumper.to works on the link only. Nothing ships inside your app, and there is no new release to make. Reading the Google Play referrer is optional and uses Google’s own library.

How do I open the link from React Native?

Linking.openURL with the Jumper link. The system opens it and the store app takes over. It works the same in Expo and in bare React Native.

How do I read the Google Play referrer in React Native?

With react-native-play-install-referrer, which wraps Google’s Install Referrer library. Call it once on Android on first launch. In Expo it needs a development build, not Expo Go.

Does it work with Expo?

Yes. The link itself needs nothing in your app. Only reading the referrer uses a native module, which needs an Expo development build.

What does it cost?

3 free credits: each link or page uses one. Free credits renew every year. After that: $2 a credit a year, 10 credits for $10, 100 credits for $20. Taps are unlimited and there are no ads.

Will the link open my app if it is already installed?

No. A Jumper link always goes to the store, which shows an “Open” button when the app is installed. Opening a screen in your app needs Universal Links and App Links on your own domain.