API Reference
DetourProvider
Section titled “DetourProvider”Top-level React component that initializes the Detour SDK for deferred link matching. It manages the matching lifecycle and exposes the result via React context.
On mount, the provider:
- Checks if this is the first app entrance using persisted state in AsyncStorage
- If first entrance, collects a device fingerprint and queries the Detour API for a matching deferred link
- On Android, attempts deterministic matching using the install referrer
click_idbefore falling back to probabilistic fingerprinting - Updates context state with the result via
useDetourContext()
Use exactly one DetourProvider at the root of your app tree. The matching logic runs only once per app install, and subsequent app opens skip the API call entirely.
Signature
Section titled “Signature”function DetourProvider(props: { config: Config; children: React.ReactNode;}): JSX.Element;Config fields
Section titled “Config fields”-
API_KEYrequired -
Publishable API key from the Detour Dashboard. Used as a Bearer token for API calls.
-
appIDrequired -
Unique app identifier from the Detour Dashboard. Used to route matching requests to the correct app.
-
shouldUseClipboard -
iOS only. When
true, the SDK reads the device clipboard and includes it in the probabilistic fingerprint for deferred link matching. May trigger the iOS system paste permission prompt. Set tofalseto skip clipboard access.
Error handling
Section titled “Error handling”If the match API returns an error or network calls fail, the provider sets deferredLinkProcessed to true and keeps deferredLink and route as null, allowing your app to continue normally. Errors are logged to the console.
useDetourContext
Section titled “useDetourContext”Hook that returns the current deferred link matching state from the nearest DetourProvider. Throws an error if called outside of a DetourProvider tree.
Signature
Section titled “Signature”function useDetourContext(): DeferredLinkContext;Returned object
Section titled “Returned object”-
deferredLinkProcessed -
trueonce the SDK has finished the deferred link matching attempt, regardless of whether a link was found. Use this to conditionally show a loading/splash screen during cold start. -
deferredLink -
The matched link, a
URLobject for full URLs (e.g.https://yourorg.godetour.link/app-hash/promo) or a pathname string.nullif no match was found or an error occurred. -
route -
Normalized in-app route extracted from the matched link. For full URLs, the first path segment (app hash) is stripped and query string is preserved (e.g.
/promo/123?utm=1).nullif no link was matched.
Config
Section titled “Config”type Config = { appID: string; API_KEY: string; shouldUseClipboard?: boolean;};Configuration object passed to DetourProvider. See Config fields for detailed descriptions.
DeferredLinkContext
Section titled “DeferredLinkContext”type DeferredLinkContext = { deferredLinkProcessed: boolean; deferredLink: string | URL | null; route: string | null;};Shape of the value returned by useDetourContext.
-
deferredLinkProcessed -
trueonce the SDK has finished all link detection attempts.falseduring cold start processing. -
deferredLink -
Matched link data or
nullif no match found. -
route -
Extracted in-app route or
null. For full URLs, the first path segment (app hash) is stripped.