knext

Compatibility matrix

Honest, evidence-gated status of what the knext adapter supports.

Honest, evidence-gated status of what the knext adapter supports. Every row is grounded in real, on-disk evidence and a mechanical guard test fails CI if a ✅ ("supported") row cannot be backed up. When in doubt it is marked ⚠️, not ✅.

This is NOT a claim that knext passes the official Next.js compatibility suite. That suite (the vercel/next.js deploy-test harness) is not wired green yet. Until it runs green nightly, no row here may say "official suite ✅".

Legend

MarkerMeaning
Supported — backed by a red-on-fail check (the per-PR compat-smoke gate) or test-covered source on disk.
⚠️Partial — implemented but not guarded by a hard correctness check, or with a known caveat. Do not rely on it as "verified."
Unsupported / unverified — no working implementation or no evidence; treat as a gap.
Upstream-gated — architecturally out of reach today (global edge, not yet adapter-standardizable upstream).

The compat-smoke job runs per-PR on a Node + Bun matrix. It is a knext smoke gate, not the official suite.

Matrix

FeatureStatusNotes
App Router (RSC server render, GET / → 200 HTML)Hard-asserts 200 + text/html + non-trivial body against the standalone server.js.
RSC flight payload (RSC: 1text/x-component)Hard-asserts the React flight content-type.
Route handlers (app/api/*/route.ts)Hard-asserts GET /api/health → 200 + valid JSON.
Dynamic routes (force-dynamic)Hard-asserts 200 on a force-dynamic route.
Static / prerendered routes (force-static)Hard-asserts 200 on a force-static route.
Middleware (Node runtime, header injection)Hard-asserts a middleware-injected header. Node-runtime middleware only.
Graceful shutdown (SIGTERM drain)Unit-tested drain-on-SIGTERM in the standalone runtime. Not yet exercised end-to-end by compat-smoke.
ISR / Data Cache (Redis-backed cache handler)⚠️Redis cache handler, not GCS. compat-smoke runs with REDIS_URL="" (in-memory fallback) and has no revalidate/ISR-freshness assertion, so ISR correctness is unverified by the gate.
next/image optimization (sharp, avif/webp)⚠️Implementation landed, but the compat-smoke image check is skip-on-fail, not a hard gate — so the matrix does not mark this ✅.
Server Actions ('use server' mutations)⚠️Server Actions exist in the app, but no compat-smoke or unit assertion exercises a round-trip. Configured, not verified.
Streaming / Suspense (incremental flush)No streaming/Suspense flush assertion and no other evidence. Planned, not built.
Edge Middleware (edge runtime)Upstream-gated: edge-runtime middleware is not yet adapter-standardizable on Knative; knext middleware runs on the Node runtime only.
PPR / Cache ComponentsUpstream-gated: Partial Prerendering / Cache Components are not yet adapter-standardizable.
Official Next.js compatibility suiteScaffolded, running nightly, NOT yet green. The nightly job runs a REAL partial subset of the vercel/next.js deploy-test harness — it does not pass the full suite. Status stays ❌ until a green nightly. No row may claim official ✅ until then.

Maintenance & honesty

  • Every ✅ is mechanically gated. A guard test parses the table and fails CI if a ✅ row's evidence does not resolve to a real on-disk file, a hard compat-smoke check, or the compat-smoke CI job. It forbids marking the official suite ✅ while it is not yet green, and forbids citing the skip-on-fail next/image check as proof of a ✅.
  • The official-suite claim stays unverified for now. Only after the full vercel/next.js deploy-test harness is green nightly may any doc say knext "passes the official Next.js adapter compatibility suite." knext does not yet claim official verified-adapter status; this matrix is a smoke-gated honesty ledger in the meantime.

This page mirrors the CI-guarded compatibility matrix in the knext source repository, which is the canonical source. If the two ever diverge, the source-repo file wins.

On this page