Skip to main content

One React, Four Outputs: DOM, PDF, Email, and Ink

Β· 15 min read
Gergely Sipos
Frontend Architect

An order has two units at $25 each. The browser editor shows $50. So do its downloadable invoice, confirmation email, and the terminal tool used by operations. Then someone changes the quantity to three. Every new representation should say $75β€”but updating a screen, producing a PDF, and sending another email are very different jobs.

React can participate in all four. That sounds like β€œwrite once, render anywhere,” until you ask what actually receives the component tree. A browser node? A document record? A string of HTML? A terminal frame?

The interesting part is not that several libraries accept JSX. It is where React's responsibilities stop and each destination's begin. We'll follow this hypothetical order across four outputs, separating shared business meaning from layout, input, and delivery. These are four output contracts, not four equivalent renderer implementations: email takes a different architectural branch.

Sonnet 5.5, Opus 5.5 and GPT-6 Luna: The Cheap Tier Got Serious

Β· 6 min read
Gergely Sipos
Frontend Architect

Three releases landed in one week: Opus 5.5 and GPT-6 Sol/Luna arrived in GitHub Copilot on September 22, and Sonnet 5.5 followed on September 28. I don't think the top end is the story. The story is cost: the cheap tiers now compete with last month's premium models. Every benchmark number below is vendor-reported, so read it as a claim, not a measurement.

OJ, Vite, and the 'Slop Fork' Future Evan You Is Worried About

Β· 9 min read
Gergely Sipos
Frontend Architect

banner

OJ β€” nicknamed "Orange Juice" β€” is a single Rust binary from Lovable that runs a React app the way Vite's dev server does. To be clear up front, because this is where most of the coverage goes wrong: it is not a fork of Vite's source code, and it is not a full rewrite of Vite. It reimplements one layer β€” the dev-server layer β€” in Rust, while leaning on the same Rust foundations Vite itself already uses. That correction matters, but it isn't the real story. The real story is the debate OJ set off: a Socket.dev article and a widely-shared Evan You post arguing that AI is collapsing the cost of reimplementing open-source dependencies, and what that does to the ecosystem. If you want the background on why Rust keeps showing up under node_modules, that's a separate post β€” see The Rust Wave Under Your node_modules. This one is about OJ specifically, and the argument it started.

Databases in the Browser: What OPFS Actually Unlocks

Β· 17 min read
Gergely Sipos
Frontend Architect

The DuckDB-WASM + OPFS announcement on September 18, by Carlo Piovesan and Geertjan Wielenga, is the kind of headline that reads like a novelty β€” an analytical database engine, compiled to WebAssembly, persisting to a real file system inside a browser tab. But the novelty isn't DuckDB. It's the platform layer underneath it. Over the last few years the Origin Private File System (OPFS) quietly turned the browser into a place you can run a real database, not just a cache with delusions of grandeur. The interesting question isn't "can DuckDB do this?" β€” plenty of engines can now. It's what changed at the platform layer to make any of them possible, and whether your project should care.