English
Troubleshooting
The viewer is blank or has no height
The component fills its parent. Give the parent an explicit height.
tsx
<div style={{ height: 720, minHeight: 480 }}>
<LeRobotViewer dataSource={source} />
</div>Remote archive won't open
- Confirm the final URL can be fetched from the viewer's origin.
- Check redirects: every response needs the required CORS headers.
- For a large archive, make a range request and confirm a
206response with a validContent-Range. - A small archive may fall back to a full
200download when the server does not support ranges. That fallback is limited to archives below 2 GiB. - Expose
Accept-Ranges,Content-Length, andContent-Rangeto browser code when you use range requests. - Check whether a signed URL has expired or a CDN is removing the
Rangeheader.
Examples: CORS.
Archive type rejected
Supported formats are ZIP, TAR, TAR.GZ, and TGZ. For remote files, make sure the URL or response headers identify the format. Handle onFatalError to distinguish UNSUPPORTED_ARCHIVE from a network error.
Opens with a warning
v2.1 and v3.0 are fully supported. Other versions may still open in read-only mode when they can be parsed safely. Export is unavailable for those versions.
No video
Playback depends on the video codec and browser. Try the file in the target browser and inspect media errors. Charts and raw data may still work even when video does not.
Subtasks do not appear
Studio maps official LeRobot subtask_index only.
lerobot/libero_10_subtaskshowsSubtask Nwhenmeta/subtasks.parquetis missing.lerobot/pusht-subtaskshowsphase 1/2/3; frames withsubtask_index = -1stay Unlabeled.k1000dai/libero-subtaskid-segmentsstoressubtask_id, notsubtask_index, so segments are not shown.v2.1can display existing indices but cannot add labels.
Download commands: Data formats — Official Hub examples. With Include subtasks checked, export to v3.0 fails until every exported frame is labeled; the app does not write -1.
Depth map is blank or fails to decode
Official depth datasets such as lerobot/outdoor-depth store 16-bit grayscale TIFF bytes in parquet (info.is_depth_map: true). Studio sniffs TIFF/PNG/JPEG, colorizes 16-bit depth for playback, and does not treat JPEG as the only encoding. If the panel stays empty, confirm the feature dtype is image or depth and that observation.images.* is present.
Next.js reports a server-side error
Use a Client Component and dynamic(..., { ssr: false }). This package runs only in the browser. See Embedding Guide.
Custom DataSource leaking memory
Revoke object URLs in invalidateObjectUrl() / clear(), drop archive handles, and don't keep unbounded full-file buffers. You own the lifecycle — API.