Skip to content

Repository files navigation

@limelink/react-native

React Native bridge for LimeLink deep links, universal/app links, analytics, and deferred deep links on Android and iOS.

Support

  • Install floor: React Native 0.81 with React 19.1+
  • New Architecture through legacy-module interoperability
  • Hermes (Legacy Architecture and JSC are unsupported)
  • Community CLI and Expo Development Builds (expo-dev-client)
  • Android API 24+
  • iOS 12+

This package is not a direct TurboModule. RN 0.81.5 is the minimum verification target; RN 0.85 Community, RN 0.86 Expo Development Builds, and the RN 0.86.2 packed-tarball matrix provide New Architecture interoperability evidence in the verification matrix. Expo Go and web are not supported.

Install

pnpm add @limelink/react-native

Android consumers add the public repository to android/settings.gradle:

dependencyResolutionManagement {
  repositories {
    google()
    mavenCentral()
    maven {
      url = uri("https://hellovelop.github.io/limelink-aos-sdk-binary/repository")
      content { includeGroup("org.limelink") }
    }
  }
}

For React Native templates that prefer project repositories, add the same Maven block under allprojects.repositories in android/build.gradle. The Expo plugin configures both locations idempotently.

The package resolves:

  • Android: org.limelink:limelink-aos-sdk:0.4.1
  • iOS: binary CocoaPod LimelinkIOSSDK 0.4.1

No GitHub credentials or native source overrides are required. Expo Development Build users add the packaged config plugin:

{
  "expo": {
    "plugins": ["@limelink/react-native"]
  }
}

The plugin configures the Android Maven repository and warm-link Activity intent update. Expo Go cannot load the native module.

Usage

import LimeLink from '@limelink/react-native';

const subscription = LimeLink.addLinkListener({
  onDeeplinkReceived(result) {
    console.log(result.resolvedUri);
  },
  onDeferredDeepLinkNotFound() {
    console.log('No deferred link');
  },
  onDeeplinkError(error) {
    console.error(error.code, error.message, error.platform);
  },
});

LimeLink.initialize({
  projectId: '550e8400-e29b-41d4-a716-446655440000',
  loggingEnabled: __DEV__,
});

const outcome = await LimeLink.handleDeferredDeepLink();
if (outcome.status === 'matched') console.log(outcome.result.resolvedUri);
if (outcome.status === 'failed') console.error(outcome.error);

subscription.remove();

Deferred deep links are supported automatically without an initialization flag. Manual deferred calls deliver through both the Promise and native listener. Choose one as the navigation owner.

On iOS, forward Linking.getInitialURL() after initialization and later Linking URL events. Android 0.4.1 owns cold and warm App Link lifecycle handling; do not recreate and forward the initial URL as a new Intent. MainActivity.onNewIntent must call setIntent(intent).

Configure Android App Links and iOS Associated Domains for the assigned LimeLink domain.

Development

pnpm install
pnpm build
pnpm typecheck
pnpm lint
pnpm test
pnpm docs:validate

Run examples:

pnpm community:android
pnpm community:ios
pnpm expo:android
pnpm expo:ios

Replace the sample Project ID and example.limelink.org before testing real links. See docs/README.md for the API contract, architecture, and test strategy.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages