Genesis speed guide

Genesis Framework Speed: Tuning the Child Theme, the Scripts and the PHP Underneath

Genesis has not added a feature since September 2022, and on most slow Genesis sites that is not the problem. The weight sits one layer up, in a child theme written for the WordPress of 2017, and one layer down, in a PHP version nobody has changed since the site launched.

October 12, 2026 · 11 min read

The short answer

To speed up a Genesis site, work on the child theme and the server, not the framework. Self-host or trim the child theme's Google Fonts, retire pre-3.0 jQuery menu scripts in favor of Genesis's built-in responsive menus, empty the Header Scripts box, and move to current PHP after updating Genesis to 3.6.2.

On this page
  1. Where a Genesis page gets its CSS, scripts and fonts
  2. Child themes written before Genesis 3.0 still ship 2017 habits
  3. PHP is the Genesis speed setting nobody opens
  4. The Header Scripts box, Genesis's built-in junk drawer
  5. Eight steps to a faster Genesis site, cheapest first
  6. LCP, CLS and INP on a Genesis child theme
  7. What no Genesis setting will change
  8. When the speed argument says leave Genesis

Where a Genesis page gets its CSS, scripts and fonts

Genesis is a parent framework that prints markup and very little styling. It generates no CSS from a theme.json file, because it has none. The child theme supplies the stylesheet, chooses the fonts and, on older sites, ships its own scripts. Two sites on the same Genesis version can therefore differ in weight by a wide margin. Before you change anything, find out which layer sent each file: open the page in Chrome DevTools, filter the Network panel by your child theme's folder name, then by fonts.googleapis.com, and you have the map.

What a typical Genesis page loads, and who sent it
Comes fromWhat to check
Main stylesheetThe child theme's style.cssIts size, and how much of it styles widgets and templates you never use
Responsive menu scriptThe framework, from Genesis 3.0, set up with genesis_register_responsive_menus()Whether an older child theme still loads its own copy too
Google FontsThe child theme; Genesis Sample requests Source Sans Pro from fonts.googleapis.comA third-party request, and whether the URL asks for display=swap
DashiconsGenesis Sample enqueues the WordPress dashicons stylesheet on the front endA whole icon font loaded to draw a menu toggle
Superfish dropdownsOff by default since Genesis 2.0.0; a filter or an old setting switches it back onWhether genesis_superfish_enabled is still turned on
Header and footer scriptsTheme Settings in the CustomizerTracking tags nobody remembers adding

One framework mechanism is worth knowing about. Genesis has a script loader that adds a defer or async attribute when a script's URL carries a defer=true or async=true query string, and the 3.6.2 patch repaired how it strips those strings afterward. It is a quiet, code-level tool, handy for a developer who wants to defer a child theme script without installing another plugin to do it.

Child themes written before Genesis 3.0 still ship 2017 habits

Genesis 3.0.0 arrived on June 19, 2019 and moved the responsive menu into the framework. Child themes built before then carried their own. The Genesis Sample starter is the clearest record. Its 2.6.0 release enqueued a responsive-menus script and a second genesis-sample.js file, both requiring jQuery, plus Source Sans Pro from Google with no display parameter. The current Sample, 3.4.x, drops both scripts, hands the menu to the framework and adds display=swap to the font URL.

A great many sites were built on the older pattern and never revisited, because nothing broke. That is the catch with a framework this stable. A 2017 child theme still works, so nobody notices it costs jQuery on every page, a font that keeps text invisible while it downloads, and two scripts doing a job the framework now does natively. Updating Genesis changes none of it. The child theme is your code, and its files change only when someone edits them.

  • A js folder containing responsive-menus. On Genesis 3.0 or later that copy is a duplicate, and the menu can be handed to genesis_register_responsive_menus() instead.
  • jQuery on pages with no slider, form or gallery. Often the only thing asking for it is the child theme's own menu or a small effects file.
  • A Google Fonts URL without display=swap. Text stays invisible until the font arrives, which can delay the paint of a headline that happens to be the largest element.
  • Four or more font weights. Each weight the page actually uses is another file; most designs need two or three.
  • Dashicons on the front end. Fine if the icons appear in the design. Wasteful if they only draw a hamburger that a few lines of inline SVG could draw.

