Void, el toolkit full-stack que Cloudflare y VoidZero liberaron como open source el 15 de octubre de 2026, convierte una app Vite en una app de Cloudflare Workers y deduce los bindings que necesita a partir de tus imports. Lo instalamos y compilamos un starter: importar void/db generó un binding de D1 e importar void/kv generó uno de KV, sin escribir a mano ninguna configuración de Wrangler.
yoDEV Tested · 21 de octubre de 2026 Instalamos
void1.1.12 en Node 24.22 (Linux), generamos el starter Vite + React + D1, lo ejecutamos en local y lo compilamos para producción; no ejecutamosvoid deploy. Los resultados que reportamos como nuestros salen de esa prueba.
¿Qué es Void de Cloudflare?
Void son tres productos open source distribuidos como un único paquete de JavaScript con plugin de Vite, que se instala con npm install void. Lo desarrolla VoidZero, el equipo detrás de Vite, Vitest, Rolldown y Oxc, que ahora forma parte de Cloudflare:
- Void SDK: un SDK componible para apps full-stack con Vite. Incluye rutas de API basadas en archivos, loaders y actions del lado del servidor, pre-rendering, caché, islands y tipos que viajan desde la base de datos hasta la interfaz. Tiene adaptadores para React, Vue, Svelte y Solid (las cuatro opciones que ofrece su asistente), y según Cloudflare también convive con Vinext, React Router, SvelteKit, Nuxt, TanStack Start y Astro.
- Void CLI: provisiona recursos y despliega en Cloudflare. Está construido sobre el nuevo CLI
cfde Cloudflare. - Void Platform: una plataforma de despliegue autoalojable para que un equipo publique apps en una cuenta compartida de Cloudflare sin dar acceso a la nube a cada empleado.
El registro de npm publica el paquete con licencia MIT; el post de Cloudflare no menciona ninguna licencia. Un detalle que conviene tener claro: void no es nuevo en npm. VoidZero lo publica desde la versión 0.7.0, del 7 de mayo de 2026. Lo que llegó el 15 de octubre, junto con el anuncio, es la línea 1.x. Al momento de publicar esta nota, la versión más reciente es la 1.1.12, del 19 de octubre.
La promesa, en resumen: convertir una app Vite en una app full-stack de Cloudflare Workers. Lo que importa en el día a día es que no declaras tus bases de datos, namespaces de KV ni colas. Void los deduce de lo que importa tu código y los provisiona al desplegar.
¿Cómo se instala Void en una app Vite?
En una carpeta vacía, el quickstart oficial usa dos comandos:
npm install -D void
npx void init
Los equivalentes son pnpm add -D void / pnpm void init, yarn add -D void / yarn void init y bun add -D void / bunx void init. Con pnpm también puedes ejecutar pnpm create void my-app.
void init es un asistente interactivo. En nuestra prueba hizo cuatro preguntas:
- Toolchain: Vite+ (el toolchain de VoidZero, opción por defecto) o Vite a secas. Elegimos Vite.
- Framework: React, Vue, Svelte o Solid. Elegimos React.
- Starter: D1 (SQLite, el recomendado), PostgreSQL, MySQL o Static Pages. Elegimos D1.
- Destino del despliegue: tu propia cuenta de Cloudflare, una Void Platform u omitirlo. Lo omitimos porque no iniciamos sesión en Cloudflare.
Como el asistente necesita una terminal interactiva, se detiene en la primera pregunta si lo ejecutas sin una. Tenlo en cuenta si quieres automatizarlo.
Después:
npm run dev
y abre http://localhost:5173.
¿Qué archivos genera el starter?
El starter de D1 creó vite.config.ts, void.config.ts, una página (pages/index.tsx) con su archivo de servidor (pages/index.server.ts), una ruta de API (routes/api/hello.ts), un esquema de Drizzle (db/schema.ts), un archivo de seed (db/seed.ts), tsconfig.json, un AGENTS.md con instrucciones para agentes de código y una migración inicial en db/migrations/. También copia toda la documentación de Void en node_modules/void/docs/, algo útil sin conexión y para los agentes.
La configuración de Vite es toda la integración:
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 solo contiene un compatibility_date de Workers fijado. No hay ningún wrangler.jsonc en el proyecto.
¿Qué pasó cuando lo ejecutamos?
El servidor de desarrollo arrancó en unos nueve segundos y aplicó la migración local por su cuenta. GET /api/hello devolvió el JSON del starter, y la página de inicio mostró su mensaje de lista vacía hasta que cargamos la fila de ejemplo con:
npx void db seed
El CLI pide reiniciar el servidor de desarrollo después del seed; tras hacerlo, la fila apareció.
La página del starter incluye además un formulario respaldado por una action en pages/index.server.ts, validada con un esquema derivado de la tabla de Drizzle. Al enviar un mensaje se insertó la fila y se volvió a ejecutar el loader, así que la página regresó con la lista actualizada. Al enviar solo espacios no se insertó nada y la respuesta trajo un error tipado en el campo text: el validador recorta el texto antes de comprobar su longitud mínima.
¿Void crea solo los bindings de Cloudflare D1 y KV?
Sí, al menos hasta donde muestra el resultado de la compilación. npm run build terminó en menos de cinco segundos y generó dist/ssr/wrangler.json para el Worker. Ese archivo contenía un binding de D1 llamado DB, que salió únicamente del import { db } from 'void/db' del starter.
Para comprobar que no era una plantilla fija, agregamos una ruta propia con la API de KV que describe la documentación incluida en el paquete:
// 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 };
});
Tras volver a compilar, la configuración generada sumó un binding de KV llamado KV. En local, el contador se mantuvo entre peticiones: 1, 2, 3. Nunca editamos un archivo de Wrangler.
Lo que no pudimos verificar es la otra mitad de la promesa: que void deploy convierta esos bindings en recursos reales de D1 y KV en tu cuenta. Ese paso exige iniciar sesión en Cloudflare y ahí nos detuvimos.
¿Cómo se despliega en Cloudflare Workers con void deploy?
Según la documentación de despliegue de Void, si elegiste Cloudflare durante la configuración el comando es:
npx void deploy
Si omitiste ese paso:
npx void deploy --platform cloudflare
El primer despliegue abre el navegador para iniciar sesión y pregunta qué cuenta de Cloudflare usar; los siguientes reutilizan el destino guardado. Según el post de Cloudflare, el despliegue compila la app con Vite, aplica las migraciones, provisiona los recursos y publica. La documentación añade una red de seguridad: antes de aplicar migraciones, guarda un punto de restauración de D1 Time Travel, y si no puede guardarlo se detiene antes de migrar.
Para CI, la documentación indica agregar CLOUDFLARE_API_TOKEN a los secretos del repositorio; void init --github genera un workflow de GitHub Actions.
Si ya tienes un Worker con un wrangler.jsonc o wrangler.json en la raíz, la documentación dice que Void puede vincularlo y conservar sus recursos.
¿Void es gratis?
El toolkit tiene licencia MIT, y la documentación de Void indica que las apps nativas corren en el plan gratuito de Workers dentro de sus cuotas. Hay dos excepciones documentadas: los sandboxes requieren Workers Paid y acceso a Containers, y los puntos de restauración de D1 se guardan 7 días en Workers Free frente a 30 días en Workers Paid. Al momento de publicar esta nota, ni el post ni la documentación que revisamos daban precios para una Void Platform autoalojada más allá de los productos de Cloudflare que necesita.
¿Void reemplaza a Wrangler?
No exactamente: trabajan en capas distintas. Wrangler es el CLI de Cloudflare en el que tú mismo declaras los bindings en un archivo de configuración. Void genera esa configuración a partir de tu código (el wrangler.json que encontramos en dist/ lo escribió la compilación) y su CLI está construido sobre el CLI cf, más reciente. Si ya tienes un Worker gestionado con Wrangler, Void puede vincularlo en lugar de reemplazarlo. Contamos el paso de Wrangler a cf en nuestra guía de migración.
¿Qué versión de Node.js necesita Void?
El paquete declara Node 24.21.0 o superior. Hicimos la prueba en Node 24.22. Como comprobación adicional, en Node 22.22 el CLI, la compilación de producción y el servidor de desarrollo funcionaron sobre el proyecto ya instalado, pero no probamos una instalación desde cero en Node 22. Lo recomendable es respetar el mínimo declarado.
¿Se puede autoalojar Void Platform?
Sí, aunque es un proyecto en sí mismo y no forma parte del quickstart. Cloudflare enumera lo que necesitas:
- Una cuenta de Cloudflare con Workers for Platforms y R2 habilitados
- Una base de datos PostgreSQL
- Una cuenta en el proveedor de login que elijas
- Un dominio para tus apps
Una vez en marcha, un administrador controla el acceso, fija límites de recursos y revisa despliegues y consumo desde el CLI o un panel de administración. Los desarrolladores se conectan con void connect <url-de-tu-plataforma> y despliegan con void deploy --platform void --project <nombre>. El caso de uso que plantea Cloudflare son empresas que quieren que sus equipos, incluidas personas que no programan y trabajan con agentes de código, publiquen apps internas en un entorno compartido y gobernado. Cloudflare sostiene que esto reduce el tiempo para publicar una app interna de días o semanas a minutos; es una cifra del proveedor, no algo que hayamos medido. VoidZero dice que usa el SDK, el CLI y la plataforma en producción desde hace varios meses.
Para la mayoría, la puerta de entrada práctica es el SDK y el CLI contra tu propia cuenta de Cloudflare. Vale la pena evaluar la plataforma si gestionas herramientas internas para un equipo.
¿Qué no probamos?
void deployy el aprovisionamiento real de recursos (requiere iniciar sesión en Cloudflare)- Void Platform autoalojada
- Windows y macOS
- El toolchain Vite+, los adaptadores de Vue, Svelte y Solid, y los starters de PostgreSQL y MySQL
Una nota si lo reproduces en un entorno con red restringida: el servidor de desarrollo avisó que no podía obtener los metadatos Request.cf de Cloudflare y usó un valor por defecto. Eso se debió a que nuestro sandbox bloquea esa conexión, no a Void.
¿Y tú? ¿Qué te frena hoy para desplegar tus apps en Cloudflare Workers?
- Cloudflare Workers o Pages
- Vercel o Netlify
- Mi propio servidor o VPS
- Prefiero otra opción (cuéntanos cuál)
Comenta abajo o, si este artículo te llegó por correo, responde directamente al email: tu respuesta se publica aquí.
Relacionado: Cloudflare Compró Vite: El Frontend Acaba de Entrar Oficialmente en la Guerra del Edge