---
tags: zeta-dom-react
---
# Upgrade from previous versions
## `useFormField(string, ...)`
| Deprecated | Removed |
| ---------- | ------- |
| v0.3.5 | - |
For better tree-shaking of unused code, the field type argument now requires a constructor function.
For built-in field type, use the corresponding field type constructor:
```typescript
// ---------- old ----------
import { useFormField } from 'zeta-dom-react';
useFormField('text', { /* ... */ });
useFormField('toggle', { /* ... */ });
useFormField('choice', { /* ... */ });
// ---------- new ----------
import { useFormField, TextField, ToggleField, ChoiceField } from 'zeta-dom-react';
useFormField(TextField, { /* ... */ });
useFormField(ToggleField, { /* ... */ });
useFormField(ChoiceField, { /* ... */ });
```
To add custom field type, create a constructor function or a class implementing `FieldType` interface:
```typescript
// ---------- old ----------
import { registerFieldType } from 'zeta-dom-react';
registerFieldType('custom', { /* ... */ });
// use
useFormField('custom', { /* ... */});
// ---------- new ----------
class CustomField implements FieldType<CustomFieldProps, CustomFieldState> {
valueProperty?: string | undefined;
isEmpty(value: any): boolean {
/* ... */
}
postHook(state: FormFieldState<any>, props: CustomFieldProps): CustomState {
/* ... */
}
}
// use
useFormField(CustomField, { /* ... */});
```
## `useErrorHandlerRef`
| Deprecated | Removed |
| ---------- | ------- |
| v0.3.2 | - |
Equivalent to
```typescript
useErrorHandler(source).ref
```