DEV Community

Cover image for Drupal 12 Readiness: Relaunching the Deprecation Dashboard
victorstackAI
victorstackAI

Posted on • Originally published at victorstack-ai.github.io

Drupal 12 Readiness: Relaunching the Deprecation Dashboard

Drupal 12 lands mid-2026. The deprecation list is long, the database API is changing, and most teams will not discover their exposure until the upgrade breaks something in production. Static analysis catches the problems early. But terminal output is not enough when you need to share findings with project managers, clients, or stakeholders who do not read diffs.

The Drupal 12 Readiness CLI now ships with an HTML report generator, GitHub Actions CI across three PHP versions, and coverage for all 32 deprecated database API functions.

The Problem

drupal-check and phpstan-drupal produce excellent terminal output. Developers can act on it immediately. But readiness assessments get shared beyond the terminal -- in project status meetings, client reports, and sprint planning tickets. Copying terminal output into a Google Doc is not a workflow. It is a workaround.

The tool needed to produce self-contained, styled HTML reports that non-developers can read.

HTML Report Generator

The new HtmlReportGenerator.php produces styled, self-contained HTML reports with no external dependencies. No CSS CDN links, no JavaScript bundles. A single HTML file that opens in any browser and prints cleanly to PDF.

Reports include:

  • Summary statistics with pass/fail counts
  • Grouped findings by file and severity
  • Direct links to deprecation documentation
  • Timestamp and scan configuration metadata

Two Commands, Two Report Paths

scan Command

The scan command wraps PHPStan with phpstan-drupal and phpstan-deprecation-rules. When the --output=html flag is provided, the command runs PHPStan with --error-format=json, parses the structured output, and feeds it to the HTML report generator.

./vendor/bin/drupal-12-readiness scan web/modules/custom/my_module --output=html
Enter fullscreen mode Exit fullscreen mode

This produces a styled report alongside the standard terminal output.

check:db-api Command

The check:db-api command focuses specifically on the 32 deprecated database API functions being removed in Drupal 12. When --output=html is specified, the report is written to {path}/drupal12-db-api-report.html.

./vendor/bin/drupal-12-readiness check:db-api web/modules/custom/my_module --output=html
Enter fullscreen mode Exit fullscreen mode

The "What It Checks" section in the README lists every deprecated function. The full set of 32 includes db_query(), db_select(), db_insert(), db_update(), db_delete(), db_merge(), db_truncate(), db_transaction(), db_like(), db_or(), db_and(), db_condition(), db_driver(), db_escape_field(), db_escape_table(), db_next_id(), db_query_range(), db_query_temporary(), db_set_active(), and their associated helper functions.

GitHub Actions CI

The project runs CI on PHP 8.1, 8.2, and 8.3 via GitHub Actions. A separate PHPCS job enforces coding standards on every push and pull request. The matrix build ensures the tool works across the PHP versions that Drupal 11 and 12 actually support in production.

strategy:
  matrix:
    php-version: ['8.1', '8.2', '8.3']
Enter fullscreen mode Exit fullscreen mode

README Badges and Documentation

The README now includes:

  • CI status badge -- build health at a glance
  • PHP version badge -- supported runtime versions
  • License badge -- MIT
  • Sample output -- screenshot of the HTML report
  • "What It Checks" section -- complete list of all 32 deprecated database API functions with brief descriptions

Technical Takeaway

Reports are a deliverable, not an afterthought. When a readiness tool only outputs to the terminal, it limits the audience to the developer who ran the command. Self-contained HTML reports turn a developer tool into a project management artifact. The --output=html flag costs one class and one conditional branch per command -- minimal complexity for maximum reach.

The project ships with a comprehensive README, MIT LICENSE, and is CI-validated across three PHP versions.

View Code

View Code

Why This Matters for Drupal and WordPress

Drupal agencies managing multiple client sites need shareable readiness reports to plan Drupal 12 upgrades — terminal output does not survive a project status meeting. The 32 deprecated database API functions (db_query(), db_select(), etc.) appear extensively in legacy contrib modules, and this tool catches them before production breaks. WordPress developers facing major version upgrades face a parallel challenge; the pattern of static analysis plus HTML reporting is directly transferable to WordPress deprecation audits using tools like PHPCompatibility, and agencies maintaining both CMS platforms can standardize their upgrade assessment workflow.


References


Looking for an Architect who doesn't just write code, but builds the AI systems that multiply your team's output? View my enterprise CMS case studies at victorjimenezdev.github.io or connect with me on LinkedIn.


Looking for an Architect who doesn't just write code, but builds the AI systems that multiply your team's output? View my enterprise CMS case studies at victorjimenezdev.github.io or connect with me on LinkedIn.

Originally published at VictorStack AI — Drupal & WordPress Reference

Top comments (0)