Core Developer Concepts

The 0.9.50 SDK separates four things that are easy to accidentally treat as one:

LayerQuestion it answers
DeclarationWhat data exists, which constraints describe it, and how may it be collected?
CompilationIs the declaration internally consistent, and what normalized artifacts does it produce?
Runtime stateWhat has this visitor entered, touched, revealed, repeated, or submitted?
TransportWhich artifact is sent to BusinessDash, and which remains inside your application?

The data flows in one direction:

collection() + bd.* + optional layout
                  │
                  ▼
    createFormSchemaOrchestrator()
          │                 │
          ▼                 ▼
  databaseSchema         uiFormTree
          │                 │
          ▼                 ▼
   data-model CLI      your renderer/store

databaseSchema and uiFormTree share a declaration source, but they are different outputs. The database CLI transports only databaseSchema. uiFormTree is a local render definition, not live form state and not a dashboard-authored FormSchema.

Read these concepts first

  1. Definitions and Runtime — understand compiled definitions, outputs, and transport boundaries.
  2. Validation and Form State — separate validation rules from current errors and visitor state.
  3. Inferred Types and Custom Forms — reuse collection types in Zod, React Hook Form, shadcn/ui, and code-owned UI.
  4. Boundaries and Layout — understand why feature ownership is independent from steps and groups.

Then build the declaration progressively in Schema Declarations.