Forms, switch product
announcements

GolemUI v1.3.0: JSON schemas for your own widget set

GolemUI v1.3.0 is out. It is a small release with one theme: v1.2.0 let you build your own widget set, and v1.3.0 gives that widget set the same JSON authoring experience gui has.

Until now the JSON schemas we publish described only gui. If you built a widget set, its TypeScript side was fully typed, but a JSON form written against your widgets had nothing behind it: no completion in the editor, no validation, and no way to reuse the gui schemas short of copying and editing them by hand.

v1.3.0 splits the published schemas into a shared core and one tree per widget set, and adds @golemui/schemas, a package whose CLI scaffolds a tree for yours:

Terminal window
npx @golemui/schemas init --name kendo --id-base https://example.com/schemas/kendo/

That writes a small schema package. You own the config file listing your widget types, one schema per widget, and the validators file. The rest is generated:

schemas/
schemas.config.mjs your widget list
src/lib/
form.schema.json generated
form.editor.schema.json generated, self-contained, for offline editing
validators.schema.json yours
components/*.schema.json one per widget type, yours
examples/example.form.json
test/schemas.spec.ts

Edit the widget list or a component schema, run npx @golemui/schemas generate, and the generated files follow. Publish the tree at your own URL and point JSON forms at it:

{
"$schema": "https://example.com/schemas/kendo/form.schema.json",
"form": [{ "kind": "input", "type": "kendoText", "path": "customer.name" }]
}

Editors then complete and validate against your widgets, and because every widget set now lives in its own directory, yours and gui can be validated by the same tool at the same time. The JSON schemas guide covers the tree layout and the generator guide covers the commands and what to write per widget.

  • Open pickers show their errors. Date, time and range pickers, and the dropdown, now repeat the field’s validation errors inside the open panel, so the panel no longer covers them.
  • renderer is rejected in JSON forms. Its props hold a render function, which JSON cannot express. Using it in a JSON form used to pass validation and fail at runtime. It now fails validation with a clear message.
  • size is not tied to a grid. The schema now describes it as a relative width from 1 to 12, so a widget set that does not render a grid can map it however it likes.

There are no code changes. Bump every @golemui/* package together, as always.

If your JSON forms point $schema at https://golemui.com/schemas/form.schema.json, which is what the docs and the MCP tools have always produced, there is nothing to do. That URL keeps working.

The one case that needs a change: if you fetched or vendored the published gui schemas by their individual URLs, for example to load them into your own validator, those files now live under /schemas/gui/ and the old flat paths return 404. Update the URLs and everything else stays the same.

Previous Why GolemUI Next GolemUI v1.4.0: dramatically faster core, multi-select widgets, and editable range pills