# Frond > Frond — explicit frontend runtime. Readiness, dependencies, cleanup, eviction, and race control as a graph. Frond is an explicit frontend runtime for React applications. These links point to the canonical documentation pages. ## Full context - [Full documentation](https://frondruntime.dev/llms-full.txt): Complete Markdown/MDX documentation concatenated into one plain-text file. ## Documentation ### Start - [Install](https://frondruntime.dev/docs/start/install): Install Frond, set up TypeScript, and create the runtime your app will live on. - [Your first node](https://frondruntime.dev/docs/start/first-node): Define a Frond node, register it with the runtime, and watch it transition to ready. - [Wire it to React](https://frondruntime.dev/docs/start/wire-to-react): Read a Frond node from a React component using useNode, useNodeState, and Suspense. ### Model - [Runtime and graph](https://frondruntime.dev/docs/model/runtime-and-graph): The Frond runtime is one object that owns a graph of keyed nodes. How to create it, how nodes are identified, and how you read them from inside and outside React. - [Identity and keys](https://frondruntime.dev/docs/model/identity-and-keys): A node's id is its tag plus a canonical key derived from its args. How Frond computes the id, the canonicalization rules, and the failure modes. - [Lifecycle](https://frondruntime.dev/docs/model/lifecycle): The public states a node exposes — idle, pending, ready, error — plus how operations run on ready data without leaving readiness. - [Dependencies](https://frondruntime.dev/docs/model/dependencies): How a node declares dependencies on other nodes, how readiness flows across edges, and how eviction cascades to dependents. - [Eviction and release](https://frondruntime.dev/docs/model/eviction-and-release): Release cleans a node's resources but keeps it in the graph; eviction removes the node and its edges. What each runs, in what order, and the state left behind. - [Result validity](https://frondruntime.dev/docs/model/result-validity): Whether a node's committed result may be shown — current, stale, or expired — how the policy is set, and how expired data reloads through readiness. - [Liveness](https://frondruntime.dev/docs/model/liveness): How Frond starts driver live work from MobX observation or manual leases, and why React mount presence is not liveness. ### Authoring - [Spec and class](https://frondruntime.dev/docs/authoring/spec-and-class): A Frond node is a class extending NodeBase plus a static spec. The spec configures identity and loading; the class is the typed surface consumers read. - [Kinds](https://frondruntime.dev/docs/authoring/kinds): Resource, service, facade, and node — four spec constructors that share one shape. The kind labels intent and shows in diagnostics; it does not change runtime behavior. - [Drivers](https://frondruntime.dev/docs/authoring/drivers): The driver is how a node loads and updates — acquire, refresh, release, live, and actions, plus the context they run with and how the AbortSignal is wired. - [Args and deps](https://frondruntime.dev/docs/authoring/args-and-deps): Typing a node's args, deriving its key, and declaring the nodes it depends on — including dependencies that vary with args. - [Actions](https://frondruntime.dev/docs/authoring/actions): Actions are methods the runtime mediates against a ready node — declared as contracts, implemented in the driver, called through node.actions. - [Errors](https://frondruntime.dev/docs/authoring/errors): How failures from acquire, refresh, and actions surface — readiness errors versus operation failures — plus driver timeouts, cancellation, and retries. - [Error projection](https://frondruntime.dev/docs/authoring/error-projection): Why Frond projects runtime errors before display or reporting — wrapper failures carry graph context, but reports should group by the real root cause. - [Tags and diagnostics](https://frondruntime.dev/docs/authoring/tags-and-diagnostics): Naming nodes with Frond.tag, the labels and ids they produce, and how to read runtime diagnostics through snapshots and report sinks. ### React - [Provider](https://frondruntime.dev/docs/react/provider): FrondProvider puts a runtime on React context; useRuntime and useRuntimeClient read it back. One provider at the root, with optional nested overrides. - [useNode](https://frondruntime.dev/docs/react/use-node): useNode acquires a node and returns its ready instance, suspending until ready and throwing to the error boundary on failure. The common read path. - [useNodeState](https://frondruntime.dev/docs/react/use-node-state): useNodeState returns the ready node plus operation, busy, failure, and validity state for refreshes, actions, and stale data. - [useNodeControls](https://frondruntime.dev/docs/react/use-node-controls): useNodeControls returns refresh, evict, releaseResources, and ensureReady for a node without reading its result — so the component never suspends. - [Preload](https://frondruntime.dev/docs/react/preload): Preload acquires a set of nodes before its children render, suspending until they are ready. Use it at route boundaries and to order loading in layers. - [Suspense and errors](https://frondruntime.dev/docs/react/suspense-and-errors): Which hooks suspend and throw, where to put Suspense and error boundaries, and how to retry a readiness failure with the Frond error helpers. ### Recipes - [Sentry projection](https://frondruntime.dev/docs/recipes/sentry-projection): Forward Frond runtime failures to Sentry with a report sink — the diagnostics report maps directly onto Sentry's captureException. - [Pagination](https://frondruntime.dev/docs/recipes/pagination): Model each page as its own node keyed by cursor. Pages cache by identity, so revisiting a page is instant and prefetching the next is one acquire. - [Auth-aware nodes](https://frondruntime.dev/docs/recipes/auth-aware-nodes): Make the session a dependency of user-scoped nodes, then evict the session on logout to tear down everything that depended on it. - [Effect escape hatches](https://frondruntime.dev/docs/recipes/effect-escape-hatches): Async drivers cover most nodes. Reach for Frond.Driver.Effect when your code is already in Effect or you want Effect's concurrency, retries, and interruption. ### Reference - [Public surface](https://frondruntime.dev/docs/reference/public-surface): The exports of @frondruntime/core and @frondruntime/react, plus their /testing subpaths, grouped by purpose. - [Glossary](https://frondruntime.dev/docs/reference/glossary): The terms used across the Frond docs, with their code symbols and where each is covered in full. - [Runtime invariants](https://frondruntime.dev/docs/reference/runtime-invariants): The guarantees the runtime upholds for every node, no matter which caller drives it. - [Testing](https://frondruntime.dev/docs/reference/testing): The Frond test harness, stub specs, and the React test provider — drive nodes, wait for readiness, and swap dependencies for fixed values.