Skip to content

Getting Started

Install the core runtime and one UI adapter:

bash
pnpm add @sdui-kit/core @sdui-kit/react
bash
pnpm add @sdui-kit/core @sdui-kit/vue

Then use the matching adapter page:

Optional Packages

Install extra packages only for the integrations your app uses:

PackageUse when
@sdui-kit/formsYou need headless form state, validation, conditional fields and submit actions.
@sdui-kit/browser-historyYou want browser history route parsing or navigation without a framework router.
@sdui-kit/nextYou use Next App Router.
@sdui-kit/react-routerYou use React Router.
@sdui-kit/vue-routerYou use Vue Router.
@sdui-kit/tanstack-routerYou use TanStack Router.
@sdui-kit/tanstack-queryYou want TanStack Query cache/request adapter helpers.

For example:

bash
pnpm add @sdui-kit/core @sdui-kit/react @sdui-kit/react-router react-router-dom

The backend payload is the same for every framework:

ts
const screen = {
  schemaVersion: '1.0',
  componentName: 'button',
  props: {
    children: 'Save',
    action: {
      type: 'request',
      endpoint: '/api/save',
      method: 'POST',
      body: { id: '123' },
      success: {
        type: 'toast',
        message: 'Saved',
        status: 'success',
      },
    },
  },
}

Register app components in the selected framework adapter:

tsx
const registry = createReactRegistry({
  Text,
  Button,
  SummaryCard,
})
ts
const registry = createVueRegistry({
  Text,
  Button,
  SummaryCard,
})

The payload uses those keys as componentName. Matching is case-sensitive:

json
{
  "componentName": "SummaryCard",
  "props": {
    "title": "Applications",
    "value": "24"
  }
}

The packages do not ship a design system. The consuming app owns visual components, styling, router, API client, modals and notifications.

Use Component Registry, Actions, and Navigation & Screens for the framework-neutral contracts.