V0 `FormField` has some usages, from simple to complex, which we are trying to create a *shim* to support the migration to V9 using `Field`. We need some orientation on how to best do it for some cases, since the V9 `Field` is tighted to the possible inputs available in V9, making it difficute to use it together with custom inputs. I have made [this Codesandbox](https://codesandbox.io/s/v0-formfield-usages-1vx10l) with few V0 `FormField` usages, where we have the custom `control` component is where our questions are. There's no straightfoward way to use `useField` and build it to be that generic in the current implementation. we have started the idea of a shim that looks like the following: ```jsx= import * as React from 'react'; import { useField_unstable, useFieldStyles_unstable, renderField_unstable } from '@fluentui/react-field'; import { FieldPropsWithOptionalComponentProps } from '../../components/Field/Field.types'; interface CustomInputFieldProps { errorMessage?: | { content: string; } | string; required?: boolean; control: { content: React.ReactNode; }; label: React.ReactElement | { content: React.ReactElement }; } const DummyVoidFunctionComponent: React.VoidFunctionComponent< Pick< React.HTMLAttributes<HTMLElement>, 'id' | 'className' | 'style' | 'aria-labelledby' | 'aria-describedby' | 'aria-invalid' | 'aria-errormessage' > > = () => { return null; }; const CustomInputField = React.forwardRef<HTMLInputElement, CustomInputFieldProps>((props, ref) => { const { errorMessage, required, control, label } = props; const fieldProps: FieldPropsWithOptionalComponentProps<typeof DummyVoidFunctionComponent> = { required: required }; if (errorMessage) { fieldProps.validationState = 'error'; if (typeof errorMessage === 'object') { fieldProps.validationMessage = errorMessage.content; } if (typeof errorMessage === 'string') { fieldProps.validationMessage = errorMessage; } } if (label) { if (label.content) { fieldProps.label = label.content; } else { fieldProps.label = label; } } fieldProps.control = { children: () => control.content }; const state = useField_unstable(fieldProps, ref, { component: DummyVoidFunctionComponent, classNames: { root: 'foo', control: 'foo', hint: 'foo', label: 'foo', validationMessage: 'foo', validationMessageIcon: 'foo', }, }); useFieldStyles_unstable(state); return renderField_unstable(state); }); // Usage export const CustomInput = () => ( <CustomInputField required errorMessage={{ content: 'This is an error message' }} control={{ content: <input type="text" /> }} label="This is a label" /> ); ``` We are trying to figure out if that is the best way to keep the refactor and how do we want to support those cases.