Initial assessment without passwords Quote before intervention One accountable specialist from start to finish

Measurement And Symptom Isolation

WordPress Performance Dropped After an Update: How to Compare Before and After

WordPress became slower after updating core, a plugin or theme. Compare requests, queries and assets before rolling back or changing performance settings.

WordPress was stable before an update. Afterwards, pages load more slowly, the administrator feels heavy or WooCommerce takes longer to respond.

The timing makes the update a strong lead, not an automatic diagnosis. Updates can change PHP code, database queries, CSS, JavaScript, scheduled work and cache versions. They can also coincide with a cache purge, traffic increase or hosting event.

The safest investigation compares the same journey before and after, then connects the new cost to a specific change. Rolling back everything may restore speed, but it can also remove security fixes and obscure the evidence you need for a durable repair.

Freeze the evidence before making another change

Write down:

  • WordPress core version before and after;
  • plugin or theme name and version;
  • update time;
  • whether caches were purged;
  • first page or action where the slowdown was noticed;
  • whether visitors, administrators or both are affected;
  • any errors, warnings or failed background tasks.

Do not immediately update every remaining component “for compatibility”. That enlarges the change set and makes attribution harder.

Take a viable backup or snapshot before rollback, database repair or code modification. Confirm that the recovery route includes both files and database if the update changed data.

Reproduce one affected journey

Choose the smallest action that consistently demonstrates the regression:

  • loading a public page;
  • opening the WordPress plugins screen;
  • saving a post;
  • searching WooCommerce orders;
  • changing a product variation;
  • loading cart or checkout;
  • submitting a form.

Measure the same action several times. Separate first load from warm-cache results.

If the slowdown cannot be reproduced, collect the time, URL and user state from reports. An intermittent regression may depend on cron, traffic, cache expiry or a specific data set.

Confirm what actually changed

For plugin and theme code, version-control comparison is ideal. When the site is not managed in Git, download trusted copies of the old and new releases and compare them outside production.

At minimum, review:

  • changelog;
  • new PHP requirements;
  • database migration notes;
  • new settings or modules;
  • asset build changes;
  • removed compatibility layers;
  • known issues reported by the vendor.

A changelog is orientation, not proof. A line such as “improved query performance” does not confirm that your database path became faster.

Compare response time before comparing PageSpeed scores

If the update affects server work, focus on first-byte time for the exact URL:

curl -s -o /dev/null 
  -w 'First byte: %{time_starttransfer}s Total: %{time_total}sn' 
  https://example.com/affected-page/

Repeat a few times without sending high request volume. Record cache headers so a miss is not compared with a hit.

If the first byte grew after the update, investigate PHP and MySQL. If first-byte time remains similar but the page appears later, compare front-end assets and browser work.

Look for newly loaded CSS and JavaScript

Open the Network panel on the affected page. Save or screenshot the request list before changing settings.

Check whether the update:

  • added a new JavaScript bundle;
  • loads assets on pages that do not use the feature;
  • duplicates a library already supplied by the theme;
  • changed filenames and invalidated long-lived caches;
  • added a font or icon pack;
  • loads source maps or development assets;
  • calls a new third-party service;
  • increased CSS or JavaScript execution time.

File count alone is not a performance verdict. Connect the new request to transferred bytes, main-thread work or a blocked render.

Check for JavaScript errors before delaying scripts

A JavaScript error can create retries, repeated DOM work or an interface that appears slow because it never reaches the expected state.

In the Console, record the first error after a clean reload. Identify the file and stack where possible. Test the actual feature affected by the update.

Do not apply broad “delay all JavaScript” settings to hide a regression. They can postpone the error and break menus, forms, consent or WooCommerce checkout.

Inspect WordPress queries and hooks

Use a diagnostic tool such as Query Monitor in a controlled session if the site can support it. Do not leave debugging tools active on a busy production site without understanding their overhead and information exposure.

Compare:

  • total query time;
  • slow or duplicate queries;
  • HTTP API requests;
  • hooks with high execution time;
  • PHP errors;
  • template used;
  • cache calls.

The useful evidence is not that the updated plugin appears somewhere in the request. It is that a new query, remote call or hook accounts for the additional time.

A database migration can create a delayed regression

Some updates change tables or launch background processing. The front-end may become slower while the migration is incomplete.

Review:

  • WordPress Site Health scheduled events;
  • WooCommerce scheduled actions;
  • plugin-specific queues;
  • database error log if available;
  • table size and indexes;
  • jobs repeatedly failing and retrying.

