Accéder au contenu principal

14min.

Notre retour sur le SymfonyLive Paris 2026

La scène du SymfonyLive Paris

Les années passent, mais certaines traditions restent immuables. Il y a quelques jours, la communauté s’est de nouveau réunie à la Cité Universitaire pour l’édition 2026 du Symfony Live Paris.

Si le monde de la tech avance à toute vitesse, le cru 2026 conserve la recette qui a fait son succès. Nous étions, comme à notre habitude, présents au rendez-vous. Voici notre retour sur une édition qui prouve que Symfony reste à la pointe des évolutions.

Section intitulée keynote-de-fabien-potencierKeynote de Fabien Potencier

Fabien pendant la Keynote

Fabien Potencier nous a présenté un composant Symfony que beaucoup de gens attendaient impatiemment depuis sa première annonce datant de la SymfonyCon 2023 : Symfony TUI (pour Terminal User Interface) !

Avec l’arrivée récente et massive de l’IA dans les habitudes de travail de beaucoup de développeurs, Fabien a trouvé une raison parfaite de relancer son travail sur le composant TUI pour permettre une utilisation plus ergonomique et avancée des LLMs directement depuis un terminal.

On a d’ailleurs eu le droit à une démonstration de son propre coding agent pour voir en direct ce à quoi on pourrait s’attendre avec l’adoption de ce composant pour discuter avec des LLMs. Et le rendu rivalise avec ce qui peut aujourd’hui être proposé directement dans nos IDEs.

Mais au-delà de l’intégration évidente avec l’IA, le composant TUI, c’est aussi une évolution du composant Symfony Console que l’on utilise tous (pour rappel, il s’agit de l’un des premiers composants de l’écosystème Symfony, sorti il y a 15 ans maintenant). L’objectif ici, c’est de laisser Console s’occuper des parties commandes/arguments/output, pour concentrer toute la partie affichage, interaction et interactivité dans TUI.

Lors de ce talk assez orienté technique, Fabien a expliqué comment TUI fonctionne sous le capot. Sans entrer dans les détails ici, on pourra retenir :

  • Il existe trois manières de gérer le style: à la manière stylesheet avec des sélecteurs semblables au CSS ; avec des classes utilitaires, comme on le ferait en Tailwind ; ou directement in-line, pour prendre la main de manière ponctuelle comme c’est possible en HTML. Les breakpoints sont aussi gérés avec des media-queries, pour un rendu nativement responsive ;
  • Beaucoup de Widgets sont disponibles nativement pour gérer la majorité des cas d’usages (ex: TextWidget pour affichage de texte et ASCII, InputWidget pour les entrées textuelles, SelectListWidget pour des listes scrollables, etc.) mais il est évidemment possible de créer nos propres widgets pour des cas particuliers ;
  • TUI utilise PHP Fibers et Revolt pour assurer un affichage et des animations complètement asynchrones et une gestion parallèle de l’affichage et de l’interactivité avec le développeur.

La liste s’allonge évidemment, et toutes les informations sont disponibles sur le Blog Post dédié à l’arrivée de Symfony TUI.

Pour conclure cette première conférence, Fabien s’est montré particulièrement enthousiaste. Ce nouveau composant Symfony ouvre des portes immenses, aussi bien pour l’affichage dans la console que pour l’intégration de l’intelligence artificielle.

Pour prouver la puissance de son outil, il a même fait une démonstration impressionnante : un jeu de Tetris tournant en direct dans son terminal ! Le rendu est fluide et visuellement bluffant, montrant que l’on peut désormais créer de véritables interfaces graphiques (TUI) modernes, directement en PHP.

Pour terminer, Fabien a lancé une idée très originale pour le futur des contributions sur ce composant : plutôt que d’envoyer une solution toute prête, les développeurs pourraient simplement partager un prompt (une instruction pour l’IA).

Fabien utiliserait alors son propre assistant et ses propres ressources pour transformer ces instructions en code réel et donner vie aux futures améliorations du projet !

Section intitulée la-communaute-au-rythme-de-l-iaLa communauté au rythme de l’IA

On se souvient du SymfonyLive 2024, où l’IA générative d’images s’invitait déjà dans de nombreuses présentations. À l’époque, c’était encore une nouveauté impressionnante, bien que limitée. Cette année, le changement est radical : les agents IA étaient omniprésents dans bon nombre de sujets. Cela reflète parfaitement l’évolution de notre quotidien de développeur, qui s’accélère de plus en plus dans cette direction.

