Requirements & compatibility
Supported PHP and Laravel versions, the versioning policy, and how the OI Laravel packages fit together
Requirements & compatibility
Every OI Laravel package targets the same baseline, so if one runs in your application, they all will.
Supported versions
| Requirement | Supported range |
|---|---|
| PHP | ^8.2 — tested on 8.2, 8.3 and 8.4 |
| Laravel | 11.x, 12.x, 13.x (via illuminate/* components) |
| spatie/laravel-data | ^4.23 — required whenever a package ships an Eloquent model or structured responses |
Packages never require laravel/framework directly. They depend only on the
individual illuminate/* components they actually use, each pinned
^11.0|^12.0|^13.0. A package raises its PHP floor above 8.2 only when a
language feature genuinely demands it.
Every package's CI runs the full matrix — PHP 8.2 / 8.3 / 8.4 × Laravel
11 / 12 / 13 with prefer-stable — so compatibility is verified on each push.
Installation
Install any package with Composer; there are no license keys or paid tiers:
composer require oi-lab/oi-laravel-tsPackages are published on Packagist under the oi-lab
vendor and hosted on GitHub. Configuration and
migrations (when applicable) are published with the standard Laravel tag
convention — see Common conventions.
How the packages fit together
- Independent by default — each package is standalone and pulls in only what it needs. You can adopt one without adopting any other.
- Composable when useful — some packages build on others (for example,
oi-laravel-notes and
oi-laravel-publish can
carry oi-laravel-attachments
files). Those internal dependencies are declared explicitly in
composer.jsonand pinned to compatible versions. - Stable releases only — packages ship with
minimum-stability: stableandprefer-stable: true, socomposer requirealways resolves a production-ready version.
Versioning policy
All packages follow Semantic Versioning:
- Patch (
1.2.x) — bug fixes and internal changes, always safe to update. - Minor (
1.x.0) — new, backward-compatible features. - Major (
x.0.0) — breaking changes to the public API (for instance, moving a return type to aspatie/laravel-dataobject).
Because the packages are independent, they are versioned independently — each has its own release cadence. See Publishing & updates for the release workflow and how to keep your installed packages (and their AI skills) current.