etechflow / module-page-speed-optimizer-premium
etechflow/module-page-speed-optimizer-premium
Magento 2 Page Speed Optimizer Premium — adds Infinite Scroll for category pages, advanced bulk-sweep image optimization via cron, detailed optimization logging, per-device JS merging. Requires ETechFlow Page Speed Optimizer Pro. Full Amasty Page Speed Optimizer Premium ($599) alternative at $499.
ETechFlow Page Speed Optimizer Premium
Adds Premium-tier features on top of the ETechFlow Page Speed Optimizer Pro module. Together they form the full Amasty Page Speed Optimizer Premium ($599) alternative at $499.
What this module adds
| Feature | Status |
|---|---|
| Infinite Scroll for category + search-result pages | ✅ v1.0 |
| Auto-optimize EXISTING images in folders via cron | ✅ v1.0 |
| Detailed image-optimization logging | ✅ v1.0 |
| AJAX Shopping Cart popup | 🛠 v1.1 |
| Per-device JS merging | 🛠 v1.1 |
Install
composer require etechflow/module-page-speed-optimizer-premium:^1.0
bin/magento module:enable ETechFlow_PageSpeedOptimizerPremium
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
Requires the Pro module (etechflow/module-page-speed-optimizer ^2.3) — Composer pulls it automatically if not installed.
Verify
bin/magento etechflow:pso-premium:verify
Compatibility
- Magento Open Source / Adobe Commerce 2.4.4 – 2.4.8
- PHP 8.1 – 8.4
- Hyvä Theme + Hyvä Checkout
- Mage-OS
Pricing
- PSO Pro alone — $179 (full Amasty Pro $199 alternative)
- PSO Premium (this module + Pro) — $499 (full Amasty Premium $599 alternative)
Support
Changelog — ETechFlow Page Speed Optimizer Premium
All notable changes to this module. Adheres to Semantic Versioning.
[1.0.1] — 2026-06-04 — Portal licensing + in-admin purchase
Added
Hybrid portal licensing (eTechFlow Store Portal)
SP-XXXXsubscription keys are now validated live against the eTechFlow licensing portal with strict domain + server-IP binding (no offline grace). Per-module HMAC keys and the shared bundle key continue to work for offline activation.- Plan-level feature gating:
Config::isInfiniteScrollEnabled(),isBulkSweepEnabled(), andisDetailedLoggingEnabled()now also honour the active subscription'sinfinite_scroll/bulk_sweep/detailed_loggingflags, so each feature can be toggled per plan from the portal. - New License config: portal URL, issued-key, and bundle-key fields;
Production Environmenttoggle for dev/staging bypass.
In-admin License & Plans page + Stripe checkout
- New admin route
etechflow_psopremium/license/gatewith Weekly / Monthly / Yearly plan cards. Checkoutcontroller creates a Stripe Checkout session;Activatedcontroller fetches the issued key from the portal and saves it automatically.- Payment settings group (Stripe secret/publishable key, currency).
Fixed
- Infinite Scroll selector — the product-grid container selector did not match Luma's
<ol class="products list items product-items">(theproducts wrapper grid products-gridclasses sit on the parent<div>, not a nested element), so infinite scroll silently bailed. Now targets the list element directly; works on category + search pages.
[1.0.0] — 2026-05-21 — Initial Premium tier release
First commercial release of the Premium add-on module. Pairs with PSO Pro to form a complete Amasty Page Speed Optimizer Premium ($599) alternative at $499.
Added
Infinite Scroll for category + search pages
- Vanilla-JS IntersectionObserver-based "load more on scroll" behaviour.
- AJAX controller renders next paginated product page server-side and returns just the new products + updated pagination meta.
- Loading indicator + "Back to top" button after N pages scrolled.
- Admin config: enable per page type (Category / Search Results), scroll threshold (px before bottom), products per fetch.
- Hyvä-compatible — no jQuery dependency.
Bulk-sweep image optimization via cron
SweepFoldersCommandCLI + cron job walks the configured media dirs and enqueues any UN-optimized images into PSO Pro's existingetechflow_pso_view_queue. Pro'sQueueProcessorcron drains the queue normally.- Different from Pro's "auto-on-upload" observer: that only catches new uploads. This catches ALL existing folder content.
- Useful for stores migrating from another optimizer or for retroactive optimization after enabling PSO.
Detailed image-optimization logging
- Adds per-step logging to the optimization pipeline. Each cron run produces a detailed log file at
var/log/etechflow_pso_premium_optimization_YYYY-MM-DD.log. - Captures: source path, engines used, bytes-before/after, savings %, duration ms, status.
- Audit trail for agencies + ops teams managing multi-store catalogs.
Premium tier feature parity with Amasty Premium ($599)
| Amasty Premium feature | PSO Premium v1.0 |
|---|---|
| PSO Pro included | ✅ (via composer dependency) |
| Back Forward Cache | ✅ (in Pro) |
| Infinite Scroll | ✅ NEW |
| AJAX Shopping Cart | 🛠 v1.1 |
| Image optimization by Cron (bulk-sweep) | ✅ NEW |
| JS merging for particular devices | 🛠 v1.1 |
| Auto-optimize EXISTING images in folders | ✅ NEW |
| Detailed optimization logging | ✅ NEW |
4 of 6 Premium-only features in v1.0. AJAX Cart + per-device JS merging in v1.1.
Hardening (the v1.7.0 lesson)
Setup/Patch/Data/V100ReleaseMarker.php— no-op release marker
patch. Establishes the always-a-patch discipline previously adopted in
NDE v1.7.1, BED v1.2.2, and ISP v2.0.0. Every release ships at least
one patch sosetup:upgradealways has something to register in
patch_list— surfacing FS / permissions / DI errors during the patch
phase (which retries cleanly) instead of at the end of the upgrade
(which doesn't). Inaugural patch for v1.0.0.
Setup
composer require etechflow/module-page-speed-optimizer-premium:^1.0
bin/magento module:enable ETechFlow_PageSpeedOptimizerPremium
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
Enable Infinite Scroll
bin/magento config:set etechflow_pso_premium/infinite_scroll/enabled 1
bin/magento config:set etechflow_pso_premium/infinite_scroll/enable_category 1
bin/magento cache:flush
Compatibility
- Magento Open Source / Adobe Commerce 2.4.4 – 2.4.8
- PHP 8.1 – 8.4
- Hyvä Theme + Hyvä Checkout
- Mage-OS
| Version | Stability | QA Status | Compatibility | Released |
|---|---|---|---|---|
| 1.0.3 | stable | Fail | Magento 2.4.7-2.4.8 Details | 2026-06-06 14:14:53 |
| 1.0.2 | stable | Not tested | Not yet tested Details | 2026-06-06 13:42:28 |
| 1.0.1 | stable | Not tested | Not yet tested Details | 2026-06-04 11:07:15 |
| 1.0.0 | stable | Not tested | Not yet tested Details | 2026-05-30 14:33:26 |
Requires 7
| Package | Constraint |
|---|---|
| etechflow/module-page-speed-optimizer | ^2.3 |
| magento/framework | ^103.0||^104.0 |
| magento/module-backend | ^102.0||^103.0 |
| magento/module-catalog | ^104.0||^105.0 |
| magento/module-catalog-search | ^102.0||^103.0 |
| magento/module-store | ^101.1||^102.0 |
| php | ~8.1.0||~8.2.0||~8.3.0||~8.4.0 |
Compatibility
Each Magento release line is installed on its supported PHP versions, then the module is built (DI compilation + static-content deploy) and its unit and integration suites are run. The matrix shows the lines and PHP versions the module is confirmed to install and run on. Code-quality results further down (phpstan, phpcs, …) are reported separately and never affect compatibility.
Code Quality
Advisory checks against the module's source. Static analysis runs once across the whole module; PHPStan re-runs per Magento + PHP version because resolvable symbols differ between releases. These NEVER affect the Compatibility badge — a phpcs finding can't make a module incompatible.
Static analysis
Coding standards (phpcs), mess detection (phpmd), copy-pasted code (cpd), PHP cross-version compatibility, composer.json validity. Each runs once for the whole module.
| Tool | Status | Findings | Summary |
|---|---|---|---|
| PHPCS | Fail | 77 | 1 error, 76 warnings (ruleset: Magento2) — 21 auto-fixable with phpcbf |
| PHPMD | Warning | 13 | 13 rule violations (NPathComplexity:5, MissingImport:3, CyclomaticComplexity:3, UnusedFormalParameter:1, ExcessiveClassComplexity:1) |
| Cpd | Pass | 0 | |
| Composer validate | Info | 1 | valid; 1 advisory note (composer validate --strict) |
PHPStan
Type-checks the module's PHP against a real Magento install at the configured gate level. Re-runs per Magento and PHP version because resolvable symbols differ between releases. Cell → details modal.
Tests
Unit and integration suites, run for each applicable Magento and PHP version. A test failure speaks to the module's behaviour, not its compatibility with a Magento line, so it is reported here separately and never reddens the compatibility matrix.
Unit tests
| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | N/A | N/A | ||
| 2.4.8 | N/A | N/A | ||
| 2.4.9 | N/A | N/A |
Integration tests
| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | N/A | N/A | ||
| 2.4.8 | N/A | N/A | ||
| 2.4.9 | N/A | N/A |
Security
Security checks run directly against the module: an audit of its declared dependencies for known vulnerabilities (composer audit) and a scan of its source for malware and web-shell signatures. Each runs once. A malware detection fails the version outright.
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.