Aujourd’hui, l’IA n’est plus juste un gadget visuel, elle est au cœur du développement de Symfony :

  • Les nouvelles versions de Twig (le moteur de templates de Symfony) sont désormais gérées de manière quasi automatique par un agent ;
  • Une grande partie du code source est également générée par des assistants intelligents.

Cependant, un point reste essentiel : l’IA aide à produire, mais elle ne remplace pas l’humain. La responsabilité finale appartient toujours à la personne qui valide le code. C’est le développeur qui vérifie et garantit la qualité de ce qui est produit avant de l’envoyer en production.

Section intitulée l-ia-au-service-des-devs-anatomie-d-un-assistant-de-code-review-thomas-boileauL’IA au service des devs : Anatomie d’un assistant de Code Review – Thomas Boileau

La volonté de Thomas est de normaliser l’utilisation de l’IA au sein de sa société. Son constat est qu’il est difficile d’intervenir dans le cycle de développement logiciel, au niveau individuel, car l’usage de l’IA est encore très inégal selon les développeurs. C’est pour ça qu’il a préféré intervenir sur la CI.

Lors de sa présentation, il nous expose donc un cas pratique. Son but : construire un assistant IA qui intervient au moment des code reviews.

Techniquement, dès qu’une PR est labellisé Ready For Review (RFR) alors un webhook est lancé, et l’assistant IA est déclenché.

Ici, ce que l’on apprend n’est pas réellement comment utiliser l’IA, mais plutôt un rappel bienvenu sur l’adoption d’une fonctionnalité par des utilisateurs. Il nous a bien expliqué qu’après sa première itération, quasiment personne n’interagissait avec son agent de revue de code.

En effet, comme toutes les nouveautés, l’essentiel, c’est de construire avec les utilisateurs finaux et d’éviter au maximum la friction. C’est donc après avoir mesuré l’usage de son bot et consulté les développeurs (utilisateurs) qu’il a proposé une nouvelle version, cette fois-ci plus utile pour tout le monde.

Évidement, Thomas nous rappelle qu’il aurait pu utiliser une solution sur étagère, mais il souligne les contraintes réglementaires qui s’appliquent à son domaine.

Sa conclusion est que le plus important dans ce projet reste la DX pour avoir une bonne adoption, et surtout que ce bot IA ne remplace pas l’humain, il est créé dans le but d’être seulement un plus dans la boucle.

Section intitulée developper-un-coding-agent-en-php-dans-les-coulisses-du-quot-harness-quot-fabien-potencierDévelopper un Coding Agent en PHP : dans les coulisses du « Harness » – Fabien Potencier

Les différents niveaux d'utilisation de l'IA selon Fabien

Tout a commencé par un défi sur Twitter. Un utilisateur affirmait qu’il était impossible de créer un coding agent (un assistant capable de coder de façon autonome) performant en utilisant le langage PHP. Piqué au vif, Fabien Potencier, le créateur de Symfony, a décidé de prouver le contraire en développant son propre assistant.

Plutôt que d’utiliser des outils tout prêts comme GitHub Copilot ou Claude Code, fabriquer son propre agent permet de comprendre les coulisses de l’intelligence artificielle. On découvre alors comment se déroule réellement une « discussion » entre un développeur et un modèle de langage (LLM).

Pour rendre l’outil agréable à utiliser, il a utilisé le composant TUI de Symfony. Cela permet d’avoir une interface textuelle interactive directement dans sa console.

Pour que l’agent soit intelligent, il doit communiquer avec un modèle (comme Claude Opus, Claude Sonnet, GPT 5). Mais les modèles évoluent sans cesse. Fabien a donc créé un petit outil, symfony/models-dev, qui répertorie de manière automatique tous les modèles disponibles afin de toujours utiliser la version la plus récente.

Discuter avec un chat, c’est facile. Mais pour qu’un agent soit utile, il doit pouvoir agir sur votre ordinateur. C’est là qu’interviennent les Tools (outils). De manière surprenante, Fabien n’a eu besoin que de 4 outils de base :

  • Read : pour lire le contenu d’un fichier.
  • Write : pour créer un nouveau fichier.
  • Update : pour modifier un fichier existant sans gaspiller de token.
  • Bash : pour exécuter n’importe quelle commande (lancer des tests, installer un package, etc.).

