Skip to content

· Effects SDK team · 2 min read

Web Video Effects SDK 3.12: ONNX Runtime 1.27, new models and one WASM file

Web Video Effects SDK 3.12 updates the inference stack. The SDK moves to ONNX Runtime 1.27, which ships as one smaller WASM file, introduces new Balanced and Quality landscape models that segment better with fewer resources, and runs inference in a dedicated worker. 3.12.1, released a day later, restores compatibility for integrations that 3.12.0 broke — if you are on 3.12.0, upgrade to 3.12.1 or later.

3.12.0 release notes · 3.12.1 release notes · API reference · Live demo

What is new#

  • New models for the Balanced Landscape and Quality Landscape presets: better segmentation while using fewer system resources. All model files now have versioned names.
  • ONNX Runtime 1.27 with a single runtime file, ort-wasm-simd-threaded.asyncify.wasm, instead of four. With Brotli it transfers in under 2 MB.
  • Dedicated inference worker for both the wasm and webgpu providers. If the worker cannot be created, the SDK falls back to the main thread and reports a warning; sdk.config({ proxy: false }) turns the worker off.

Do you need to change anything?#

npm package or script tag with our CDN: no. Since 3.12.1 the runtime is loaded from a versioned CDN URL that always matches the SDK build.

Self-hosted assets:

  1. Copy the new model files into the models folder under your sdk_url.
  2. Serve ort-wasm-simd-threaded.asyncify.wasm (it is not in the npm package — take it from the CDN folder of your version) with Content-Type: application/wasm, and point the SDK at it:
sdk.config({
  wasmPaths: {
    wasm: 'https://your-domain.com/assets/ort-wasm-simd-threaded.asyncify.wasm'
  }
});
  1. Make sure an SPA rewrite rule does not answer the .wasm URL with index.html. Since 3.12.1 the SDK reports exactly that case as WASM_RUNTIME_LOAD_FAILED with the URL, HTTP status and content type.

The old per-file wasmPaths map ('ort-wasm.wasm', 'ort-wasm-simd.wasm') still works in 3.12.1 through a compatibility path with a WASM_PATHS_DEPRECATED warning, but it costs an extra request and will be removed — migrate to { wasm: '<url>' }.

How the runtime is found (3.12.1)#

  1. wasmPaths.wasm — an explicit file URL.
  2. wasmPaths as a string — a directory prefix.
  3. A legacy wasmPaths map — its directory, falling back to the CDN.
  4. The directory of the SDK <script>.
  5. sdk_url, if configured.
  6. https://effectssdk.ai/sdk/web/<sdk-version>/.

Fixes#

  • Internal errors no longer silently stop the video pipeline: they are reported through onError while processing continues.
  • No ReferenceError on browsers without VideoFrame (Firefox before 130, Safari 16.3 and older).
  • Restarting the pipeline no longer stops the audio tracks of your input stream.
  • setFpsLimit() now raises the output frame rate on Safari and Firefox too.
  • Bundlers no longer warn about the dynamic imports used by the Avatars effect.
  • If a Content-Security-Policy blocks blob: workers, the SDK falls back to global timers (TIMERS_FALLBACK warning) instead of failing.

Error reporting#

The SDK continues moving from ErrorBus notifications to thrown SdkError exceptions. New codes: VIDEO_PLAYBACK_ISSUE (1031), TIMERS_FALLBACK (1065), WASM_RUNTIME_LOAD_FAILED (1066), WASM_PATHS_DEPRECATED (1067). setFpsLimit() and, on some browsers, getStream() may now throw; getSnapshot() rejects instead of hanging.

What came next#

3.13.1 (September 2026) updated the default Quality and Balanced models again and made startup more robust when a browser exposes WebGPU without the adapter information ONNX Runtime needs — the SDK falls back to WASM instead of failing.

Getting started: Web guide · Start a free trial

Ready to try it in your app?

Start a free trial in the Developer Portal and run your first effect today.