Skip to content
chornous.dev

Type two or more letters. Esc closes.

Index of sheets
Theme

Sheet 03 · Writing

All notes

React.dev as a product reset

The 2023 docs relaunch treated documentation as a product surface. The same moves cut cognitive load in any front end.

Pl. 40 · tree drawing generated from the slug “react-dev-as-a-product-reset”

The React team relaunched its docs as React.dev and treated them as a product surface instead of a warehouse of API notes.

The new docs cut the number of decisions a newcomer had to make before building something: function components first, hooks as the default mental model, and examples where state moves through a real interface instead of sitting in an isolated snippet.

The React.dev home pageThe React.dev home page

What I took from it

Good technical surfaces hide the alternate paths until the reader knows enough to pick one on purpose. The docs did that in four moves:

  • Start with the path most people should take.
  • Put legacy context behind a door the reader has to open.
  • Use examples that look like the screens teams build.
  • Make the next step obvious after each concept.

Design systems, onboarding flows, internal docs and dashboards all benefit from the same pattern. Your users shouldn't have to reverse-engineer the recommended route through your product.

The front-end angle

Modern React reads best when UI and data ownership are legible. Server components, local state, reducers, transitions and effects each have a job. They shouldn't all show up in one component because its author wasn't sure where the logic belonged.

I look for the same clarity in review:

type Status = "idle" | "saving" | "saved" | "failed";

function getSaveLabel(status: Status): string {
  if (status === "saving") {
    return "Saving";
  }

  if (status === "saved") {
    return "Saved";
  }

  if (status === "failed") {
    return "Retry";
  }

  return "Save";
}

A small pure function like this keeps the component honest. It gives designers a list of states to check against the mockups, and each state takes one line of test.

The takeaway

A framework needs a clear learning path, and so does a product interface. Pick the path, encode it in the structure, and keep the escape hatches where people can find them without making them the default.

Volodymyr Chornous