← Tools & Craft

Why everything is a block

The single idea the whole product is built on — and why we keep resisting the urge to add a hundred special cases.

There is exactly one primitive in Verso: the block. A paragraph is a block. A heading is a block. A to-do, a toggle, a whole database — all blocks. When you press Enter, you make a new one. When you drag the little handle, you move one. When you type /, you turn the empty one under your cursor into any of the others.

This sounds almost too simple to be a design decision. It is the design decision. Most writing tools are a pile of special cases — a heading is a different mode, a list is a different widget, a table is a foreign object you tab into and out of. Every special case is a small law you have to learn, and a small wall between you and your thought.

One grammar, learned once

When everything is a block, you learn the grammar once and it holds everywhere. The gesture that reorders a paragraph reorders a database row. The menu that turns a bullet into a heading turns a heading into a toggle. The blue guide that appears when you drag between two blocks is the same guide, with the same meaning, whether you are nesting a checklist or splitting the page into columns.

We think of it the way a typesetter thinks of a galley: a single stream you can cut and re-set, not a form with fixed fields. The page has no schema you must obey. It starts empty and becomes whatever the writing needs.

A tool should have as few concepts as possible, and those concepts should compose.

The discipline of not adding

The hard part is not building blocks. The hard part is refusing to break the model when a feature would be easier to bolt on as an exception. Every time someone asks for a "special" heading or a "smart" list, the honest move is to ask whether it can be expressed as a block that already exists, colored or nested or turned-into. Usually it can. The product stays small, and the small stays learnable.

That restraint is why a page you made in your first ten minutes still behaves the way you expect a year later. Nothing you learned expired. The block is the whole promise.

Enjoyed this?

Get the next Tools & Craft post in your inbox.