Skip to content

Draft Versions

moqtap supports MoQT drafts 07 through 17. Draft-17 is the latest and most relevant version as of early 2026.

DraftWire versionNotes
draft-070xff000007Legacy; uses SUBSCRIBE_ANNOUNCES instead of SUBSCRIBE_NAMESPACE
draft-08 – draft-130xff0000080xff00000dIntermediate drafts with incremental changes
draft-140xff00000eWidely deployed; separate CLIENT_SETUP / SERVER_SETUP
draft-150xff00000fTransitional
draft-160xff000010Introduces message framing changes
draft-170xff000011Latest — unified SETUP message, consolidated response pattern

During connection setup:

  1. moqtap sends a setup message with a list of supported versions
  2. The relay responds selecting one version
  3. moqtap loads the version-specific codec for the negotiated version

The negotiated version is displayed prominently in all moqtap tools — the desktop app, the CLI output, and the browser extension’s DevTools panel.

AspectExample changes
Setup messagesSeparate CLIENT_SETUP / SERVER_SETUP in draft-14 → unified SETUP (0x2F00) in draft-17
Response patternPer-message error types (e.g., SUBSCRIBE_ERROR, FETCH_ERROR) in draft-14 → consolidated REQUEST_OK / REQUEST_ERROR in draft-17
Message namesSUBSCRIBE_UPDATEREQUEST_UPDATE; SUBSCRIBE_ERRORREQUEST_ERROR
Message type IDsIDs shift between drafts (e.g., CLIENT_SETUP: 0x40 in early drafts, 0x20 in draft-14, part of SETUP 0x2F00 in draft-17)
Feature availabilityFETCH didn’t exist in early drafts; PUBLISH is new in draft-14; PUBLISH_BLOCKED and NAMESPACE are new in draft-17
Data streamsObject status codes changed (e.g., End of Group: 0x1 in draft-16, 0x3 in draft-17); subgroup stream header uses bitfield flags in draft-17
Namespace discoverySUBSCRIBE_ANNOUNCES in draft-07 → SUBSCRIBE_NAMESPACE in draft-14+
Error codesCode values and meanings have shifted
ToolDrafts supportedHow
moqtap CLI07–17--draft flag; auto-detection in peek mode
Browser Extension07–17Auto-detects draft from CLIENT_SETUP wire bytes
Desktop App07–17Draft selector in connection UI
@moqtap/codec (JS)07–17Subpath imports: @moqtap/codec/draft07 through @moqtap/codec/draft17
moqtap-codec (Rust)07–17Feature flags: draft07..draft17, all-drafts (default)
moqtap-client (Rust)07–17Feature flags: draft07..draft17 (default: draft14)

moqtap’s codecs use a DraftVersion enum (Rust) or per-draft subpath exports (JS). Adding a new draft version is additive — implement the version-specific parser alongside existing ones. The version abstraction isolates draft-specific logic so existing drafts remain unaffected.