---
"@json-render/core": minor
"@json-render/react": minor
"@json-render/react-pdf": minor
"@json-render/shadcn": minor
"@json-render/react-native": minor
"@json-render/remotion": minor
"@json-render/codegen": minor
"@json-render/zustand": minor
"@json-render/redux": minor
"@json-render/jotai": minor
---

External state store, store adapters, and bug fixes.

### New: External State Store

The `StateStore` interface lets you plug in your own state management (Redux, Zustand, Jotai, XState, etc.) instead of the built-in internal store. Pass a `store` prop to `StateProvider`, `JSONUIProvider`, or `createRenderer` for controlled mode.

- Added `StateStore` interface and `createStateStore()` factory to `@json-render/core`
- `StateProvider`, `JSONUIProvider`, and `createRenderer` now accept an optional `store` prop for controlled mode
- When `store` is provided, it becomes the single source of truth (`initialState`/`onStateChange` are ignored)
- When `store` is omitted, everything works exactly as before (fully backward compatible)
- Applied across all platform packages: react, react-native, react-pdf
- Store utilities (`createStoreAdapter`, `immutableSetByPath`, `flattenToPointers`) available via `@json-render/core/store-utils` for building custom adapters

### New: Store Adapter Packages

- `@json-render/zustand` — Zustand adapter for `StateStore`
- `@json-render/redux` — Redux / Redux Toolkit adapter for `StateStore`
- `@json-render/jotai` — Jotai adapter for `StateStore`

### Changed: `onStateChange` signature updated (breaking)

The `onStateChange` callback now receives a single array of changed entries instead of being called once per path:

```ts
// Before
onStateChange?: (path: string, value: unknown) => void

// After
onStateChange?: (changes: Array<{ path: string; value: unknown }>) => void
```

### Fixed

- Fix schema import to use server-safe `@json-render/react/schema` subpath, avoiding `createContext` crashes in Next.js App Router API routes
- Fix chaining actions in `@json-render/react`, `@json-render/react-native`, and `@json-render/react-pdf`
- Fix safely resolving inner type for Zod arrays in core schema
