Skip to main content
Laravel publica una nueva versión mayor cada año, en torno a febrero o marzo. Para el desarrollador de un paquete, atender rápido las nuevas versiones es una contribución al ecosistema y un factor clave que refuerza la fiabilidad del propio paquete.
Esta página es hermana de Fundamentos del desarrollo de paquetes. Se asume conocimiento básico del desarrollo de paquetes (service providers, estructura de composer.json, etc.).

Adaptarse a las nuevas versiones mayores de Laravel

Flujo de la migración

1

Actualiza require en composer.json

Añade la nueva versión al rango de dependencias. Si sigues dando soporte a las anteriores, concaténalas con ||.
Cuando finalices la adaptación y quites el soporte a las versiones antiguas, elimina las restricciones que ya no correspondan.
Dependiendo solo de los componentes necesarios (illuminate/support, etc.) en vez de illuminate/framework completo, mantienes el árbol de dependencias pequeño.
2

Ejecuta los tests contra la nueva versión

En local o en el entorno CI, ejecuta los tests con la nueva versión de Laravel.
Si los tests pasan, has confirmado la compatibilidad básica. Si no, corrige las APIs modificadas o los métodos eliminados.
3

Añade la nueva versión a la matriz de tests de GitHub Actions

Añade la nueva versión de Laravel a la matriz de CI para vigilar de forma continua la compatibilidad. Consulta el ejemplo de matriz de tests.
4

Publica la versión con soporte a la nueva Laravel

Etiqueta y publica una nueva versión que incluya el cambio de composer.json. Con solo un composer update, los usuarios ya podrán instalarla en la nueva Laravel.

Toma como referencia los paquetes oficiales

Cuando dudes sobre cómo adaptarte, lo más fiable es revisar el composer.json de los paquetes oficiales de Laravel. Estos paquetes los mantiene el equipo de Laravel, así que se adaptan muy rápido a las nuevas versiones y son un buen ejemplo de cómo escribir las restricciones de illuminate/*.

Actualización del requisito de PHP

Al subir de versión, Laravel también suele elevar el requisito mínimo de PHP. Ajusta el requisito de PHP en el composer.json de tu paquete.

Si quieres usar las nuevas funciones de PHP

Para utilizar funciones a partir de PHP 8.3 (constantes tipadas, nuevas funciones de aleatoriedad, etc.), tendrás que subir el requisito mínimo. Elevar el requisito mínimo es, según el versionado semántico, un cambio rompedor, por lo que es más adecuado hacerlo en una nueva versión mayor de tu paquete.
Al elevar el requisito mínimo de PHP, los usuarios con PHP más antiguo no podrán actualizar el paquete. Es importante avisarles previamente en el README y el CHANGELOG.

Estrategia para retirar el soporte a versiones antiguas

Mantener versiones antiguas indefinidamente eleva mucho el coste de mantenimiento a largo plazo. Establecer una política de soporte clara y retirar versiones antiguas de forma periódica es lo que sostiene un paquete saludable.

Cuándo retirar el soporte

Un enfoque habitual es alinearse con el ciclo de soporte de Laravel. Laravel ofrece 18 meses de correcciones de bugs y 2 años de correcciones de seguridad por versión. Si tu paquete adopta una política parecida, será más fácil de entender para los usuarios.

Declara la política de soporte en el README

Para que los usuarios tengan expectativas realistas, incluye la política de soporte en README.md.

El coste de mantener versiones antiguas

Mantener el soporte a versiones antiguas conlleva estos costes:
  • Doble corrección de bugs — hay que arreglar el mismo bug en varias ramas.
  • Aumento del código condicional — complejidad para absorber en condicionales las diferencias entre versiones.
  • Matriz de tests inflada — el tiempo de CI crece.
  • Complicación de los parches de seguridad — hay que hacer backport seguro también a las versiones antiguas.
En un ecosistema que va subiendo de versión, retirar a tiempo el soporte de las versiones antiguas también anima a los usuarios a migrar a entornos actuales.

Ventajas de reaccionar pronto

Si tienes la adaptación lista a la vez que sale la nueva Laravel, los usuarios podrán migrar de inmediato. Es una señal importante de la fiabilidad de tu paquete.

Prueba previa con la versión de desarrollo

Laravel no publica beta/RC, pero puedes instalar la próxima versión con dev-master o @dev. Al confirmar el comportamiento antes de la release mayor, puedes conseguir compatibilidad «día cero».
También puedes instalarla con la restricción @dev.
Ajustando minimum-stability a dev, puedes resolver las dependencias con la versión de desarrollo.
Con prefer-stable: true, cuando existe una versión estable, se elige la estable. Te permite probar con las versiones de desarrollo garantizando el paso automático a estables cuando corresponda.

El primer paso puede ser solo cambiar composer.json

Aun antes de tener la compatibilidad totalmente verificada, con solo actualizar el rango de dependencias en composer.json y publicar la nueva versión, los usuarios ya pueden instalar tu paquete.
Los defectos menores se pueden corregir después con una versión de patch. Prioriza que el paquete sea instalable en lugar de esperar a la perfección.

Cómo seguir la información de releases

Métodos para enterarte a tiempo de las nuevas versiones:

Ejemplo de configuración de la matriz de tests

Ejemplo de workflow de GitHub Actions que ejecuta tests automáticamente contra varias combinaciones de Laravel y PHP.

Importancia de fail-fast: false

Con fail-fast: false, aunque una combinación falle, las demás siguen ejecutándose. Así puedes ver en una sola ejecución de CI qué combinaciones concretas fallan.

Actualización gradual de la matriz

Cuando sale una nueva versión de Laravel, añádela a la matriz. Cuando retires una versión antigua, elimínala.

Ejemplo de composer.json

Ejemplo completo de un composer.json con soporte a varias versiones.

Checklist para adaptarte a nuevas versiones

  • Verifica el comportamiento con la versión de desarrollo (dev-master / @dev).
  • Revisa los cambios rompedores en la guía oficial de actualización.
  • Implementa la adaptación a la nueva versión en un entorno de tests.
  • Añade la nueva versión a la matriz de tests y verifícala en CI.
  • Añade la nueva versión al requisito de illuminate/* en composer.json.
  • Ajusta el requisito de PHP si es necesario.
  • Actualiza también orchestra/testbench en require-dev a la versión compatible.
  • Publica la nueva versión con un tag para que aparezca en Packagist.
  • Actualiza la tabla de compatibilidad del README.
  • Declara el fin de soporte en CHANGELOG/README.
  • Elimina las restricciones de la versión antigua del composer.json.
  • Elimina la versión antigua de la matriz de tests.
  • Limpia el código condicional específico para la versión antigua.

Páginas relacionadas

Fundamentos del desarrollo de paquetes

Cómo desarrollar paquetes Laravel centrados en los service providers.

Pruebas avanzadas con Pest

Cómo escribir pruebas para paquetes con la Expectation API y los datasets de Pest.
Última modificación el 20 de julio de 2026