Do not repeatedly trigger a migration button if its state is unclear. A partially completed data change needs a backup and a verified recovery plan.

Autoloaded options can grow after a plugin update

WordPress loads autoloaded options on many requests. An update may add or enlarge settings, cached data or temporary state.

Inspect totals before deleting anything. With WP-CLI, an authorised administrator can review large autoloaded options:

wp db query "
SELECT option_name, LENGTH(option_value) AS bytes
FROM wp_options
WHERE autoload IN ('yes','on','auto-on','auto')
ORDER BY bytes DESC
LIMIT 20;
"

Table prefixes and accepted autoload values vary by WordPress version and installation. This query reads data; it does not establish that a large option is unnecessary.

Never delete an option solely because it is large. Determine which component owns it, whether the value is still required and how the plugin recreates or migrates it.

Cache invalidation can look like a permanent slowdown

An update often changes asset versions and purges generated pages. The first requests rebuild:

  • page cache;
  • object cache;
  • CSS generated by a theme or builder;
  • image metadata;
  • translated strings;
  • WooCommerce transients.

Measure long enough to distinguish a temporary warm-up from a continuing regression. If every cache expiry repeats the same long delay, the origin path still needs investigation.

Do not keep a stale cache indefinitely to avoid the rebuild. Visitors and administrators must receive correct updated content.

PHP compatibility problems are not always fatal

A plugin can remain functional on a new PHP or WordPress version while producing warnings, deprecated calls or inefficient fallback behaviour.

Review protected logs for messages beginning at the update time. Repeated warnings can generate disk and logging overhead even when visitors see no error.

Keep display_errors disabled on production. Use logging:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Apply this only during a controlled diagnostic window, protect the log from public access and remove or reduce debugging afterwards. Logs may contain paths or submitted values.

Decide between rollback, repair and vendor escalation

A rollback is appropriate when:

  • the update causes business-critical failure;
  • a tested previous version is available;
  • the database can return safely to the earlier state;
  • the security risk of the older version is understood;
  • a later controlled investigation is planned.

A targeted repair is preferable when the cause is local configuration, generated assets, an index or an integration that can be corrected without carrying an outdated vulnerable release.

Escalate to the vendor when the regression is reproducible in their supported configuration and belongs to their code. Provide versions, steps, logs and measurements rather than only a low score.

Test rollback away from production when possible

Restoring old files over a live updated database can create a version mismatch. Use staging or a cloned environment for comparison where practical.

Compare:

  • identical content and database state;
  • identical PHP version;
  • cache cleared in a controlled way;
  • same URL and user state;
  • old component version versus new.

If the regression disappears only with the earlier version, you have stronger evidence. Still identify whether the change is a defect, a new feature cost or an incompatibility elsewhere.

Verify the repair across affected states

After the change, test:

  • clean first visit;
  • warm-cache visit;
  • logged-in administrator;
  • mobile;
  • the affected form or WooCommerce journey;
  • scheduled or background processing;
  • error logs.

Recheck the original metric and the actual user action. A faster public page is not success if the update repair breaks checkout or leaves a migration incomplete.

Information to include in a regression assessment

Provide:

  • affected URL or administrator action;
  • old and new component versions;
  • update date and method;
  • before/after timings if available;
  • cache status;
  • PHP and WordPress versions;
  • relevant protected log excerpt with secrets removed;
  • whether a rollback has already been attempted.

Do not send passwords in the initial request. Access requirements should follow a defined scope and recovery plan.

If WordPress performance dropped after an update, we can compare the changed request, front-end assets, PHP work and MySQL behaviour. The assessment will identify whether the safest route is a rollback, targeted repair or vendor escalation, with evidence and verification defined before intervention.

BEFORE YOU SEND THE REQUEST

Frequently asked questions.

Do you ask for passwords in the form?+

No. The public form never requests access. Secure credentials are requested only after the scope and quote are approved.

Who reviews the incident?+

The request goes to Jordi Ensenyat, founder of Code Barcelona and a WordPress specialist with more than 15 years of experience.

Is anything changed before the quote?+

No. Visible symptoms and scope are reviewed first. Intervention begins after approval and with a rollback path prepared.

Do you work internationally?+

Yes. WP Repair handles WordPress and WooCommerce incidents in English and Spanish through a remote service.

Assess my incident