E-commerce Best Practice Part 2: Speed up Magento 2 Performance via Disabled Modules

Magento 2 is a great e-commerce platform but its broad functionality means it’s prone to suffering from performance issues. 20% of all e-commerce platforms are currently powered by Magneto, according to Alexa, and yours might be one of them. The good news is that there are ways of improving your website’s performance without completely re-platforming. In the previous article, we explored how you can optimise Magento 2 performance with caching. Today, we’re going to look at how to use disabled modules to boost Magento 2’s performance and, thus, the speed of your site—by 20-30%.

Magento 2 has a lot of built-in modules that provide different functionality, but you don’t need to use all of them 100% of the time. This means that you can safely disable elements of the platform’s modules to give lacklustre performance a lift. By using the following simple tips, you’ll achieve better performance, and your admin users won’t have to deal with superfluous functionality that isn’t being fully utilised.

Disclaimer: The result described below was obtained with our local machine. Results may differ on a different server, but you’ll still see a substantial improvement in your Magneto 2 performance.

How do I disable modules?

Magento 2’s command-line tool and configuration provide a mechanism for disabling modules. We’ll come back to config a little later.

When using the command-line tool, our command looks like this:

bin/magento module:disable vendore_moduleName

NB: Many of Magneto’s core modules can’t be disabled using this command, because they have dependencies. If you try to disable a module that’s linked to other elements, you’ll receive an error message. So, first off, start by disabling the modules that are independent.

How do I check for module dependencies?

Unfortunately, there’s no precise mechanism for checking dependencies within Magento 2, but you can use these three tips to see whether specific modules are linked.

1) Simple module disabling

Try running the command we’ve shown above. If the module you’re trying to disable has dependencies, it will ping back an error showing a list of the related modules.

2) CLI

This second tip is a little bit more complicated. As in the first instance, you can utilise a command:

bin/magento info:dependencies:show-modules

This command generates a file which should contain the names of all the modules. Under each module name, you’ll see the name of the module on which it depends. For example, the below file shows “module-authorization” then, underneath that, you can see “module-backend”, which is a dependency.

…

magento/module-authorization,1,1,0

" -- magento/module-backend”,,1,0

…

This means that in order to disable “module-backend”, we first need to disable “module-authorization”. But it’s important to note that “module-backend” may be linked to other modules, aside from “module-authorization”. So, if you’re using this method, you’ll need to check which other modules also use “module-backend” before you disable it.

3) 3rd party modules

The simplest way to get information about dependencies is to install 3rd party modules such as https://github.com/avstudnitz/AvS_DisableModules/. When you install this, it extends Magento’s functionality with a new CLI command:

bin/magento info:dependencies:show-removable

By using this command, you’ll generate a file called “modules-removable.csv”, which contains a list of all the modules that have no dependencies. So, you can easily see which ones can be removed or switched off.

"Modules without dependencies:"

" =========================== "

…

Dotdigitalgroup_Email

Magento_Robots

MSP_ReCaptcha

Dotdigitalgroup_Chat

Magento_AdobeStockAdminUi

Magento_AdobeStockAsset

Magento_AdobeStockClient

Magento_AdobeStockImage

…

Which modules can be safely disabled?