If the menu misbehaves once the old scripts are gone, the fix is usually in the menu configuration, and Genesis mobile menu not working walks through it. If a stylesheet edit then refuses to appear on the live site, read Genesis CSS not updating before you blame the caching plugin.

PHP is the Genesis speed setting nobody opens

Every page a cache cannot serve is built by PHP on your server: a logged-in editor's view, a search result, a form submission, the first visit after the cache clears. The PHP version helps decide how quickly that happens. Genesis will never nudge you toward a newer one. The last changelog entry to state requirements, in version 3.1.0 from 2019, asks for PHP 5.6 or later, and the framework has kept running on old versions since, so the server never complains.

The changelog also shows the framework keeping pace when you do upgrade. Version 3.4.0 added tests on PHP 8.0 and 8.1. Version 3.5.0 resolved a PHP 8.2 error, 3.6.0 fixed a PHP 8.2 deprecation notice in the Customizer, and 3.6.2 fixed a warning under PHP 8.5. The framework is ready. Old child themes and abandoned plugins often are not, which is why so many Genesis sites sit on an old version: someone tried the upgrade once, the site threw errors, and it was rolled back.

The order matters. Update Genesis to 3.6.2, update or replace stale plugins, copy the site to staging on the newer PHP, read the error log, fix what it names, then switch production. Our guides to Genesis PHP errors and a site that broke after a PHP update cover the usual failures. Never trial a PHP jump on the live site; a fatal error in functions.php takes down every page at once.

The Header Scripts box, Genesis's built-in junk drawer

Genesis gives every site two boxes under Appearance, then Customize, then Theme Settings, then Header/Footer Scripts. Paste a tag into Header Scripts and it prints in the head of every page. That convenience is how a Genesis site collects an analytics tag from 2016, a chat widget from a vendor you left, two ad pixels and a heatmap script from a trial that ended. Each one runs on every page, on every phone, for every visitor.

A script in the head without async or defer stops the browser from rendering until it downloads and runs. Even async tags compete for the main thread once they arrive, and that is where Interaction to Next Paint suffers: a tap on the menu waits while a tracking library finishes its work. Open the box, list every tag, and ask who still reads its data. Move survivors to Footer Scripts or a tag manager with a delayed trigger. Delete the rest, and keep a copy of what you removed in case marketing asks.

Eight steps to a faster Genesis site, cheapest first

  1. 1

    Measure three templates

    Run the homepage, a blog post and your most important service page through PageSpeed Insights, and note field data where Google has it. Our speed test guide shows how to read lab and field numbers side by side.

  2. 2

    Update Genesis to 3.6.2 on staging

    The patch releases since 2022 carry PHP and WordPress 7.0 compatibility fixes, and 3.6.1 closed an XSS flaw. Every later step assumes them.

  3. 3

    Move to current PHP

    Test the child theme and plugins on the newer version in staging, fix what the error log reports, then switch production and watch the log for a week.

  4. 4

    Retire duplicate menu scripts

    On Genesis 3.0 or later, register the menu through genesis_register_responsive_menus() and stop enqueueing the child theme's old responsive-menus file and any jQuery helpers that existed only to serve it.

  5. 5

    Fix the fonts

    Self-host the child theme's Google Fonts, or at least add display=swap, drop unused weights, and replace front-end dashicons with inline SVG if they only draw the menu icon.

  6. 6

    Empty the Header Scripts box

    Delete dead tags and move the survivors to Footer Scripts or a delayed tag manager. Check the per-page script fields too if your editors use them.

  7. 7

    Size and prioritize the hero image

    Give the largest image width and height attributes, serve it at the size it displays, never lazy-load it, and mark it fetchpriority=high.

  8. 8

    Add caching once, then measure again

    Use your host's page cache if it has one, or a single caching plugin if it does not. Run the same three templates again and keep the before and after numbers.

LCP, CLS and INP on a Genesis child theme

Largest Contentful Paint

The largest element on a Genesis page is usually a featured image or a hero the child theme draws, or the post title when there is no image. Two child-theme habits push it late: a render-blocking font stylesheet from Google's servers, and hero images set as CSS backgrounds, which the browser cannot discover until it has parsed the CSS. Self-hosted fonts and a real image element with sizes fix most of it. The mechanism is laid out in WordPress vs Next.js on LCP.

Cumulative Layout Shift

