Frameworks

Which Node frameworks and dev servers run under Verklet today, and what to expect from each.

Verklet runs Node.js-style code and supported Python in the browser backend, and can promote server-only commands to a managed server backend. Most JavaScript framework dev servers work in principle; the question is which ones we've actually tested and what edge cases bite. This page walks through the current state. The compatibility matrix is the authoritative one-line summary; this page is the longer form.

Node HTTP servers — supported

A plain node:http server is the most exercised path. It boots fast, ports route through the preview service worker, and server-ready fires the moment the listen callback runs.

import { createServer } from 'node:http';

createServer((req, res) => {
  res.writeHead(200, { 'content-type': 'text/plain' });
  res.end('hello from a tab\n');
}).listen(3000);

This pattern is what the playground ships out of the box. Express works too — it's just node:http with middleware on top — though the npm install step adds a one-time cost on cold boot.

Vite dev server — partial

Verklet runs the project-installed Vite CLI inside the node-compat worker. Mount vite and the framework plugins your project needs in node_modules, then spawn vite or an npm script that calls it.

What's there:

What's not:

Next.js — partial

A minimal Next app (app router, no server actions, no middleware, no edge runtime) will build and serve. The supported workflow is:

What's likely to bite:

This compatibility band is the same shape as the rest of the "meta-framework on top of Node" category: the dev loop tends to work; the production-server features tend not to.

Vue, Svelte, SvelteKit — partial

Include the framework package and its Vite plugin in node_modules, then run the normal dev command. SvelteKit's adapter system targets Vercel/Node/Cloudflare flavours; only narrow dev-server paths are exercised today.

Nuxt, Astro, Remix, React Router — partial

Each of these has a "dev mode that runs on top of Vite" path and a "production server" path. The dev path should use the project's Vite dependency and plugins. The production build/serve path is generally not exercised.

If you're embedding one of these for a tutorial or a customer demo, test the specific commands you intend to call. The compatibility matrix is conservative — "partial" means "we've seen it work for the canonical starter, not that every plugin combination boots."

What's intentionally out of scope

If a framework you care about isn't on this page, it's not necessarily broken — it's likely just untested. Open an issue at github.com/verklet/verklet with the minimal repro and we'll add it to the matrix.