Modular HTML.
React's component model — no React.

rr lets you build HTML from reusable components. No framework, no JS, no bundler — everything stays plain HTML, one rr build away.

report.rr.html

<rr-section id="tldr" title="TL;DR" icon="bolt">
  <rr-tiles>
    <rr-tile label="Shipped" value="3" icon="check" caption="this week"/>
  </rr-tiles>
  <rr-callout tone="amber"><b>Open decision.</b> TTL: 5 or 15 min.</rr-callout>
  <rr-progress label="Rollout" pct="80" n="8/10 regions"/>
</rr-section>

rr build report.rr.html emits report.html — CSS, JS, and icons inlined, tree-shaken to what the page uses. It opens from disk and travels as an attachment. See a full document.

Why

HTML is the go-to format for one-off artifacts — reports, specs, visualizations, little apps. But a finished page is one giant file: every edit, by you or an AI agent, means reading and rewriting the whole thing. rr keeps the source small and componentized, so iteration stays fast and cheap — the big file only exists as output.

Try it

# scaffold, then build
rr init report
rr build report.rr.html

# link your own css, inlined last so it wins
rr build report.rr.html --css brand.css

Install

# npm
npm install -g rr-html

# Homebrew (macOS)
brew install hhushhas/tap/rr

# Scoop (Windows)
scoop install https://raw.githubusercontent.com/hhushhas/rr/main/scoop/rr.json