Streaming HTTP Responses for Webflow Cloud

Webflow Cloud now supports streaming HTTP responses for app routes!

Previously, responses were only delivered in a single payload. Now, your app can send an initial response and continue streaming chunks as work completes.

What’s new

  • Streaming responses for app routes - Return output incrementally instead of waiting for the full result.
  • Faster first-byte experiences - Start sending data early while backend work is still in progress.
  • Progressive response patterns - Stream status updates, partial results, and final output in one request lifecycle.

Why this matters

  • Better user experience for long-running work - Users get immediate feedback instead of waiting on a single final response.
  • More resilient multi-step workflows - Keep clients informed as your app moves through sequential tasks.
  • Lower perceived latency - Early partial output makes responses feel faster and more interactive.

Common use cases

  • AI and LLM token streaming for chat, summaries, and code generation
  • Multi-step workflows with progress updates such as “Step 1 of 5”
  • Large exports and payload delivery, including incremental JSON or CSV output
  • Search and aggregation requests that return partial matches as they are available
  • Live log and status tailing during active operations

Minimal implementation example

1export function handleRequest(request: Request): Response {
2 const encoder = new TextEncoder();
3
4 const stream = new ReadableStream({
5 async start(controller) {
6 // Send an immediate first chunk so the client receives output quickly.
7 controller.enqueue(encoder.encode("event: progress\ndata: started\n\n"));
8
9 const steps = [
10 "validated input",
11 "queried upstream services",
12 "aggregated partial results",
13 ];
14
15 for (const step of steps) {
16 await wait(400);
17 controller.enqueue(
18 encoder.encode(`event: progress\ndata: ${step}\n\n`)
19 );
20 }
21
22 controller.enqueue(encoder.encode("event: done\ndata: complete\n\n"));
23 controller.close();
24 },
25 });
26
27 return new Response(stream, {
28 headers: {
29 "Content-Type": "text/event-stream; charset=utf-8",
30 "Cache-Control": "no-cache",
31 Connection: "keep-alive",
32 },
33 });
34}
35
36function wait(ms: number): Promise<void> {
37 return new Promise((resolve) => setTimeout(resolve, ms));
38}

Implementation guidance

  • Send the first chunk as early as possible in the request lifecycle.
  • Continue emitting periodic chunks while work is in progress.
  • Use clear event payloads so clients can render progress and partial results predictably.
  • Close the stream explicitly when processing is complete.
  • Handle cancellation and upstream failures by emitting a terminal error event before closing.

For implementation details, see Node.js compatibility for Web API guidance such as Streams API and TextEncoder usage, and resource limits for request constraints such as timeout limits.


Decoupled publish from deploy

Webflow Cloud deployments are now decoupled from Webflow site publishing.

You no longer need to republish your Webflow site for Webflow Cloud environment updates to take effect. Deployment and site publishing now operate as independent workflows.

What’s new

  • Decoupled workflows — Deploying a new Webflow Cloud app no longer depends on republishing a Webflow site.
  • Simplified mount path updates — Mount path changes no longer require site republishing. Just redeploy your app to apply the updated path config.

Why this matters

  • Faster iteration — Ship Webflow Cloud app changes without extra site publishing steps.
  • Safer Webflow Cloud development — Previously users had to consider the site’s publish state before proceeding with Webflow Cloud workflows.
  • More predictable behavior — App visibility now maps directly to deployment and mount path state.

Improved build and deploy logs

We’ve made several improvements to build and deploy logs in Webflow Cloud, making it easier to debug deployment issues.

What’s new

  • Deploy logs — You can now see what happens during the deploy phase making it easier to debug deploy errors.
  • Search — Quickly find specific log entries with the new search functionality.
  • Copy — Copy your logs to the clipboard with a single click.
  • Refreshed UI — Logs now have a simplified, cleaner interface with streamlined timestamps for easier reading.


Introducing storage for Webflow Cloud

We’re excited to announce that storage is now available in Webflow Cloud.

With storage, you’re no longer limited to stateless apps or forced to connect to external APIs just to save or retrieve data. Now, you can use built-in bindings to securely store, manage, and access your data right inside your Webflow Cloud project.

What’s new?

You can now choose from multiple storage options, each designed for different types of data and use cases:

Why it matters

  • More power, less hassle
    Build dynamic, data-driven apps without worrying about external databases or third-party APIs.

  • Secure and scalable
    All storage is managed by Webflow Cloud, with built-in security, backups, and scaling.

  • Easy to use
    Declare a binding in your wrangler.json file, and your app can read and write data using environment variables—no secret keys or manual setup required.

How to get started