Un agent classique oublie tout dès que la session se ferme. Pour corriger cela, chaque échange est enregistré dans une base de données.

L’astuce géniale ? Cette mémoire est stockée sous forme d’arbre. Cela permet à l’agent de revenir en arrière à un point précis pour tester une autre solution si la première n’a pas fonctionné.

Plus on discute avec l’IA, plus le « contexte » (le nombre de mots envoyés) devient important. Si on dépasse la limite du modèle, il sature. Fabien a donc mis en place un système de compression intelligent :

  1. Il garde toujours le tout premier message (les instructions de base).
  2. Il garde les derniers messages récents.
  3. Il résume tout ce qui se trouve entre les deux.

Les conseils de Fabien

Durant sa démonstration, il a partagé quelques astuces précieuses :

  • Les Skills : Dès qu’il réalise qu’il répète une tâche, ou une instruction, il crée un « skill » (une compétence) pour son agent. C’est comme écrire des tests : on a l’impression de perdre du temps au début, mais on en gagne énormément sur le long terme ;
  • Le regard neuf : Parfois, l’IA s’embrouille. Fabien conseille de lui demander d’analyser la situation avec « un regard neuf » (fresh eyes). Cela donne souvent des résultats spectaculaires pour débloquer un bug complexe.

Bien qu’il n’ait pas eu le temps de tout montrer, notamment son système d’orchestration dans le cloud, la preuve est faite : le PHP est un langage de choix pour l’intelligence artificielle !

Section intitulée embeddings-en-php-symfony-ai-en-pratique-gregoire-pineauEmbeddings en PHP : Symfony AI en pratique – Grégoire Pineau

Grégoire lors de sa conférence sur Symfony AI

Le talk de Grégoire nous met tout de suite dans la pratique avec une vraie mise en situation autour des embeddings et de la similarité de contenu.

Il part sur un cas d’usage qui parle à tout le monde : faire correspondre des URLs entre un ancien et un nouveau site. Là où on pourrait partir sur des règles compliquées ou du matching approximatif, les embeddings offrent une solution plus robuste : on compare directement le sens sémantique des pages.

Ce qui marche particulièrement bien, c’est le fil rouge visuel de la conférence. Un schéma du processus est affiché, puis réutilisé à chaque étape. Ce qui rend la progression assez claire : on comprend où on en est, ce qu’on fait, et pourquoi on le fait.

La conférence prend le temps de poser les bases :

  • ce qu’est un embedding (une représentation vectorielle d’un contenu) ;
  • à quoi ça sert (mesurer de la similarité sémantique) ;
  • et surtout dans quels cas ça devient utile.

Ensuite, on rentre dans le concret :

  • comment choisir un modèle selon son besoin ;
  • comment vectoriser ses données depuis Symfony ;
  • où stocker ces vecteurs (PostgreSQL, Redis, etc.) ;
  • et comment les requêter efficacement.

L’intérêt de cette présentation, c’est que Grégoire nous a montré que tout se fait sans quitter l’écosystème Symfony, grâce à Symfony AI. Cette initiative fournit ainsi toutes les abstractions nécessaires pour manipuler modèles, stores, agents et bien plus encore. N’hésitez pas à consulter le site dédié à Symfony AI pour découvrir tout ça. Vous pouvez retrouver ses slides en ligne.

Section intitulée retours-d-experiences-et-presentations-techniquesRetours d’expériences et présentations techniques

Tous ces nouveaux outils basés sur l’IA ne doivent pas éclipser l’importance de la technicité en dehors de l’intelligence artificielle ! Au contraire, nous apprécions également les outils éprouvés et bien établis, et les retours d’expériences de manière générale.

Section intitulée chiffrez-vos-donnees-avec-doctrine-en-restant-recherchable-jerome-tamarelleChiffrez vos données avec Doctrine, en restant recherchable – Jérôme Tamarelle

Lors de cette conférence, Jérôme Tamarelle a rappelé un point essentiel : la sécurité des données ne concerne pas uniquement les informations directement identifiantes (comme un email ou un nom), mais aussi les données indirectes. Croisées entre elles, ces dernières peuvent suffire à identifier une personne.

