Skip to content
TraceItX Docs
Documentation

Screenshot & annotate

A real native screenshot the reporter can draw on — no screen-recording prompt, no camera.

Updated

The capture happens natively, below the bridge: a UIWindow snapshot on iOS, PixelCopy on Android. That means it shows what the device actually rendered, including native views your JS never sees.

There is no working off switch. captureScreenshot exists on the config type but neither native side reads it, so the screenshot is always taken. Mask what must not appear instead — see Sensitive content.

Annotation tools

ToolDraws
penFreehand. Five colours, three thicknesses.
highlighterTranslucent freehand.
rect · ellipseOutlined shapes for circling a control.
arrowPoints at the thing that broke.
textA label. Three sizes.
redactDraws a blur-kind shape — see below.
pointerSelect, move and resize existing marks.

The palette and sizes are identical across every TraceItX SDK, so a report looks the same whichever platform filed it. On TV there is no on-device reporter — the annotating happens on the companion phone.

Redaction is baked, not overlaid

A redact shape is rendered opaque into the image bytes before upload — not stored as a region for a viewer to honour. The pixels underneath are gone by the time the report leaves the device.

An overlay is a request; a bake is a guarantee. If a user blurs their bank balance, no receiver and no support engineer can recover it, because it was never uploaded.

The same applies to views marked sensitive in code, masked before the screenshot is taken at all. See Sensitive content.

In the envelope

kindWhat it is
screenshotThe capture as taken.
annotated-screenshotThe baked result, with drawings and redactions applied.

Plus payload.annotations and payload.redactions recording the vector shapes. A dashboard can re-render annotations over the clean screenshot — but only annotations. Redactions cannot be undone, by design.

Native modules and secure surfaces

A view rendered by a native module is included, because the capture is a window snapshot rather than a React tree walk. The exception is content the OS itself protects — FLAG_SECURE on Android, DRM video on both — which comes back black. That is the platform refusing, not the SDK failing, and it is why a video player screenshot often shows chrome but no frame.