With version 2.4.x, Magento includes about 200 internal PHP packages plus more than a hundred external PHP packages. These numbers have grown a lot in the last few releases, especially with several packages for the GraphQL integration and for the Multi Source Inventory.
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 performance. You’ll achieve better performance, and your admin users won’t have to deal with superfluous functionality that isn’t being fully utilised.
Maybe it would be useful to prepare a list of core Magento 2 modules that can be disabled with no harm for your store, because they are hardly used.
Benefits of removing core modules
Less code means less maintenance work
Removed code is debugged code
Fewer security risks
Magento becomes faster with certain modules disabled
How to display Magento 2 module list?
If there is a need to find a complete list of modules installed on your Magento 2, follow the steps:
Log in to your Magento 2 installation root folder: use SSH via Terminal or Putty.cd;
Use the Magento 2 enabled modules command: php bin/magento module:status to see a list of Magento 2 all enabled / disabled modules:
List of not-used core modules that can be disabled with no harm
It’s up to you which modules to remove. Here, we present a suggestion, list of what I think the modules do, it might help knowing what you can try to disable.
Important note: 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..
AdminNotification: can be disabled. But it's useful to get the last security information.
AdvancedPricingImportExport: I reckon this one can be disabled if you don't use the Import/Export feature or the advanced pricing.
Authorization: cannot be disabled it's the module that handles the ACL
Authorizenet: can be disabled if you don't use Authorize.net
Backend: cannot be disabled it handles the backend.
Backup: can be disabled if you don't use the Magento backup feature.
BrainTree: can be disabled if you don't use BrainTree
Bundle: can be disabled if you don't use bundle products.
BundleImportExport: can be disabled if you don't use bundle products via Import/Export
CacheInvalidate: can be disabled if you don't use Varnish cache (but you should!)
Captcha: can be disabled if you don't use captchas
Catalog: well I reckon it can be disabled but why would you ?
CatalogImportExport: can be disabled if you don't use Import/Export for the catalog
CatalogInventory: cannot be disabled
CatalogRule: I reckon it could be disabled if you don't use catalog price rules
CatalogRuleConfigurable: can be disabled if you don't use catalog price rule with configurable products
CatalogSearch: keep it
CatalogUrlRewrite: same for this one
CatalogWidget: this one can be disabled if you don't use the catalog widget product list
Checkout: keep it
CheckoutAgreements: can be disabled if you don't use the checkout agreements.
Cms: ain't sure if it can really be disabled if you don't use CMS features to be honest.
CmsUrlRewrite: see above
Config: cannot be disabled it handles the System Configuration feature.
ConfigurableImportExport: can be disabled if you don't use configurable with the Import/export feature
ConfigurableProduct: can be disabled if you don't use configurable products
Contact: can be disabled if you don't use the contact page
Cookie: keep it
Cron: same here
CurrencySymbol: I think it can be disabled if you don't use multiple currencies
Customer: well
CustomerImportExport: can be disabled if you don't use the Import/Export feature with customers
Deploy: I reckon it depends on your deployment methods but this is the module that handles the deploy CLI commands
Developer: can be disabled in production I reckon, it provides several CLI commands for developers.
Dhl: can be disabled if you don't use DHL
Directory: I reckon it cannot be disabled as it handles the management of countries and regions.
Downlodable: can be disabled if you don't use downloadable products.
DownlodableImportExport: can be disabled if you don't use downlodable products with the Import/Export feature.
Eav: cannot be disabled
Email: cannot be disabled
EncryptionKey: should not be disabled because it handles the advanced encryption model to protect passwords/sensitive data.
Fedex: can be disabled if you don't use FedEx.
GiftMessage: can be disabled if you don't use gift messages.
GoogleAdwords: can be disabled if you don't use Adwords.
GoogleAnalytics: can be disabled if you don't use Analytics (who does that ?)
GoogleOptimizer: can be disabled if you don't use Google Experiment (A/B testing) with Google Analytics
GroupedImportExport: can be disabled if you don't use grouped products with the Import/Export feature.
GroupedProduct: can be disabled if you don't use grouped products.
ImportExport: can be disabled if you don't use the Import/Export feature at all.
Indexer: keep it
Integration: pretty sure it can be disabled if you don't use the web API.
LayeredNavigation: can be disabled if you don't use the Layered navigation.
Marketplace: can be disabled it displays partners of Magento in the backend.
MediaStorage: keep it
Msrp: I reckon it can be disabled if you don't use the MSRP feature of Magento.
Multishipping: can be disabled if you don't use the "ship to multiple addresses" feature.
NewRelicReporting: can be disabled if you don't use NewRelic.
Newsletter: can be disabled if you don't use the newsletter feature of Magento.
OfflinePayments: can be disabled if you don't use the following payment methods: bank transfer, cash on delivery, check/money order and purchase order.
OfflineShipping: can be disabled if you don't use the following shipping methods: free shipping, flat rate, table rates and store pickup.
PageCache: keep it
Payment: same
Paypal: can be disabled if you don't use PayPal.
Persistent: can be disabled if you don't use the persistence feature of Magento.
ProductAlert: can be disabled if you don't use the product alerts feature.
ProductVideo: can be disabled if you don't use videos for your products.
Quote: keep it
Reports: I reckon it can be disabled if you don't use the Magento reports.
RequireJs: keep it
Review: can be disabled if you don't use the review system.
Rss: can be disabled if you don't use RSS
Rule: it's the abstract module extended by the sales rule, catalog rule etc.. Theorically if you don't use any of the rules you can disable it
Sales: keep it
SalesRule: can be disabled if you don't use the shopping cart rules.
SalesSequence: should be kept. It's responsible for the sequences processing in Sales module.
SampleData: can be disabled if you don't use the sample data
Search: keep it
Security: keep it
SendFriend: can be disabled if you don't use the send to friend feature.
Shipping: keep it
Sitemap: you can disable it if you don't want to manage the sitemap.
Store: keep it
Swagger: I think it can be disabled if you don't want to check the Magento REST API in a user friendly format.
Swatches: can be disabled if you don't use the swatches
SwatchesLayeredNavigation: can be disabled if you don't use the swatches in your layered navigation
Tax: keep it except if you live in a tax free world. In that case, send me an invite to your world.
TaxImportExport: can be disabled if you don't use the Import/Export feature with taxes.
Theme: keep it
Translation: theorically you can disable it if you don't need translations
Ui: keep it
Ups: can be disabled if you don't UPS
UrlRewrite: keep it
User: keep it
Usps: can be disabled if you don't use USPS
Variable: can be disabled if you don't use the custom variables feature.
Vault: can be disabled if you don't use Vault.
Version: should be disabled because it allows anyone to check your Magento version by accessing /magento_version
Webapi: can be disabled if you don't use the REST and SOAP web services.
WebapiSecurity: should not be disabled if you do use REST and SOAP web services.
Weee: can be disabled if you don't wee/fixed product taxes
Widget: can be disabled if you don't use widgets
Wishlist: can be disabled if you don't use the wishlist feature.
Theoretically you should be able to disable any module if you also disable the module's dependencies.
You should be able to see all dependencies by running the cli command
bin/magento info:dependencies:show-modules. It will generate a csv file with all dependencies between the modules.
How to Enable/ disable or uninstall modules in Magento 2
Now, there might be some conflicting modules that cannot be enabled at the same time. So, we need to first find the dependencies of a module in the composer.json file. Open the composer.json file of the module that you want to enable or disable and check its conflict field. If there is no conflict, then you can go ahead and enable, disable, or uninstall a module.
To enable a module use the command:
php bin/magento module:enable Extension_Name
To disable a Magento 2 module from the command line, use the command:
php bin/magento module:disable Extension_Name
To uninstall and remove a Magento 2 module use the next command:
php bin/magento module:uninstall Extension_Name
Having enabled or disabled one or several modules, use the next command to update the database:
magento setup:upgrade and
php bin/magento setup:static-content:deploy -f