Contact Us
Speed up Magento 2 Performance via Disabled Modules
R&D

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%.

When and why do I need to disable Magento 2 modules?

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%. The advice we've provided is based on years of experience providing retail software development services.

Have a question?
Speak to an expert
app development
Explore our application development services
Contact Us
  • We need your name to know how to address you
  • We need your phone number to reach you with response to your request
  • We need your country of business to know from what office to contact you
  • We need your company name to know your background and how we can use our experience to help you
  • Accepted file types: jpg, gif, png, pdf, doc, docx, xls, xlsx, ppt, pptx, Max. file size: 10 MB.
(jpg, gif, png, pdf, doc, docx, xls, xlsx, ppt, pptx, PNG)

We will add your info to our CRM for contacting you regarding your request. For more info please consult our privacy policy
  • This field is for validation purposes and should be left unchanged.

The breadth of knowledge and understanding that ELEKS has within its walls allows us to leverage that expertise to make superior deliverables for our customers. When you work with ELEKS, you are working with the top 1% of the aptitude and engineering excellence of the whole country.

sam fleming
Sam Fleming
President, Fleming-AOD

Right from the start, we really liked ELEKS’ commitment and engagement. They came to us with their best people to try to understand our context, our business idea, and developed the first prototype with us. They were very professional and very customer oriented. I think, without ELEKS it probably would not have been possible to have such a successful product in such a short period of time.

Caroline Aumeran
Caroline Aumeran
Head of Product Development, appygas

ELEKS has been involved in the development of a number of our consumer-facing websites and mobile applications that allow our customers to easily track their shipments, get the information they need as well as stay in touch with us. We’ve appreciated the level of ELEKS’ expertise, responsiveness and attention to details.

Samer Awajan
Samer Awajan
CTO, Aramex