In the case of Magento 2.3.4 CE—the version we’re using—we were able to disable the 45 modules shown below. Depending on which version of Magneto 2 you’re using, and on which server, your options may be different:

  • Magento_AdvancedPricingImportExport
  • Magento_AdminNotification
  • Magento_BundleImportExport
  • Magento_CacheInvalidate
  • Magento_ConfigurableProductSales
  • Magento_Cookie
  • Magento_CurrencySymbol
  • Magento_CustomerImportExport
  • Magento_SampleData
  • Magento_Dhl
  • Magento_EncryptionKey
  • Magento_Fedex
  • Magento_GoogleAdwords
  • Magento_GoogleAnalytics
  • Magento_GroupedImportExport
  • Magento_DownloadableImportExport
  • Magento_CatalogRuleConfigurable
  • Magento_LayeredNavigation
  • Magento_Marketplace
  • Magento_NewRelicReporting
  • Magento_OfflinePayments
  • Magento_Authorizenet
  • Magento_Persistent
  • Magento_ProductVideo
  • Magento_QuoteAnalytics
  • Magento_ReviewAnalytics
  • Magento_ConfigurableImportExport
  • Magento_Signifyd
  • Magento_Sitemap
  • Magento_SwatchesLayeredNavigation
  • Magento_TaxImportExport
  • Magento_GoogleOptimizer
  • Magento_Ups
  • Magento_Usps
  • Magento_Version
  • Magento_WebapiSecurity
  • Magento_CatalogWidget
  • Magento_WishlistAnalytics
  • Amazon_Core
  • Amazon_Login
  • Amazon_Payment
  • Klarna_Core
  • Klarna_Ordermanagement
  • Klarna_Kp
  • Temando_Shipping

NB: Before disabling any of these modules, it’s worth double-checking whether you need them or not. Some of them could contain hidden dependencies or functionalities that you find you rely on. For example, the “Magento_AdminNotification” module is sometimes used by third-party modules, to show notifications.

Configuration

Coming back to configuration now, this is how our config file (app/etc/config.php) looks. You can use this as an entry point. We’ve included a code snippet below, which displays the name of each module and the number of dependencies it has next to it. This is a fairly straightforward way of seeing which modules can be switched off to boost your Magento 2 performance.

Code snippet

