# Changelog: Probe SDK - JavaScript - 1.0.4

**URL:** <https://devforum.zoom.us/t/changelog-probe-sdk-javascript-1-0-4/142789>\
**Category:** probe-sdk\
**Created:** [April 2, 2026, 7:59pm UTC](https://devforum.zoom.us/t/changelog-probe-sdk-javascript-1-0-4/142789 "2026-04-02T19:59:38Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [April 2, 2026, 7:59pm UTC](https://devforum.zoom.us/t/changelog-probe-sdk-javascript-1-0-4/142789/1 "2026-04-02T19:59:38Z")

</div>

Released: 2026-04-02 Updated: 2026-03-31

[Visit Changelog](https://developers.zoom.us/changelog/probe-sdk/javascript/1.0.4)

Summary: New diagnostic tools for screen sharing and camera troubleshooting, including APIs to detect environment issues, permission errors, and black screens, with real-time progress updates and privacy safeguards. New error codes, expanded test coverage, refactored user-agent detection using ua-parser-js, cleaned up documentation, and fixed inconsistent bandwidth units.

## Added

- Support for screen-sharing diagnostics to check whether the device, system, or browser supports screen sharing.
  - New API Prober.diagnoseScreenShare(options, progressListener) — a 3-phase diagnostic to detect why screen sharing fails on user devices:
    - Phase 1 (Static Checks): Validates environment prerequisites — mobile device detection, HTTPS secure context, browser version (Chrome/Edge/Firefox/Opera/Safari≥17), getDisplayMedia API availability, OffscreenCanvas, and Permissions API.
    - Phase 2 (Permission Capture): Attempts getDisplayMedia() and classifies errors into system-denied (ERR\_CODE -12), user-cancelled (ERR\_CODE -13), or no display source found.
    - Phase 3 (Frame Analysis): Samples video frames via MediaStreamTrackProcessor, computes BT.601 average luminance, and detects all-black screen capture (ERR\_CODE -14 if \>80% frames are black).

  - Progress listener callback provides real-time phase/state/message updates for UI integration.
  - Privacy guarantee: only scalar luminance values are extracted; VideoFrame.close() is called immediately; no pixel data stored or transmitted.
  - 4 new error codes: SCREEN\_SHARE\_STATIC\_CHECK\_FAILED (-11), SCREEN\_SHARE\_PERMISSION\_DENIED (-12), SCREEN\_SHARE\_USER\_CANCELLED (-13), SCREEN\_SHARE\_BLACK\_SCREEN (-14).
  - 3 new CheckItem entries in Reporter.reportFeatures(): Secure Context (HTTPS), Permissions API, displaySurface constraint support.

- Camera dump
  - New API Prober.startCameraDump(options) — records camera stream with per-frame luminance analysis for offline troubleshooting of camera preview issues (e.g., black frames, flicker).
  - Outputs a downloadable .probe.tar[.gz] bundle containing: video.webm, frames.jsonl (per-frame luminance stats), events.jsonl (lifecycle events), and meta.json.
  - Progress callback reports real-time state, elapsed time, frame count, black frame count/ratio.
  - Chrome-only (requires MediaStreamTrackProcessor).
  - 2 new error codes: FAILED\_TO\_DUMP\_CAMERA (-9), FAILED\_TO\_BUILD\_BUNDLE (-10).

- New tests
  - 33 new tests added for screen share diagnostic (all passing under node:test).
  - Test coverage includes: static checks (desktop/mobile/insecure), permission error classification, luminance computation, engineering dump, full diagnostic flow, and Reporter integration.

## Changed

- UA detection refactor
  - Replaced ~100 lines of hand-rolled UA/OS/browser detection regex in screen\_share\_helper.js with ua-parser-js (UAParser), which is already a project dependency.
  - Consistent detection results across the SDK by reusing the same UA parsing library.

- Documentation cleanup
  - Added @ignore JSDoc tags to internal helper functions (screen\_share\_helper, screen\_share\_diagnostic, camera\_dump, tar, utils) so only Prober and Reporter public APIs appear in generated doc.md and HTML docs.

## Fixed

- Issue where network bandwidth units were inconsistent.
