Compatibility¶
What each indexnowkit/* package runs on, and how long that is meant to last. The constraints are the ones in the
packages' composer.json; the dates are the upstream end-of-life dates at the time of writing (2026-09), linked so you
can check them. The promise itself (what may change in a minor, what may not) is bc.md.
Policy¶
- PHP. Every package requires the PHP versions that still receive security fixes from php.net, and CI runs the
whole matrix (8.2, 8.3, 8.4, 8.5) against the lowest and the highest dependency set. The minimum is raised in the
first minor after the previous version leaves security support:
^8.2becomes^8.3in the first minor released after 2026-12-31. Raising the minimum PHP is not a breaking change of the library: Composer does not offer the new minor to an application on the old PHP, and the code the application sees does not change. None of the packages declares an upper bound of its own; where the matrix stops short of the newest PHP, the bound comes from a dependency — theyiisoft/*packages ofindexnowkit/yii3are the case today (they declare8.1 - 8.5), so an application on a newer PHP waits for them, not for us. - Frameworks. An adapter supports the framework versions that are in bug-fix or security support upstream, and drops a version in the first minor after its security support ends. A new major of a framework is added in a minor of the adapter when the test suite passes on it, without a release of the core.
- Between the packages. Every package pins the core to one minor; the adapters pin
console,sitemap,verify,historyanddoctrinethe same way. A release wave moves the constraints together (see the family changelog), socomposer update indexnowkit/*is the upgrade.
Matrix¶
| Package | PHP | Framework / library | Upstream support ends |
|---|---|---|---|
indexnowkit/core |
^8.2 |
PSR-18 client of your choice (php-http/discovery), PSR-3, PSR-16; PSR-7/PSR-17 and PSR-15 (psr/http-server-handler, psr/http-server-middleware) for Key\KeyFileRequestHandler — interfaces only, no implementation is required |
— |
indexnowkit/console |
^8.2 |
symfony/console ^6.4 \|\| ^7.0 \|\| ^8.0 |
6.4: security fixes to 2027-11; 7.4 LTS: 2029-11 |
indexnowkit/testing |
^8.2 |
PHPUnit ^11.5 \|\| ^12.0 \|\| ^13.0 (the conformance kits) |
per phpunit.de; PHPUnit 11 left bug-fix support on 2026-02-06. The Laravel adapter's own suite stays on PHPUnit 11: laravel/framework 12/13 and PHPUnit 12.5 disagree on the error handler |
indexnowkit/sitemap |
^8.2 |
symfony/console ^6.4 \|\| ^7.0 \|\| ^8.0 for the command |
as console |
indexnowkit/verify |
^8.2 |
the core's transport; symfony/console for check --sample (suggested) |
as console |
indexnowkit/history |
^8.2 |
ext-pdo (sqlite, mysql, pgsql schemas), PSR-16; symfony/console for the commands |
as console |
indexnowkit/doctrine |
^8.2 |
doctrine/orm ^2.19 \|\| ^3.0, doctrine/dbal ^3.8 \|\| ^4.0 |
ORM 2.x / DBAL 3.x: security fixes only, see doctrine-project.org |
indexnowkit/symfony-bundle |
^8.2 |
Symfony ^6.4 \|\| ^7.0 \|\| ^8.0 (framework-bundle, http-kernel ^6.4.13; Symfony 8 needs PHP 8.4), doctrine/doctrine-bundle ^2.13 \|\| ^3.0 with indexnowkit/doctrine |
6.4 LTS: bug fixes to 2026-11, security to 2027-11; 7.4 LTS: 2028-11 / 2029-11 (symfony.com/releases) |
indexnowkit/laravel |
^8.2 |
illuminate/support ^12.0 \|\| ^13.0 (Laravel 12, 13) |
12: bug fixes to 2026-08, security to 2027-02; 13: 2027-08 / 2028-02 (laravel.com/docs/releases) |
indexnowkit/yii2 |
^8.2 |
yiisoft/yii2 ^2.0.45; yiisoft/yii2-queue ^2.3 for dispatch: queue |
2.0.x maintained, no end date announced (yiiframework.com) |
indexnowkit/yii3 |
^8.2, in practice up to 8.5 |
yiisoft/active-record ^1.0, yiisoft/db ^2.0, yiisoft/router ^4.0; yiisoft/config, yii-http, yii-console, yii-event of the application read its config groups |
Yii3 packages follow their own SemVer lines (github.com/yiisoft); every yiisoft/* in require declares 8.1 - 8.5, so that is the real PHP ceiling of this adapter; no queue mode until yiisoft/queue is released |
PHP itself: 8.2 security fixes to 2026-12-31, 8.3 to 2027-12-31, 8.4 to 2028-12-31, 8.5 to 2029-12-31 (php.net/supported-versions).
Symfony 8 is a target of the bundle since 0.13 (CI: PHP 8.4 with framework-bundle ^8.0); console, sitemap, history,
yii2 and yii3 accept symfony/console ^8.0. Laravel 11 and Symfony 6.3 and below are not supported.
Flavours in CI¶
bin/ci <package> <flavour> runs the same install the workflow does: highest and lowest for every package,
dbal3 for doctrine (DBAL 3 / ORM 2), symfony64 and symfony8 for symfony-bundle (Symfony 6.4, and Symfony 8 on PHP
8.4, each with the highest of everything else). A change that passes highest but not lowest is a constraint bug, not a code bug: the fix is the constraint.