[{"data":1,"prerenderedAt":117},["ShallowReactive",2],{"doc:\u002Fdocs\u002Fsdks\u002Flynx":3},{"page":4,"toc":103,"updated":116},{"path":5,"title":6,"seoTitle":7,"description":8,"blocks":9},"\u002Fdocs\u002Fsdks\u002Flynx","Lynx","Lynx SDK: Native Identification for Lynx Apps","Identify devices in Lynx apps on iOS and Android through a native module over the Fingerly mobile SDKs.",[10,13,18,23,26,49,52,58,62,65,67,70,101],{"type":11,"text":12},"p","`@fingerly\u002Flynx` is a Lynx native module over the [iOS](\u002Fdocs\u002Fsdks\u002Fios) and [Android](\u002Fdocs\u002Fsdks\u002Fandroid) SDKs, with the same TypeScript API as [React Native](\u002Fdocs\u002Fsdks\u002Freact-native).",{"type":14,"level":15,"text":16,"id":17},"heading",2,"Requirements","requirements",{"type":19,"items":20},"list",[21,22],"Lynx 4.1 on iOS 13 or Android 6.0 (API 23) or newer.","HarmonyOS, Web and Lynxtron hosts are not supported.",{"type":14,"level":15,"text":24,"id":25},"Install","install",{"type":27,"steps":28},"steps",[29,39,44],{"title":30,"blocks":31},"Add the package",[32],{"type":33,"samples":34},"code",[35],{"label":36,"lang":37,"code":38},"Terminal","bash","pnpm add @fingerly\u002Flynx",{"title":40,"blocks":41},"Enable Lynx Native Library Autolink",[42],{"type":11,"text":43},"On Android, apply `org.lynxsdk.library-settings` in `settings.gradle` and `org.lynxsdk.library-build` in your app module. On iOS, add the `cocoapods-lynx-library` plugin to your Podfile, call `use_lynx_library!`, then run `pod install`.",{"title":45,"blocks":46},"Rebuild the host app",[47],{"type":11,"text":48},"The module is registered at build time.",{"type":14,"level":15,"text":50,"id":51},"Identify a device","identify-a-device",{"type":33,"samples":53},[54],{"label":55,"lang":56,"code":57},"src\u002Ffingerly.ts","ts","'background only'\nimport { load } from '@fingerly\u002Flynx'\n\nconst fingerly = await load({ apiKey: 'fly_pk_us_production_…' })\nconst result = await fingerly.identify({ tag: 'checkout' })\n\n\u002F\u002F Send result.requestId to your backend and make the decision there.",{"type":59,"tone":60,"text":61},"callout","note","Call the SDK from background-thread scripting. The module is marked `'background only'`.",{"type":14,"level":15,"text":63,"id":64},"API","api",{"type":11,"text":66},"`load({ apiKey, endpoint?, consent? })`, `identify({ tag?, submit? })`, `collect()`, `setConsent(state)` and `nativeVersion()` behave as in the [React Native SDK](\u002Fdocs\u002Fsdks\u002Freact-native#api). Errors are `FingerlyError` with an optional HTTP `status`; without consent they are `ConsentError`.",{"type":14,"level":15,"text":68,"id":69},"Verdicts","verdicts",{"type":71,"columns":72,"rows":76},"table",[73,74,75],"Verdict","Platform","What it means",[77,81,84,87,90,93,97],[78,79,80],"`instrumentation`","Both","An instrumentation toolkit is attached to the app.",[82,79,83],"`mitm`","Something is intercepting the app's encrypted traffic.",[85,79,86],"`automation`","A debugger or a test runner is driving the app.",[88,79,89],"`tampering`","The app's code has been hooked or modified.",[91,79,92],"`farm`","The device looks mass-provisioned or freshly reset.",[94,95,96],"`jailbreak`, `simulator`","iOS","Jailbroken device; iOS Simulator.",[98,99,100],"`root`, `emulator`, `appCloner`","Android","Rooted device; emulator; cloning framework.",{"type":11,"text":102},"Verdicts a platform cannot answer are returned as `{ value: false, confidence: 'low', reasons: [] }`, so the shape is the same on both.",[104,105,106,109,111,113,114,115],{"id":17,"text":16,"level":15},{"id":25,"text":24,"level":15},{"id":107,"text":30,"level":108},"step-add-the-package",3,{"id":110,"text":40,"level":108},"step-enable-lynx-native-library-autolink",{"id":112,"text":45,"level":108},"step-rebuild-the-host-app",{"id":51,"text":50,"level":15},{"id":64,"text":63,"level":15},{"id":69,"text":68,"level":15},"2026-09-17T16:57:29.000Z",1789667797816]