Skip to content

Module Disable Groups

Modules that can be disabled together as a unit. Ordered from "disable today, zero risk" to "needs decoupling first."


Tier 1: Disable Today — Zero External Blockers

These modules have no external dependencies. Disable via bin/magento module:disable with no impact on the rest of the system.

Group: SendFriend (2 modules)

bin/magento module:disable Magento_SendFriend Magento_SendFriendGraphQl
"Email to a friend" — legacy social sharing. Nobody uses this.

Group: Swagger (3 modules)

bin/magento module:disable Magento_Swagger Magento_SwaggerWebapi Magento_SwaggerWebapiAsync
API documentation UI at /swagger. Never expose on production.

Group: LoginAsCustomer (10 modules)

bin/magento module:disable \
  Magento_LoginAsCustomer Magento_LoginAsCustomerAdminUi \
  Magento_LoginAsCustomerApi Magento_LoginAsCustomerAssistance \
  Magento_LoginAsCustomerFrontendUi Magento_LoginAsCustomerGraphQl \
  Magento_LoginAsCustomerLog Magento_LoginAsCustomerPageCache \
  Magento_LoginAsCustomerQuote Magento_LoginAsCustomerSales
Admin "login as customer" feature. Note: Persistent has 1 plugin on LoginAsCustomerApi — it's safely ignored when LAC is disabled (DI skips plugins on non-existent classes).

Group: Weee / FPT (2 modules)

bin/magento module:disable Magento_Weee Magento_WeeeGraphQl
Fixed Product Tax. Zero inbound coupling. Most stores outside US/EU don't need it.

Group: Marketplace (1 module)

bin/magento module:disable Magento_Marketplace
Admin "Magento Marketplace" page. Zero coupling.

Group: ReleaseNotification (1 module)

bin/magento module:disable Magento_ReleaseNotification
"What's new" admin popup. Note: AdminAnalytics has 1 import — make param nullable or disable AdminAnalytics too.

Group: ApplicationPerformanceMonitor (2 modules)

bin/magento module:disable Magento_ApplicationPerformanceMonitor Magento_ApplicationPerformanceMonitorNewRelic
APM profiling. Zero coupling.

Group: Stomp (1 module)

bin/magento module:disable Magento_Stomp
STOMP protocol MQ transport. Zero coupling.

Group: MysqlMq (1 module)

bin/magento module:disable Magento_MysqlMq
MySQL queue fallback. Zero coupling. Only if RabbitMQ (Amqp) is configured.

Group: SwatchesLayeredNavigation (1 module)

bin/magento module:disable Magento_SwatchesLayeredNavigation
Empty module — literally just registration.php. No code.


Tier 2: Disable Today — Minor Side Effects

These can be disabled but some admin features degrade gracefully.

Group: MediaGallery + MediaContent (24 modules)

bin/magento module:disable \
  Magento_MediaGallery Magento_MediaGalleryApi \
  Magento_MediaGalleryUi Magento_MediaGalleryUiApi \
  Magento_MediaGalleryCatalog Magento_MediaGalleryCatalogIntegration \
  Magento_MediaGalleryCatalogUi Magento_MediaGalleryCmsUi \
  Magento_MediaGalleryIntegration Magento_MediaGalleryMetadata \
  Magento_MediaGalleryMetadataApi Magento_MediaGalleryRenditions \
  Magento_MediaGalleryRenditionsApi Magento_MediaGallerySynchronization \
  Magento_MediaGallerySynchronizationApi Magento_MediaGallerySynchronizationMetadata \
  Magento_MediaContent Magento_MediaContentApi \
  Magento_MediaContentCatalog Magento_MediaContentCms \
  Magento_MediaContentSynchronization Magento_MediaContentSynchronizationApi \
  Magento_MediaContentSynchronizationCatalog Magento_MediaContentSynchronizationCms
Side effect: Admin falls back to legacy WYSIWYG media browser. No "Used In" tracking. No EXIF metadata. Product image upload still works (MediaStorage stays). Blocker if using RemoteStorage (S3): RemoteStorage depends on media-gallery-metadata and media-gallery-synchronization. Keep those 2 if using S3.

Group: NewRelicReporting (3 modules)

bin/magento module:disable \
  Magento_NewRelicReporting Magento_ApplicationPerformanceMonitorNewRelic Magento_GraphQlNewRelic
All New Relic integration. Only if you don't use New Relic.

Group: Analytics (7 modules)

