Gaps that are intentional today and tracked for later work.
Connect-Ktor is useful before it is complete. The limits below are deliberate scope choices, not silent bugs.
handleBidiStream. Half-duplex works on CIO and Netty over HTTP/1.1; full-duplex requires Netty with HTTP/2. Keep full-duplex routes outside connectBodyLimit / Ktor RequestBodyLimit, which buffers small chunks until EOF; use handleBidiStream's per-message limit instead.br, zstd, and snappy need custom Ktor ContentEncoders plus matching entries in UnaryCompressionGuard.supportedEncodings.handleClientStream, handleServerStream, and handleBidiStream enforce maxMessageSize on each request envelope payload (4 MiB by default). Install ConnectStreaming on a route to configure the limit without changing generated code. Child-route settings and explicit manual handler limits can override it. connectBodyLimit separately caps the entire request body, including envelope prefixes, and does not configure the per-message limit.The project is unofficial. It is maintained outside the ConnectRPC organization, even when it tracks the same conformance suite.
If a missing axis blocks your migration, check GitHub issues first — several items already have tracked work — and prefer Netty when the deployment needs TLS or HTTP/2 today.
For Connect-Kotlin client behaviour, streaming APIs on other platforms, or protocol edge cases outside this matrix, use the official Connect docs and Connect-Kotlin instead of treating this site as complete.