@xorgate/react-native 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-engine.js","sourceRoot":"","sources":["../src/replay-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ReactNode } from "react";
2
+ import type { ViewProps } from "react-native";
3
+ import type { VideoContentFit } from "expo-video";
4
+ import type { StreamKey } from "@xorgate/react";
5
+ import type { UseReplayPlayer } from "./use-replay-player.js";
6
+ export interface ReplayVideoProps extends Omit<ViewProps, "children"> {
7
+ player: UseReplayPlayer;
8
+ streamKey: StreamKey;
9
+ /** Defaults to "contain", matching the web component's object-fit. */
10
+ contentFit?: VideoContentFit;
11
+ }
12
+ export declare function ReplayVideo(props: ReplayVideoProps): ReactNode;
13
+ //# sourceMappingURL=replay-video.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-video.d.ts","sourceRoot":"","sources":["../src/replay-video.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACnE,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,sEAAsE;IACtE,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AA6CD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,CA0B9D"}
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Platform, StyleSheet, View } from "react-native";
3
+ import { VideoView } from "expo-video";
4
+ /**
5
+ * One replay lane's picture, and nothing else: no transport bar, no scrubber,
6
+ * no gap overlay, no loading state. Same minimalism as `LiveVideo` and as the
7
+ * web `ReplayVideo` — read `player.laneState(streamKey)` and render those
8
+ * yourself.
9
+ *
10
+ * What it does that a single `VideoView` cannot is hold BOTH of the lane's
11
+ * players mounted, the hidden one already loaded with the next segment. The
12
+ * boundary is then an opacity flip between two live views rather than a
13
+ * source change on one, which is the whole of why the seam is a picture
14
+ * change instead of a reload. `nativeControls` is off: the clock owns the
15
+ * transport, and a native scrubber would drive one segment's file rather than
16
+ * the replay.
17
+ *
18
+ * On Android the two views are `TextureView`s rather than the default
19
+ * `SurfaceView`s, and that is load-bearing — see {@link ANDROID_SURFACE}.
20
+ */
21
+ /**
22
+ * What the lane's two views are rendered INTO on Android, and the one thing
23
+ * about this component that is not cosmetic.
24
+ *
25
+ * The seam is an opacity flip between two overlapping views, and `expo-video`
26
+ * draws into a `SurfaceView` by default. A `SurfaceView`'s picture is not
27
+ * drawn by the view hierarchy at all — it is a separate layer the system
28
+ * composites — so `opacity: 0` does not hide it and `zIndex` does not order it
29
+ * against a sibling surface. Two stacked lanes then fight over the same
30
+ * pixels, and the PRELOAD is the one that wins: the hidden player parks on the
31
+ * first frame of the NEXT segment, that still frame covers the player that is
32
+ * actually running, and the lane freezes for a whole segment while the clock,
33
+ * the map and the readouts carry on. Measured on an API 36 emulator before
34
+ * this line existed: 11 distinct frames in three minutes, each freeze starting
35
+ * within a second and a half of the hidden player reporting ready — and the
36
+ * LAST segment of a replay playing normally, because by then there is nothing
37
+ * left to preload on top of it.
38
+ *
39
+ * A `TextureView` is an ordinary view in the hierarchy, so alpha and z-order
40
+ * mean what they say. It costs a GPU copy per frame and cannot show
41
+ * DRM-protected media; a recorded lane is neither hot nor protected. iOS has
42
+ * no such split — `AVPlayerLayer` is a real layer — and the prop is Android's
43
+ * alone, so it is spread in rather than passed at all elsewhere.
44
+ */
45
+ const ANDROID_SURFACE = { surfaceType: "textureView" };
46
+ export function ReplayVideo(props) {
47
+ const { player, streamKey, contentFit = "contain", style, ...viewProps } = props;
48
+ const media = player.laneMedia(streamKey);
49
+ // Read per render rather than once at module load: it costs nothing, and a
50
+ // constant frozen at import time cannot be asserted from the other platform.
51
+ const surface = Platform.OS === "android" ? ANDROID_SURFACE : undefined;
52
+ return (_jsx(View, { style: style, ...viewProps, children: media?.players.map((lanePlayer, index) => (_jsx(VideoView
53
+ // Positional and stable: the pair is the same two objects for the
54
+ // life of the lane, and only their order on screen changes.
55
+ , { player: lanePlayer, style: [
56
+ StyleSheet.absoluteFill,
57
+ index === media.activeIndex ? styles.front : styles.behind,
58
+ ], contentFit: contentFit, nativeControls: false, ...surface }, index))) }));
59
+ }
60
+ const styles = StyleSheet.create({
61
+ front: { opacity: 1, zIndex: 2 },
62
+ // Mounted and decoding, invisible: this is the player holding what comes
63
+ // next, and it is what the seam swaps to.
64
+ behind: { opacity: 0, zIndex: 1 },
65
+ });
66
+ //# sourceMappingURL=replay-video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-video.js","sourceRoot":"","sources":["../src/replay-video.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAYvC;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,eAAe,GAAG,EAAE,WAAW,EAAE,aAAa,EAAW,CAAC;AAEhE,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IACjF,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IAExE,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,KAAM,SAAS,YAC9B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CACzC,KAAC,SAAS;QACR,kEAAkE;QAClE,4DAA4D;YAE5D,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE;gBACL,UAAU,CAAC,YAAY;gBACvB,KAAK,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;aAC3D,EACD,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,KAAK,KACjB,OAAO,IARN,KAAK,CASV,CACH,CAAC,GACG,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,yEAAyE;IACzE,0CAA0C;IAC1C,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;CAClC,CAAC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { type ReplayManifest, type StreamKey, type UseReplayPlayerCore, type UseReplayPlayerOptions } from "@xorgate/react";
2
+ import { type VideoPlayer } from "expo-video";
3
+ export type { ReplayLaneState, ReplayLaneStatus, UseReplayPlayerOptions, } from "@xorgate/react";
4
+ /** A lane's two players, and which one is showing. */
5
+ export interface ReplayLaneMedia {
6
+ /**
7
+ * Both players. Render BOTH views — the hidden one is where the next
8
+ * segment is already loaded, and mounting it is what makes a boundary an
9
+ * opacity flip instead of a reload. Two mounted views cost nothing visible
10
+ * (SPIKES.md §4).
11
+ */
12
+ players: readonly [VideoPlayer, VideoPlayer];
13
+ /** The index in `players` whose picture belongs on screen. */
14
+ activeIndex: 0 | 1;
15
+ }
16
+ export interface UseReplayPlayer extends UseReplayPlayerCore {
17
+ /**
18
+ * The player currently showing this lane. Null before the manifest arrives
19
+ * or for a `streamKey` the replay has no lane for. This is the one-view
20
+ * shortcut; `ReplayVideo` uses {@link UseReplayPlayer.laneMedia} instead,
21
+ * because a single view cannot hold the outgoing picture across a seam.
22
+ */
23
+ lanePlayer: (streamKey: StreamKey) => VideoPlayer | null;
24
+ /** Both of a lane's players and which is in front. What `ReplayVideo` renders. */
25
+ laneMedia: (streamKey: StreamKey) => ReplayLaneMedia | null;
26
+ }
27
+ export interface UseReplayPlayerNativeOptions extends UseReplayPlayerOptions {
28
+ /**
29
+ * How a lane's players are made. Defaults to `expo-video`'s
30
+ * `createVideoPlayer`; a test supplies its own.
31
+ */
32
+ createPlayer?: () => VideoPlayer;
33
+ /**
34
+ * Every decision each lane's engine makes, prefixed with its `streamKey`.
35
+ * Off by default and free when unset. A seam is tens of milliseconds wide
36
+ * and the native player is the half you cannot step through, so this is how
37
+ * you find out why a boundary did or did not happen.
38
+ */
39
+ debug?: (message: string) => void;
40
+ }
41
+ /**
42
+ * The headless replay player on React Native: the clock and lane logic of
43
+ * `@xorgate/react`'s `useReplayPlayerCore`, with each lane's media driven by
44
+ * two `expo-video` players instead of one `<video>` over MSE.
45
+ *
46
+ * Where the browser wrapper hands out a `laneVideoRef` and waits for an
47
+ * element to attach, this hook owns the media itself: a phone player needs no
48
+ * view to load or decode, so a lane starts as soon as the manifest describes
49
+ * it and a `VideoView` is only a window onto it. That also means the players
50
+ * outlive any one render of a tile, which is what lets a tile be unmounted
51
+ * and remounted (a tab change, a rotation) without re-downloading a segment.
52
+ *
53
+ * The pair per lane is created lazily and released when the lane disappears or
54
+ * the hook unmounts — `createVideoPlayer` is manual memory, unlike
55
+ * `useVideoPlayer`, and nothing else in the tree knows to free it.
56
+ */
57
+ export declare function useReplayPlayer(manifest: ReplayManifest | null | undefined, options?: UseReplayPlayerNativeOptions): UseReplayPlayer;
58
+ //# sourceMappingURL=use-replay-player.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-replay-player.d.ts","sourceRoot":"","sources":["../src/use-replay-player.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAGjE,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC7C,8DAA8D;IAC9D,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D;;;;;OAKG;IACH,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,WAAW,GAAG,IAAI,CAAC;IACzD,kFAAkF;IAClF,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,eAAe,GAAG,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,4BAA6B,SAAQ,sBAAsB;IAC1E;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,WAAW,CAAC;IACjC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EAC3C,OAAO,GAAE,4BAAiC,GACzC,eAAe,CA4FjB"}
@@ -0,0 +1,108 @@
1
+ import { useCallback, useEffect, useRef, useState } from "react";
2
+ import { useReplayPlayerCore, } from "@xorgate/react";
3
+ import { createVideoPlayer } from "expo-video";
4
+ import { ExpoVideoReplayEngine } from "./replay-engine.js";
5
+ /**
6
+ * The headless replay player on React Native: the clock and lane logic of
7
+ * `@xorgate/react`'s `useReplayPlayerCore`, with each lane's media driven by
8
+ * two `expo-video` players instead of one `<video>` over MSE.
9
+ *
10
+ * Where the browser wrapper hands out a `laneVideoRef` and waits for an
11
+ * element to attach, this hook owns the media itself: a phone player needs no
12
+ * view to load or decode, so a lane starts as soon as the manifest describes
13
+ * it and a `VideoView` is only a window onto it. That also means the players
14
+ * outlive any one render of a tile, which is what lets a tile be unmounted
15
+ * and remounted (a tab change, a rotation) without re-downloading a segment.
16
+ *
17
+ * The pair per lane is created lazily and released when the lane disappears or
18
+ * the hook unmounts — `createVideoPlayer` is manual memory, unlike
19
+ * `useVideoPlayer`, and nothing else in the tree knows to free it.
20
+ */
21
+ export function useReplayPlayer(manifest, options = {}) {
22
+ const { createPlayer, debug, ...coreOptions } = options;
23
+ const core = useReplayPlayerCore(manifest, coreOptions);
24
+ const { lanes, attachLane } = core;
25
+ const createPlayerRef = useRef(createPlayer);
26
+ createPlayerRef.current = createPlayer;
27
+ const debugRef = useRef(debug);
28
+ debugRef.current = debug;
29
+ const pool = useRef(new Map());
30
+ const engines = useRef(new Map());
31
+ // Bumped when a lane's front player changes, so the views re-render and the
32
+ // opacity follows. Not state per lane: one counter re-renders the consumer
33
+ // once, whichever lane swapped.
34
+ const [, bumpActive] = useState(0);
35
+ // A string, not the array: `lanes` is a new array identity on every manifest
36
+ // refresh (the presigned URLs change), and re-running this effect would
37
+ // rebuild the players under a playing lane.
38
+ const laneKeys = lanes.map((lane) => lane.streamKey).join("\u0000");
39
+ useEffect(() => {
40
+ const keys = laneKeys === "" ? [] : laneKeys.split("\u0000");
41
+ // Release the players of a lane this replay no longer has.
42
+ for (const [key, players] of [...pool.current]) {
43
+ if (keys.includes(key))
44
+ continue;
45
+ for (const player of players)
46
+ player.release();
47
+ pool.current.delete(key);
48
+ engines.current.delete(key);
49
+ }
50
+ const detachers = keys.map((streamKey) => {
51
+ let players = pool.current.get(streamKey);
52
+ if (!players) {
53
+ const make = createPlayerRef.current ?? (() => createVideoPlayer(null));
54
+ players = [make(), make()];
55
+ pool.current.set(streamKey, players);
56
+ }
57
+ const pair = players;
58
+ return attachLane(streamKey, (engineOptions) => {
59
+ const engine = new ExpoVideoReplayEngine({
60
+ ...engineOptions,
61
+ players: pair,
62
+ onActivePlayerChange: () => bumpActive((v) => v + 1),
63
+ ...(debugRef.current
64
+ ? { onDebug: (message) => debugRef.current?.(`${streamKey}: ${message}`) }
65
+ : {}),
66
+ });
67
+ engines.current.set(streamKey, engine);
68
+ return engine;
69
+ });
70
+ });
71
+ return () => {
72
+ for (const detach of detachers)
73
+ detach();
74
+ };
75
+ }, [laneKeys, attachLane]);
76
+ // Unmount: the pool is manual memory and nothing else frees it.
77
+ useEffect(() => {
78
+ const players = pool.current;
79
+ const lanEngines = engines.current;
80
+ return () => {
81
+ // Engines first, players second, and explicitly rather than by trusting
82
+ // React's cleanup order: a `release()`d player throws on every access,
83
+ // so an engine torn down after its pair would throw into the tree.
84
+ for (const engine of lanEngines.values())
85
+ engine.destroy();
86
+ for (const pair of players.values()) {
87
+ for (const player of pair)
88
+ player.release();
89
+ }
90
+ players.clear();
91
+ lanEngines.clear();
92
+ };
93
+ }, []);
94
+ const laneMedia = useCallback((streamKey) => {
95
+ const players = pool.current.get(streamKey);
96
+ if (!players)
97
+ return null;
98
+ // The pool is the stable half: an engine can be torn down and rebuilt by
99
+ // the core (a new replay) while the same two players carry on.
100
+ return { players, activeIndex: engines.current.get(streamKey)?.activeIndex ?? 0 };
101
+ }, []);
102
+ const lanePlayer = useCallback((streamKey) => {
103
+ const media = laneMedia(streamKey);
104
+ return media ? media.players[media.activeIndex] : null;
105
+ }, [laneMedia]);
106
+ return { ...core, lanePlayer, laneMedia };
107
+ }
108
+ //# sourceMappingURL=use-replay-player.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-replay-player.js","sourceRoot":"","sources":["../src/use-replay-player.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xorgate/react-native",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "React Native adapters for @xorgate/react: live telemetry over MQTT, live video over WebRTC (react-native-webrtc / RTCView), and the recorded-media replay player over expo-video.",
5
5
  "license": "MIT",
