Known limitations

Gaps that are intentional today and tracked for later work.

Known limitations

Connect-Ktor is useful before it is complete. The limits below are deliberate scope choices, not silent bugs.

Protocol surface

  • gRPC / gRPC-Web — Connect only. Official Connect implementations can speak gRPC as well; see the Connect protocol and language guides on connectrpc.com when that interop is required. Here, gRPC would need length-prefixed framing and trailer-only error responses.
  • Full-duplex transport — Bidirectional RPCs are generated with 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.

Engines

  • CIO + TLS / HTTP/2 — CIO throws on HTTPS and has no HTTP/2 server support upstream. Use Netty, or terminate TLS in front of CIO.
  • HTTP/3 — Not offered by stock Ktor transports.

Compression and limits

  • Extra content encodings — br, zstd, and snappy need custom Ktor ContentEncoders plus matching entries in UnaryCompressionGuard.supportedEncodings.
  • Streaming gzip — Per-message streaming compression is unimplemented; the related client-stream, server-stream, and bidi-stream conformance cases stay known-failing.
  • Streaming receive-limit configuration — 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.

Product status

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.