Il est important de distinguer deux approches souvent confondues :

  • Le chiffrement : les données sont transformées de manière réversible. On peut les déchiffrer à l’aide d’une clé ;
  • Le hashage : il s’agit d’une empreinte unique et fixe d’une donnée. Cette opération est irréversible. Plusieurs types de chiffrement existent, dont le chiffrement aléatoire et le chiffrement déterministe.

Avec le chiffrement aléatoire, chaque valeur est chiffrée différemment, même si elle est identique à une autre. Par exemple, une même adresse email enregistrée deux fois en base produira deux valeurs chiffrées différentes.

Avec le chiffrement déterministe, une même donnée produira toujours le même résultat chiffré.

Avec Doctrine, on encapsule le chiffrement directement dans Doctrine via des types personnalisés. Un champ devient « chiffré » simplement par sa définition.

Mais du coup, on ne peut plus faire de recherche sur ces champs sans passer par Doctrine.

Sécuriser ses données, c’est accepter de complexifier son application. Et surtout, le faire dès la conception.

Section intitulée doctrine-inheritance-remi-janotDoctrine inheritance – Rémi JANOT

Rémi commence par présenter la différence entre héritage (mapper une hiérarchie de classe) et polymorphisme (une clef étrangère qui pointe vers une autre classe) car le vocabulaire utilisé par les différents ORM et framework peuvent parfois prêter à confusion.

S’ensuit un rappel bienvenu de l’héritage implémenté directement au niveau de Doctrine ; avec des exemples concrets, il passe en revue toutes les combinaisons possibles : soit avec des MappedSuperClass, soit des DiscriminatorMap.

Fort de son expérience, il nous explique aussi qu’il est possible d’assez facilement passer d’une architecture Single Table Inheritance (STI) vers Class Table Inheritance (CTI). Donc les choix techniques ne sont pas forcément figés, les projets évoluent, et des solutions sont toujours possibles. Il nous rappelle aussi que lorsqu’on utilise les CTI, il est important de bien vérifier les index pour gagner en performance.

Section intitulée json-sql-heresie-ou-elegance-retour-d-experience-remy-bonfils-olivier-fournyJSON + SQL : hérésie ou élégance ? Retour d’expérience – Rémy Bonfils, Olivier FOURNY

On reste ici dans le thème de la modélisation de nos bases de données avec un retour d’expérience sur l’utilisation de JSON dans nos tables SQL, via l’exemple d’une application mobile offline permettant de configurer des maisons imprimées en 3D (oui oui).

Étant donné la nature très flexible des paramètres d’impression (80000 configurations possibles, importées depuis un CSV), la question de comment les stocker se pose dès le départ. Rémy et Olivier nous expliquent vouloir tout d’abord se diriger vers une modélisation de type Entity-Attribute-Valeur, où les paramètres ne sont pas représentés par des colonnes dans nos tables, mais par des lignes (ça doit parler aux personnes devant travailler sur des projets Magento ou Drupal) : beaucoup de flexibilité évidemment, mais aussi l’impossibilité d’avoir un minimum de structure dans nos données (tout est varchar). Et surtout des requêtes beaucoup plus complexes et donc des performances catastrophiques.

L’équipe se penche donc sur une autre solution : le stockage des paramètres dans des colonnes de la base de données en format JSON.

Et la surprise, les performances sont à peine inférieures à une modélisation classique de base de données (avec des tables liées par des clés étrangères), mais en gardant la flexibilité voulue ! Et grâce aux fonctions SQL permettant de manipuler du JSON, les requêtes restent simples et lisibles.

Pour notre part, à JoliCode, nous avons l’habitude de profiter du type JSON dans nos bases de données relationnelles (PostgreSQL ou MySQL), et nous vous le recommandons lorsque le besoin s’en fait ressentir.

Section intitulée clickhouse-pour-les-developpeurs-symfony-romain-neutronClickHouse pour les développeurs Symfony – Romain Neutron

Romain Neutron lors de son talk sur ClickHouse

Dans cette session, Romain Neutron a abordé la problématique de la gestion des données analytiques et des logs à grande échelle, des domaines où les bases relationnelles classiques comme MySQL ou PostgreSQL atteignent souvent leurs limites. Il a présenté ClickHouse, une base de données orientée colonnes ultra-performante, comme la solution idéale pour traiter des volumes massifs de données en temps réel. L’idée centrale n’est pas de remplacer votre base de données habituelle, mais de l’épauler pour des besoins spécifiques d’agrégation et de dashboards instantanés.

