Form Settings
Global form settings: display layout, appearance, after-save behavior, security, and multilingual support.
Where settings are configured
Form-wide settings (as opposed to individual field settings) are located on the right side of the designer top bar.
| Location | What it contains |
|---|---|
| Style button (for example Dialog · 960 px) opens the Display style & form behavior window | Display layout type, width, label position, density, required indicator, Print, debug mode, and after-save behavior. |
| Security button (or Editor lock active when locked) | Who can open settings, storage lock, script policy, and editor password. |
| Translations (i18n) tab | Languages and text translations. |
| Layout tab, New, Edit, Display buttons | Per-mode custom layouts. |
| JSON tab | All settings as raw JSON text. |
Form colors and fonts follow the SharePoint site theme, including dark mode. They cannot be overridden in form settings. Tab and section colors are configured in the layout.
All settings are optional. Any omitted setting uses the default value listed below. Settings are saved together with the entire configuration via Save form.
Form settings
Display layout (dialog, panel, full page) displayLayout
Controls how the form is rendered when opened as a standalone form page. In the designer, select it under SharePoint layout type.
| Value | Designer option | Behavior |
|---|---|---|
dialog (default) | Centered dialog (Card) | A card centered on the page with a maximum width of dialogMaxWidth. |
panel | Side panel (Right) | A panel sliding in from the right with a fixed width of 640 px. Clicking the backdrop closes the form (prompting if there are unsaved changes). |
full | Full width | The form fills the page. Side margins are controlled by fullWidthMarginHorizontal. |
When SharePoint opens a form in its own list panel or dialog (for example, New from a list view), the form fills that panel and displayLayout does not apply. This setting applies to standalone pages (NewForm.aspx, EditForm.aspx, DispForm.aspx, SPListForm.aspx).
The style button displays the current selection (Dialog · 960 px, Panel · 640 px, Full width). In a mode with a custom layout, only that mode's setting is changed; see modeLayouts.
{ "displayLayout": "panel" }
Maximum dialog width dialogMaxWidth
Maximum card width in pixels when displayLayout: "dialog". The Maximum dialog width (px) field is shown only for the Dialog type.
- Default value is 960. On blur, the designer clamps the value to 480 to 2560.
- On narrower viewports, the card shrinks to fit the window.
{ "displayLayout": "dialog", "dialogMaxWidth": 1200 }
Horizontal margins in full width fullWidthMarginHorizontal
Left and right margin in pixels when displayLayout: "full". The Left & right margin (px) field is shown only for Full width.
- Default value is 24. The designer clamps the value to 0 to 300.
{ "displayLayout": "full", "fullWidthMarginHorizontal": 48 }
Label position labelPosition
Where the field label appears relative to the input.
| Value | Designer option | Behavior |
|---|---|---|
top (default) | Above field (default) | The label is placed above the input. |
left | Left of field | The label is placed to the left of the input. Suitable for wide forms. |
{ "labelPosition": "left" }
Form density formDensity
Size of controls and spacing between fields.
| Value | Designer option | Behavior |
|---|---|---|
normal (default) | Standard (default) | Regular control sizes and spacing. |
compact | Compact (tighter spacing) | Smaller controls, tighter spacing, and shorter multi-line fields. Suitable for forms with many fields. |
{ "formDensity": "compact" }
Required indicator requiredIndicator
How required fields are marked. The indicator is displayed only for fields that are currently visible, required, and not read-only, so it responds dynamically to rules.
| Value | Designer option | Behavior |
|---|---|---|
asterisk (default) | Asterisk (*) – default | Red asterisk next to the label. |
badge | Badge (Required) | A Required badge is shown after the label. |
none | Hidden (no indicator) | No indicator. Requiredness is only enforced by an error on save. |
{ "requiredIndicator": "badge" }
Print button showPrintButton
Shows a Print button on the form toolbar that opens the browser's print dialog.
- Default is enabled: the button is visible unless set to
false. In the designer, it is controlled by the Show Print button on form toolbar toggle. - When printing, the button toolbar is hidden. All visible tabs are printed stacked vertically and collapsed sections are expanded. Tabs, sections, and fields hidden by rules are not printed. Any warning about unloaded fields is printed so empty fields are not mistaken for blank values. The output uses the current form language.
- This setting also applies in the SPFx form and complements
commandBarConfig.showPrint: the button is shown only if neither disables it. In the designer preview, the Print button is hidden (otherwise it would print the entire designer).
{ "showPrintButton": false }
Command bar commandBarConfig
The top form toolbar (Fluent v9 Toolbar) groups the Back, Edit, Save, Cancel, Print, custom buttons placed on the Form toolbar, and (for list administrators) Form settings buttons. Since 1.18.0, you configure it in the Toolbar & buttons tab (with live preview); the Display style & form behavior window keeps only a link to that tab.
Appearance (since 1.17.1, SharePoint style): Back is not a toolbar button, but a breadcrumb above it in the form List name › Item title. The list name is a link that triggers the Back action; the item title comes from the Title field (new items show "New item", long titles are truncated with an ellipsis). The toolbar below is a single row of equal-height (32 px) buttons with icon and text: the only filled button is the primary action (Edit in display mode, Save in edit and new modes), while Cancel is subtle. A vertical divider separates system actions from custom buttons, which share the same size and a lightning icon; primary stays filled, subtle stays subtle, and secondary/outline have a border. Print and Form settings are aligned to the right. On narrow screens, buttons wrap to the next line.
| Key | Description |
|---|---|
enabled | Enables the toolbar (default on). When disabled, form actions disappear, but Form settings and Back remain accessible so the configuration can always be fixed. The same applies if the form fails to render due to an error: an admin sees Form settings and Back above the error message. |
showBack, showEdit, showSave, showCancel, showPrint | Visibility of individual buttons (default on). Buttons appear only in modes where they make sense (Edit in display mode; Save and Cancel in edit and new modes). |
backLabel, editLabel, saveLabel, cancelLabel, printLabel, settingsLabel | Custom button labels. Blank = default localized text. While saving, "Saving…" is always shown even with a custom saveLabel. Translations for other languages are entered on the Translations tab (rows commandBarConfig.*Label, stored under i18nConfig.translations[locale].commandBar). |
{ "commandBarConfig": { "enabled": true, "showPrint": false, "saveLabel": "Submit" } }
List buttons and actions listActions
Lets you add custom buttons directly to the list Command Bar ("List toolbar") and item context menu (up to 10 slots in Pro; 1 button in the top bar in Community). Each action defines its placement (commandBar, contextMenu, both), selection condition (none, single, multiple), optional Pro data visibility condition (e.g. item.Status === 'New'), optional confirmation, and action type (updateItem, openForm, print, openUrl, triggerFlow, runScript).
Actions are edited in the dedicated List actions designer tab (prior to 1.26 they were at the bottom of Toolbar & buttons). When confirmation is enabled, in addition to the dialog title and message, you can set the confirm button label (confirmation.confirmLabel) and Cancel button label (confirmation.cancelLabel); blank fields use the default texts "Run" and "Cancel" in the form's language. All confirmation texts can be translated on the Translations tab.
After saving the configuration in a designer opened from the list toolbar, the page automatically reloads upon closing so the updated actions appear in both the command bar and context menu.
The openForm and print actions open the form in our own dialog. Its title shows the selected item title (the Title column, otherwise the action title); the dialog closes with the X in the title bar or with the form's own Close/Save buttons (since 1.32.0).
updateValues(updateItemaction): since 1.37.0 values are entered graphically – rows of field + value with a value input matching the field type (choice, yes/no, number, date, person, text) as in the rules editor. Token… inserts@today/@now(current time),@me(signed-in user name),@meId(their ID) or the placeholders{Title}/{ID}; in general{Field}takes the column value of each selected item (the column must be in the view). Tokens are case-insensitive (@Today,@Me). The JSON switch shows the original text form; values the grid cannot show (objects, arrays) can only be edited as JSON. The storedupdateValuesformat is unchanged.triggerFlowFields: for thetriggerFlowaction, specifies the list of internal field names to include in the HTTP request body sent to Power Automate in addition to the mandatoryID. By default, onlyID(and optionallyTitle) is sent.- Allowed hosts for
triggerFlow: the webhook URL must usehttps://and a Power Automate / Azure Logic Apps domain (*.logic.azure.com,*.powerplatform.com,*.api.powerplatform.com).
In pure client-side SPFx, the form configuration (including the webhook URL with its sig= parameter) is stored in a file readable by list readers. Therefore, the Flow must not trust data sent from the browser and must always re-fetch the item from SharePoint by ID and verify its state and permissions.
Opening the form in a dialog listViewDialog
SharePoint ignores the panel setting of custom forms (Form Customizer) (Microsoft bug sp-dev-docs#10996), so New and Edit from the list open a full form page. Since 1.32.0 you can turn on our own commands in the designer's List actions tab (section Opening the form in a dialog) that open the form in a dialog over the list. Once Microsoft fixes the bug, we will switch to the native panel.
| Option | What it does |
|---|---|
newInDialog | Adds a New button to the list command bar (only for users who can add items). It opens the New form (default content type, current folder) in a dialog titled "New item". |
editInDialog | For exactly one selected item, adds Open in dialog and Edit in dialog to the command bar and the context menu (edit only with edit permission). The dialog title is the item title. |
hideDefaultNew | Hides the built-in New button via view formatting (commandBarProps, command new) in all public views. Existing view formatting is kept; the views where we added the entry are stored in hiddenNewViewIds and only those are reverted when you turn it off. The view change is written immediately when you toggle the switch. |
hideDefaultEdit | Hides the built-in Edit command (opens the edit form of the selected item; key edit, Quick edit in the grid stays) the same way as New; the views we changed are stored in hiddenEditViewIds. Turn it on together with editInDialog, otherwise users cannot edit an item from the list. |
After the form in the dialog is saved, the dialog closes and the list view refreshes (if refresh is not available, the page reloads).
Limitations: the dialog loads the whole form page in an iframe, so it is slower than a native panel. Clicking the item title in the list still opens the page (click interception is not part of this version). The built-in New can only be hidden when the list is excluded from offline sync (Microsoft Lists sync): for a list available offline the form commands may not load and New would disappear completely. In that case the designer disables the switch and shows the reason; the warning on the same tab offers to exclude the list from offline sync.
Column formatting in list views listColumnFormatting
Since version 1.37.0 the List actions tab of the builder (section Column formatting in list views) can set a visual format for columns in the standard SharePoint list views. The editor is the same as for Related items (badges, progress bar, date alert, person). FormCraft compiles the format into native SharePoint column formatting (JSON in the column property CustomFormatter), so it works in every view, in the mobile app and with Microsoft Lists sync, even without FormCraft loaded.
| Column type | Format | Result in SharePoint |
|---|---|---|
| Choice, multiple choice, text | Badge | Coloured badge per value (classes sp-field-severity--*), optional icon. |
| Number, currency | Progress bar | Bar filled against a maximum (fixed number or another column of the row), optionally the value with a unit. |
| Date | Date alert | Highlights past-due dates and warns X days ahead (based on @now); a status column can suppress the warning. |
| Person (single) | Person | Photo and name, optionally an e-mail link. |
For each formatted column the builder shows the formatting state in SharePoint (No formatting, FormCraft format, Changed outside FormCraft, Custom formatting), a preview, the generated and the current JSON, and these actions:
- Apply to the SharePoint column – writes the JSON immediately (requires the Manage Lists permission). If the column has formatting not created by FormCraft, or our JSON was changed since, the write needs confirmation and the foreign formatting is first stored as a backup in the configuration.
- Reset to default – removes the column formatting (empty
CustomFormatter). - Restore original – writes back the backed-up formatting the column had before FormCraft first wrote to it.
The rule, the hash of the written JSON (used to detect changes outside FormCraft) and the backup are stored in listColumnFormatting in the form configuration – save the form after writing. The feature requires a Pro license; without it the section is informational only.
Limitations: texts in the JSON (for example "Past due") are static, in the default form language. The format is written to the column of this list, not to the site column or content type. The builder preview differs slightly from SharePoint rendering; check the result in the list. Importing the configuration into another environment does not apply the format by itself – open the section and write it again.
Debug mode debugMode
Logs rule evaluations, script execution, forced values, and when each field becomes dirty to the browser console (F12). Useful for troubleshooting why a rule is not firing.
- Default is off. In the designer, use the Debug mode for rules and scripts toggle.
- Without saving the configuration, you can also enable it with the
?fcdebug=1query parameter in the form URL, or in the console vialocalStorage["fc.debug"] = "1". - Log entries are prefixed with
[FC debug]. When enabled, it also tracks component re-renders inwindow.__fcRenderCounts.
Debug mode logs field values to the console and slightly slows down the form. Turn it off once troubleshooting is complete.
{ "debugMode": true }
After-save behavior afterSaveConfig
What happens after an item is saved successfully.
| Key | Designer option | Description |
|---|---|---|
action | Action after successful save | close (default): closes the form and returns to the list. stay: keeps the form open. redirect: redirects to redirectUrl. |
message | Confirmation message after save | Text shown to the user after saving. Supports [Field] placeholders. |
redirectUrl | Target URL for redirect | Used only for redirect. Supports [ID] (ID of the saved item) and [Field] placeholders. Field values after ? or # are URL-encoded so &, #, and spaces do not break the URL. The result must be http, https, or a relative path; otherwise the redirect is blocked (with a console warning) and the form closes as in close. |
- Placeholders:
[Title]is replaced by the field's value, or the display name for person/lookup fields. Non-existent fields are replaced with an empty string. - Close and Redirect: if a message is configured, it is shown in a green Saved banner above the form (not as a browser dialog). The form then closes or redirects after a short delay (about 1.5 s) or immediately when the user clicks Continue in the banner. Without a message it closes or redirects at once. Redirect without a URL behaves like close.
- Stay: the message is shown in a green Saved banner above the form. Without a custom message, Item was saved successfully. is shown. Saving a new item again updates the already created item rather than creating a duplicate.
{
"afterSaveConfig": {
"action": "redirect",
"message": "Request [Title] has been saved.",
"redirectUrl": "/sites/portal/SitePages/ThankYou.aspx?id=[ID]"
}
}
Configuration security securityConfig
Who may open the designer and whether the editor is password-protected. Full details and procedures are on the Configuration Security page; SharePoint permissions are covered in Administration: Permissions.
| Key | Description |
|---|---|
allowedEditorRole | manageWeb (default for new forms): only site owners see the Form settings button. group: site owners and members of allowedEditorGroup. Legacy value manageLists behaves like manageWeb. |
allowedEditorGroup | Exact SharePoint group name for the group role. Must not be Members, Visitors, or a group containing all users. |
configReadAllUsers, configReadGuests | Who may read the locked configuration storage: the whole organization and external users (guests). Both are enabled by default. Otherwise, restricted users see the form without custom configuration. |
passwordHash, passwordSalt, passwordHint | Editor lock: the password is stored only as a hash (PBKDF2). The password must be at least 3 characters long and can include an optional hint. |
The editor lock is not a security boundary. It only prevents accidental edits to the form and does not restrict access to data or the configuration file.
Changes to the editor lock or allowed editor role cannot be saved while the editor is locked and has not been unlocked with the password.
{
"securityConfig": {
"allowedEditorRole": "group",
"allowedEditorGroup": "Form Admins",
"configReadAllUsers": true,
"configReadGuests": false
}
}
Multilingual & translations i18nConfig
Default and enabled languages, language switcher, and configuration text translations. Managed on the Translations (i18n) tab; see Translations & Multilingual.
| Key | Description |
|---|---|
defaultLocale | Default form language (defaults to cs). Texts entered directly in the configuration use this language. |
enabledLocales | Languages offered to users (cs, en, de, sk). |
showLanguageSwitcher | Show the language switcher. It is also shown automatically if the form has more than one enabled language. |
translations | Translations keyed by language: tab and section titles, labels, help texts, messages, widget texts, and button labels. |
{
"i18nConfig": {
"defaultLocale": "cs",
"enabledLocales": ["cs", "en"],
"showLanguageSwitcher": true,
"translations": {
"en": {
"formTitle": "Order",
"fields": { "Status": { "customLabel": "Status" } }
}
}
}
}
Per-mode layouts modeLayouts
Custom layout for new, edit, or display mode. For each mode, you can configure:
| Key | Description |
|---|---|
enabled | Enabled (default true). Disabled or missing means the mode uses the shared layout. |
tabs | Tabs for this mode (at least one). Replaces the shared tabs. |
displayLayout, dialogMaxWidth, fullWidthMarginHorizontal | Overrides display type and dimensions for this mode only. Omitted properties fall back to the shared settings. |
See Form Layout for how to create and remove per-mode layouts. Rules, scripts, buttons, translations, and security are shared across all modes.
{
"modeLayouts": {
"display": {
"enabled": true,
"displayLayout": "full",
"tabs": [
{
"id": "tab-prehled",
"title": "Overview",
"sections": [
{ "id": "sec-prehled", "title": "Summary", "columns": 2, "fields": [
{ "internalName": "Title", "fieldType": "text", "defaultReadOnly": true }
] }
]
}
]
}
}
}
AI Assistant aiAssistant
Optional AI Assistant configuration in the builder. The relatedSources property is a list of lists and libraries in which the assistant looks up related items. Each source has listId and kind (list or documentLibrary). The mode property (modify or new) is the default mode of the tab. Both properties are set by the Save as default button on the AI Assistant tab. Older configurations omit these properties and continue to work unchanged. Using the assistant requires a Pro license (Licensing).