# What changed in @json-render/react

> 89 changes in @json-render/react 0.4 to 0.10 from its official release notes, upgrade guides and advisories: 21 breaking, 56 new APIs and options. Each one cited. Sources checked 2026-11-15. HTML: https://unstale.sh/npm/@json-render/react/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @json-render/react 0.10

### New APIs and options

- Checkbox, Radio, and Switch form components now support the checks prop for validation. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- Prop expressions can call registered functions with resolved arguments; functions are supplied through the functions prop on JSONUIProvider or createRenderer. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- The ComputedFunction type is exported from @json-render/core. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- Adds a cross-field validation function that aliases matches with clearer semantics. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- Functions registered via catalog can be provided at runtime through the functions prop on JSONUIProvider or createRenderer. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- Adds cross-field validation requiring a value to be greater than another field. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- Adds cross-field validation requiring a value to be less than another field; supports numbers, strings, and coerced values. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- Adds cross-field validation that makes a field required only when a condition field is truthy. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- The validateForm action's state path is configurable through the statePath parameter. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- Template expressions interpolate state values into strings; references to missing paths resolve to an empty string. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- Adds a hook for non-throwing access to validation context. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- A built-in React action validates all registered form fields synchronously and writes { valid, errors } to state, defaulting to /formValidation. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- Form components now accept validateOn to control validation timing; Checkbox, Radio, Switch, Input, Textarea, and Select support it. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)
- Elements can map state paths to action bindings; watchers fire when values change, not on initial render, and support cascading dependencies. (0.10.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.10.0)

## @json-render/react 0.9

### Breaking changes

- The callback now receives one array of changed entries instead of being called once per path. (0.9.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.0)

### New APIs and options

- A factory for creating a StateStore was added to @json-render/core. (0.9.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.0)
- Store utilities are available through this subpath for building custom adapters. (0.9.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.0)
- A Jotai adapter for StateStore is available as a new package. (0.9.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.0)
- A Redux / Redux Toolkit adapter for StateStore is available as a new package. (0.9.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.0)
- A Zustand adapter for StateStore is available as a new package. (0.9.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.0)
- Accepts an optional store prop for controlled mode; when provided, the store is the single source of truth. (0.9.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.0)
- A new interface lets developers plug in external state management instead of the built-in internal store. (0.9.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.0)

### Behavior and default changes

- The internal package is bundled into each renderer's output at build time, so consumers no longer need to resolve it from npm. (0.9.1) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.1)

### Fixes and other changes

- Chaining actions was fixed in @json-render/react. (0.9.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.0)
- Schema imports use the server-safe subpath, avoiding createContext crashes in Next.js App Router API routes. (0.9.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.9.0)

## @json-render/react 0.7

### New APIs and options

- Action bindings can request prevention of default browser behavior, such as navigation on links. (0.7.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.7.0)
- Adds a catalog-agnostic base type for component render functions, useful for reusable component libraries not tied to a specific catalog. (0.7.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.7.0)
- Schemas can declare actions that are always available at runtime and automatically injected into prompts; the React schema declares setState, pushState, and removeState this way. (0.7.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.7.0)
- New package providing 30+ pre-built shadcn/ui components for use with defineCatalog and defineRegistry. (0.7.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.7.0)
- Components now receive an on(event) function alongside emit(event); it returns an EventHandle with emit(), shouldPreventDefault, and bound metadata. (0.7.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.7.0)
- Adds Zod-based catalog definitions for the shadcn/ui components, available without a React dependency via the catalog entry point. (0.7.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.7.0)
- Adds React implementations for the shadcn/ui component library. (0.7.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.7.0)

### Behavior and default changes

- The actions field is required only when the catalog declares actions; catalogs with no actions no longer need to pass an empty actions object. (0.7.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.7.0)

### Fixes and other changes

- The transform splits text blocks around spec data by emitting text-end/text-start pairs, preserving prose and UI interleaving in message.parts. (0.7.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.7.0)

## @json-render/react 0.6

### Breaking changes

