Chat on WhatsApp
Kishan Savaliya Author

Kishan Savaliya

Adobe Certified Expert — Magento Commerce Developer

Adobe-certified Magento 2 + Hyvä developer. 200+ stores delivered, 60+ open-source extensions published. Founder of Panth Infotech.

48 published articles

Latest posts

All articles by Kishan Savaliya, newest first.

  • Hyvä Theme Hyvä
    12 min read

    10 Alpine.js Patterns Every Hyvä Developer Needs

    Generic Alpine.js docs do not tell you how to wire cart counts from PHP, why x-cloak is non-negotiable on PDP swatches, or how $dispatch lets an Alpine.js drawer talk to a Magewire form without a refresh. After shipping 40+ Hyvä modules across Magento 2.4.4 — 2.4.9, the same 10 patterns appear in nearly every one. This post walks through each — x-data hydrated from PHP, x-cloak flash-prevention, $store cross-component state, x-bind:class active tabs, x-on:click.outside drawers, x-intersect lazy loads, x-show transitions, x-html with DOMPurify, x-init with $watch + localStorage, and $dispatch for Magewire — with copy-pasteable snippets, when-to-reach-for-it notes, and the trap that bites first-time Hyvä devs.

    Read article
  • Hyvä Theme Checkout
    12 min read

    Hyvä Checkout Custom Field — A Working Delivery-Date Example

    Most Hyvä checkout customization tutorials stop at "render a field" and skip the backend plumbing that actually persists the value to the order. Here is a complete, copy-pasteable delivery_date field for Hyvä Checkout 1.2+ on Magento 2.4.4 — 2.4.9: the Magewire vs Alpine.js decision tree, the extension_attributes.xml declaration, the Magewire component class, the date input partial with HTML5 min/max constraints, the QuoteRepository save plugin, and the admin sales_order_view.xml display. Plus the gotcha that breaks guest checkouts: the date does not survive submitQuote without a second plugin.

    Read article
  • Hyvä Theme Hyvä
    13 min read

    Step-by-Step Hyvä Compatibility — Porting Mageplaza Layered Navigation

    Most Hyvä compatibility tutorials stop at "install hyva-themes/magento2-default-theme and pray". This one ports a real Luma-only filter extension — Mageplaza Layered Navigation — to Hyvä across five concrete phases with diffs at every step. Phase 1: composer require the compat-module shell. Phase 2: copy the phtml and strip Knockout data-bind. Phase 3: rebuild the live-filter UI in Alpine.js against the existing Magento AJAX endpoint. Phase 4: swap Luma selectors for Tailwind utility classes that follow the Hyvä theme tokens. Phase 5: a Magewire wire-up for the count badges that need server-side reactivity. Plus a decision matrix on when to ditch the port and buy the Hyvä Catalog Add-on instead.

    Read article
  • Hyvä Theme Hyvä
    12 min read

    Magento Luma Module Not Working in Hyvä — The Diagnostic Order

    Your Luma extension worked yesterday on Magento Blank. Today on Hyvä it renders nothing — or worse, breaks the page silently with no console error. The fix is not "reinstall the module" or "flush cache". There is a diagnostic order — four checks in sequence, each with a distinct DevTools signal — that resolves 95% of Luma-to-Hyvä incompatibilities. This guide walks the order using real modules we have debugged (Mageplaza, Amasty, MGS) on Magento 2.4.4 — 2.4.9 production sites. Each step has the actual symptom, the actual signal, and the actual fix — not a generic compatibility checklist.

    Read article
  • Upgrades & Patches Magento 2.4.9
    10 min read

    Adobe Commerce Security Patches — What Changes vs What Stays

    Adobe Commerce security patches arrive on a quarterly cadence (APSB cycle), but not every quarter deserves the same regression budget. After applying every Magento security patch shipped between 2.4.4 and 2.4.9, we see four recurring patch shapes: Admin XSS, Sales/Payment input validation, Adobe IMS / SSO, and Catalog GraphQL. Each shape touches a different set of vendor/magento modules and demands a different test suite. Here is the categorization, the composer recipe to detect impacted code paths, and the per-shape ETA so you can size the next patch window before Adobe ships it.

    Read article
  • Upgrades & Patches Checkout
    9 min read

    When a Magento Patch Breaks Checkout — The 5-Minute Rollback Recipe

    You pushed a patch on a Saturday morning. Checkout is now blank, the place-order button does nothing, and Stripe webhooks have stopped firing. This is the 5-minute rollback recipe — four commands, in order — plus the three breakage patterns that cause 90% of post-patch checkout outages on Magento 2.4.4 — 2.4.9 stores, real var/report excerpts, the moment you should stop trying to forward-fix on production, and a 4-item pre-patch staging checklist that prevents the next Saturday call. Written from production incidents I have rolled back at kishansavaliya.com clients between 2024 and 2026.

    Read article
  • Upgrades & Patches Magento 2.4.9
    11 min read

    PHP 8.4 + Magento 2 Compatibility — The Implicit-Nullable Trap

    PHP 8.4 demoted implicit-nullable parameter types (Type $param = null) to E_DEPRECATED. On Magento 2.4.4 — 2.4.7 vendor code that floods var/log/system.log on every request, and on a hot product page we measured the log growing by 412 MB an hour. Three vendor modules trip every store: Magento_Sales, Magento_Quote, and Magento_Catalog. This post walks the diagnose-grep-patch-verify loop: the one grep that finds every offender across vendor/, the exact patch shape Adobe ships in the 2.4.8/2.4.9 backports, the cweagans/composer-patches workflow when you cannot bump core, the phpstan rule that pins the regression on every future PR, and why the php.ini error_reporting shortcut is a stopgap not a fix.

    Read article
  • Upgrades & Patches Magento 2.4.9
    11 min read

    Magento Composer Dependency Conflicts — Diagnose & Fix in 15 Minutes

    Every Magento 2.4.7 to 2.4.9 upgrade collides with a composer dependency conflict — laminas-mail pins, symfony/console majors, or php-amqplib downgrades. The official docs recommend hours of trial and error. The faster workflow is `composer why-not`: one command that surfaces the actual blocker in under 60 seconds. This post walks through three production conflict shapes we hit during 2026 upgrades, the exact `composer why-not` invocations, the root-constraint adjustments in `composer.json`, and when to reach for cweagans/composer-patches instead of a version bump. Real package names, real conflict output, real fixes.

    Read article
  • Performance Magento Performance
    9 min read

    Magento `setup:static-content:deploy -f` Reusing Old Cache — The Wipe Sequence

    You edit a LESS file, push it to production, run `bin/magento setup:static-content:deploy -f en_US`, and the old CSS still serves. The deploy reports success in under two seconds. The browser still shows the old rules. The issue is not Cloudflare, not OPcache, not the browser — it is Magento reusing the preprocessor output cached under `var/view_preprocessed`. The `-f` flag clears `pub/static` but does not always touch `view_preprocessed`. This is the exact wipe sequence we run on every Magento 2.4.4 — 2.4.9 Hyvä store to force a true LESS-to-CSS recompile, why the order of operations matters, and the one-liner that catches the nested `_module.less` reused-output trap.

    Read article
  • Performance Magento Performance
    11 min read

    Magento Slow Category Page — The Indexer, EAV & JOIN Trap

    Most Magento 2.4.9 stores hit a visible wall the moment a category crosses ~5,000 products. The price index swells, the EAV join fan-out balloons, and a category that rendered in 400 ms now takes 1.8 seconds before TTFB even starts. After tuning 22 catalogs between 8k and 180k SKUs in 2025–2026, only three remediations consistently bring category page TTFB back under 250 ms: legacy flat catalog (yes, deprecated, still works under 50k SKUs), the Hyvä Catalog add-on, and a custom slim query for SKU-only listings. Here is the EXPLAIN ANALYZE for each, the millisecond numbers, and the SKU ceiling for each option.

    Read article