For an AI

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?

Pages with no signals or handlers ship zero Resuma runtime. Interactive pages parse HTML immediately with 1021 B gzip loader.js, then fetch core.js (8.78 KiB gzip) plus the handler chunk on the first click — 9.90 KiB total. 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.

How do I paste docs into an AI?

Every docs page has Copy page (article as markdown, with URL). The sidebar has Copy nav (full outline with links). Each section heading also has Copy.

How do I add SEO, GEO, and AEO?

Set SITE_URL to your public origin, call FlowApp::with_seo_kit, and give each page a unique title and description. Resuma serves /robots.txt, /sitemap.xml, and /llms.txt. Full guide: SEO, GEO & AEO.

How do I deploy?

Resuma is a Docker image (or a Linux binary) plus env vars — not Vercel-style serverless. Guides for Fly.io, DigitalOcean, AWS, Cloudflare, Railway, and Render: Deploy. Or resuma new my-app --template production.

How do I add a live theme switcher or popup menu?

Use FlowApp::with_html_theme with HtmlTheme and ThemeSwitch or data-r-theme buttons inside a <Popup>. Do not put the click handler in a layout chunk — that JS is lazy. Document palettes live on html[data-theme]. Guides: Theme and Popup.

How do I teach Cursor or Codex Resuma patterns?

Run resuma install skill (use --force after a CLI upgrade). That copies SKILL.md with view!, Flow, HtmlTheme, overlays, SeoKit, and deploy rules. Guide: AI assistant.

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.