QUESTPIE
Extend the Platform

Registries

Field, view, and component registries — how the admin resolves renderers from schema.

Registries are the mechanism that connects server-side schema to client-side rendering. When the admin panel encounters a text field, it looks up the text renderer in the field registry.

How Registries Work

Server: f.text()

Generated: { type: "text", options: {...} }

Admin Client: fieldRegistry.get("text")

React: <TextFieldRenderer value={...} onChange={...} />

Field Registry

Maps field types to React components:

// Built-in field renderers
text      → TextInput
textarea  → TextareaInput
richText  → RichTextEditor (TipTap)
number    → NumberInput
boolean   → Checkbox / Switch
date      → DatePicker
datetime  → DateTimePicker
select    → SelectDropdown
relation  → RelationPicker
upload    → FileUpload
object    → NestedForm
array     → RepeatableItems
blocks    → BlockEditor
json      → JSONEditor

View Registry

Maps view types to React components:

// Built-in view renderers
table → TableView (list)
form  → FormView (edit)

Component Registry

General-purpose component registry for dynamic rendering:

// Registered components available for server-driven UI
icon     → IconComponent
badge    → BadgeComponent

Extending Registries

Register custom renderers by placing files in the admin directory. Codegen discovers them automatically:

questpie/admin/
  fields/
    color.tsx        # Custom color field renderer
    currency.tsx     # Custom currency field renderer
  views/
    kanban.tsx       # Custom kanban list view

These are merged with built-in defaults during codegen and exported in .generated/client.ts.

On this page