Magento: Guides and Practical Know-how | Page 48 | mironsoft Blog
Magento
-
Mar 24, 2025
Applying a Magento update to production is not a single Composer command, it is a process with several critical steps, and skipping any one of them raises the risk of an outage. A structured update service differs from ongoing maintenance in that it focuses specifically on the update itself: resolving Composer constraints correctly, testing changes on a staging environment first, running automated tests before production deployment, and keeping a working rollback strategy ready just in case. This article shows how such an update process is actually built.
-
Mar 23, 2025
GraphQL subscriptions enable realtime communication over persistent connections, but they come with substantial scaling and infrastructure requirements. This article explains the concept, the transport options, the design decisions, and when subscriptions are actually the right choice.
-
Mar 23, 2025
After years of imports, module uninstalls, and manual database interventions, nearly every grown Magento catalog accumulates silent data inconsistencies that never throw an error but quietly erode data quality. A custom CLI audit command surfaces these inconsistencies before they show up as odd frontend behavior or wrong search results, replacing the dangerous reflex of running a reindex at the first sign of trouble.
-
Mar 22, 2025
Magento 2 governs every click in the backend through a hierarchical Admin ACL system: acl.xml declares the resource tree, roles under System, Permissions, User Roles bind administrators to exactly the resources they need, and isAllowed() checks in controllers, blocks and view models enforce those rights at runtime. Anyone who builds custom modules without declaring their own ACL resources exposes new admin functionality by default to every role that has access to the parent resource, a risk that often only surfaces during the next role audit. This article shows how to build the resource tree correctly, model custom ACL resources for custom modules, check permissions in controllers and view models, and avoid the most common pitfalls around acl.xml, system.xml bindings and config caching.
-
Mar 22, 2025
A stuck or constantly recalculating indexer slows down the entire store, from stale prices to empty search results. This article explains the available indexer modes, why the Price Index and Category Products are the most expensive, which changes trigger an unwanted full reindex, and how to reliably diagnose and fix stuck indexers using indexer:status, the indexer_state table, and growing mview changelog tables.
-
Mar 21, 2025
Anyone who rewrites the invoice logic or credit memo processing in Magento 2 completely via preference risks conflicts with every additional module and every core update. Plugins on InvoiceRepositoryInterface, CreditmemoManagementInterface, and ShipmentRepositoryInterface allow targeted extensions: custom numbering, approval workflows for credit memos, additional totals lines, and automatic invoice creation on shipment, without replacing the core logic.
-
-
Mar 19, 2025
Tests that depend on the current time, randomly generated UUIDs, or pseudo-random values are flaky: they sometimes fail and sometimes don't, and the cause is hard to reproduce. Clock interfaces, UUID factories, and controlled randomness solve this problem at its root, without complicating the production code.
-
Mar 19, 2025
A misconfigured Elasticsearch or OpenSearch installation noticeably slows down every category page and every faceted search in Magento. This article shows how index mapping, shard sizes, JVM heap, and query patterns determine actual response time, how to find bottlenecks with the Explain API and cluster health checks, and how to avoid expensive wildcard and fuzzy queries in layered navigation.
-
Mar 17, 2025
A Vue checkout flow directly determines the conversion rate of a Magento shop. Teams that cleanly separate steps, validation and abandonment tracking prevent users from bouncing right before purchase completion because of unclear error messages or lost progress.