Performance
Stop the forms-plugin stylesheet bloat
Audit form styles by page and feature, disable optional presentation CSS when appropriate, and keep styles needed for working forms.
A page should load form styles only when something on that page needs them. Before removing CSS, check for embedded forms, footer forms, popups, and dynamically loaded content.
Core Forms separates optional presentation styles from CSS needed by particular features. That distinction matters when you turn off the theme or supply your own styles.
Why form styles can appear on an unexpected page
A stylesheet may be enqueued globally, or a form may be present outside the main post content. A shortcode scan alone misses forms in widgets, templates, popups, or dynamically inserted content.
Inspect the page and the plugin’s asset rules before deciding whether the stylesheet is unused.
What to measure
- Check the stylesheet’s transferred size and whether the browser has cached it.
- Inspect whether it blocks rendering under your page’s loading strategy.
- Check the visible form before and after a proposed change.
- Include focus states, errors, conditional fields, and multi-step navigation in the comparison.
Removing unused CSS can reduce work for the browser. The effect on loading and rendering depends on the actual page; a stylesheet’s presence alone does not establish a conversion loss.
What Core Forms does instead
Two specific decisions:
1. The CSS only enqueues when the form is rendered. Core Forms checks at render time, not at init time. If the page has no [cf_form] shortcode, no core-forms/form block, no template-include, the stylesheet never lands. The renderer uses a shared asset-requirements check to load what that form needs.
2. Presentation styles are configurable. You can disable the optional base stylesheet and form theme when you supply your own styling. Essential feature styles, including smart-form and multi-step navigation CSS, still load when the form needs them. Turning off a theme is not a promise of zero CSS.
Check the global and per-form presentation settings separately. Disabling the form theme and disabling the base stylesheet are different choices; neither disables required multi-step styles.
What if another plugin loads unused styles?
First look for that plugin’s documented asset controls. If custom dequeue logic is needed, scope it to pages you know contain no forms, including forms outside the main content.
Do not copy a generic rule that checks only has_shortcode() or has_block(). It can remove styles needed by a footer, widget, popup, or template-rendered form. A later enqueue can also override a dequeue, so verify the final rendered page.
The thirty-second audit
On any WordPress site:
1. Open a page with no form on it (the homepage usually qualifies).
2. View source.
3. Search the head for "form" or "wpforms" or your forms plugin name.
If a forms-plugin stylesheet loads, identify the form or feature that needs it. An unused stylesheet deserves investigation; its presence in the head alone does not prove a bug.
For a sanity check, also run a Lighthouse pass on that page and look at the “Reduce unused CSS” diagnostic. The forms plugin will be the top offender on most installs.
The next step
Audit one site. Find one stylesheet that doesn’t belong. Either disable it or switch to a plugin that doesn’t force-load.
The Gutenberg block and shortcode use the same form asset requirements. Optional presentation settings and required feature assets follow the same rules in both embeds.
A plugin that ships fewer stylesheets is a plugin that wins on real Core Web Vitals, not just demo sites. That’s the bet here.
When you do write your own styles, the WordPress form CSS guide keeps them accessible.