- Fixed an issue that causes incorrect error messages about version requirements when updating network-activated add-ons.
- Fixed an issue that prevents the merge tag drop down from rendering on the form settings notifications.
- Fixed an issue that causes console errors when switching from compact view in the form editor.
- Fixed a PHP fatal error that occurs on submission if the currency input value is modified to an array.
- Fixed an issue where `gform_is_delayed_pre_process_feed` does not work correctly with the Stripe Payment Element.
- Fixed an issue where denying all capabilities to admin user role doesn't work with the Members plugin.
- Added Support Request and Square Course Registration form templates to the templates library.
- Added a hidden input to the form footer with a value of the form's currency code.
- Updated the `gform/conditionalLogic/applyRules/end` JS action so that if the field being processed is a page or section, the action passes the IDs of the fields within the page or section.
- Updated CLI detection to ensure JS hooks are loaded when necessary.
- Fixed a JS console error on the reCAPTCHA settings page in No-Conflict mode.
- Fixed an issue where the conditional logic and edit choices flyout closes unexpectedly when you release the mouse button outside it.
- Deprecated the `gform_input_mask_script` filter, which will be removed in Gravity Forms 3.0.
- API: Updated the frontend feed data to include the product ID mapped to a subscription's setup fee.
- API: Fixed a layout issue so that the "Card" field type in the Settings API fills the width of the settings page.
- API: Fixed an issues with the gform.product.getPaymentAmount() method where a dynamically populated hidden product quantity is not taken into account when calculating the amount.
- API: Added client side logging functionality.
- Added the [`gform_is_feed_error_retryable`](https://docs.gravityforms.com/gform_is_feed_error_retryable/) filter, which can be used to prevent a feed remaining in the queue for another attempt if an error occurred.
- Added the [`gform_pre_log_message`](https://docs.gravityforms.com/gform_pre_log_message) action hook to allow developers to do an action before a message is logged, whether or not logging is enabled. Credit: Gravity Wiz Team.
- Added alt attribute to the QR code image in the REST API settings for improved accessibility.
- Updated `gf_feed_processor()` to accept an optional `$add_on` parameter.
- Updated the colors of save buttons and error messages throughout the settings pages for improved accessibility.
- Updated email notifications to no longer use the 'From' email as the default 'From' name if no name is specified. `From` name will be empty, which lets other plugins such as Gravity SMTP override it.
- Fixed an issue where a programmatic submission of a multipage form page progresses to the next page when the next button is hidden/disabled by conditional logic.
- Fixed PHP warnings that occur when editing a page that includes a scheduled form with an end date in the past.
- Fixed an issue that causes the €, £, Kč, ₪, ¥, RM, zł, ฿ currency symbols to display as a code in the Shipping and Total fields when conditional logic is enabled.
- Fixed an issue where the entry list would revert back to "all" filter when using the enter key to search within a filtered view (e.g. Trash or Spam).
- Fixed a PHP warning that occurs when the [`gform_email_field_rejectable_values`](https://docs.gravityforms.com/gform_email_field_rejectable_values/) filter returns a large array of values.
- Fixed an issue with payment amount calculation that does not take dynamically-populated product prices into account in certain situations.
- AF: Updated `GFFeedAddOn::maybe_process_feed()` to use separate background processors for each add-on, so pausing the queue on a feed processing error doesn't impact other add-ons.
- Fixed a PHP warning that occurs when the [gform_email_field_rejectable_values](https://docs.gravityforms.com/gform_email_field_rejectable_values/) filter returns a large array of values.
- Fixed an issue with payment amount calculation that does not take dynamically populated product prices into account in certain situations.
- Updated `gf_feed_processor()` to accept an optional `$add_on` parameter.
- Added the [gform_is_feed_error_retryable](https://docs.gravityforms.com/gform_is_feed_error_retryable/) filter, which can be used to prevent a feed remaining in the queue for another attempt if an error occurred.
- AF: Updated `GFFeedAddOn::maybe_process_feed()` to use separate background processors for each add-on, so pausing the queue on a feed processing error doesn't impact other add-ons.
- Added the `gform_pre_log_message` action hook to allow developers to do an action before a message is logged, whether or not logging is enabled. Credit: Gravity Wiz Team.
- Added alt attribute to the QR code image in the REST API settings for improved accessibility.
- Fixed an issue where a programmatic submission of a multipage form page progresses to the next page when the next button is hidden/disabled by conditional logic.
- Fixed contrast errors triggered by save buttons and error messages throughout the settings pages.
- Fixed PHP warnings that occur when editing a page that includes a scheduled form with an end date in the past.
- Added security enhancements.
- Updated the background processor to dispatch queued tasks on shutdown to improve performance.
- Updated messages about functionality that will be removed or deprecated in future versions to 4.0 instead of 3.1, to reflect our new [version numbering system](https://docs.gravityforms.com/version-numbering/).
- Updated the logic that determines whether an update — including for add-ons — can be installed automatically, to ensure compatibility with the change to the [version numbering system](https://docs.gravityforms.com/version-numbering/).
- Updated the minimum WordPress version (for support) on the System Status page to 6.8.
- Fixed deprecation notices for the `seems_utf8()` function in WordPress 6.9.
- Fixed an issue where some uploaded files are not attached to notifications when stored outside the default form/year/month folders.
- Removed the invalid maxlength attribute from class-gf-field-time.php.
- Updated the logic that determines whether an update — including for add-ons — can be installed automatically, to ensure compatibility with the change to the [version numbering system](https://docs.gravityforms.com/version-numbering/).
- Fixed deprecation notices for the `seems_utf8()` function in WordPress 6.9.
- Updated the minimum WordPress version (for support) on the System Status page to 6.8.
- Fixed an issue where some uploaded files are not attached to notifications when stored outside the default form/year/month folders.
- Added a check for minimum requirements compatibility when an update is available.
- Added a hook for [`gform_before_delete_field`](https://docs.gravityforms.com/gform_before_delete_field/) in the init_ajax() function.
- Added security enhancements.
- Fixed a bug that prevents the "Embed Form" functionality from pre-selecting the correct form in WordPress 6.9.
- Fixed a bug that prevents the Results page from displaying in WordPress 6.9.
- API: Added the GF_Field::$is_payment property, so developers can indicate if a field is used to capture payments. This can be used by features (e.g. Save and Continue) to exclude the field without checking for specific field types.
- Fixed a bug that prevents the "Embed Form" functionality from pre-selecting the correct form in WordPress 6.9.
- API: Added the GF_Field::$is_payment property, so developers can indicate if a field is used to capture payments. This can be used by features (e.g. Save and Continue) to exclude the field without checking for specific field types.
- Added a hook for `gform_before_delete_field` in the init_ajax() function.
- Added security enhancements.