> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tappify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# formFields

> Reads a JSON Schema object and returns the list of controls TapForm renders from it.

```ts theme={null}
function formFields(schema): TapFormField[];
```

Reads a JSON Schema object and returns the list of controls `TapForm` renders
from it.

## Parameters

### schema

`JsonSchema`

## Returns

[`TapFormField`](/extensions/reference/frontend-api/Interface.TapFormField)\[]

## Remarks

One field per declared property, in the order the schema lists them; a schema
with no `properties` object returns an empty list, and a property that is not an
object is skipped. An `enum` becomes a select and keeps only its string values;
otherwise the kind comes from `type` — `boolean`, `number` and `integer` — and
then from `format`, where `textarea` and `date` are recognised and anything else
falls back to a single-line text control. Nested objects and arrays get a text
control, so render those yourself. Call it when you want the fields without the
form.

## Example

```ts theme={null}
import { formFields } from '@tappify/extension-sdk';

const fields = formFields({
  type: 'object',
  properties: { refreshMinutes: { type: 'integer', title: 'Refresh minutes' } },
  required: ['refreshMinutes'],
});
const names = fields.map(field => field.name);
```
