"@json-render/core": minor "@json-render/react": minor "@json-render/shadcn": minor "@json-render/vue": minor
Dynamic forms, Vue renderer, XState Store adapter, and computed values.
@json-render/vue PackageVue 3 renderer for json-render. Full feature parity with @json-render/react including data binding, visibility conditions, actions, validation, repeat scopes, and streaming.
defineRegistry — create type-safe component registries from catalogsRenderer — render specs as Vue component treesStateProvider, ActionProvider, VisibilityProvider, ValidationProvideruseStateStore, useStateValue, useStateBinding, useActions, useAction, useIsVisible, useFieldValidationuseUIStream, useChatUIStateStore interface@json-render/xstate PackageXState Store (atom) adapter for json-render's StateStore interface. Wire an @xstate/store atom as the state backend.
xstateStoreStateStore({ atom }) — creates a StateStore from an @xstate/store atom@xstate/store v3+$computed ExpressionsCall registered functions from prop expressions:
{ "$computed": "functionName", "args": { "key": <expression> } } — calls a named function with resolved argsfunctions prop on JSONUIProvider / createRendererComputedFunction type exported from @json-render/core$template ExpressionsInterpolate state values into strings:
{ "$template": "Hello, ${/user/name}!" } — replaces ${/path} references with state valuesReact to state changes by triggering actions:
watch field on elements maps state paths to action bindingswatch is a top-level field on elements (sibling of type/props/children), not inside propswatch placed inside propsNew built-in validation functions for cross-field comparisons:
equalTo — alias for matches with clearer semanticslessThan — value must be less than another field (numbers, strings, coerced)greaterThan — value must be greater than another fieldrequiredIf — required only when a condition field is truthyresolvePropValue for consistent $state expression handlingvalidateForm Action (React)Built-in action that validates all registered form fields at once:
validateAll() synchronously and writes { valid, errors } to state/formValidation (configurable via statePath param)All form components now support validation:
checks and validateOn propsvalidateOn prop (controls timing: change/blur/submit)Reordered provider nesting so ValidationProvider wraps ActionProvider, enabling validateForm to access validation state. Added useOptionalValidation hook for non-throwing access.