Skip to content

Typed Object Paths for TypeScript

Build paths from lambdas. Use them as strings, accessors, or composable algebra.
// Before — string literals, invisible to the compiler
register("users.0.profile.firstName");
table.getColumn("contact.email");
// After — typed, autocompleted, refactor-safe
register(path((u: FormData) => u.users[0].profile.firstName).$);
table.getColumn(emailPath.$);

A zero-dependency TypeScript library that captures object property paths via proxy-based lambdas. Build a path once — use it as a string, read and write data through it, compose paths together, or match one against another.

  • Typed root to leaf — renaming a property breaks the path at compile time
  • Safe reads, immutable writes, structural clones
  • Template paths for bulk operations across collections and trees
  • Path algebra and relational queries

Data access

get, set, update, and fn — read and write through a typed path.

Data Access guide

Templates

each and deep for bulk reads and writes across arrays and recursive trees.

Templates guide

Path algebra

merge, subtract, slice, to — compose and decompose paths.

Path Algebra guide

Integrations

Works with React Hook Form, Zustand, TanStack, Zod, and more.

Integrations

Quick start

A working example in under five minutes.

Quick Start

Types reference

Path, TemplatePath, ResolvedType, and more.

Types