Skip to content

Open source

Built in the open, for anyone to build on

The libraries and tools we make for our own work, published and versioned so anyone can use them, fork them, or open an issue. This site validates its own environment with one of them — which is the only reason we notice quickly when it is wrong.

50,000+

downloads a month across 8 packages, on two registries. Read live when this page was built and rounded down — not a figure we typed in.

Two of them, drawn

What the two most used ones actually do

A list of names says what exists. These two carry a mechanism worth seeing, so they are drawn rather than described.

teiqr

A QR code you can prove is scannable

Every QR library encodes and exports. What none of them tell you is whether the code you styled still reads — rounded modules, a logo punched through the middle and brand colours at low contrast can produce something beautiful that no phone will scan. The verify stage is the reason this exists, and it sits between styling and export because that is the only place it is worth anything.

Zero dependencies, identical output in Node, the browser, Workers, Deno and Bun.

On npm →

@teispace/next-themes

No flash of the wrong theme, ever

The only thing anybody wants from a theme library, and it is a timing problem rather than a styling one. If the theme lives only in local storage the server cannot read it, so it guesses, paints, and corrects itself in front of the reader. A cookie arrives with the request, so the first paint is already right — and the first paint is the whole game.

Typed themes, hybrid cookie and local storage, safe under server rendering.

On npm →

Packages

Built for our own work first

Each exists because a project needed it and nothing suitable existed. That is also why they stay maintained — we are the ones who notice when they break.

  • Theme management for Next.js with no flash on first paint, hybrid cookie and local storage, and typed themes.

  • QR codes encoded to spec and exported to PNG, SVG, PDF or EPS with no dependencies, identically in Node, the browser, Workers, Deno and Bun — and a scannability check, so a styled code is proved readable rather than assumed to be.

  • A rich text editor on Lexical, distributed the way shadcn is — the components land in your project and you own them.

  • Environment variables validated, coerced and typed once, on every JavaScript runtime. Zero dependencies. This site runs on it.

  • Scaffolds a Next.js application and keeps maintaining it — a doctor command that finds drift, and a remove that reverses an install.

  • casl

    pub.dev

    Authorisation for Dart that is wire-compatible with CASL.js, so one set of rules serves a Node backend and a Flutter client.

  • The Flutter bindings: an ability in the widget tree, and a screen that draws what a user may actually do.

  • A one-time animated intro flow, with the "seen it" flag persisted for you.

If one of these is nearly what you need, say so. Issues, pull requests and forks are all welcome, and a fork that goes its own way is a better outcome than a library nobody could bend. Everything is on GitHub.

Also published

One that found a very large audience

Not a package, and not open source — but it is ours, it is public, and its numbers are Google’s rather than ours.

Guide To Termux tools

A reference for Termux, the terminal environment on Android — the commands, and what they actually do.

It was one of the first things this studio published, and for a long stretch it was what a great many people opened while they were finding their way around a terminal on a phone. Better answers exist now and we are not developing it further — the listing stays up, and so do the numbers it earned.

Installs
100,000+
Rating
4.8from 400+ reviews on Google Play

Start here

Tell us what you are building

Or what is breaking, or what has to go faster. You will get a straight answer from an engineer who would do the work.