FAQ

Common questions about resumability, bundle size, and how Resuma compares to hydration-based frameworks.

What is resumability vs hydration?

Hydration re-executes your entire component tree on the client to attach event listeners. Resumability serializes signals and handler references into HTML during SSR; the client resumes only what the user interacts with — no full-tree replay.

Does Resuma run Rust in the browser?

No. Components always execute on the server. Client-side code is a fixed runtime (loader + lazy core on first interaction) plus small handler chunks translated from closures at compile time (rs2js in resuma-macros). Business logic stays in Rust.

How big is the client bundle?

Static pages ship zero JS. Interactive pages parse HTML immediately with 907 B gzip loader.js, then fetch core.js (~4 KiB gzip) on the first click — about 5 KiB total for first interaction. Handler and island chunks load on demand. See the benchmark page and architecture for measured numbers.

Do I need Node.js?

Only if you rebuild the JS runtime from source. Prebuilt assets ship inside the resuma crate (assets/). For app development, Rust + cargo (or cargo install resuma) is enough.

Can I use Resuma without Flow?

Yes. ResumaApp supports single-page apps with manual route registration — ideal for counters, widgets, and embedded UI. Flow adds multi-page routing, loaders, submits, and middleware when you need a full site.

Does Flow include a PWA?

Yes — manifest and service worker are enabled by default on FlowApp. Use .without_pwa() or RESUMA_PWA=0 to disable. Details →

How do forms work without JavaScript?

The Form component renders a real HTML form with POST /_resuma/submit/:name. Progressive enhancement: the runtime intercepts submit when loaded, but forms work as plain POST without JS.

Is Resuma production-ready?

Yes — 1.0 follows semver for public APIs. Security defaults (CSRF, CSP, rate limits) ship enabled. Resuma OS adds self-hosted workers and ops. See Security, Ops & production, and todo reference, and STABILITY.md in the framework repo.

Where is the backend security reference?

examples/todo — guards, DTO validation, service layer, authorization. Docs: /docs/security/todo.

Do I need Redis, Postgres, or Cloudflare Workers?

No — for core Resuma features. SSR, signals, server actions, CSRF, CSP, and rate limiting work out of the box with no external services. Rate limits use memory in dev and a disk backend in production ({RESUMA_DATA_DIR}/rate-limit/).

Resuma OS (resuma::exec) adds disk-backed queues, cron scheduler, durable graphs, and webhooks — also without Redis. See /docs/exec.

Optional: add Postgres/SQLite via SQLx for your app's data — Resuma does not require a database for the framework itself. See SQLx integration.