How to Deploy a Vite App on Cloudflare Workers with Wrangler ✅ yoDEV Tested

Void, the full-stack toolkit that Cloudflare and VoidZero released as open source on October 15, 2026, turns a Vite app into a Cloudflare Workers app and infers the bindings it needs from your imports. We installed and compiled a starter: importing void/db generated a D1 binding and importing void/kv generated a KV binding, without writing any Wrangler configuration by hand.

:white_check_mark: yoDEV Tested · October 21, 2026 We installed void 1.1.12 on Node 24.22 (Linux), generated the Vite + React + D1 starter, ran it locally and compiled it for production; we did not run void deploy. The results we report as ours come from that test.

What is Cloudflare’s Void?

Void is three open source products distributed as a single JavaScript package with a Vite plugin, installed with npm install void. It’s developed by VoidZero, the team behind Vite, Vitest, Rolldown and Oxc, which is now part of Cloudflare:

  • Void SDK: a composable SDK for full-stack apps with Vite. It includes file-based API routes, server-side loaders and actions, pre-rendering, caching, islands and types that travel from the database to the interface. It has adapters for React, Vue, Svelte and Solid (the four options its wizard offers), and according to Cloudflare it also works alongside Vinext, React Router, SvelteKit, Nuxt, TanStack Start and Astro.
  • Void CLI: provisions resources and deploys to Cloudflare. It’s built on top of Cloudflare’s new cf CLI.
  • Void Platform: a self-hostable deployment platform for a team to publish apps to a shared Cloudflare account without giving cloud access to each employee.

The npm registry publishes the package with an MIT license; the Cloudflare post doesn’t mention any license. One detail worth clarifying: void isn’t new on npm. VoidZero has been publishing it since version 0.7.0, from May 7, 2026. What arrived on October 15, along with the announcement, is the 1.x line. At the time of publishing this note, the most recent version is 1.1.12, from October 19.

The promise, in short: turn a Vite app into a full-stack Cloudflare Workers app. What matters day-to-day is that you don’t declare your databases, KV namespaces or queues. Void infers them from what your code imports and provisions them when you deploy.

How do you install Void in a Vite app?

In an empty folder, the official quickstart uses two commands:

npm install -D void
npx void init

The equivalents are pnpm add -D void / pnpm void init, yarn add -D void / yarn void init and bun add -D void / bunx void init. With pnpm you can also run pnpm create void my-app.

void init is an interactive wizard. In our test it asked four questions:

  1. Toolchain: Vite+ (VoidZero’s toolchain, the default option) or plain Vite. We chose Vite.
  2. Framework: React, Vue, Svelte or Solid. We chose React.
  3. Starter: D1 (SQLite, the recommended one), PostgreSQL, MySQL or Static Pages. We chose D1.
  4. Deployment destination: your own Cloudflare account, a Void Platform or skip it. We skipped it because we didn’t log into Cloudflare.

Since the wizard needs an interactive terminal, it stops at the first question if you run it without one. Keep that in mind if you want to automate it.

After that:

npm run dev

and open http://localhost:5173.

What files does the starter generate?

The D1 starter created vite.config.ts, void.config.ts, a page (pages/index.tsx) with its server file (pages/index.server.ts), an API route (routes/api/hello.ts), a Drizzle schema (db/schema.ts), a seed file (db/seed.ts), tsconfig.json, an AGENTS.md with instructions for code agents and an initial migration in db/migrations/. It also copies all of Void’s documentation into node_modules/void/docs/, which is useful offline and for agents.

The Vite configuration is the entire integration:

import { defineConfig } from "vite";
import { voidPlugin } from "void";
import { voidReact } from "@void/react/plugin";

export default defineConfig({
  plugins: [
    voidPlugin(),
    voidReact({ react: { compiler: true } }),
  ],
});

void.config.ts only contains a fixed Workers compatibility_date. There’s no wrangler.jsonc in the project.

What happened when we ran it?

The development server started in about nine seconds and applied the migration locally on its own. GET /api/hello returned the starter’s JSON, and the home page showed its empty list message until we loaded the example row with:

npx void db seed

The CLI asks you to restart the development server after seeding; after doing so, the row appeared.

The starter page also includes a form backed by an action in pages/index.server.ts, validated with a schema derived from the Drizzle table. When submitting a message, the row was inserted and the loader ran again, so the page came back with the updated list. When submitting only spaces, nothing was inserted and the response brought a typed error in the text field: the validator trims the text before checking its minimum length.

Does Void only create Cloudflare D1 and KV bindings?