6
6
  "author": "Epye Labs",
@@ -70,13 +70,14 @@
70
70
  },
71
71
  "peerDependencies": {
72
72
  "expo-crypto": ">=13.0.0",
73
+ "expo-video": ">=57.0.0",
73
74
  "react": "^18.2.0 || ^19.0.0",
74
75
  "react-native": ">=0.76.0",
75
76
  "react-native-webrtc": ">=124.0.0"
76
77
  },
77
78
  "dependencies": {
78
79
  "@aws-crypto/sha256-js": "^5.2.0",
79
- "@xorgate/react": "^0.2.0-next.1"
80
+ "@xorgate/react": "^0.2.1"
80
81
  },
81
82
  "devDependencies": {
82
83
  "@testing-library/react": "^16.3.3",
@@ -84,6 +85,7 @@
84
85
  "@types/react": "^19.0.0",
85
86
  "@types/react-dom": "^19.3.0",
86
87
  "expo-crypto": "~57.0.3",
88
+ "expo-video": "~57.0.4",
87
89
  "jsdom": "^25.0.1",
88
90
  "react": "^19.2.6",
89
91
  "react-dom": "^19.3.0",
package/readme.md CHANGED
@@ -1,28 +1,32 @@
1
1
  # @xorgate/react-native
2
2
 
3
+ [![npm](https://img.shields.io/npm/v/@xorgate/react-native.svg)](https://www.npmjs.com/package/@xorgate/react-native)
4
+ [![CI](https://github.com/epyelabs/xorgate-react-native/actions/workflows/ci.yml/badge.svg)](https://github.com/epyelabs/xorgate-react-native/actions/workflows/ci.yml)
5
+ [![license](https://img.shields.io/npm/l/@xorgate/react-native.svg)](./LICENSE)
6
+
3
7
  React Native adapters for [`@xorgate/react`](https://www.npmjs.com/package/@xorgate/react).
4
- Live telemetry over MQTT-over-WebSocket and live video over WebRTC, rendered by
5
- `react-native-webrtc`'s `RTCView` a real native video view with hardware
6
- H.264 decode behind it, not a web player in a shell.
8
+ Live telemetry over MQTT-over-WebSocket, live video over WebRTC rendered by
9
+ `react-native-webrtc`'s `RTCView`, and recorded-media replay over `expo-video`
10
+ — real native video views with hardware H.264 decode behind them, not a web
11
+ player in a shell.
7
12
 
8
13
  Everything pure or platform-neutral — the KVS session hardening, the telemetry
9
14
  feed, the timeline, lanes, the replay clock, the telemetry math, the data hooks
10
15
  — lives in `@xorgate/react` and is **re-exported from here**, so your app
11
16
  imports from one package. What this package adds is the runtime underneath
12
- (`nativePlatform`, `XorgateNativeProvider`) and the two things that cannot be
17
+ (`nativePlatform`, `XorgateNativeProvider`) and the things that cannot be
13
18
  platform-neutral because they are pixels.
14
19
 
15
- **0.1.0 ships telemetry and live video.** Replay over `expo-video` is 0.2.0.
16
-
17
20
  **Full reference: [docs.xorgate.io/docs/frontend-sdk](https://docs.xorgate.io/docs/frontend-sdk)**
18
21
 
19
22
  ## Install
20
23
 
21
24
  ```bash
22
- npx expo install @xorgate/react-native react-native-webrtc @config-plugins/react-native-webrtc expo-crypto
25
+ npx expo install @xorgate/react-native react-native-webrtc @config-plugins/react-native-webrtc expo-crypto expo-video
23
26
  ```
24
27
 
25
- Peers: `react`, `react-native`, `react-native-webrtc`, `expo-crypto`.
28
+ Peers: `react`, `react-native`, `react-native-webrtc`, `expo-crypto`,
29
+ `expo-video`.
26
30
  `@xorgate/react` is a dependency, not a peer — one resolved copy is what makes
27
31
  `instanceof XorgateError` hold across the boundary.
28
32
 
@@ -37,7 +41,8 @@ Add the config plugin to `app.json` / `app.config.ts`:
37
41
  ```
38
42
 
39
43
  **A development build is required.** `react-native-webrtc` is a native module,
40
- so Expo Go cannot run it.
44
+ so Expo Go cannot run it. `expo-video` is a native module too, and adding
45
+ either moves the native fingerprint: a Metro reload will not pick it up.
41
46
 
42
47
  The plugin writes both an `NSCameraUsageDescription` and an
43
48
  `NSMicrophoneUsageDescription`, and on Android adds `CAMERA`, `RECORD_AUDIO`,
@@ -249,6 +254,52 @@ and promotes it only once the renderer reports its dimensions, falling back to
249
254
  the swap after 3 s so a dead stream cannot pin a stale frame. Render `RTCView`
250
255
  yourself and you own that.
251
256
 
257
+ ### Replay
258
+
259
+ ```tsx
260
+ import { ReplayVideo, useReplayPlayer } from "@xorgate/react-native"
261
+
262
+ const player = useReplayPlayer(manifest, { startTs })
263
+
264
+ <ReplayVideo player={player} streamKey="cam0" style={{ aspectRatio: 16 / 9 }} />
265
+ <Text>{new Date(player.playheadTs).toISOString()}</Text>
266
+ <Button title={player.playing ? "Pause" : "Play"} onPress={player.toggle} />
267
+ ```
268
+
269
+ The transport (`play`, `pause`, `toggle`, `seek`, `setRate`, `setSkipGaps`,
270
+ `stepBoundary`), the clock, the lanes and the per-lane `laneState` are the same
271
+ ones the web package exposes — `useReplayPlayer` here is `useReplayPlayerCore`
272
+ with native media bound to it. Everything is driven by wall-clock epoch ms, so
273
+ `useReplayTelemetry(deviceId, player)` tracks the video without either side
274
+ knowing about the other: it takes the player CORE, reads a timeline and a
275
+ playhead, and has no idea what is playing the video.
276
+
277
+ The manifest comes from `useReplayManifest(deviceId, …)`, or from your own API
278
+ on the vended-direct auth mode — same rule as `useVideoChannels` above.
279
+
280
+ **A lane is two players, not one.** A phone has no Media Source Extensions:
281
+ `AVPlayer` and `ExoPlayer` play a FILE, and every recorded segment is a
282
+ self-contained fMP4 that cannot be concatenated at runtime. So each lane gets a
283
+ pair — one showing the current segment while the other already holds the next —
284
+ and `ReplayVideo` mounts both views, the hidden one at zero opacity. A segment
285
+ boundary is then an opacity flip between two live views. The incoming player is
286
+ prepared half a second early but **not played until the outgoing one actually
287
+ reaches the manifest boundary**, which is what keeps the playhead continuous
288
+ across a seam instead of skipping the lead once per segment.
289
+
290
+ Render the views yourself with `player.laneMedia(streamKey)` (both players and
291
+ which is in front) or `player.lanePlayer(streamKey)` (just the front one, if
292
+ you can live with a reload at every boundary). `nativeControls` stays off: the
293
+ clock owns the transport, and a native scrubber would drive one segment's file
294
+ rather than the replay.
295
+
296
+ A **seek across segments is download-bound** — a whole 6-13 MB segment, 1.3-5.3
297
+ s on a good connection — because that is what `replaceAsync` fetches. The
298
+ outgoing picture is held throughout rather than going black, and
299
+ `player.laneState(streamKey)` plus `player.clock` are what a scrubber should
300
+ read. If you build a scrub thumb, seek as the thumb MOVES, not only on release:
301
+ the intermediate seeks warm the player the release will land on.
302
+
252
303
  ### Waking the live plane
253
304
 
254
305
  The foreground edge (`AppState` → `active`) is wired for you, and on a phone it
@@ -288,9 +339,10 @@ ignores one, so firing twice costs nothing.
288
339
  `@xorgate/react`'s browser-only exports — its `useLiveVideo`, `LiveVideo`,
289
340
  `useReplayPlayer`, `ReplayVideo` and the `browser*` platform helpers — are
290
341
  deliberately not re-exported: they need `HTMLVideoElement`, `window` or Media
291
- Source Extensions. `useReplayPlayerCore`, the timeline, the lanes and the clock
292
- **are** re-exported; the `expo-video` engine that binds them to a player
293
- arrives in 0.2.0.
342
+ Source Extensions. The four names are SHADOWED here by the native
343
+ implementations, so importing from this package always gets the one that works
344
+ on a phone. `useReplayPlayerCore`, the timeline, the lanes, the clock and the
345
+ replay telemetry math **are** re-exported unchanged.
294
346
 
295
347
  ## Scripts
296
348
 
@@ -298,8 +350,8 @@ arrives in 0.2.0.
298
350
  into an empty project, import it as a consumer with stub peers, check the
299
351
  export surface, scan for secret material).
300
352
 
301
- The suite runs under jsdom against doubles for `react-native` and
302
- `react-native-webrtc`, because neither has a Node build. It proves the wiring —
353
+ The suite runs under jsdom against doubles for `react-native`,
354
+ `react-native-webrtc` and `expo-video`, because none of them has a Node build. It proves the wiring —
303
355
  which listener is attached, which prop the view gets, what happens across a
304
356
  reconnect — and nothing about pixels or hardware decode, which are measured by
305
357
  hand on a simulator and a phone.