product

WarpLink SDK 1.1.0: One Callback, Guaranteed Matches, Rebuilt Networking

WarpLink SDK 1.1.0 for iOS, Android, and React Native: one onLink callback for every link, a matchGuaranteed flag, automatic retries on weak connections, and campaign parameters on every resolved link.

WarpLink Team··5 min read

TL;DR: WarpLink SDK 1.1.0 is available today for iOS, Android, and React Native. One onLink callback receives every link, a new matchGuaranteed flag tells you when a match is deterministic, networking is rebuilt with automatic retries, and campaign parameters arrive with every resolved link. Most apps upgrade by changing one version number. The upgrade guide has the steps.

WarpLink is link infrastructure for mobile teams: deep linking, install attribution, and real-time analytics in one SDK. Version 1.1.0 ships for all three SDKs on the same day.

Pass onLink to configure() and the SDK routes every link to it: cold start, warm start, and deferred deep links after an install. Configuring the SDK also starts the deferred deep link check, which is the request that attributes the install. deepLink.isDeferred tells you which kind of link arrived.

The native SDKs take the same shape. On iOS, WarpLinkAppDelegate and WarpLinkSceneDelegate forward Universal Links for you. If you keep your own delegate, WarpLink.open(_:) and WarpLink.continue(_:) do the same in one line each, with no method swizzling. On Android, cold start is automatic and warm start is one call to WarpLink.onNewIntent(intent).

Each automatic step can be switched off, and the manual methods remain, so an app that routes links itself can keep doing so.

Know When a Match Is Guaranteed

Every resolved link carries matchGuaranteed. It is true only for a deterministic match: a Universal Link or App Link tap, the Play Install Referrer, or a device ID match. It is false for a probabilistic match made from device signals.

A probabilistic match is a best guess, and a guess can name the wrong person. Gate auto sign-in, personal data, and anything else you cannot show the wrong user on this flag, not on the match alone.

The query string on a tapped link travels into the resolved link. destination and deepLinkUrl carry the link's UTM and custom parameters, and customParams holds the full parameter set. A campaign tag you put on a link reaches the screen it opens, so your in-app analytics can read the same source, medium, and campaign as the click.

For the full pattern, see How to Pass UTM Parameters Through Deep Links Into Your App.

Networking Rebuilt for Weak Connections

Request handling in the iOS and Android SDKs is rebuilt around a dedicated retry layer. The React Native SDK uses the same native code on each platform.

When a link resolve or the deferred check meets a dropped or flaky connection, or a server error, the SDK tries again. It makes up to three attempts, each with its own time limit, within about 12 seconds in total. On a weak connection, the second attempt usually delivers, in about eight seconds.

Every attempt for one tap carries the same identifier, so a retried tap records one click in your analytics. A refusal, such as a missing or expired link, is never retried, because trying again cannot change the answer.

On iOS, a tap that arrives after a long stay in the background retries on a fresh connection. In React Native, one tap is still one onLink event, and if every attempt fails, the error arrives once as E_NETWORK_ERROR.

Smaller Additions

  • Is this URL yours? WarpLink.isWarpLinkURL(_:) on iOS and WarpLink.isWarpLinkUri(uri) on Android answer synchronously, with no network call. Use them when your app forwards every incoming URL and needs to decide which ones belong to WarpLink.
  • Declare your link domains. Set linkDomains in code, a WarpLinkDomains array in Info.plist on iOS, or an app.warplink.DOMAINS manifest entry on Android, so the SDK knows which custom domains are yours. The SDK also learns your verified domains from the server.
  • Typed Swift models. WarpLinkDeepLink conforms to Codable, Sendable, and Equatable, and customParams uses a typed JSONValue.
  • API key status on iOS. WarpLink.isApiKeyValid reports the server's verdict on your key. An invalid or revoked key also logs a warning, even with debug logging off.
  • Awaitable setup in React Native. configure() returns a Promise<void>.
  • Native SDKs included. @warplink/react-native 1.1.0 builds against the 1.1.0 iOS and Android SDKs.

How to Upgrade

Most apps upgrade by changing one version number, in Swift Package Manager on iOS, Gradle on Android, or npm on React Native, and rebuilding.

On iOS, check one thing first. customParams values are typed JSONValue, so code that casts a value out of the dictionary switches to a typed accessor. Replace customParams["id"] as? String with customParams["id"]?.stringValue.

The upgrade guide has the exact dependency line for each platform. The iOS, Android, and React Native setup guides cover onLink, link domains, and matchGuaranteed in full.

Frequently Asked Questions

How do I upgrade to WarpLink SDK 1.1.0? Change the SDK version to 1.1.0 in Swift Package Manager, Gradle, or npm, then rebuild. Most apps need no other change. On iOS, code that casts a value out of customParams, such as customParams["id"] as? String, switches to the typed accessor customParams["id"]?.stringValue. The upgrade guide lists the exact dependency line for each platform.

Do I have to use the onLink callback? No. The manual methods remain in 1.1.0, and each automatic step can be switched off in the SDK options, so an app that routes links itself can keep doing so.

What does matchGuaranteed mean? matchGuaranteed is true only for a deterministic match: a Universal Link or App Link tap, the Play Install Referrer, or a device ID match. It is false for a probabilistic match made from device signals. Gate auto sign-in, personal data, and anything else you cannot show the wrong person on this flag.

WarpLink Team

Building affordable, reliable link infrastructure for mobile teams. Deep linking, install attribution, and real-time analytics in one SDK.

Related Posts