23
stars
125
commits
TypeScript
primary language
Apr 17, 2026
updated
jsonformsjsonforms is "a declarative framework for efficiently building form-based web UIs." jsonforms has multiple renderer packages for different frameworks and component libraries, and this is one such package.
You can preview the renderers via storybook here.
npm install @great-expectations/jsonforms-antd-renderers
In order to use this package you need to import the renderer registry entries from this package and provide them to the @jsonforms/react JsonForms component:
import { JsonForms } from "@jsonforms/react"
import {
rendererRegistryEntries,
cellRegistryEntries,
} from "@great-expectations/jsonforms-antd-renderers"
function MyForm({ data }: { data: Record<string, unknown> }) {
return (
<JsonForms
data={data}
schema={schema}
renderers={rendererRegistryEntries}
cells={cellRegistryEntries}
/>
)
}
This package expands upon the types and configurability of jsonforms UISchemas. When writing UISchemas, you'll want to provide your jsonschema's type to our UISchema type to take advantage of advanced typechecking & UI configurability. See our storybooks (instructions for running storybooks under Contributing) for more examples.
import { useState } from "react"
import { Form, Button } from "antd"
import { JsonForms } from "@jsonforms/react"
import {
rendererRegistryEntries,
UISchema,
} from "@great-expectations/jsonforms-antd-renderers"
const schema = {
type: "object",
properties: { password: { type: "string" } },
} as const
// Be sure to use an `as const` assertion so that UISchema
// can see the specific types of `type` fields within a schema.
// i.e. without `as const`, the value "object" is interpreted
// as a string type, and not the string literal type "object"
const uischema: UISchema<typeof schema> = {
type: "VerticalLayout",
elements: [
{
type: "Control",
scope: "#/properties/password",
// Properties like type: "password" here are unique to this renderer package.
// This allows you more declarative control over how your forms render.
// In this case, the password field will be rendered with AntD's password input component.
options: { type: "password" },
},
],
}
function MyForm() {
const [data, setData] = useState<Record<string, unknown>>({})
return (
<Form onFinish={() => myApiCall(data)}>
<JsonForms
data={data}
onChange={(result) => setData(result.data as Record<string, unknown>)}
schema={schema}
uischema={uischema}
renderers={rendererRegistryEntries}
/>
<Form.Item>
<Button htmlType="submit">Submit</Button>
</Form.Item>
</Form>
)
}
packageManager field in package.jsonpnpm i --frozen-lockfilepnpm testpnpm test:covnpx vite preview --outDir htmlo + enter to open the results in a browserpnpm storybookpnpm testpnpm storybookpnpm format:writepnpm lintfix(<scope>): <short summary>, feat(<scope>): <short summary>, or BREAKING CHANGE: <short summary> will trigger a release. short summary is required. scope is optional.pnpm packnpm uninstall @great-expectations/jsonforms-antd-renderers and possibly clear your package manager's cachenpm install /path/to/jsonforms-antd-renderers-0.0.0-semantic-release.tgzTypeScript
97.7%
MDX
1.4%
23
stars
125
commits
TypeScript
primary language
Apr 17, 2026
updated
jsonformsjsonforms is "a declarative framework for efficiently building form-based web UIs." jsonforms has multiple renderer packages for different frameworks and component libraries, and this is one such package.
You can preview the renderers via storybook here.
npm install @great-expectations/jsonforms-antd-renderers
In order to use this package you need to import the renderer registry entries from this package and provide them to the @jsonforms/react JsonForms component:
import { JsonForms } from "@jsonforms/react"
import {
rendererRegistryEntries,
cellRegistryEntries,
} from "@great-expectations/jsonforms-antd-renderers"
function MyForm({ data }: { data: Record<string, unknown> }) {
return (
<JsonForms
data={data}
schema={schema}
renderers={rendererRegistryEntries}
cells={cellRegistryEntries}
/>
)
}
This package expands upon the types and configurability of jsonforms UISchemas. When writing UISchemas, you'll want to provide your jsonschema's type to our UISchema type to take advantage of advanced typechecking & UI configurability. See our storybooks (instructions for running storybooks under Contributing) for more examples.
import { useState } from "react"
import { Form, Button } from "antd"
import { JsonForms } from "@jsonforms/react"
import {
rendererRegistryEntries,
UISchema,
} from "@great-expectations/jsonforms-antd-renderers"
const schema = {
type: "object",
properties: { password: { type: "string" } },
} as const
// Be sure to use an `as const` assertion so that UISchema
// can see the specific types of `type` fields within a schema.
// i.e. without `as const`, the value "object" is interpreted
// as a string type, and not the string literal type "object"
const uischema: UISchema<typeof schema> = {
type: "VerticalLayout",
elements: [
{
type: "Control",
scope: "#/properties/password",
// Properties like type: "password" here are unique to this renderer package.
// This allows you more declarative control over how your forms render.
// In this case, the password field will be rendered with AntD's password input component.
options: { type: "password" },
},
],
}
function MyForm() {
const [data, setData] = useState<Record<string, unknown>>({})
return (
<Form onFinish={() => myApiCall(data)}>
<JsonForms
data={data}
onChange={(result) => setData(result.data as Record<string, unknown>)}
schema={schema}
uischema={uischema}
renderers={rendererRegistryEntries}
/>
<Form.Item>
<Button htmlType="submit">Submit</Button>
</Form.Item>
</Form>
)
}
packageManager field in package.jsonpnpm i --frozen-lockfilepnpm testpnpm test:covnpx vite preview --outDir htmlo + enter to open the results in a browserpnpm storybookpnpm testpnpm storybookpnpm format:writepnpm lintfix(<scope>): <short summary>, feat(<scope>): <short summary>, or BREAKING CHANGE: <short summary> will trigger a release. short summary is required. scope is optional.pnpm packnpm uninstall @great-expectations/jsonforms-antd-renderers and possibly clear your package manager's cachenpm install /path/to/jsonforms-antd-renderers-0.0.0-semantic-release.tgzTypeScript
97.7%
MDX
1.4%