Testing Next.js Streaming on Amplify Without Betting Production on It
Use a canary to learn whether Amplify buffers or rejects a streaming response while production retains a complete non-streaming path.
I treat streaming on Amplify as a branch experiment, never as a production dependency. The page must remain correct when the host buffers the entire response. That constraint keeps the experiment about delivery behavior rather than redesigning the page itself. The test route has a fast public shell and one slow, noncritical data panel. I measure body delivery and server errors instead of inferring streaming from a loading animation in the browser. Cold and warm requests use the same synthetic record and bounded delay for each check.
Accept the hosting limit first
The AWS Amplify Hosting Next.js support page currently lists Next.js streaming as unsupported. Local next start behavior and another host's result cannot override the Amplify documentation.
The goal is to observe one deployment without making streaming necessary for correctness. If the host buffers the body, users still receive a complete page.
Choose a route that benefits
I test a page with a fast public shell and one slow, noncritical Amplify Data read. The slow section gets a Suspense fallback with an accessible status. Core navigation, title, and primary content render without it.
I do not start with authentication, a checkout, or an admin mutation. Those routes add privacy and correctness variables to an experiment about response delivery.
Build a non-streaming fallback
The data function has a timeout and a defined empty or error state. If streaming is disabled, the same page can wait for the result or omit the secondary panel without changing the route contract. I keep that switch in code until the host behavior and support status are clear.
No client component should assume that the fallback and final payload arrive in separate network chunks.
Measure the response
I capture time to headers, time to first body bytes, time to completion, transfer encoding, status, and server logs. A browser animation alone cannot show whether Amplify streamed from compute or buffered at another layer.
I repeat cold and warm requests against the branch URL. One quick response may come from a cache and say nothing about server streaming.
Force the slow and failed paths
Use a synthetic data function that delays before returning a safe record. Add a second case that throws before completion. The error boundary must render without terminating the whole response or exposing a stack trace.
If Amplify returns a 5xx, truncates output, or produces inconsistent caching, turn off the experiment and preserve the evidence for a future documentation change.
Report the result narrowly
When the test is complete, publish the Next.js version, Node version, Amplify region, date, and exact route. Limit the conclusion to that configuration. AWS support remains whatever the current provider documentation says.
For a supported-feature comparison before choosing a host, read AWS Amplify vs. Vercel for Next.js applications.
Evaluating an unsupported hosting feature?
I can design a canary with a complete fallback and evidence that limits the conclusion to one tested configuration. Send the versions and sanitized route behavior through the contact page, or see my AWS services.