The Starting Point
The client came to us with a beautifully designed Elementor Pro website that was underperforming on PageSpeed. They had already installed 4 separate WordPress Performance Team plugins:
- Embed Optimizer
- Enhanced Responsive Images
- Modern Image Formats
- Optimization Detective
While these are quality plugins from the WordPress core team, managing 4 separate performance plugins felt like overkill. The client wanted to consolidate to one plugin that could handle everything.
Initial score: 83 on mobile—not terrible, but with 25+ render-blocking CSS files and jQuery still loading synchronously, there was clear room for improvement.
The Journey (Including Our Mistakes)
Here's the complete timeline—including where we went wrong. Because performance optimization isn't always a straight line up.
The Critical CSS Trap
This is where we learned an important lesson about chasing numbers. Critical CSS is an "advanced" optimization that inlines above-the-fold styles and defers the rest. In theory, it should improve scores significantly. In practice, with Elementor sites, it can backfire spectacularly.
What happened: The Critical CSS generator didn't correctly identify the LCP element's (a hero logo image) required styles as "critical." The image loaded in 30ms, but the browser couldn't render it for an additional 1,160ms because its CSS was deferred. LCP jumped from 3.5s to 6.1s—nearly doubling.
The lesson: More aggressive optimization doesn't always mean better results. Elementor's complex CSS dependencies make Critical CSS risky. The "boring" JS + CSS optimization (without Critical CSS) delivered better results.
Finding the Elementor + Royal Speed Balance
Elementor Pro has its own built-in performance features. The key is knowing which to keep and which to let Royal Speed handle:
Let Elementor Handle
Optimized Image Loading (fetchpriority), Lazy Load Background Images, Load Google Fonts Locally, Element Cache, Optimized Gutenberg Loading
Let Royal Speed Handle
JS Optimization (defer/delay), CSS Optimization (combine/minify), Page Caching, Browser Caching Headers
Skip Entirely
Critical CSS generation (conflicts with Elementor's complex CSS), WP Performance Team plugins (redundant when using Royal Speed)
Final Metrics
Results & Configuration
Mobile: 86
Desktop: 99
Elementor Settings
Bonus Lesson: The Cloudflare Cache Gotcha
After disabling Critical CSS, scores stayed at 71 even after clearing Royal Speed's cache. The culprit? Cloudflare was serving cached pages with the old (broken) Critical CSS still embedded.
Remember: When using Cloudflare (or any CDN), always purge both your WordPress cache AND your CDN cache after making optimization changes. Otherwise, you'll test against stale cached versions and drive yourself crazy.