Skip to main content
Case study

Click Defeat ships li-nk.me smart links inside Expo

Click Defeat needed universal links, deferred deep linking, and campaign attribution without running its own link infrastructure. This case study outlines the exact setup used to roll out li-nk.me in an Expo-managed app and keep routing predictable across installs.

App architecture

Expo-managed React Native app with Firebase services and Expo Router.

Linking goal

Reliable universal links with deferred deep linking and clean UTM handoff.

Scope

Native config, runtime SDK setup, routing safeguards, and analytics mapping.

Click Defeat in action

A quick look at the in-app experience where universal links and deferred deep links land.

Click Defeat lobby screen with match options
Lobby
Click Defeat leaderboard screen
Leaderboard
Click Defeat gameplay screen showing push action
Gameplay

Two high-impact use cases

The integration focuses on attribution-ready marketing links and frictionless in-app invites.

UTM-powered universal links

Click Defeat publishes li-nk.me links on Facebook posts with campaign-specific UTM tags. Each link points to the main landing page at https://click-defeat.com, where the footer “Download now” button uses a second li-nk.me link that merges UTMs based on LinkMe settings. Because these are deferred links, attribution survives the App Store pasteboard flow and the Play Store install referrer after install.

App invites & sharing

Player invites and share flows call the LinkMe Node SDK to create links server-side. This keeps attribution and deep link routing consistent, while letting the backend generate unique invite URLs on demand.

Implementation highlights

The team focused on a minimal, repeatable integration that could be lifted into future projects.

  1. 1.Installed the SDK from the GitHub package to keep the app aligned with li-nk.me releases.
  2. 2.Configured the Expo plugin with the universal link host, associated domains, and app scheme.
  3. 3.Passed app keys from EXPO_PUBLIC_* env vars so the SDK could initialize at runtime.
  4. 4.Initialized the SDK once in the root layout with guard logic for strict mode.
  5. 5.Handled initial, listener, and deferred payloads with a shared router normalizer.
  6. 6.Added a router catch-all to redirect unknown universal links to the app shell.
  7. 7.Mapped LinkMe UTM fields into Firebase default event parameters and a debug event.
  8. 8.Validated deep linking across running, cold start, and deferred install flows.

Link resolution flow

The diagram captures how Click Defeat handles universal links, deferred installs, and analytics handoff.

Predictable routing

Universal links, deferred deep links, and in-app paths resolve consistently.

Faster QA loops

A single checklist covers configuration, routing, and analytics verification.

Reusable playbook

The integration notes can be reused as a template for future Expo apps.

Ready to replicate the rollout?

Follow the same setup to ship li-nk.me smart links in your own Expo app, with consistent routing and analytics context from the first tap.