- Auth visibility conditions are removed; model auth as regular state. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- AuthState is removed; model auth as regular state. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The legacy catalog type is removed. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The legacy catalog API is removed. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The React export is removed. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- DynamicValue changes its path field from path to $state. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The actionHandlers prop is renamed to handlers. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The old $path expression form is replaced by $state, $item, and $index expressions. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The old path expression form is replaced by $state, $item, and $index expressions. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The repeat.path field is renamed to repeat.statePath. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Repeat scope passes the actual item object instead of requiring token rewriting. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The path field in setState action params is renamed to statePath. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The codegen type is renamed to TreeVisitor. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Structured expressions use $state for state paths in props and visibility conditions, replacing the previous path forms. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Replaces traverseTree in the codegen API. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The codegen API is renamed to traverseSpec. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Replaces SpecVisitor in the codegen API. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Visibility conditions use $state instead of path and $and/$or instead of and/or; not is an operator flag. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)

### New APIs and options

- Action params are resolved through resolveActionParam, supporting $item, $index, and $state. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Visibility logic supports $and and $or expressions, with implicit AND via arrays. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a typed convenience wrapper for applying a single patch to a Spec. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Props can use $bindItem expressions for two-way data binding; the renderer passes a bindings map to components to enable write-back to state. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Props can use $bindState expressions for two-way data binding; the renderer passes a bindings map to components to enable write-back to state. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a utility for working with AI SDK message parts. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- The mode option accepts chat to generate a chat-aware system prompt for text and inline JSONL. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Provides a low-level TransformStream for custom pipelines. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a parser for mixed text and JSONL streams. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds eq as a supported visibility comparison operator. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds gt as a supported visibility comparison operator. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds gte as a supported visibility comparison operator. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds lt as a supported visibility comparison operator. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds lte as a supported visibility comparison operator. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds neq as a supported visibility comparison operator. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a utility to convert nested tree specs to flat { root, elements } format. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds not as a visibility comparison operator flag. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Visibility logic supports $or and $and expressions, with implicit AND via arrays. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Server-side transform separates text from JSONL patches in a mixed stream. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a utility for resolving action params. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a utility for resolving binding paths. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a constant for type-safe filtering of AI SDK data-spec parts. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a type for AI SDK data-spec stream parts with patch, flat, and nested payloads. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a two-way binding hook for $bindState and $bindItem expressions. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a chat hook with message history, streaming, and spec extraction. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)
- Adds a hook to extract spec and text from a message's parts array. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)

### Performance

- ElementRenderer is now React.memo'd for better performance in repeat lists. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)

### Behavior and default changes

- emit is always defined, so callers no longer need optional chaining. (0.6.0) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.0)

### Fixes and other changes

- Fixes an infinite re-render loop caused by multiple unbound form inputs registering validation at the same empty path, by stabilizing context values in ActionProvider, ValidationProvider, and useUIStream. (0.6.1) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.6.1)

## @json-render/react 0.5

### Breaking changes

- Errors in a component no longer crash the application; the component silently disappears instead. (0.5.1) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.5.1)

### New APIs and options

- Adds an optional example field, with Zod schema introspection as a fallback. (0.5.2) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.5.2)

### Fixes and other changes

- Prompt examples are dynamically generated from the user's catalog instead of hardcoding component names, helping fix LLM hallucinations. (0.5.2) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.5.2)
- Handles non-string option values from AI output. (0.5.1) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.5.1)

## @json-render/react 0.4

### Breaking changes

- Flat specs no longer include key or parentKey. (0.4.4) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.4.4)

### New APIs and options

- Adds the defineRegistry function. (0.4.2) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.4.2)

### Behavior and default changes

- The system prompt now includes the remove operation, affecting the operations available to generated output. (0.4.3) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.4.3)

### Fixes and other changes

- SpecStream now complies with RFC 6902. (0.4.4) — [release notes](https://github.com/vercel-labs/json-render/releases/tag/%40json-render/react%400.4.4)
