npm / @json-render/react
@json-render/react
What changed in @json-render/react 0.4 to 0.10, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-15.
21 breaking56 new APIs and options1 performance4 behavior and defaults7 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@json-render/react 0.1014 changes
New APIs and options 14
Checkbox, Radio, and Switch form components now support the checks prop for validation.
Prop expressions can call registered functions with resolved arguments; functions are supplied through the functions prop on JSONUIProvider or createRenderer.
The ComputedFunction type is exported from @json-render/core.
Adds a cross-field validation function that aliases matches with clearer semantics.
Functions registered via catalog can be provided at runtime through the functions prop on JSONUIProvider or createRenderer.
Adds cross-field validation requiring a value to be greater than another field.
Adds cross-field validation requiring a value to be less than another field; supports numbers, strings, and coerced values.
Adds cross-field validation that makes a field required only when a condition field is truthy.
The validateForm action's state path is configurable through the statePath parameter.
Template expressions interpolate state values into strings; references to missing paths resolve to an empty string.
Adds a hook for non-throwing access to validation context.
A built-in React action validates all registered form fields synchronously and writes { valid, errors } to state, defaulting to /formValidation.
Form components now accept validateOn to control validation timing; Checkbox, Radio, Switch, Input, Textarea, and Select support it.
Elements can map state paths to action bindings; watchers fire when values change, not on initial render, and support cascading dependencies.
@json-render/react 0.911 changes
Breaking changes 1
The callback now receives one array of changed entries instead of being called once per path.
New APIs and options 7
A factory for creating a StateStore was added to @json-render/core.
Store utilities are available through this subpath for building custom adapters.
A Jotai adapter for StateStore is available as a new package.
A Redux / Redux Toolkit adapter for StateStore is available as a new package.
A Zustand adapter for StateStore is available as a new package.
Accepts an optional store prop for controlled mode; when provided, the store is the single source of truth.
A new interface lets developers plug in external state management instead of the built-in internal store.
Behavior and default changes 1
The internal package is bundled into each renderer's output at build time, so consumers no longer need to resolve it from npm.
Fixes and other changes 2
Chaining actions was fixed in @json-render/react.
Schema imports use the server-safe subpath, avoiding createContext crashes in Next.js App Router API routes.
@json-render/react 0.79 changes
New APIs and options 7
Action bindings can request prevention of default browser behavior, such as navigation on links.
Adds a catalog-agnostic base type for component render functions, useful for reusable component libraries not tied to a specific catalog.
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.
New package providing 30+ pre-built shadcn/ui components for use with defineCatalog and defineRegistry.
Components now receive an on(event) function alongside emit(event); it returns an EventHandle with emit(), shouldPreventDefault, and bound metadata.
Adds Zod-based catalog definitions for the shadcn/ui components, available without a React dependency via the catalog entry point.
Adds React implementations for the shadcn/ui component library.
Behavior and default changes 1
The actions field is required only when the catalog declares actions; catalogs with no actions no longer need to pass an empty actions object.
Fixes and other changes 1
The transform splits text blocks around spec data by emitting text-end/text-start pairs, preserving prose and UI interleaving in message.parts.
@json-render/react 0.647 changes
Breaking changes 18
Auth visibility conditions are removed; model auth as regular state.
AuthState is removed; model auth as regular state.
The legacy catalog type is removed.
The legacy catalog API is removed.
The React export is removed.
DynamicValue changes its path field from path to $state.
The actionHandlers prop is renamed to handlers.
The old $path expression form is replaced by $state, $item, and $index expressions.
The old path expression form is replaced by $state, $item, and $index expressions.
The repeat.path field is renamed to repeat.statePath.
Repeat scope passes the actual item object instead of requiring token rewriting.
The path field in setState action params is renamed to statePath.
The codegen type is renamed to TreeVisitor.
Structured expressions use $state for state paths in props and visibility conditions, replacing the previous path forms.
Replaces traverseTree in the codegen API.
The codegen API is renamed to traverseSpec.
Replaces SpecVisitor in the codegen API.
Visibility conditions use $state instead of path and $and/$or instead of and/or; not is an operator flag.
New APIs and options 26
Action params are resolved through resolveActionParam, supporting $item, $index, and $state.
Visibility logic supports $and and $or expressions, with implicit AND via arrays.
Adds a typed convenience wrapper for applying a single patch to a Spec.
Props can use $bindItem expressions for two-way data binding; the renderer passes a bindings map to components to enable write-back to state.
Props can use $bindState expressions for two-way data binding; the renderer passes a bindings map to components to enable write-back to state.
Adds a utility for working with AI SDK message parts.
The mode option accepts chat to generate a chat-aware system prompt for text and inline JSONL.
Provides a low-level TransformStream for custom pipelines.
Adds a parser for mixed text and JSONL streams.
Adds eq as a supported visibility comparison operator.
Adds gt as a supported visibility comparison operator.
Adds gte as a supported visibility comparison operator.
Adds lt as a supported visibility comparison operator.
Adds lte as a supported visibility comparison operator.
Adds neq as a supported visibility comparison operator.
Adds a utility to convert nested tree specs to flat { root, elements } format.
Adds not as a visibility comparison operator flag.
Visibility logic supports $or and $and expressions, with implicit AND via arrays.
Server-side transform separates text from JSONL patches in a mixed stream.
Adds a utility for resolving action params.
Adds a utility for resolving binding paths.
Adds a constant for type-safe filtering of AI SDK data-spec parts.
Adds a type for AI SDK data-spec stream parts with patch, flat, and nested payloads.
Adds a two-way binding hook for $bindState and $bindItem expressions.
Adds a chat hook with message history, streaming, and spec extraction.
Adds a hook to extract spec and text from a message's parts array.
Performance 1
ElementRenderer is now React.memo'd for better performance in repeat lists.
Behavior and default changes 1
emit is always defined, so callers no longer need optional chaining.
Fixes and other changes 1
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.
@json-render/react 0.54 changes
Breaking changes 1
Errors in a component no longer crash the application; the component silently disappears instead.
New APIs and options 1
Adds an optional example field, with Zod schema introspection as a fallback.
Fixes and other changes 2
Prompt examples are dynamically generated from the user's catalog instead of hardcoding component names, helping fix LLM hallucinations.
Handles non-string option values from AI output.
@json-render/react 0.44 changes
Breaking changes 1
Flat specs no longer include key or parentKey.
New APIs and options 1
Adds the defineRegistry function.
Behavior and default changes 1
The system prompt now includes the remove operation, affecting the operations available to generated output.
Fixes and other changes 1
SpecStream now complies with RFC 6902.