Skip to main content
Laravel krijgt elk jaar rond februari–maart een major-upgrade. Voor packageontwikkelaars is het snel afronden van de ondersteuning voor een nieuwe versie een bijdrage aan het hele ecosysteem én een belangrijke activiteit die de betrouwbaarheid van je eigen package vergroot.
Deze pagina is een zusterpagina van De basis van packageontwikkeling. Ze gaat uit van basiskennis van packageontwikkeling (service providers, de opbouw van composer.json, enz.).

Omgaan met major-upgrades van Laravel

Het stappenplan

1

Werk de require in composer.json bij

Voeg de nieuwe versie toe aan het dependencybereik. Als je oudere versies blijft ondersteunen, zet je ze naast elkaar met ||.
Als de ondersteuning voor de nieuwe versie klaar is en je de oude versie niet langer ondersteunt, verwijder je de oude constraint.
Door alleen afhankelijk te zijn van de componenten die je nodig hebt, zoals illuminate/support, in plaats van heel illuminate/framework, houd je de dependency tree klein.
2

Draai de tests op de nieuwe versie

Voer de tests lokaal of in CI uit met de nieuwe Laravel-versie.
Als de tests slagen, is de basiscompatibiliteit bevestigd. Zo niet, dan pas je gewijzigde API’s en verwijderde methodes aan.
3

Voeg de nieuwe versie toe aan de testmatrix van GitHub Actions

Voeg de nieuwe Laravel-versie toe aan de CI-testmatrix om de compatibiliteit continu te controleren. Zie het voorbeeld van een testmatrixconfiguratie voor details.
4

Breng de release met ondersteuning voor de nieuwe versie uit

Tag en release een nieuwe versie met de wijzigingen in composer.json. Gebruikers kunnen dan met alleen composer update op de nieuwe Laravel-versie installeren.

Officiële packages als referentie