Yes, at least as far as the compilation result shows. npm run build finished in less than five seconds and generated dist/ssr/wrangler.json for the Worker. That file contained a D1 binding called DB, which came solely from the starter’s import { db } from 'void/db'.

To verify it wasn’t a fixed template, we added our own route with the KV API described in the documentation included in the package:

// routes/api/visits.ts
import { defineHandler } from 'void';
import { kv } from 'void/kv';

export const GET = defineHandler(async () => {
  const visits = ((await kv.get<number>('visits')) ?? 0) + 1;
  await kv.put('visits', visits);
  return { visits };
});

After recompiling, the generated configuration added a KV binding called KV. Locally, the counter persisted between requests: 1, 2, 3. We never edited a Wrangler file.

What we couldn’t verify is the other half of the promise: that void deploy converts those bindings into real D1 and KV resources in your account. That step requires logging into Cloudflare and that’s where we stopped.

How do you deploy to Cloudflare Workers with void deploy?

According to Void’s deployment documentation, if you chose Cloudflare during setup, the command is:

npx void deploy

If you skipped that step:

npx void deploy --platform cloudflare

The first deployment opens your browser to log in and asks which Cloudflare account to use; subsequent ones reuse the saved destination. According to the Cloudflare post, the deployment compiles the app with Vite, applies migrations, provisions resources and publishes. The documentation adds a safety net: before applying migrations, it saves a D1 Time Travel restore point, and if it can’t save one it stops before migrating.

For CI, the documentation indicates adding CLOUDFLARE_API_TOKEN to your repository secrets; void init --github generates a GitHub Actions workflow.

If you already have a Worker with a wrangler.jsonc or wrangler.json at the root, the documentation says Void can link to it and preserve its resources.

Is Void free?

The toolkit is MIT-licensed, and Void’s documentation indicates that native apps run on the Workers free plan within its quotas. There are two documented exceptions: sandboxes require Workers Paid and Containers access, and D1 restore points are saved for 7 days on Workers Free versus 30 days on Workers Paid. At the time of publishing this note, neither the post nor the documentation we reviewed gave pricing for a self-hosted Void Platform beyond the Cloudflare products it needs.

Does Void replace Wrangler?

Not exactly: they work at different layers. Wrangler is Cloudflare’s CLI where you yourself declare bindings in a configuration file. Void generates that configuration from your code (the wrangler.json we found in dist/ was written by the build) and its CLI is built on the newer cf CLI. If you already have a Worker managed with Wrangler, Void can link to it instead of replacing it. We covered the step from Wrangler to cf in our migration guide.

What version of Node.js does Void need?

The package declares Node 24.21.0 or higher. We did the test on Node 24.22. As an additional check, on Node 22.22 the CLI, production build and development server worked on the already-installed project, but we didn’t test a fresh install on Node 22. The best practice is to respect the declared minimum.

Can you self-host Void Platform?

Yes, though it’s a project in itself and isn’t part of the quickstart. Cloudflare lists what you need:

  • A Cloudflare account with Workers for Platforms and R2 enabled
  • A PostgreSQL database
  • An account with the login provider you choose
  • A domain for your apps

Once running, an administrator controls access, sets resource limits and reviews deployments and usage from the CLI or an admin panel. Developers connect with void connect <your-platform-url> and deploy with void deploy --platform void --project <name>. The use case Cloudflare presents is companies that want their teams, including non-programmers working with code agents, to publish internal apps to a shared and governed environment. Cloudflare claims this cuts the time to publish an internal app from days or weeks to minutes; that’s a vendor figure, not something we’ve measured. VoidZero says it’s been using the SDK, CLI and platform in production for several months.

For most, the practical entry point is the SDK and CLI against your own Cloudflare account. It’s worth evaluating the platform if you manage internal tools for a team.

What didn’t we test?

  • void deploy and actual resource provisioning (requires logging into Cloudflare)
  • Self-hosted Void Platform
  • Windows and macOS
  • The Vite+ toolchain, Vue, Svelte and Solid adapters, and PostgreSQL and MySQL starters

One note if you reproduce it in a restricted network environment: the development server warned that it couldn’t get Cloudflare’s Request.cf metadata and used a default value. That was because our sandbox blocks that connection, not because of Void.


What about you? What’s holding you back today from deploying your apps to Cloudflare Workers?

Where do you deploy your Vite apps today?
  • Cloudflare Workers or Pages
  • Vercel or Netlify
  • My own server or VPS
  • I prefer another option (tell us which)
0 votantes

Comment below or, if this article reached you by email, reply directly to the email: your reply is published here.

Related: Cloudflare Bought Vite: The Frontend Has Officially Entered the Edge War