Skip to content

Layout From Backend Metadata

Recommended shape:

  • backend returns schema
  • backend optionally returns layout metadata
  • frontend converts metadata to FormLayoutConfig

Avoid embedding app-specific view rules into the raw field schema unless the rule is genuinely semantic.

Pseudo-transform:

const layout = {
kind: "wizard",
steps: apiLayout.steps.map((step) => ({
id: step.id,
title: step.title,
children: step.fields.map((fieldId) => ({ kind: "field", field: fieldId })),
})),
};

Validate immediately by passing it to createFormView().