Als je twijfelt over de aanpak, is het raadplegen van de composer.json van de officiële Laravel-packages de betrouwbaarste route. Deze packages worden beheerd door het Laravel-team, ondersteunen nieuwe versies het snelst en zijn ook een goede referentie voor hoe je de illuminate/*-versieconstraints noteert.

PHP-versievereisten bijwerken

Een Laravel-upgrade verhoogt soms ook de minimale PHP-vereiste. Werk de PHP-vereiste in de composer.json van je package dan mee bij.

Als je nieuwe PHP-features actief wilt gebruiken

Wil je features van PHP 8.3 en later gebruiken (getypte constanten, nieuwe randomfuncties, enz.), dan moet je beslissen om de minimale vereiste te verhogen. Het verhogen van de minimale vereiste is volgens semantische versionering een breaking change, dus doe dit bij een major-upgrade.
Als je de minimale PHP-vereiste verhoogt, kunnen gebruikers met een oudere PHP-versie het package niet meer updaten. Het is belangrijk om dit vooraf duidelijk aan te kondigen in de README en changelog.

Strategie voor het stopzetten van oude versies

Oude versies eindeloos blijven onderhouden vergroot op de lange termijn de onderhoudskosten. Een duidelijk supportbeleid vastleggen en regelmatig de ondersteuning van oude versies stopzetten leidt tot een gezond packagebeheer.

Wanneer stop je met ondersteuning?

Een gangbare aanpak is aansluiten bij de supportperiode van Laravel. Laravel biedt per versie 18 maanden bugfixes en 2 jaar securityfixes. Als je package hetzelfde beleid hanteert, is dat voor gebruikers overzichtelijk.

Zet het supportbeleid in de README

Beschrijf het supportbeleid in README.md, zodat gebruikers de juiste verwachtingen hebben.

De kosten van het onderhouden van oude versies

Als je oude versies blijft ondersteunen, ontstaan de volgende kosten:
  • Dubbele bugfixes — dezelfde bug moet je in meerdere branches repareren
  • Meer vertakkende code — de complexiteit van conditionele code die verschillende implementaties per versie opvangt
  • Uitdijende testmatrix — de CI-doorlooptijd wordt langer
  • Complexere securitypatches — je moet ook veilig naar oude versies backporten
Terwijl het hele ecosysteem doorschuift naar nieuwe versies, heeft het netjes stopzetten van oude versies ook het effect dat gebruikers worden aangemoedigd om naar een actuele omgeving te migreren.

De voordelen van vroeg reageren

Als je ondersteuning al klaar is op het moment dat Laravel wordt uitgebracht, kunnen gebruikers meteen naar de nieuwe versie migreren. Dat is een belangrijk signaal van de betrouwbaarheid van je package.

Vooraf verifiëren met de ontwikkelversie

Laravel publiceert geen beta’s of RC’s, maar je kunt de volgende versie in ontwikkeling installeren via dev-master of @dev. Door vóór de major-release te verifiëren, is een zero-day-respons mogelijk.
Je kunt ook installeren met de @dev-constraint.
Door minimum-stability op dev te zetten, kun je de dependencies met ontwikkelversies oplossen.
Met prefer-stable: true krijgt een stabiele versie voorrang wanneer die bestaat. Je test dus met de ontwikkelversie, terwijl automatisch overschakelen naar de stabiele versie gegarandeerd blijft.

De eerste stap kan bij alleen een wijziging in composer.json blijven

Zelfs vóór een volledige compatibiliteitscontrole kunnen gebruikers je package al installeren zodra je alleen het dependencybereik in composer.json bijwerkt en een release uitbrengt.
Kleine problemen kun je ook na de release nog met een patchversie oplossen. Geef prioriteit aan installeerbaar zijn boven wachten op een perfecte ondersteuning.

Releasenieuws bijhouden

Manieren om tijdig op de hoogte te zijn van nieuwe releases.

Voorbeeld van een testmatrixconfiguratie

Een voorbeeldworkflow die in GitHub Actions automatisch combinaties van meerdere Laravel- en PHP-versies test.

Het belang van fail-fast: false

Met fail-fast: false gaan de tests van de andere combinaties door, ook als één combinatie faalt. Zo zie je in één CI-run bij welke versiecombinatie het probleem optreedt.

De testmatrix stapsgewijs bijwerken

Komt er een nieuwe Laravel-versie uit, dan voeg je die toe aan de matrix. Stop je de ondersteuning van een oude versie, dan verwijder je die uit de matrix.

Voorbeeld van composer.json

Een volledig voorbeeld van een composer.json die meerdere versies ondersteunt.

Checklist voor versie-upgrades

  • Verifieer de werking met de ontwikkelversie (dev-master / @dev)
  • Controleer breaking changes in de officiële upgradegids
  • Implementeer de ondersteuning voor de nieuwe versie in een testomgeving
  • Voeg de nieuwe versie toe aan de testmatrix en controleer in CI
  • Voeg de nieuwe versie toe aan de illuminate/*-vereisten in composer.json
  • Werk zo nodig de PHP-vereiste bij
  • Werk ook orchestra/testbench in require-dev bij naar de bijbehorende versie
  • Tag de nieuwe versie en laat die doorstromen naar Packagist
  • Werk de versiecompatibiliteitstabel in de README bij
  • Vermeld het einde van de ondersteuning duidelijk in de CHANGELOG/README
  • Verwijder de constraint van de oude versie uit composer.json
  • Verwijder de oude versie uit de testmatrix
  • Ruim de conditionele code voor de oude versie op

Gerelateerde pagina’s

De basis van packageontwikkeling

Uitleg over het ontwikkelen van Laravel-packages met de service provider als kern.

Geavanceerd testen met Pest

Uitleg over het schrijven van packagetests met de Expectation API en datasets van Pest.
Laatst gewijzigd op 6 september 2026