Base (Base Web)

Uber's React system, built for configurability and theming across a sprawling set of internal and external products.

Why we like it

What we love about Base Web is the Overrides API, the most thought-through answer we've seen to a problem every system hits: how do you let teams customize deeply without forking the library? Every component exposes its named internal parts, and you can spread extra props onto one, restyle it with a function that receives the theme, or replace the underlying element outright, all per instance, all without leaving the system.

Underneath, it runs on Styletron, an atomic CSS-in-JS engine chosen to keep what ships small, which the team calls out as a kindness to people on slower connections. Accessibility is built in per component, including the fiddly cases like drag-and-drop lists.

Where it fits

Base Web fits React web teams who know they'll need to bend components and don't want to maintain a fork to do it. It's React and web only, so React Native or other stacks are out of scope.

Good to know the public repo now mirrors Uber's internal work rather than inviting much outside contribution, so momentum comes from inside.

Ideas to borrow

  1. 01.

    Architecture

    Expose each component's named sub-parts so consumers can override props, styles, or the element itself, instead of forking when the defaults don't fit.

  2. 02.

    Theming

    Let style overrides be functions that receive the theme, so even custom styling stays theme-aware.

Screenshots

Fig. 1The Base Web Button page: a live 'Hello' button above an editable props panel with fields for children, onClick, kind, and shape.
Fig. 2Base Web's theming guidance on extending the Theme type, warning that removing theme properties can cause runtime errors.
Fig. 3Base Web's API cheat sheet: every type and prop across the library listed as dense linked columns, from a11y through accordion and app-nav-bar.

Further reading

Related