Defer for Contact Form 7

Defer for Contact Form 7

Details
View on WordPress

On every page Contact Form 7 loads its dependencies (wp-hooks, wp-i18n) and its CSS into the <head>, blocking first paint. This plugin fixes that:

  • Defer CF7 core — moves wp-hooks/wp-i18n to the footer (you cannot defer them: an inline wp.i18n.setLocaleData block runs synchronously and would throw “wp is not defined”). CF7’s scripts leave the critical path.
  • Async CSS — the form stylesheet loads via media=print + onload-swap.

Both optimizations are idempotent and safe on every page. Strict dependency: with Contact Form 7 inactive, the plugin does nothing.

A note on jQuery

This plugin does NOT defer jQuery — on purpose. Deferring jQuery is only safe when EVERY jQuery-dependent script on the site is also deferred or in the footer; on an arbitrary site that is not guaranteed and breaks inline scripts in the head.

Pro version

Defer for Contact Form 7 Pro adds lazy-loaded Google reCAPTCHA v3 — spam protection without a PageSpeed hit:

  • Google’s api.js loads only on the first interaction with a form, so it never appears in Lighthouse/PSI.
  • The score check is server-side; a fresh single-use token is fetched for every submission.
  • The badge is hidden with the required Google disclaimer (GDPR-friendly); configurable score threshold and action label.

The free version stays fully functional on its own.

Support

Questions, bug reports or feature requests: https://www.linkedin.com/in/vitalii-ryabinin/

Details

Plugin code:
defer-for-contact-form-7
Plugin version:
1.0.0
Author:
Outdated:
No
WP version:
6.0 or higher
PHP version:
7.4 or higher
Test up to WP version:
7.0
Total installations:
0
Last updated:
2026-07-01
Rating:
Times rated:
0
cf7
contact-form-7
defer
pagespeed
performance