Skip to content

v5.11.0

@Baspa Baspa tagged this 11 Jun 17:40
* Drop EOL PHP and Laravel versions

Drops support for PHP 8.1 (EOL Dec 2025) and Laravel 9/10/11 (Laravel 11
EOL March 2026). The supported matrix is now PHP 8.2-8.5 and Laravel
12 + 13 (Laravel 13 support is added in the same pass, as it was missing
from the constraints).

- composer.json: php ^8.2-^8.5, illuminate/contracts ^12|^13,
  symfony ^7|^8, testbench ^10|^11, pest ^3|^4, phpunit ^11|^12,
  collision ^8, and switch abandoned nunomaduro/larastan to
  larastan/larastan
- run-tests.yml: matrix PHP 8.2-8.5 x Laravel 12/13 (L13 requires
  PHP >= 8.3, so 8.2 is excluded there)
- README: minimum requirements updated
- phpunit.xml.dist: migrated off the deprecated PHPUnit 9 schema
- Fix three tests that relied on scheme-less URLs slipping through
  Http::fake() as real requests (rejected by current Guzzle)
- JavascriptSizeCheck: explicit attr() return in each() closure
  (PHPStan level 5 with symfony/dom-crawler 8)

Verified green on both matrix corners: Laravel 13.15/PHPUnit 12/Pest 4
(prefer-stable) and Laravel 12/PHPUnit 11/Pest 3 (prefer-lowest), plus
PHPStan.

* Add CanonicalCheck

Checks for a canonical URL (<link rel="canonical">) and verifies it is
not a broken link. Includes translations (en, nl, de, fr, pt_BR), tests
and README entry.

* Add ViewportCheck

Checks for a viewport meta tag containing width=device-width, which is
important for mobile-first indexing. Includes translations (en, nl, de,
fr, pt_BR), tests and README entry.

* Add CharsetCheck

Checks that the page declares a character encoding via <meta charset>
or an http-equiv Content-Type header. Includes translations (en, nl,
de, fr, pt_BR), tests and README entry.

* Add FaviconCheck

Checks that the page references a favicon (<link rel="icon">) and that
it is not a broken link. Includes translations (en, nl, de, fr, pt_BR),
tests and README entry.

* Add StructuredDataCheck

Checks that the page contains at least one valid JSON-LD structured data
block, which helps search engines understand the content and can enable
rich results. Includes translations (en, nl, de, fr, pt_BR), tests and
README entry.

* Add OpenGraphCompletenessCheck

Checks that the core Open Graph tags (og:title, og:description, og:url,
og:type) are present, complementing the existing Open Graph image check.
Includes translations (en, nl, de, fr, pt_BR), tests and README entry.

* Add TwitterCardCheck

Checks that the page defines a twitter:card meta tag so it renders as a
rich card when shared on X (Twitter). Includes translations (en, nl, de,
fr, pt_BR), tests and README entry.

* Add HeadingStructureCheck

Checks that headings do not skip levels (e.g. an h2 followed by an h4),
which keeps the document outline logical for search engines and assistive
technologies. Includes translations (en, nl, de, fr, pt_BR), tests and
README entry.

* Add ImageDimensionsCheck

Checks that images declare explicit width and height attributes, which
reserves layout space during loading and prevents cumulative layout
shift (CLS). Includes translations (en, nl, de, fr, pt_BR), tests and
README entry.

* Add LazyLoadingCheck

Checks that below-the-fold images use loading="lazy" (the first image
may load eagerly), deferring offscreen image loading to improve initial
page load. Includes translations (en, nl, de, fr, pt_BR), tests and
README entry.

* Add HreflangCheck

Validates hreflang annotations on multilingual pages: pages without
hreflang are not penalised, but invalid language codes are flagged.
Includes translations (en, nl, de, fr, pt_BR), tests and README entry.
Assets 2
Loading