Côté technique, la conférence a mis en lumière la simplicité d’intégration de ClickHouse dans l’écosystème Symfony. Il a également partagé des benchmarks impressionnants comparant les temps de réponse sur des agrégations de plusieurs millions de lignes, montrant que ClickHouse peut transformer des requêtes de plusieurs secondes en résultats quasi instantanés.

Enfin, Romain a insisté sur les bonnes pratiques et les pièges à éviter, notamment sur la structure des données et le choix des moteurs de table (comme MergeTree). C’est un talk indispensable pour les développeurs cherchant à scaler leur stack analytique tout en restant dans un environnement PHP familier. De notre côté, on utilise ClickHouse dans plusieurs projets, surtout dans redirection.io pour les parties logs, analytics et crawler. On ne peut donc que vous recommander de vous y intéresser.

Ses slides sont disponibles en ligne pour retrouver toutes les informations importantes.

Section intitulée symfony-ux-et-la-suite-hotwiredSymfony UX et la suite Hotwired

Cette année, on continue de parler de Symfony UX, et en particulier, deux retours d’expériences spécifiquement axés sur hotwired.dev.

Section intitulée du-web-au-mobile-avec-symfony-amp-hotwire-native-imad-zairigDu web au mobile avec Symfony & Hotwire Native – Imad ZAIRIG

Imad nous a préparé une conférence sur le nouveau bundle Symfony UX Native qui utilise Hotwire Native. Basé sur un exemple, on peut voir comment l’application est architecturée.

On a eu l’exemple d’un bouton, rendu avec un composant bouton mobile, mais dont l’événement click est écouté par stimulus du côté de l’application Symfony

Cela fonctionne avec des webview pour que ce soit toujours Symfony qui gère le back-end et le front, mais avec des comportements mobiles gérés nativement (ex : la navigation et les transitions). On note qu’il y a quand même encore quelques fois ou il faut lancer le projet mobile avec Xcode par exemple pour iOS.

Pour utiliser les capacités natives des applications mobiles (type appareil photo) il faut passer par des « Bridges Component », ça demande malgré tout du code côté mobile.

Selon la complexité de l’application et la taille de l’équipe, Symfony UX Native est une piste à explorer.

Section intitulée edition-simultanee-facile-avec-symfony-ux-david-buchmannÉdition simultanée : facile avec Symfony UX – David Buchmann

Au travers d’un exemple concret David nous a fait voir comment intégrer toute la suite d’outils de hotwired.dev. Il commence avec Turbo (et un peu de Turbo Frames aussi) et nous fait voir à quel point c’est bien intégré à Symfony UX. Puis sa conférence continue avec la mise en place de Mercure (grâce à son intégration dans FrankenPHP), et finalement le tout s’intègre parfaitement via des contrôleurs Stimulus qui écoutent les messages Mercure.

Il résume les avantages de Hotwire comme ceci : la logique reste dans le backend, la sécurité est intégrée. La complexité du frontend s’en trouve réduite.

Section intitulée conclusionConclusion

Si cette édition du SymfonyLive Paris 2026 nous a offert un aperçu saisissant de l’intégration massive de l’Intelligence Artificielle au cœur de l’écosystème Symfony, elle prouve une chose essentielle : l’importance des conférences n’a jamais été aussi grande. Notre métier de développeur est en pleine mutation, et nous avons fort à faire pour rester à jour.

Le fil conducteur de cette année reste cependant une évidence : quelle que soit la puissance des outils, l’humain reste au centre de la boucle. L’IA est un assistant extraordinaire pour la production de code et les tâches répétitives, mais c’est bien la communauté, la validation humaine et le partage de connaissances qui garantissent la qualité et la progression de notre écosystème. Merci aux organisateurs, aux conférenciers, et à la communauté d’avoir fait de cette édition 2026 un moment marquant, et rendez-vous l’année prochaine pour continuer à naviguer ensemble dans le futur du développement web !


Cet article porte sur la conférence SymfonyLive Paris 2026.

SymfonyLive Paris 2026

Commentaires et discussions

Nos articles sur le même sujet

Nos formations sur ce sujet

Notre expertise est aussi disponible sous forme de formations professionnelles !

Voir toutes nos formations

Ces clients ont profité de notre expertise