Skip to content

[Tracking] WinterTC (TC55) Minimum Common Web API: gap analysis for boa_runtime #4988

Description

@KaustubhOG

Overview

WinterTC (TC55) is an Ecma International Technical Committee working on a "Minimum Common Web API" standard — a baseline set of Web Platform APIs that all server-side JS runtimes (Deno, Bun, Cloudflare Workers, etc.) should implement for interoperability.

The TC55 spec (December 2025) defines the APIs that a conforming runtime must expose. This issue tracks the gap between what boa_runtime currently implements and what TC55 requires.

Implemented in boa_runtime

  • console (optional extension)
  • fetch / Headers / Request / Response (feature-gated, requires custom Fetcher impl)
  • TextEncoder / TextDecoder (registered by default)
  • setTimeout / setInterval / clearTimeout / clearInterval (registered by default)
  • structuredClone (registered by default)
  • queueMicrotask (registered by default)
  • URL (feature-gated — searchParams / createObjectURL / revokeObjectURL unimplemented)
  • postMessage (optional extension, requires custom MessageSender impl)
  • AbortController / AbortSignal
  • atob() / btoa()

Missing TC55 APIs

DOM

  • Event / EventTarget

HTML

  • CustomEvent / ErrorEvent / PromiseRejectionEvent
  • MessageChannel / MessagePort / MessageEvent
  • reportError()
  • navigator.userAgent
  • onerror / onunhandledrejection / onrejectionhandled
  • self

URL

  • URLSearchParams
  • URLPattern

File API

  • Blob / File

XHR

  • FormData

Encoding

  • TextDecoderStream / TextEncoderStream

Compression

  • CompressionStream / DecompressionStream

Streams

  • ReadableStream + ReadableStreamDefaultController + ReadableStreamDefaultReader
  • ReadableByteStreamController / ReadableStreamBYOBReader / ReadableStreamBYOBRequest
  • WritableStream + WritableStreamDefaultController + WritableStreamDefaultWriter
  • TransformStream + TransformStreamDefaultController
  • ByteLengthQueuingStrategy / CountQueuingStrategy

Web Crypto

  • Crypto / SubtleCrypto / CryptoKey
  • globalThis.crypto

Performance

  • Performance / globalThis.performance

WebIDL

  • DOMException

WebAssembly

  • WebAssembly.* interfaces and methods

Notes

  • Event / EventTarget should be implemented first — AbortController, MessageChannel, streams and others all depend on it
  • AbortSignal currently has a simplified event listener implementation without a full EventTarget — implementing Event/EventTarget will make it fully spec-compliant
  • WebAssembly likely requires separate discussion given its integration complexity( not finalised)

Ref: https://min-common-api.proposal.wintertc.org/

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions