Module Matrix replaces Drupal's stock Extend and Uninstall module pages with a filterable, vanilla-JavaScript interface that adds lifecycle and stability filters neither core page offers. It depends on nothing but Drupal core, and it already declares support for Drupal 12.
Requirements
| Requirement | Value |
|---|---|
| Drupal core | ^10 || ^11 || ^12 |
| PHP | ^8.1 |
| Dependencies | Core System module only — no contributed dependencies |
| Configuration route | /admin/config/system/module-matrix-settings |
| Permission | access module matrix settings |
What it changes on the module pages
Module Matrix is built with vanilla JavaScript — no jQuery — and it rebuilds Drupal's module list as a flex/grid, accordion-style layout instead of the stock table. It reshapes both the Extend (install) page and the Uninstall page, but not identically: the Extend page carries the full set of customizable detail fields described below, while the Uninstall page keeps a fixed layout showing only Name, Description and Required By, by design.
The filters — this is the product
The stock Extend page gives you a text search and nothing else. Module Matrix adds three filter groups, each read directly from the settings form's option list:
| Filter | Options |
|---|---|
| Status | Enabled, Disabled, Unavailable |
| Lifecycle | Stable, Deprecated, Experimental, Obsolete |
| Stability | Stable, Release Candidate, Beta, Alpha, Development |
Lifecycle and stability answer different questions: lifecycle is where a module sits in its maintenance path (a stable module can still be marked deprecated), while stability is how far along its current release is (alpha through stable). A reset button clears every filter at once, and text search still works alongside all three, so you can type a partial module name and narrow by lifecycle and stability in the very same pass.
Thirteen toggleable detail fields, in four groups
Everything shown per module beyond its name is optional, grouped in the settings form:
- Basic Information: Machine Name, Version, Status
- Dependencies: Requires, Required By
- Project Information: Project, Subpath, Lifecycle, Stability, Last Modified
- Links & Resources: Help/Permissions/Configure links, Issue Queue link, Usage Statistics link
Turn on only what your team actually reads. A Compact Layout toggle skips all thirteen at once and falls back to Name, Description and Package — useful on a site with several hundred modules where the accordion detail would otherwise dominate the page.
Package navigation
Packages appear as a clickable sidebar, separate from the module list itself — where that sidebar sits (left, right or top of the list) is the Layout Position setting described below. Selecting a package narrows the list to that package's modules and marks the selected link active, with a separate "show all" link to clear the selection; the sidebar and the filter checkboxes work together rather than as alternatives, so you can narrow to one package and one lifecycle at the same time.
Layout, grid and color options
Three settings control how the page is arranged: Layout Position (Left, Right or Top — where the package sidebar sits relative to the module list), an optional grid layout that swaps the row list for a responsive grid, and an optional scrollable sidebar for sites with many packages. A separate Style Mode setting (Light, Dark, or None for the browser's own styles) unlocks six accent colors — Teal, Coral, Indigo, Gold, Slate and Neutral — used for highlights and interactive states. All three layout positions collapse to a single stacked column below a 992px viewport, so the Left/Right/Top choice only matters on wider screens.
Installation
composer require drupal/module_matrix
drush en module_matrix
drush cr
Configuration
Settings live at Configuration > System > Module Matrix Settings, or directly at /admin/config/system/module-matrix-settings. The access module matrix settings permission controls who can reach that form; assign it deliberately, since it governs what every other user of the Extend page sees.
Common questions
Does Module Matrix depend on any contributed modules?
No. The only dependency declared in module_matrix.info.yml is Drupal core's own System module.
Is there an "Active" lifecycle filter?
No. The shipped lifecycle options are Stable, Deprecated, Experimental and Obsolete — read directly from the module's own code, not carried over from older documentation.
Will it work on Drupal 12?
Yes. module_matrix.info.yml declares ^10 || ^11 || ^12, so it installs on Drupal 12 today.
Does it replace Module Filter?
It is an alternative, not a drop-in replacement. Module Filter is a mature, jQuery-based module focused on tabbed filtering. Module Matrix is built without jQuery and adds lifecycle and stability filtering that Module Filter does not have; the two are not designed to run together.
Does the compact layout affect the Uninstall page too?
No. The Uninstall page's Name/Description/Required-By layout is fixed regardless of the Extend page's detail-field or compact-layout settings.
Does the layout work on a phone or tablet?
Yes. All three layout positions — Left, Right and Top — collapse to one stacked column below a 992px viewport, defined directly in the module's own stylesheet.
Need help managing a large Drupal site?
Module Matrix is free and GPL-licensed, like the rest of my contributed work. If your module list has outgrown the stock Extend page, or you are planning a Drupal 11 or 12 upgrade and want the module inventory audited first, that is work I do. I also maintain Selectify and Utilikit, two other site-building modules built the same way — core-only dependencies, no jQuery.
Read about my Drupal services, see what a Drupal developer brings to a project, or get in touch.