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.