Shift on Genesis sites tends to come from three places: a font swap that reflows the headline, images printed without dimensions by old widgets, and ad or newsletter blocks in the sidebar that load late and shove content down. Reserve the space for each one. The broader causes are covered in the CLS comparison and in our layout shift troubleshooting guide.

Interaction to Next Paint

The framework's own JavaScript is small. Slow responses to taps come from what surrounds it: jQuery menus in pre-3.0 child themes, everything in the Header Scripts box, and plugins that bind handlers on every page whether the page uses them or not. INP on WordPress and Next.js explains how the metric counts a slow tap.

What no Genesis setting will change

Some limits sit outside the child theme. A slow host still answers slowly after every step above. If the first byte takes most of a second, the problem is the server or uncached database work, and our hosting and maintenance plans exist for exactly that. Plugins load their own CSS and JavaScript on every page unless someone writes code to stop them, and Genesis has no switch for that either.

Then there is the direction of travel. Every release since 3.4.0 in 2022 has been a compatibility or security patch. Genesis has no theme.json and no Site Editor support, so styling decisions that block themes make in one settings file still live in hand-written CSS here. Whatever speed work you do on a Genesis site is done by hand, in a child theme, and it stays done only until the next person edits functions.php. Owners who want a classic theme still gaining features should read Genesis vs GeneratePress or the lightweight theme roundup.

When the speed argument says leave Genesis

Stay if the site is a blog or brochure that passes Core Web Vitals after the steps above and the child theme now runs clean on current PHP. Plenty do. A tuned Genesis site is a respectable thing, and the full verdict on the framework is in our Genesis review.

Leave when the work keeps repeating. If the child theme needs a rewrite to drop jQuery, the hero needs a rebuild and the plugin list needs pruning, you are paying for a new front end anyway, on a framework whose own community forum is asking whether it will exist in five years. A Next.js build costs more up front but ends the cycle: pages prerendered and served from a CDN, images resized by next/image, fonts self-hosted by next/font, and no plugin installed from the admin panel quietly adding scripts later. Genesis vs Next.js sets out the trade, and Genesis to Next.js maps the move, with every old URL kept or redirected.

A stable framework keeps your old decisions working, including the slow ones.

Owners who move do not give up easy editing. Athena CMS gives them plain fields, a real preview and every version kept, while Argus watches for slow pages and failing forms. If you would rather keep Genesis and hand the tuning to someone else, our theme speed optimization service works through this list on a staging copy. Either way, a free site audit is the place to start, and every other theme guide lives in the WordPress themes section.

Questions people ask before they call

No. The framework prints markup and very little styling, and since version 3.0 the responsive menu script lives in the framework rather than in each child theme. StudioPress describes it as clean, optimized code, which is the vendor's claim. When a Genesis site is slow, look first at the child theme's fonts and scripts, the Header Scripts box, the plugin list and the server's PHP version.

The newest version your host offers that WordPress, your plugins and your child theme run on without errors. Genesis 3.6.2 includes fixes for PHP 8.2 and a PHP 8.5 warning, so the framework is rarely the blocker; old child theme code and abandoned plugins are. Test the jump on a staging copy, read the error log, fix what it names, then switch the live site.

Only if the update changes the files that load, and many child themes have had no release in years. The Genesis Sample starter's last release was 3.4.3 in March 2025, a compatibility fix. If your child theme predates Genesis 3.0, a developer can retire its duplicate menu scripts and jQuery helpers by hand, which usually helps more than waiting for an update that may never come.

You need page caching, from your host or one plugin, and compressed images. Beyond that, be careful: plugins that combine and defer scripts can break a child theme's menu, and two optimization plugins fighting over the same files cause more trouble than they cure. Fix the child theme first. Our WordPress speed optimization page covers the stack-wide work.

Good hosting helps the server half of the problem: faster first bytes and reliable caching. It cannot shrink a child theme's font files, remove jQuery from pages that never needed it or empty the Header Scripts box. WP Engine includes Genesis and the premium StudioPress themes with its plans, which makes it a natural home for these sites, but the front-end work still has to be done.

Keep reading

Free · No obligation

Find out what is slowing your Genesis site

Send us the address. We test your key templates, read the child theme and the server setup, and send back a ranked list of fixes with a fixed quote.

Which of these sounds like you? (pick any)

Rather talk now? Call (210) 346-0848.

CallGet a quote