etechflow / module-page-speed-optimizer
etechflow/module-page-speed-optimizer
Magento 2 Page Speed Optimizer Pro — Google PageSpeed Insights diagnostic, WebP image conversion + picture blocks + native lazy-load, HTML minification, JS defer-to-footer, Defer Fonts Loading with exclusion list, Server Push / resource preload hints, Back/Forward Cache compatibility. Full Amasty PSO Pro feature parity at lower price.
ETechFlow Page Speed Optimizer
Magento 2 module that integrates with Google PageSpeed Insights — run real performance diagnostics from the admin, see Lighthouse lab data + real-user CrUX field data side-by-side, and get inline mappings from Google's recommendations to the ETechFlow setting that fixes each one.
Code optimization (CSS/JS/HTML minification, defer fonts, prioritize resource loading) is in development for v1.1+. v1.0 ships the visible-value feature first.
Install
composer require etechflow/module-page-speed-optimizer:^1.0
bin/magento module:enable ETechFlow_PageSpeedOptimizer
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
# Restart php-fpm to clear OPcache (mandatory on prod with opcache.validate_timestamps=0)
Set up the Google API key (~3 min, one-time)
- https://console.cloud.google.com/apis/credentials → Create Credentials → API Key (free)
- Enable PageSpeed Insights API on the project (free, 25,000 requests/day)
- Paste the key into Stores → Configuration → eTechFlow → Page Speed Optimizer → Google PageSpeed Insights → API Key
Without a key it still works, but you'll hit Google's per-IP rate limit (~1 request/second).
Activate the licence
php tools/generate-license.php --module=page-speed-optimizer --host=<your-domain>
Paste the key into Configuration → eTechFlow → Page Speed Optimizer → License Key (or use the Bundle License Key if you're an ETechFlow suite customer).
Verify
bin/magento etechflow:pso:verify
Ten PASS lines means you're good to go.
Run your first diagnostic
bin/magento etechflow:pso:diagnose --url=https://your-store.com/ --strategy=mobile
Or via the admin: Stores → Settings → Page Speed Diagnose → click Run diagnostic.
Configuration
Stores → Configuration → eTechFlow → Page Speed Optimizer:
- License Key — per-module key (or use Bundle License Key for the suite)
- Module Enabled — toggle the whole module
- Google PageSpeed Insights API Key — your Google Cloud API key
- Default Strategy — mobile (Google's mobile-first indexing default) or desktop
- API Timeout — default 90s (PSI typically takes 15-45s per page)
Compatibility
- Magento Open Source 2.4.4 – 2.4.8
- Adobe Commerce 2.4.4 – 2.4.8
- PHP 8.1 / 8.2 / 8.3 / 8.4
- Hyvä Theme + Hyvä Checkout — admin-only module, theme-agnostic
Support
[email protected] — include your license key + Magento version when reporting issues.
Changelog — ETechFlow Page Speed Optimizer
All notable changes to this module. Adheres to Semantic Versioning.
[1.0.0] — 2026-05-21 — Google PageSpeed Insights diagnostic + foundation
First commercial release. Ships the PSI Diagnose feature — the visible-feature that closes every "is your store fast?" conversation with merchants. Code optimization (CSS/JS/HTML minification, defer fonts, prioritize resource loading) follows in v1.1+.
Why v1.0 ships Diagnose first
Every Amasty / Mageworx / Mirasvit page-speed module markets the same optimization features. What makes Amasty's $259 product feel premium is the Diagnostic tool — it shows merchants a real Google score before/after, with concrete recommendations. We ship that as v1.0 because:
- It's the highest-perceived-value feature in the category
- It gives merchants something to measure their other ETechFlow modules against (IO's WebP conversion, future PSO minification, etc.)
- The code already exists — it was originally added to IO v1.2.0 then moved here in IO v1.3.0 because a measurement tool didn't belong in an image-optimization module.
Added
Foundation
registration.php,composer.json(proprietary licence, soft-deps on IO + suite modules via Bundle key).etc/module.xmlsetup_version1.0.0.- DB schema: 1 table
etechflow_pso_diagnostic_log— full audit of every PSI run with lab + field metrics + raw JSON for future re-parsing. - Admin config (
etc/adminhtml/system.xml) — License section + Google PageSpeed Insights section + Code Optimization section (placeholder toggles for v1.1+ features).
Licensing + Infrastructure
Model/LicenseValidator— per-domain HMAC + bundle key.MODULE_ID = page-speed-optimizer. SharesBUNDLE_SECRET_FRAGMENTSbyte-identical with every other ETechFlow module.Model/Config— license-awareisEnabled(). PSI API key + default strategy + timeout getters.Model/Performance/Profiler— Tideways span helper, tagsETechFlow_PSO_*.
Google PageSpeed Insights Integration
Model/Psi/PsiClient— vanilla Curl client. Free tier: 25,000 requests/day per merchant's Google Cloud API key (no key works too, with Google's per-IP rate limit).Model/Data/DiagnosticResult— typed value object: lab Lighthouse score + Core Web Vital metrics + CrUX real-user field metrics + sorted recommendation list.Model/Recommendation/Mapper— curated mapping of 16 PSI audit IDs to the ETechFlow feature that fixes them. Drives the "ETechFlow can fix this" badge inline next to each Google recommendation.Model/Psi/DiagnosticLogger— best-effort persistence to the audit table.
Admin UI
- New page at Stores → Settings → Page Speed Diagnose:
- Big colour-coded score card (green ≥ 90, orange 50-89, red < 50 — Google's own bands)
- Lab metrics row (FCP, LCP, TBT, CLS)
- Field metrics row (real-user CrUX data when available — LCP, INP, CLS + overall FAST/AVERAGE/SLOW category)
- Sorted recommendation list (biggest LCP impact first) with HIGH/MEDIUM/LOW badges
- ETechFlow fix badge on every recommendation we cover
CLI
bin/magento etechflow:pso:diagnose --url=... --strategy=mobile|desktop --json --pass-score=80— headless diagnostic for CI gates.bin/magento etechflow:pso:verify— 10-check smoke test.
Deferred to v1.1+
- CSS minification (build-time, stored in
pub/static) - JavaScript minification + defer
- HTML minification
- Defer Fonts Loading with exclusion list
- Prioritize Resource Loading (
<link rel="preload">injection) - GZIP/Brotli headers via .htaccess / nginx hints
- Critical CSS extraction (above-the-fold CSS inlining)
- Performance budgets (admin-set max JS/CSS/image total per page; flag offenders)
- Score timeline graph (chart of LCP / INP / CLS over time from the diagnostic_log table)
- Hyvä Mode (auto-detect Hyvä, skip optimizations Hyvä already handles)
Setup (one-time, ~3 min)
- Go to https://console.cloud.google.com/apis/credentials
- Click "Create Credentials → API Key" (free)
- Enable "PageSpeed Insights API" on the project (free, 25,000 requests/day)
- Paste the key into Stores → Configuration → eTechFlow → Page Speed Optimizer → Google PageSpeed Insights → PageSpeed Insights API Key
Without a key it still works (Google's per-IP rate limit) but the key is strongly recommended.
Compatibility
- Magento Open Source 2.4.4 – 2.4.8
- Adobe Commerce 2.4.4 – 2.4.8
- PHP 8.1 / 8.2 / 8.3 / 8.4
- Hyvä Theme + Hyvä Checkout (PSO is admin-side; theme-agnostic for now — Hyvä-aware optimizations land in v1.1+)
| Version | Stability | QA Status | Compatibility | Released |
|---|---|---|---|---|
| 2.5.5 | stable | Fail | Magento 2.4.7-2.4.8 Details | 2026-06-22 11:39:20 |
| 2.5.4 | stable | Not tested | Not yet tested Details | 2026-06-22 09:37:33 |
| 2.5.0 | stable | Not tested | Not yet tested Details | 2026-06-06 14:14:44 |
| 2.4.0 | stable | Not tested | Not yet tested Details | 2026-06-04 10:23:48 |
| 2.3.1 | stable | Not tested | Not yet tested Details | 2026-05-30 14:33:11 |
| 2.3.0 | stable | Not tested | Not yet tested Details | 2026-05-21 10:02:55 |
| 2.2.0 | stable | Not tested | Not yet tested Details | 2026-05-21 09:55:49 |
| 2.1.0 | stable | Not tested | Not yet tested Details | 2026-05-21 09:41:38 |
| 2.0.0 | stable | Not tested | Not yet tested Details | 2026-05-21 07:20:33 |
| 1.1.0 | stable | Not tested | Not yet tested Details | 2026-05-21 06:15:11 |
| 1.0.0 | stable | Not tested | Not yet tested Details | 2026-05-21 06:07:22 |
Requires 7
| Package | Constraint |
|---|---|
| magento/framework | ^103.0||^104.0 |
| magento/module-backend | ^102.0||^103.0 |
| magento/module-catalog | ^104.0||^105.0 |
| magento/module-config | ^101.2||^102.0 |
| magento/module-store | ^101.1||^102.0 |
| magento/module-ui | ^101.2||^102.0 |
| php | ~8.1.0||~8.2.0||~8.3.0||~8.4.0 |
Suggests 3
| Package | Reason |
|---|---|
| etechflow/module-back-in-stock-notification | Bundle key activates this module too. |
| etechflow/module-image-optimizer | Pair with IO so the PSI Diagnose recommendation mapper can point to specific image-optimization settings (e.g. 'Serve images in next-gen formats → Enable WebP conversion'). |
| etechflow/module-next-day-eligibility | Bundle key activates this module too. Existing ETechFlow suite customer? Get this free. |
No QA results yet
QA pipelines haven't run for this version. Compatibility and quality results appear here once the vendor publishes a tagged release that gets ingested.
More from etechflow
View vendorDynamic 'View Other Options/Finishes/Sizes' PDP buttons driven by per-product link attributes; replaces hardcoded in-description buttons and strips the old ones at render time.
Theme-agnostic mega menu for Magento 2. Renders on Hyvä, Luma, Adobe Commerce default and custom themes via automatic runtime detection. Provides a JSON endpoint for lazy-loaded subcategory + featured-product data.
EtechFlow Store Locator — admin-managed store/branch finder for Magento 2 with a Leaflet + OpenStreetMap map and postcode proximity search (postcodes.io). Hyva and Luma compatible. No paid map API key required.
Universal Product Fitment Finder for Magento 2 — Make/Model/Year/Part filtering on any fitment domain (automotive, motorcycle, marine, RV, phone cases, watches, appliance parts, anywhere a customer asks "will this fit my X?"). Admin-configurable labels + URL prefix so the same module rebrands to any merchant domain. Includes PDP fitment badge, SEO URLs, customer garage with cross-device sync, OEM/part-number search, and admin tooltips throughout. Theme-agnostic — Hyvä, Luma, custom themes. Renamed from "module-vehicle-compat" in v2.0.0.
Turn an existing module into recurring revenue.
If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.