- Named slots for React: Components can declare named slots such as
headerandfooter, whilechildrenremains the default slot. Slots are preserved through validation, streaming, nested conversion, code export, playground views, and Devtools navigation (#320). Built from the original contribution by @wotnak in #105 - Nested repeats:
repeat.statePathnow accepts item-relative paths such as{ "$item": "employees" }, enabling nested data rendering across React, React Native, React Email, React PDF, Image, Ink, Solid, Svelte, and Vue (#319). Built from the original contribution by @tmchow in #256 - Harness chat example: Added a complete Next.js example using the AI SDK 7 harness adapter, agent delegation, sandbox transport, and json-render components (#302)
- Chained action params: Named
onSuccessandonErroractions now receive their configuredparamsacross core and all renderer bridges (#307) - Consistent optional visibility: Element
visiblefields now remain optional across Zod 4 versions, while prompts explicitly requirechildrenarrays for every element (#299) - Spec validation and autofix: Dangling child references are pruned, malformed visibility conditions are reported, and repeated items can be filtered safely (#300)
- Release toolchain hardening: The workspace now requires Node.js 24 and pnpm 11, enforces package engine checks, and applies a minimum package release age (#293)
- Custom renderer bridges that implement the core
executeActioncallback must now accept anActionBindinginstead of a bare action name. This exposes chained action params to custom integrations at compile time (#307)
- @ctate
- @Railly
- @tmchow
- @wotnak
- Custom directives API —
@json-render/corenow supports custom directives viadefineDirective, letting you declare new JSON shapes (like$format,$math) that resolve to computed values at render time. Directives compose naturally — nest$formatover$mathover$stateand they resolve inside-out. All four renderers (React, Vue, Svelte, Solid) have built-in directive resolution (#279) @json-render/directives— New package shipping seven ready-made directives:$format(date, currency, number, percent viaIntl),$math(add, subtract, multiply, divide, mod, min, max, round, floor, ceil, abs),$concat,$count,$truncate,$pluralize, and$join. Also exportscreateI18nDirectivefor$ttranslation keys with{{param}}interpolation, andstandardDirectivesfor one-line registration (#279)
- Example READMEs — Added documentation to the chat, dashboard, game-engine, and no-ai examples (#277)
- @ctate
- Devtools — Five new packages for inspecting json-render apps in the browser:
@json-render/devtools(framework-agnostic core), plus@json-render/devtools-react,@json-render/devtools-vue,@json-render/devtools-svelte, and@json-render/devtools-solidadapters. Drop<JsonRenderDevtools />into your app to get a shadow-DOM-isolated panel with six tabs (Spec, State, Actions, Stream, Catalog, Pick), a DOM picker that maps clicked elements back to spec keys viadata-jr-key, a capped event store, and server-side stream tap utilities. Floating toggle orCmd/Ctrl+Shift+J, tree-shakes tonullin production (#273) - Devtools example — New
examples/devtoolsNext.js demo showing the full devtools panel wired up to an AI chat endpoint and a component catalog (#273) - Action observer and devtools flag in core —
@json-render/corenow exposes an action observer and a devtools enablement flag that adapters use to mirror actions and stream events into the panel (#273)
- Zod 4 schema formatting —
formatZodTypenow correctly handlesz.record(),z.default(), andz.literal()types from Zod 4, which previously produced incorrect or empty output in generated prompts and schemas (#239)
- Zod 4 test coverage — Added unit tests for
formatZodTypecovering record, default, and literal types to guard against regressions (#272)
- @ctate
- @mvanhorn
- Gaussian Splatting — Added
GaussianSplatcomponent to@json-render/react-three-fiber, bringing the component count to 20. Composable with all existing R3F components (lights, controls, post-processing) via drei's Splat loader (#259) - Standalone gsplat example — Experimental demo app showcasing Gaussian Splatting with gsplat.js (no Three.js dependency), featuring scene selector, live JSON spec viewer, and progress indicator (#259)
- R3F gsplat example — Demo app with five scenes: splat showroom, splat with primitives, multi-splat, post-processing effects, and animated floating splat (#259)
- AI output quality — Improved prompt output and schema generation for more reliable AI-generated specs (#268)
- @ctate
- @willmanzoli
- Release process — Switched from Changesets to a manual single-PR release workflow with changelog markers and automatic npm publish on version bump