Les versions v4.12.6 et v5.7.6 de Filament sont désormais disponibles sur les canaux stables, après un test bêta communautaire d'une version axée sur les performances. L'équipe remercie les testeurs bêta d'avoir validé les changements. Parallèlement aux gains de vitesse, ces versions corrigent plusieurs CVE : toute personne utilisant Filament v4 ou v5 est invitée à mettre à jour.

Le rendu des formulaires et des schémas est nettement plus rapide selon les benchmarks internes de l'équipe : TextInput passe de 0,559 ms à 0,044 ms (~92 % plus rapide), Select de 0,634 ms à 0,052 ms (~92 %), FileUpload de 0,586 ms à 0,083 ms (~86 %), un Repeater de 10 éléments à deux champs chacun de 28,077 ms à 2,885 ms (~90 %), et Checkbox de 0,314 ms à 0,033 ms (~90 %). Le résultat du Repeater est particulièrement important pour les grands formulaires riches en données. Ces gains proviennent du remplacement des chemins de rendu répétés de composants Blade par un rendu direct des composants en PHP, réduisant la surcharge du framework pour chaque champ (PR filamentphp/filament#19550).

Les tableaux sont également plus rapides : un tableau de 50 lignes avec 5 TextColumns et 3 actions par ligne passe de 27,53 ms à 13,11 ms (~52 % plus rapide), et avec un ActionGroup de 3 actions internes par ligne de 33,09 ms à 16,73 ms (~49 %). Ici, les améliorations sont plus subtiles : chemins de rendu plus légers pour les actions et composants courants, gestion plus efficace des attributs et mise en cache par enregistrement des décisions répétées de visibilité et d'autorisation (PR #19551). Les applications comportant de nombreuses lignes, colonnes, actions, règles de visibilité conditionnelle ou contrôles d'autorisation en profitent le plus. Tous ces chiffres sont des benchmarks internes ; les résultats réels peuvent varier.

Parmi les ajouts plus modestes en matière de performance et de sécurité : les nouvelles méthodes maxRules() et maxNestingDepth() du Query Builder limitent le nombre de règles et la profondeur d'imbrication, évitant une consommation excessive de CPU et de mémoire due à des arbres de règles volumineux ou falsifiés ; le helper Str::sanitizeCssColor() permet d'injecter en toute sécurité des entrées utilisateur dans un attribut style="" ; et une protection optionnelle contre l'injection de formules CSV préfixe par un guillemet les cellules commençant par des caractères comme =, -, + ou <Tab> afin que les tableurs les traitent comme du texte. Cette fonction CSV est volontairement optionnelle, car des valeurs légitimes comme les numéros de téléphone internationaux seraient sinon modifiées.

Améliorations pratiques : les éléments des menus utilisateur et tenant peuvent désormais être regroupés en listes visuellement distinctes, les actions de menu étant mémoïsées une fois par requête ; la nouvelle méthode modalDismissesParentActions() permet à la fermeture d'un modal imbriqué d'annuler toutes les actions parentes ou de remonter jusqu'à une action parente nommée — utile pour abandonner un workflow en plusieurs étapes ; et les widgets de graphiques prennent désormais en charge des états vides personnalisés.

Autres petites nouveautés : modals et slide-overs « traversants » sans backdrop bloquant ; parents de navigation référencés par une clé stable plutôt que par leur libellé ; découpage des termes de recherche configurable par colonne ; masquage conditionnel des colonnes d'export via des closures ; configuration du writer XLSX juste après ouverture ; et configuration dynamique par closures de la largeur du contenu du panneau (maxContentWidth()), des paramètres du mode sombre et du sélecteur de thème, ainsi que de la largeur de la barre latérale. L'équipe présente cette version comme une mise à jour mineure sans rupture de compatibilité, qui ne demande qu'un changement de numéro de version.