<?php return [     'modules' => [ 

        'Magento_AdminAnalytics' => 1, 

        'Magento_Store' => 1, 

        'Magento_AdobeIms' => 1, 

        'Magento_AdobeImsApi' => 1, 

        'Magento_AdobeStockAdminUi' => 1, 

        'Magento_MediaGallery' => 1, 

        'Magento_AdobeStockAssetApi' => 1, 

        'Magento_AdobeStockClient' => 1, 

        'Magento_AdobeStockClientApi' => 1, 

        'Magento_AdobeStockImage' => 1, 

        'Magento_AdobeStockImageAdminUi' => 1, 

        'Magento_AdobeStockImageApi' => 1, 

        'Magento_AdvancedPricingImportExport' => 0, 

        'Magento_Directory' => 1, 

        'Magento_Amqp' => 1, 

        'Magento_AmqpStore' => 1, 

        'Magento_Config' => 1, 

        'Magento_Theme' => 1, 

        'Magento_Backend' => 1, 

        'Magento_Variable' => 1, 

        'Magento_Eav' => 1, 

        'Magento_Customer' => 1, 

        'Magento_AuthorizenetGraphQl' => 1, 

        'Magento_Search' => 1, 

        'Magento_Backup' => 1, 

        'Magento_AdminNotification' => 0, 

        'Magento_BraintreeGraphQl' => 1, 

        'Magento_Indexer' => 1, 

        'Magento_Authorization' => 1, 

        'Magento_BundleImportExport' => 0, 

        'Magento_Rule' => 1, 

        'Magento_CacheInvalidate' => 0, 

        'Magento_Cms' => 1, 

        'Magento_Catalog' => 1, 

        'Magento_Quote' => 1, 

        'Magento_Security' => 1, 

        'Magento_GraphQl' => 1, 

        'Magento_EavGraphQl' => 1, 

        'Magento_StoreGraphQl' => 1, 

        'Magento_CatalogImportExport' => 1, 

        'Magento_SalesSequence' => 1, 

        'Magento_CatalogInventory' => 1, 

        'Magento_CatalogRule' => 1, 

        'Magento_Msrp' => 1, 

        'Magento_CatalogSearch' => 1, 

        'Magento_Bundle' => 1, 

        'Magento_Payment' => 1, 

        'Magento_CatalogUrlRewrite' => 1, 

        'Magento_CatalogGraphQl' => 1, 

        'Magento_Widget' => 1, 

        'Magento_Sales' => 1, 

        'Magento_Checkout' => 1, 

        'Magento_CheckoutAgreementsGraphQl' => 1, 

        'Magento_Vault' => 1, 

        'Magento_CmsGraphQl' => 1, 

        'Magento_Downloadable' => 1, 

        'Magento_CmsUrlRewrite' => 1, 

        'Magento_CmsUrlRewriteGraphQl' => 1, 

        'Magento_User' => 1, 

        'Magento_ConfigurableProduct' => 1, 

        'Magento_UrlRewrite' => 1, 

        'Magento_QuoteGraphQl' => 1, 

        'Magento_ConfigurableProductSales' => 0, 

        'Magento_GroupedProduct' => 1, 

        'Magento_Contact' => 1, 

        'Magento_Cookie' => 0, 

        'Magento_Cron' => 1, 

        'Magento_CurrencySymbol' => 0, 

        'Magento_Captcha' => 1, 

        'Magento_Integration' => 1, 

        'Magento_DownloadableGraphQl' => 1, 

        'Magento_CustomerGraphQl' => 1, 

        'Magento_CustomerImportExport' => 0, 

        'Magento_SampleData' => 0, 

        'Magento_Deploy' => 1, 

        'Magento_Developer' => 1, 

        'Magento_Dhl' => 0, 

        'Magento_AsynchronousOperations' => 1, 

        'Magento_DirectoryGraphQl' => 1, 

        'Magento_Tax' => 1, 

        'Magento_CustomerDownloadableGraphQl' => 1, 

        'Magento_ImportExport' => 1, 

        'Magento_Weee' => 1, 

        'Magento_CardinalCommerce' => 1, 

        'Magento_CatalogCustomerGraphQl' => 1, 

        'Magento_AdvancedSearch' => 1, 

        'Magento_Elasticsearch' => 1, 

        'Magento_Email' => 1, 

        'Magento_EncryptionKey' => 0, 

        'Magento_Fedex' => 0, 

        'Magento_GiftMessage' => 1, 

        'Magento_GoogleAdwords' => 0, 

        'Magento_GoogleAnalytics' => 0, 

        'Magento_Ui' => 1, 

        'Magento_GoogleShoppingAds' => 1, 

        'Magento_BundleGraphQl' => 1, 

        'Magento_PageCache' => 1, 

        'Magento_GroupedCatalogInventory' => 1, 

        'Magento_GroupedImportExport' => 0, 

        'Magento_CatalogSampleData' => 1, 

        'Magento_GroupedProductGraphQl' => 1, 

        'Magento_GroupedProductSampleData' => 1, 

        'Magento_DownloadableImportExport' => 0, 

        'Magento_CatalogRuleConfigurable' => 0, 

        'Magento_InstantPurchase' => 1, 

        'Magento_Analytics' => 1, 

        'Magento_Inventory' => 1, 

        'Magento_InventoryAdminUi' => 1, 

        'Magento_InventoryAdvancedCheckout' => 1, 

        'Magento_InventoryApi' => 1, 

        'Magento_InventoryBundleProduct' => 1, 

        'Magento_InventoryBundleProductAdminUi' => 1, 

        'Magento_InventoryCatalog' => 1, 

        'Magento_InventorySales' => 1, 

        'Magento_InventoryCatalogAdminUi' => 1, 

        'Magento_InventoryCatalogApi' => 1, 

        'Magento_InventoryCatalogSearch' => 1, 

        'Magento_InventoryConfigurableProduct' => 1, 

        'Magento_InventoryConfigurableProductAdminUi' => 1, 

        'Magento_InventoryConfigurableProductIndexer' => 1, 

        'Magento_InventoryConfiguration' => 1, 

        'Magento_InventoryConfigurationApi' => 1, 

        'Magento_InventoryDistanceBasedSourceSelection' => 1, 

        'Magento_InventoryDistanceBasedSourceSelectionAdminUi' => 1, 

        'Magento_InventoryDistanceBasedSourceSelectionApi' => 1, 

        'Magento_InventoryElasticsearch' => 1, 

        'Magento_InventoryExportStockApi' => 1, 

        'Magento_InventoryIndexer' => 1, 

        'Magento_InventorySalesApi' => 1, 

        'Magento_InventoryGroupedProduct' => 1, 

        'Magento_InventoryGroupedProductAdminUi' => 1, 

        'Magento_InventoryGroupedProductIndexer' => 1, 

        'Magento_InventoryImportExport' => 1, 

        'Magento_InventoryCache' => 1, 

        'Magento_InventoryLowQuantityNotification' => 1, 

        'Magento_Reports' => 1, 

        'Magento_InventoryLowQuantityNotificationApi' => 1, 

        'Magento_InventoryMultiDimensionalIndexerApi' => 1, 

        'Magento_InventoryProductAlert' => 1, 

        'Magento_InventoryRequisitionList' => 1, 

        'Magento_InventoryReservations' => 1, 

        'Magento_InventoryReservationCli' => 1, 

        'Magento_InventoryReservationsApi' => 1, 

        'Magento_InventoryExportStock' => 1, 

        'Magento_InventorySalesAdminUi' => 1, 

        'Magento_CatalogInventoryGraphQl' => 1, 

        'Magento_InventorySalesFrontendUi' => 1, 

        'Magento_InventorySetupFixtureGenerator' => 1, 

        'Magento_InventoryShipping' => 1, 

        'Magento_Shipping' => 1, 

        'Magento_InventorySourceDeductionApi' => 1, 

        'Magento_InventorySourceSelection' => 1, 

        'Magento_InventorySourceSelectionApi' => 1, 

        'Magento_LayeredNavigation' => 0, 

        'Magento_Marketplace' => 0, 

        'Magento_AdobeStockAsset' => 1, 

        'Magento_MediaGalleryApi' => 1, 

        'Magento_MediaStorage' => 1, 

        'Magento_MessageQueue' => 1, 

        'Magento_BundleSampleData' => 1, 

        'Magento_MsrpConfigurableProduct' => 1, 

        'Magento_MsrpGroupedProduct' => 1, 

        'Magento_DownloadableSampleData' => 1, 

        'Magento_Multishipping' => 1, 

        'Magento_MysqlMq' => 1, 

        'Magento_NewRelicReporting' => 0, 

        'Magento_Newsletter' => 1, 

        'Magento_OfflinePayments' => 0, 

        'Magento_SalesRule' => 1, 

        'Magento_OfflineShipping' => 1, 

        'Magento_GraphQlCache' => 1, 

        'Magento_Authorizenet' => 0, 

        'Magento_Paypal' => 1, 

        'Magento_PaypalCaptcha' => 1, 

        'Magento_PaypalGraphQl' => 1, 

        'MSP_ReCaptcha' => 1, 

        'Magento_Persistent' => 0, 

        'Magento_ProductAlert' => 1, 

        'Magento_ConfigurableSampleData' => 1, 

        'Magento_ProductVideo' => 0, 

        'Magento_AuthorizenetAcceptjs' => 1, 

        'Magento_QuoteAnalytics' => 0, 

        'Magento_ConfigurableProductGraphQl' => 1, 

        'Magento_RelatedProductGraphQl' => 1, 

        'Magento_ReleaseNotification' => 1, 

        'Magento_InventoryLowQuantityNotificationAdminUi' => 1, 

        'Magento_RequireJs' => 1, 

        'Magento_Review' => 1, 

        'Magento_ReviewAnalytics' => 0, 

        'Magento_ReviewSampleData' => 1, 

        'Magento_Robots' => 1, 

        'Magento_Rss' => 1, 

        'Magento_ThemeSampleData' => 1, 

        'Magento_ConfigurableImportExport' => 0, 

        'Magento_SalesAnalytics' => 1, 

        'Magento_SalesGraphQl' => 1, 

        'Magento_SalesInventory' => 1, 

        'Magento_OfflineShippingSampleData' => 1, 

        'Magento_CatalogRuleSampleData' => 1, 

        'Magento_TaxSampleData' => 1, 

        'Magento_AuthorizenetCardinal' => 1, 

        'Magento_SalesRuleSampleData' => 1, 

        'Magento_Elasticsearch6' => 1, 

        'Magento_CustomerAnalytics' => 1, 

        'Magento_SendFriend' => 1, 

        'Magento_SendFriendGraphQl' => 1, 

        'Magento_InventoryShippingAdminUi' => 1, 

        'Magento_Signifyd' => 0, 

        'Magento_Sitemap' => 0, 

        'Magento_InventoryGraphQl' => 1, 

        'Magento_UrlRewriteGraphQl' => 1, 

        'Magento_Webapi' => 1, 

        'Magento_SwaggerWebapi' => 1, 

        'Magento_SwaggerWebapiAsync' => 1, 

        'Magento_Swatches' => 1, 

        'Magento_SwatchesGraphQl' => 1, 

        'Magento_SwatchesLayeredNavigation' => 0, 

        'Magento_SwatchesSampleData' => 1, 

        'Magento_MsrpSampleData' => 1, 

        'Magento_TaxGraphQl' => 1, 

        'Magento_TaxImportExport' => 0, 

        'Magento_CustomerSampleData' => 1, 

        'Magento_CatalogCmsGraphQl' => 1, 

        'Magento_ThemeGraphQl' => 1, 

        'Magento_CmsSampleData' => 1, 

        'Magento_Tinymce3' => 1, 

        'Magento_Translation' => 1, 

        'Magento_GoogleOptimizer' => 0, 

        'Magento_Ups' => 0, 

        'Magento_SalesSampleData' => 1, 

        'Magento_CatalogUrlRewriteGraphQl' => 1, 

        'Magento_CatalogAnalytics' => 1, 

        'Magento_Usps' => 0, 

        'Magento_CheckoutAgreements' => 1, 

        'Magento_Braintree' => 1, 

        'Magento_VaultGraphQl' => 1, 

        'Magento_Version' => 0, 

        'Magento_Swagger' => 1, 

        'Magento_WebapiAsync' => 1, 

        'Magento_WebapiSecurity' => 0, 

        'Magento_ProductLinksSampleData' => 1, 

        'Magento_WeeeGraphQl' => 1, 

        'Magento_CatalogWidget' => 0, 

        'Magento_WidgetSampleData' => 1, 

        'Magento_Wishlist' => 1, 

        'Magento_WishlistAnalytics' => 0, 

        'Magento_WishlistGraphQl' => 1, 

        'Magento_WishlistSampleData' => 1, 

        'Amazon_Core' => 0, 

        'Amazon_Login' => 0, 

        'Amazon_Payment' => 0, 

        'Dotdigitalgroup_Email' => 1, 

        'Dotdigitalgroup_Chat' => 1, 

        'Klarna_Core' => 0, 

        'Klarna_Ordermanagement' => 0, 

        'Klarna_Kp' => 0, 

        'Magento_PaypalReCaptcha' => 1, 

        'MSP_TwoFactorAuth' => 1, 

        'Temando_Shipping' => 0, 

        'Vertex_Tax' => 1, 

        'Vertex_AddressValidation' => 1, 

        'Yotpo_Yotpo' => 1 

    ] 

]; 

Conclusion

Magento 2 is a big, broad e-commerce platform that can be cumbersome because of its size. But it’s a solid solution that provides a wide range of functionality. And, although it has certain performance issues, Magento benefits from a lot of contributors who proactively create new modules to cover evolving business needs.

Its modular architecture is a blessing because using the methods we’ve described above, it’s easy to improve Magneto’s performance by flicking modules on and off. In fact, by disabling the modules you don’t use, you could boost your website’s performance by over 30%.

For more information on how you can optimise your site’s performance, contact us to speak to one of our experts today.