# \<Form>

Initialize this component in your React app at the location where you want a Feathery form to appear. It renders your form as an HTML `<form>` element.

<table><thead><tr><th width="213" align="center">Prop</th><th width="188.33333333333331" align="center">Type</th><th>Description</th></tr></thead><tbody><tr><td align="center"><code>formId</code></td><td align="center"><code>string</code></td><td>ID of your Feathery form to display. It can be found on your dashboard, under the form's settings page.</td></tr><tr><td align="center"><a href="form/event-handlers">Event Handlers</a></td><td align="center"><code>optional functions</code> </td><td>Pass in <a href="form/event-handlers">callback functions</a> to run custom code when different events occur in your form (submit, load, error, etc.)</td></tr><tr><td align="center"><a href="form/contextref">contextRef</a></td><td align="center">React Ref</td><td>Pass in a ref that receives the <a href="form/contextref">form context</a>, which contains helper functions allowing you to modify the form state directly.</td></tr><tr><td align="center"><code>initialValues</code></td><td align="center"><code>optional object</code></td><td>Initial form field values of the shape <code>{&#x3C;fieldId>: &#x3C;fieldValue>}</code>. If not passed in, Feathery will generate default initial values as necessary.</td></tr><tr><td align="center"><code>initialStepId</code></td><td align="center"><code>optional string</code></td><td>If specified, this will be the first step your user sees.</td></tr><tr><td align="center"><code>initialLoader</code></td><td align="center"><code>optional object</code></td><td>Options for the loader as the form initializes. By default no loader will be shown while loading the form, unless the user is waiting on authentication. <br><br><a href="form/initialloader">Full reference</a></td></tr><tr><td align="center"><code>popupOptions</code></td><td align="center"><code>optional PopupOptions</code></td><td>If popup options are set, your Feathery form will show up as a popup on top of your page rather than inline with the rest of the content.</td></tr><tr><td align="center"><code>language</code></td><td align="center"><code>optional string</code></td><td><p>This is a comma-separated list of ISO 639-1 language code(s) to show the form in if a <a href="../../../platform/international-forms/translate-forms">translation file</a> in one of those languages has been uploaded for the form in its settings.</p><p></p><p>The languages will be prioritized according to their order in the specified string. If no translation for any of the specified languages is found, the form language will by default show up as written in the visual editor.</p></td></tr><tr><td align="center"><code>readOnly</code></td><td align="center"><code>optional boolean</code></td><td>Disables form validation and submissions and prevents user from editing field values.</td></tr><tr><td align="center"><code>hashNavigation</code></td><td align="center"><code>optional boolean</code></td><td>Overrides the "Track Step with URL Hash" setting on the form. When set, allows the browser to 'remember' step transitions so users can use the browser back and forward buttons.</td></tr><tr><td align="center"><code>hideTestUI</code></td><td align="center"><code>optional boolean</code></td><td>If showing the test or draft form, hide the test nav bar. If not specified, the test nav bar will be shown.</td></tr><tr><td align="center"><code>formProps</code></td><td align="center"><code>optional object</code></td><td>Override specific props of the underlying HTML<code>&#x3C;form></code> element by passing in an object mapping your desired prop keys to values.</td></tr><tr><td align="center"><code>elementProps</code></td><td align="center"><code>optional object</code></td><td>Override specific form element props by passing in a map from element ID to an object of custom props to be applied to that element. E.g., you can hide a field by passing in <code>{&#x3C;fieldID> : {style: {visibility: 'hidden'}}}</code>.</td></tr><tr><td align="center"><code>customComponents</code></td><td align="center"><code>{&#x3C;containerId>: &#x3C;JSX element>}</code></td><td>Custom components you'd like to position per-step, in the flow of elements. <a href="https://docs.feathery.io/develop/react/select-form-props/children">Full reference</a></td></tr><tr><td align="center"><code>children</code></td><td align="center"><code>optional JSX elements</code></td><td>Custom, absolute-positioned components that you want to render across all steps. <a href="https://docs.feathery.io/develop/react/select-form-props/children">Full reference</a></td></tr><tr><td align="center"><code>className</code></td><td align="center"><code>optional string</code></td><td>Your <a href="https://reactjs.org/docs/faq-styling.html#how-do-i-add-css-classes-to-components">custom CSS class(es)</a> to associate with your form element.</td></tr><tr><td align="center"><code>style</code></td><td align="center"><code>optional object</code></td><td>Your <a href="https://reactjs.org/docs/dom-elements.html#style">custom inline CSS styling</a> to associate with your form element.</td></tr></tbody></table>