bin/magento module:disable \
  Magento_Analytics Magento_AdminAnalytics \
  Magento_CatalogAnalytics Magento_CustomerAnalytics \
  Magento_QuoteAnalytics Magento_ReviewAnalytics \
  Magento_SalesAnalytics Magento_WishlistAnalytics
Adobe Commerce analytics reporting. Side effect: No analytics data sent to Adobe.

Group: Persistent (1 module)

bin/magento module:disable Magento_Persistent
Persistent shopping cart (remembers cart across sessions). Zero inbound coupling. Most stores use full-page cache which conflicts with persistent sessions anyway.


Tier 3: Disable After Decoupling

These need the fixes documented in our decoupling reports before they can be cleanly disabled.

Group: Newsletter (2 modules)

# After decoupling (see docs/decoupling/newsletter.md)
bin/magento module:disable Magento_Newsletter Magento_NewsletterGraphQl
Current blockers: Customer (11 imports), CustomerGraphQl (3 imports), Review (1 inherited import) Fix needed: Move newsletter UI from Customer to Newsletter module. Then disable freely.

Group: Review (3 modules)

# After decoupling (see docs/decoupling/review.md)
bin/magento module:disable Magento_Review Magento_ReviewAnalytics Magento_ReviewGraphQl
Current blocker: Reports (2 collections extend Review classes, 10 controllers, 4 blocks) Fix needed: Move review reports from Reports to Review module. Then Catalog's DefaultProvider returns empty string — no stars shown.

Group: Wishlist (3 modules)

# After decoupling (see docs/decoupling/wishlist.md)
bin/magento module:disable Magento_Wishlist Magento_WishlistAnalytics Magento_WishlistGraphQl
Current blockers: Customer (5 admin controllers), Sales (ObjectManager refs), Catalog/CatalogWidget (template helper calls), GroupedProduct (1 plugin), Reports (event observers) Fix needed: Move admin UI to Wishlist, replace template helpers with child blocks.

Group: Multishipping (1 module)

# After decoupling (see docs/decoupling/msrp_multishipping_mysqlmq.md)
bin/magento module:disable Magento_Multishipping
Current blockers: GiftMessage (2 plugins), SalesRule (1 plugin) Fix needed: Move 3 plugins from GiftMessage/SalesRule into Multishipping.

Group: MSRP (3 modules)

# After decoupling (see docs/decoupling/msrp_multishipping_mysqlmq.md)
bin/magento module:disable Magento_Msrp Magento_MsrpConfigurableProduct Magento_MsrpGroupedProduct
Current blockers: Catalog (FinalPriceBox), Checkout (DefaultItem), GroupedProduct (Grouped.php) Fix needed: Refactor MSRP logic into plugins provided by Msrp module.



Tier 1b: Previously Unscanned — Also Zero Inbound Coupling

All verified: zero external modules depend on these. Disable freely.

Group: Google Tracking (3 modules, 20 files)

bin/magento module:disable Magento_GoogleAdwords Magento_GoogleAnalytics Magento_GoogleGtag Magento_GoogleOptimizer
Google tracking pixels. Most stores use GTM or external scripts instead.

Group: Contact / Rss / Robots (3 modules, 32 files)

bin/magento module:disable Magento_Contact Magento_Rss Magento_Robots
Contact form, RSS feeds, robots.txt generator. Often replaced by CMS or custom solutions.

Group: Backup (1 module, 27 files)

bin/magento module:disable Magento_Backup
Database/media backup via admin. Everyone uses proper backup tools instead.

Group: InstantPurchase (1 module, 41 files)

bin/magento module:disable Magento_InstantPurchase
One-click purchase for stored-card customers. Rarely used.

Group: ProductAlert (1 module, 35 files)

bin/magento module:disable Magento_ProductAlert
"Notify me when price drops / back in stock" emails. Note: Catalog has a composer require on it, but no PHP imports — likely a phantom dep that can be removed.

Group: ProductVideo (1 module, 15 files)

bin/magento module:disable Magento_ProductVideo
YouTube/Vimeo video on product pages.

Group: CheckoutAgreements (1 module, 30 files)

bin/magento module:disable Magento_CheckoutAgreements
"Terms and conditions" checkbox at checkout.

Group: AdminNotification (1 module, 41 files)

bin/magento module:disable Magento_AdminNotification
Admin notification bar (security alerts, updates).

Group: AdvancedSearch (1 module, 29 files)

