Skip to content
Everframe Docs
Documentation

Breadcrumbs

What the channel was doing before it failed, kept across the crash that ended it.

Updated

m.global.everframe.callFunc("addBreadcrumb", {
    kind: "navigation",
    level: "info",
    message: "opened details",
    data: { id: "42" }
})
FieldValues
kindnavigation, tap, console, network, lifecycle, error, custom. Defaults to custom
leveldebug, info, warn, error. Optional; other values are dropped
messageText, cut to 2048 characters
dataAn optional associative array

The SDK keeps the latest 50 in memory — maxBreadcrumbs in start() lowers that.

What is recorded for you

Without the instrument step, the only automatic breadcrumbs are the navigation ones setScreen leaves and the memory ones below.

Build-step instrumentation adds two more: key presses, from onKeyEvent (kind tap), and the scene’s init (kind lifecycle).

Anything else — network activity, playback state, your own log lines — comes from your addBreadcrumb calls. Roku has no console or network capture.

Memory pressure

Where roAppMemoryMonitor is available, the SDK checks memory use every 5 seconds. It leaves a custom breadcrumb at level warn the first time use crosses 75, 90 and 95 % of the channel’s limit — for example memory 90% of 286 MB — and one for the OS memory warning event.

Every report also carries the latest reading in details.metadata.memory as { percent, limitMb }. A crash found on the next launch carries the last reading taken before it.

Across a crash

The latest 20 breadcrumbs are written to the registry, at most once every 2 seconds (memory breadcrumbs are written at once, because an out-of-memory kill may follow within moments). A crash detected on the next launch carries the breadcrumbs of the session that ended, so a report reconstructed from the exit record still shows what happened before it. Reports caught in-process use the live breadcrumbs.