Breaking Changes
- Repeater and Group fields values now no longer use elements, just plain arrays. This brings several performance improvements and simplification to these fields.
- OAuth-based integrations now use the Auth Module to handle authentication under the hood.
- References to
subfield
is nowsubField
for various classes. - Element fields (Categories, Entries, File Upload, Products, Tags, Users, Variants) now use their public URL in email notifications.
- Options fields (Checkboxes, Dropdown, Radio) now use their option labels in email notifications.
- Changed
fieldInputContainer
tofieldInputWrapper
for Theme Config and.fui-input-container
class to.fui-input-wrapper
for fields.
Added
- You can now get submission field values via dot-notation for nested values. e.g.
submission.getFieldValue('group.text')
orsubmission.getFieldValue('repeater.1.text')
- You can now query submission field values via dot-notation for nested values. e.g.
submission.field('group.text').one()
orsubmission.field('repeater.1.text').one()
- Integrations can now populate a
$context
property with arbitrary data that's stored before processing, and accessible in the queue job. - Added
Field::fieldKey
to represent the handles of a field and any parent field. e.g.group.text
orrepeater.text
. - Allow
craft.formie.renderJs
to set JS attributes for scripts. - Added “Required Field Indicator” for forms, to either show an asterisk for required fields (default) or show optional for non-required fields.
- Added
data-fui-alert-error
anddata-fui-alert-success
attributes on front-end alerts. - Added the
form.setPageSettings()
function to override page settings in your Twig templates. - Added support for Group and Repeater fields to be added as an existing field, or a synced field in the form builder.
- Added support for Repeater fields to use conditions (within their own row of fields).
- Added
initRow
to Repeater field JS events. - Added the current rowId for the
data-repeater-row
attribute for Repeater fields. - Added support for all CRM integrations to only fetch data objects for ones that are enabled in the form builder integration settings.
- Added keyboard navigation to variable picker dropdown.
- Added the ability to type
{
in variable picker components to autocomplete variables. - Added double-clicking a page in the form builder now opens the pages editor.
- Added “Recipients” to the Email Notifications index table.
- Added
handle
to Email Notifications that can be accessed directly, instead of by their ID. - Added Table node to rich text editor settings (used for numerous form, field and notification settings).
- Added the ability to set the control panel or public URL for element fields (Categories, Entries, File Upload, Products, Tags, Users, Variants).
- Added the ability to set the label or value for options fields (Checkboxes, Dropdown, Radio).
- Added
verbb\formie\base\CosmeticField
class. - Added
verbb\formie\base\ElementField
class. - Added
verbb\formie\base\MultiNestedField
class. - Added
verbb\formie\base\OptionsField
class. - Added
verbb\formie\base\SingleNestedField
class. - Added
verbb\formie\base\SubField
class.
Changed
- Now requires PHP
8.2.0+
. - Now requires Craft
5.0.0-beta.1+
. - Updated Vue, Vite, Formkit and all JS dependencies to their latest versions.
- Submission content no longer have their own content tables. Content is now in a single
content
column, in yourformie_submissions
database table. - Submissions now have Create/Save/Delete user permissions.
- Submissions now have separate view and manage user permissions.
- Sent Notifications now have “All” or per-form user permissions for View/Resend/Delete.
Formie::log()
is nowFormie::info()
.Integration::log()
is nowIntegration::info()
.- Integration field mapping now uses
field:fieldHandle
syntax for fields. - Integration field mapping now uses dot-notation (
field:group.text
) syntax for nested fields. - Conditions (fields, pages, notifications) now uses
field:fieldHandle
syntax for fields. - Conditions (fields, pages, notifications) now uses dot-notation (
field:group.text
) syntax for nested fields. - Updated form builder modals and implement better modal accessibility.
- Submissions element index now show incomplete and spam submissions alongside completed submissions.
- Changed form
Title
references to formName
. - Front-end form JavaScript now waits until the form has entered the viewable area on the page to be initialized.
- Captchas now smartly load whenever they have entered the viewable area on the page. This greatly improves page-load performance when the form is initially hidden (in a modal for example).
- HubSpot CRM integration now automatically saves the
hubspotutk
cookie at the time of submission, to be sent with API requests. This means you now no longer need to map a form field to ensure thehubspotutk
tracking cookie is sent.
Fixed
- Fixed multiple Tippy.js instances in the form builder when field settings contained multiple “info” elements.
- Fixed alerts on front-end not respecting theme config.
- Fixed Commerce fields initializing when Commerce wasn’t installed or classes exist.
- Fixed text-limit character check for emojis on the front-end.
- Fixed lack of validation for Date fields and their Default Value when setting to a specific date.
Removed
- Removed
verbb\formie\base\NestedFieldTrait
class. - Removed
verbb\formie\elements\NestedFieldRow
class. - Removed
verbb\formie\elements\dbNestedFieldRowQuery
class. - Removed
verbb\formie\events\FieldPageEvent
class. - Removed
verbb\formie\events\FieldRowEvent
class. - Removed
verbb\formie\events\ModifyEmailFieldUniqueQueryEvent
class. - Removed
verbb\formie\events\OauthTokenEvent
class. - Removed
verbb\formie\events\SyncedFieldEvent
class. - Removed
verbb\formie\events\TokenEvent
class. - Removed
verbb\formie\models\Sync
class. - Removed
verbb\formie\models\SyncField
class. - Removed
verbb\formie\models\Token
class. - Removed
verbb\formie\records\NestedFieldRow
class. - Removed
verbb\formie\records\PageSettings
class. - Removed
verbb\formie\records\Row
class. - Removed
verbb\formie\records\Sync
class. - Removed
verbb\formie\records\SyncField
class. - Removed
verbb\formie\records\Token
class. - Removed
verbb\formie\services\NestedFields
class. - Removed
verbb\formie\services\Syncs
class. - Removed
verbb\formie\services\Tokens
class. - Removed
formie/gc/delete-orphaned-fields
console command. - Removed
formie/gc/prune-syncs
console command. - Removed
formie/gc/prune-content-tables
console command. - Removed
formie/gc/prune-content-table-fields
console command. - Removed
Formie::$plugin->getNestedFields()
. - Removed
Formie::$plugin->getSyncs()
. - Removed
Formie::$plugin->getTokens()
. - Removed
Categories:categoriesQuery
variable for Category element field templates. - Removed
Categories:entriesQuery
variable for Entry element field templates. - Removed
Categories:productsQuery
variable for Product element field templates. - Removed
Categories:usersQuery
variable for User element field templates. - Removed
Categories:variantsQuery
variable for Variant element field templates.
Deprecated
Submission::getCustomFields()
method has been deprecated. UseSubmission::getFields()
instead.Field::name
attribute has been deprecated. UseField::label
instead.Field::inputHtml()
method has been deprecated. UseField::cpInputHtml()
instead.