@arlotv/embed-react-native
v0.3.0
Published
Arlo embed SDK for React Native — rails, streaming chat, telemetry, deeplink attribution. Standalone; works alongside @dotstudiopro/core.
Downloads
855
Readme
@arlotv/embed-react-native
Arlo embed SDK for React Native — rails, streaming chat, telemetry, and deeplink
conversion attribution. Standalone: no dependency on react-native (you inject
Linking/AppState) and no dependency on @dotstudiopro/core — it sits alongside
any stack.
Install
npm i @arlotv/embed-react-nativeQuick start
import { Linking, AppState } from 'react-native';
import { createArloEmbedRN } from '@arlotv/embed-react-native';
export const arlo = createArloEmbedRN({
apiKey: Config.ARLO_API_KEY, // your org's publishable key
customerId: user.externalRef, // YOUR user id — never PII
linking: Linking,
appState: AppState,
});
arlo.start(); // begins deeplink rec_id capture (cold + warm)Rails + similar + chat (same API as @arlotv/embed-core)
const { rails } = await arlo.rails({ likes: ['dune-part-two'] });
// "More Like This" rail for a PDP — items carry ids; hydrate from your catalog
const { items } = await arlo.similar({ contentId: 'dune-part-two', max: 12 });
const turn = arlo.chat('something scary but fun', {
onToken: (t) => append(t),
onPicks: (cards) => setPicks(cards),
onAttribution: (a) => setAttribution(a), // required:true → you must render it
onDone: () => setThinking(false),
});
// turn.cancel() on unmountChat streams over XHR (React Native supports progressive responseText); it
falls back to a one-shot poll automatically.
Conversion attribution (the AVOD funnel)
When a user lands from an Arlo deeplink (…?src=arlo&aid=<rec_id>), the SDK
captures the rec_id. Report the funnel from your player callbacks:
player.onStart = () => arlo.trackVideoStart({ contentId });
player.onAdFill = () => arlo.trackAdFill({ contentId });
player.onEnded = () => arlo.trackVideoComplete({ contentId });Events without a rec_id are dropped with a console warning — an
unattributable conversion is noise. Pass { recId } explicitly if you manage
attribution yourself.
Using alongside @dotstudiopro/core
This SDK does not touch core. Typical DSP-fleet wiring: create the client in
your app bootstrap (next to DPROContext setup), call arlo.start() once, and
call the three funnel helpers from your @dotstudiopro/player event handlers.
No core configuration changes.
Lifecycle
- Telemetry flushes on AppState
background/inactive+ a 15s safety interval (flushIntervalMs: 0disables). - Call
arlo.destroy()on teardown: unsubscribes and final-flushes.