bin/magento module:disable Magento_AdvancedSearch
Advanced search form page. Most stores rely on catalog search + layered navigation.

Group: OrderCancellation (3 modules, 28 files)

bin/magento module:disable Magento_OrderCancellation Magento_OrderCancellationGraphQl Magento_OrderCancellationUi
Customer self-service order cancellation. New feature, not all stores enable.

bin/magento module:disable Magento_Cookie Magento_Csp
Cookie consent notice and Content Security Policy headers. Caution: CSP may be required for security compliance. Only disable if handled externally.

Group: CardinalCommerce (1 module, 10 files)

bin/magento module:disable Magento_CardinalCommerce
3D Secure authentication for credit cards. Only if not using 3DS.

Group: CurrencySymbol (1 module, 15 files)

bin/magento module:disable Magento_CurrencySymbol
Custom currency symbol override in admin.

Group: SampleData (1 module, 8 files)

bin/magento module:disable Magento_SampleData
Sample data installation framework. Never needed on production.

Group: AsyncConfig (1 module, 8 files)

bin/magento module:disable Magento_AsyncConfig
Async config save via message queue. Only useful for large multi-store configs.

Group: Import/Export Extensions (4 modules, 36 files)

bin/magento module:disable \
  Magento_BundleImportExport Magento_GroupedImportExport \
  Magento_CustomerImportExport Magento_TaxImportExport
Product type-specific and entity-specific import/export. Only if you don't import these entity types.

Group: Search Engine (pick one, disable the rest)

# If using OpenSearch:
bin/magento module:disable Magento_Elasticsearch8
# If using Elasticsearch 8:
bin/magento module:disable Magento_OpenSearch

Group: AwsS3 / RemoteStorage (2 modules, 37 files)

# Only if NOT using S3/remote storage:
bin/magento module:disable Magento_AwsS3 Magento_RemoteStorage

Group: PaypalCaptcha (1 module, 3 files)

bin/magento module:disable Magento_PaypalCaptcha
Captcha on Paypal checkout. Only needed if using Paypal + captcha.

Group: WebapiAsync (1 module, 18 files)

bin/magento module:disable Magento_WebapiAsync
Async REST/SOAP API endpoints. Only if you don't use async webapi.


Not Scanned — Core Infrastructure (Cannot Remove)

These 27 modules are foundational. Every Magento install needs them:

Module Files Role
Authorization 20 ACL
Backend 345 Admin panel framework
Captcha 40 CAPTCHA framework (disable only if using external CAPTCHA)
CatalogUrlRewrite 76 Product/category URL rewrites
CmsUrlRewrite 8 CMS page URL rewrites
Config 187 System configuration
Deploy 67 Static content deployment
Developer 37 Developer mode, profiler hints
Directory 96 Countries, regions, currencies
Eav 177 Entity-Attribute-Value framework
Email 48 Transactional email framework
EncryptionKey 14 Encryption key management
ImportExport 102 Import/export framework
Indexer 60 Indexer framework
Integration 111 OAuth/REST integrations
JwtFrameworkAdapter 19 JWT token handling
JwtUserToken 21 JWT user auth tokens
LayeredNavigation 12 Layered navigation framework
PageCache 48 Full page cache (Varnish/built-in)
Quote 254 Shopping cart/quote
RequireJs 3 RequireJS config generation
Rule 23 Rule engine framework (used by SalesRule, CatalogRule)
Search 87 Search framework
Security 37 Admin security (password, 2FA prep)
Store 144 Multi-store/website/storeview
Theme 177 Theme framework
Translation 23 i18n translation
Ui 180 UI components framework
UrlRewrite 43 URL rewrite engine
User 66 Admin users
Variable 22 Custom variables
Version 2 Version info
Webapi 44 REST/SOAP API framework
WebapiSecurity 3 API rate limiting
Widget 64 Widget framework
CacheInvalidate 5 Cache invalidation (Varnish PURGE)

Quick Reference: Total Removable

Tier Modules Files (approx) Effort
Tier 1 (today, zero risk) 48 ~400 Zero
Tier 1b (today, newly verified) 26 ~440 Zero
Tier 2 (today, minor side effects) 35 ~350 Zero
Tier 3 (after decoupling) 12 ~280 Medium
Total ~121 ~1,470

That's roughly 121 modules and 1,470 PHP files that can be removed from a typical Magento installation. Core infrastructure is ~35 modules. Everything else is optional features.

Full module coverage: 221 modules scanned, 0 remaining.