> ## Documentation Index
> Fetch the complete documentation index at: https://forest-chore-open-api.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Customize how fields behave in your Forest back-office

Fields are the individual data points displayed and edited across your collections in Forest. By default, Forest exposes the fields that exist in your data source. You can then extend and customize them to match your business needs.

## What are fields?

A field in Forest maps to a column, property, or attribute in your data source. Forest lets you go beyond that default mapping by:

* **Creating computed fields**: derive new values from existing data or external APIs
* **Importing fields**: pull in fields from related records directly into a collection
* **Renaming and removing fields**: hide technical details and use business-friendly names
* **Adding write behavior**: make computed or read-only fields editable
* **Adding validation rules**: enforce stricter constraints beyond what your data source provides
* **Enabling filtering and sorting**: make any field filterable or sortable
* **Handling binary data**: configure how binary fields are displayed and uploaded

## How field customization works

Field customization is applied in your back-end code using a fluent API on the collection object. Changes are applied at the back-end level and reflected in the Forest UI.

```javascript theme={null}
collection
  .addField('fullName', {
    columnType: 'String',
    dependencies: ['firstName', 'lastName'],
    getValues: (records, context) =>
      records.map(r => `${r.firstName} ${r.lastName}`),
  })
  .replaceFieldWriting('fullName', (value, context) => {
    const [firstName, lastName] = value.split(' ');
    return { firstName, lastName };
  })
  .addFieldValidation('fullName', 'Present')
  .addFieldValidation('fullName', 'ShorterThan', 30)
  .emulateFieldFiltering('fullName')
  .emulateFieldSorting('fullName')
  .removeField('firstName', 'lastName');
```

## Explore field customization

<CardGroup cols={2}>
  <Card title="Computed fields" icon="calculator" href="/product/process/fields/computed">
    Create new fields derived from existing data or external APIs
  </Card>

  <Card title="Import, rename & remove" icon="pencil" href="/product/process/fields/import-rename-remove">
    Import fields from relationships, rename for clarity, or hide technical fields
  </Card>

  <Card title="Validation" icon="shield-check" href="/product/process/fields/validation">
    Add validation rules beyond what your data source enforces
  </Card>

  <Card title="Write behavior" icon="pen" href="/product/process/fields/write">
    Make fields writable and control how writes are applied
  </Card>

  <Card title="Filtering & sorting" icon="filter" href="/product/process/fields/filter">
    Enable filtering and sorting on any field, including computed ones
  </Card>

  <Card title="Binary fields" icon="file" href="/product/process/fields/binary">
    Configure how binary data is displayed and uploaded
  </Card>
</CardGroup>
