Reference
Field Reference
Every fields.* builder from @strifeapp/schema, with its full option set, output type, and wire-format mapping — the code-first counterpart to the Studio-UI Fields reference.
This section documents every fields.* builder exported by @strifeapp/schema — the code-first counterpart to Fields, which documents the same editors from Strife Studio's UI. Use this section when you're writing a Schema and want the complete option set for a specific builder; use the Studio Fields reference when you're looking at a template built by hand in Strife Studio and want to know what an editor does.
Each page follows the same shape: a minimal example, the full options table (sourced directly from the builder's TypeScript signature), the inferred output type, and any notes worth knowing — including a few places where the code-first builder's options don't (yet) cover everything the underlying Strife Studio editor supports.
Common options
Every builder takes label (required) and, unless noted on its own page, most also accept:
| Option | Type | Description |
|---|---|---|
description | string | Shown as a tooltip/hint to editors in Strife Studio. |
searchable | boolean | Include this field's value in the team's search index. |
filterable | boolean | Allow filtering content lists by this field's value. |
protected | boolean | Restrict editing to users with the appropriate permission. |
propertyName | string | Override the stored property name. Defaults to the field's key in the fields object. |
localizable | boolean | Only present on builders where a per-locale value makes sense — see the table below. |
A few builders are exceptions to this common set — hint and tabs are structural/UI-only and skip most of it, and serp skips searchable/filterable. Each page's own table is the source of truth; don't assume every option on this page applies everywhere.
localizable is available on exactly these ten builders: text, paragraph, number, date, slug, html, image, link, serp, and chapters. Every other builder either doesn't expose it (a boolean or a selected option isn't the kind of value that varies by locale) or is structural (hint, tabs).
All builders
| Builder | Output type | Localizable |
|---|---|---|
string | Yes | |
string | Yes | |
number | Yes | |
boolean | No | |
boolean | No | |
string (ISO-8601) | Yes | |
string | Yes | |
string (HTML) | Yes | |
unknown | No | |
number | No | |
FileValue | No | |
unknown | No | |
Image | Yes | |
ImageGroup | No | |
unknown[] | Yes | |
unknown | No | |
CollectionDefinition | No | |
string[] / number[] / Link[] | No | |
{value, name}[] | No | |
value[] | No | |
string[] / number[] | No | |
Record<string, unknown>[] | No | |
Asset[] | No | |
literal union | No | |
Link | Yes | |
Serp | Yes | |
Target[] (read) | No | |
Target[] (read) | No | |
never (no data) | No | |
never (structural) | No |
This reference is generated from @strifeapp/schema's TypeScript source, so it only documents options the DSL actually implements today. A few Studio-UI editor capabilities noted on the pages above (⚠, and a couple more called out on individual pages) aren't reachable from defineType/fields.* yet — the per-field pages call these out explicitly rather than implying parity that doesn't exist.