github verbb/formie 4.0.0-beta.5

pre-release2 hours ago

Added

  • Add a Template default value source for Hidden fields using sandboxed Craft object templates. Resolved server-side on render and submit; posted values are ignored. Custom Value behaviour is unchanged. (#2605)
  • Add rich text editing for field Instructions, including Craft entry links with target="_blank", configurable via rich-text.json under fields.instructions. Legacy plain-text and markdown instructions are normalized automatically without migration. (#724)
  • Add Craft-style attribute maps and merge helpers for setFieldSettings() field overrides, including mergeInputAttributes and mergeContainerAttributes. (#2510)
  • Add a Note builder field for form-builder guidance with Tip, Warning, Info, and Error styles. (#2498)
  • Add a Rich Text cosmetic field for WYSIWYG content in the form builder, configurable via rich-text.json under fields.content. (#1028, #1709, Discussion #2070, Discussion #772)
  • Add a syntax-highlighted HTML code editor for HTML cosmetic fields in the form builder, with project config via html.json. (#2181)
  • Add an Allow Twig setting to HTML fields, controlling whether Twig is parsed when rendering field content. Twig runs in Formie’s sandboxed template environment, not Craft’s full CP template stack.
  • Add a Custom Field form-builder field backed by opt-in Craft field adapters. (#2208)
  • Add a Google Maps plugin support for Custom Field field. (#625)
  • Add a Maps plugin field support for Custom Field field. (#626)
  • Add Craft Link field support for Custom Field field, covering URL, email, phone and SMS link values. (#718)
  • Add dynamic Option Source settings for Dropdown, Radio and Checkboxes, allowing options to be populated from predefined option sets and other structured sources. (#2684)
  • Add integration option sources, allowing integrations to opt in and expose selectable remote option lists to Dropdown, Radio and Checkboxes fields. (#512)
  • Add Mailchimp option sources for Interest Categories and Tags, using cached integration form settings and manual refresh actions from the field settings UI. (#512)
  • Add CRM integration option sources for HubSpot (forms and CRM properties), Salesforce, Zoho, and Microsoft Dynamics 365 picklists. (#512)
  • Add Template option source mode for developer-owned option lists supplied at render time without persisting or strictly validating an authoritative option list.
  • Add a Use Searchable Dropdown setting for Dropdown fields, element relation fields when Display type is Dropdown, and Recipients when shown as a dropdown. The front end loads Formie’s combobox browser module so users can filter predefined options. (#960)
  • Add support for changing compatible field types in the form builder, initially limited to simple string-like fields such as Single-Line Text and Email Address. Existing submissions are not rewritten. (Discussion #2110)
  • Add Settings → Fields → Field Builder policy settings for Allow Multi-Select Dropdowns and Allow Phone Country Selector. When disabled, the corresponding field settings are hidden in the form builder and forced off on existing fields. (Discussion #2484, Discussion #2485)
  • Expose the Allow Public Asset Volumes plugin setting in Settings → Fields, controlling whether File Upload fields can use public asset volumes and whether Public URL is available as an email summary value.
  • Add Date Range collection to Date/Time fields when Display Type is Calendar (Advanced), using Flatpickr range mode to collect a start and end date/time. (#2011)
  • Add an includeFlatpickrCss plugin setting to disable Formie’s bundled Flatpickr stylesheet when your project already provides its own. (#2341)
  • Add notification variable selectors for date ranges, including Start Date/Time, End Date/Time, Start Date, Start Time, End Date, and End Time.
  • Add GraphQL content types for date range submissions with start and end datetime values.
  • Add calendar date validation for Date/Time Text Inputs and Dropdowns, rejecting impossible dates (for example February 31), enforcing configured Min Date / Max Date settings on those display types, and surfacing validation errors on the offending sub-field. (#1458)
  • Add smart State / Province behaviour for Address fields, with Text or Dropdown when available input modes, country-dependent subdivision loading, dynamic labels (State, Province, Prefecture, and so on), optional hiding when unused, searchable dropdowns, and datalist suggestions for text fallback. (#1416)
  • Add a subdivisions endpoint (formie/address/subdivisions) and ModifyAddressSubdivisionsEvent for country-dependent state/province option data.
  • Add an address-state browser module with lazy subdivision loading, loading UX (country spinner and state skeleton), and password-manager/browser autofill reconciliation via a persistent address-level1 anchor input.
  • Add Allowed Countries and Preselect Country from IP settings to Address fields, mirroring Phone field country restrictions and using a shared formie/address/country-from-ip endpoint (CDN geo headers such as CF-IPCountry).
  • Add Preselect Country from IP to Phone fields when the country selector is enabled, wiring intl-tel-input geo lookup through the shared country-from-ip endpoint.
  • Add table column reference support for Calculations fields with explicit row scope (first, last, index, all, count, custom row expressions). Table columns now appear in the Calculations variable picker, with row targeting configured in the variable settings popover. (#1284)
  • Add Settings → Synced Fields as a read-only audit page listing shared field definitions and the forms they appear on, with a View usage link from synced fields in the form builder. (#2377)

Changed

  • Refactor predefined options to align with the new option sources system.
  • Improve HTML and Rich Text cosmetic field builder previews and control panel submission views to show rendered output instead of raw source where appropriate. (#2182)
  • Render HTML field builder previews inside a sandboxed iframe so control panel styles do not bleed into preview content.
  • Render HTML field Twig through Formie’s sandboxed template service instead of Craft’s unrestricted renderString(), and default Allow Twig to off for new HTML fields.
  • Respect Include in Email Field Summaries for cosmetic fields in {allFields}, {allContentFields}, and {allVisibleFields} instead of always excluding them.
  • Update @verbb/plugin-kit-react to 1.0.4 for the CodeMirror-based HTML editor, codeEditor SchemaForm field registration, and live Rich Text preview rendering via TiptapContent.
  • Normalise Address sub-field browser selectors to the data-formie-address-* namespace, with legacy short-selector fallbacks for older saved forms and address provider modules.
  • Default new Address field layouts to place Country before State / Province so dependent subdivision loading works out of the box.
  • Map Freeform Rich Text fields to Formie Rich Text rather than HTML during migration.
  • Replace the Dropdown, Radio and Checkboxes option-table Disabled column with a row-menu Visible / Hidden / Disabled availability control (#1816). Hidden removes an option from the front-end form while preserving stored submission values and labels; Disabled renders the option with HTML disabled so it stays visible but cannot be selected. Legacy disabled: true option rows are treated as hidden. Non-default states are indicated in the options table with row background tints.
  • Centralise front-end option filtering in OptionsField::getFieldOptions() so hidden options are excluded consistently (including Dropdown placeholders).
  • Format Date/Time values consistently for notifications, summaries, exports, and string output using the field's Date Format and Time Format settings. Casting a normalized date value object to string now matches getFieldValueAsString().
  • Update integration field mapping to accept Date/Time reference values with text, date, and number types.
  • Move Agree field checked/unchecked display labels to the Settings tab and clarify that submissions store a boolean; use getFieldValueAsString() for Yes/No-style output. (#2288)
  • Normalise submission values by trimming leading and trailing whitespace during field normalization for single-line text, email, plain multi-line text, hidden, phone, number, name, address, and custom string fields. Password fields and rich text content are unchanged; existing submissions keep their stored values until resaved.

Deprecated

  • Deprecate the PredefinedOptions service, predefined option class namespace (verbb\formie\options\*), and PredefinedOptions::EVENT_REGISTER_PREDEFINED_OPTIONS event registration target. Use OptionSources, predefined option classes under verbb\formie\options\predefined\*, and OptionSources::EVENT_REGISTER_PREDEFINED_OPTIONS instead. Legacy APIs remain available through the compatibility layer with deprecation notices.

Fixed

  • Fix page-reload single-line and multi-line text limit validation rerenders so field error styling, form-level error messages, and scroll/focus behaviour match ajax submissions. (#1997)
  • Fix Recipients fields preserving the selected option label when multiple recipient options send to the same email address, using encrypted row identity tokens while keeping recipient emails private in front-end markup. (#2382)
  • Fix static Recipients option rows accepting invalid email targets by validating each comma-separated recipient address in the field settings.
  • Fix Dropdown, Radio and Checkboxes Disabled option availability not outputting HTML disabled on the front-end form. (#1816)
  • Fix Address and other fixed-parent sub-field settings being unavailable in the form builder by restoring on-demand field type config loading for nested sub-field types. (#1416)

Don't miss a new formie release

NewReleases is sending notifications on new releases.