import { pageMetadata } from "@/lib/page-metadata"
export const metadata = pageMetadata("docs/api/vue")
# @json-render/vue
Vue 3 components, providers, and composables.
## Providers
### StateProvider
```vue
| Prop | Type | Description |
|---|---|---|
store |
StateStore |
External store (controlled mode). When provided, initialState and onStateChange are ignored. |
initialState |
Record<string, unknown> |
Initial state model (uncontrolled mode). |
onStateChange |
{'(changes: Array<{ path: string; value: unknown }>) => void'} |
Callback when state changes (uncontrolled mode). Called once per set or update with all changed entries. |
{
props: P; // Typed props from catalog
children?: VNode | VNode[]; // Rendered children (for container components)
emit: (event: string) => void; // Emit a named event (always defined)
on: (event: string) => EventHandle; // Get event handle with metadata
loading?: boolean;
bindings?: Record
API
React
Vue
Note
useStateStore().stateStateModel (plain object)ShallowRef<StateModel>Vue reactivity; use
state.value
useStateValue()T | undefinedComputedRef<T | undefined>Vue reactivity; use
.value
useStateBinding()[T | undefined, setter][ComputedRef<T | undefined>, setter]Vue reactivity; use
value.value
useAction().isLoadingbooleanComputedRef<boolean>Vue reactivity; use
.value
useFieldValidation().stateFieldValidationStateComputedRef<FieldValidationState>Vue reactivity; use
.value
useFieldValidation().errorsstring[]ComputedRef<string[]>Vue reactivity; use
.value
useFieldValidation().isValidbooleanComputedRef<boolean>Vue reactivity; use
.value
VisibilityContextValue.ctxCoreVisibilityContextComputedRef<CoreVisibilityContext>Vue reactivity; use
ctx.value
children typeReact.ReactNodeVNode | VNode[]Platform-specific
useBoundPropexported
exported
Same API; returns
[value, setValue]
VisibilityProviderPropsexported
not exported (no props)
Vue uses slot, no prop needed
Streaming hooks
useUIStream, useChatUIuseUIStream, useChatUISame API; returns Vue
Ref values