Протягом останніх років команда Filament докладала чимало зусиль, щоб зробити фреймворк найшвидшим інструментом для розробки застосунків на TALL stack. Останнім великим кроком став повний перегляд пакету Tables, що значно скоротило час рендерингу під час переходу з v3 на v4.
Останні кілька місяців розробники знову зосередилися на продуктивності. Цього разу оптимізація торкнулася всієї екосистеми Filament, і перші результати внутрішніх тестів виглядають вражаюче.
Проте перед фінальним релізом команда хоче перевірити зміни в реальних умовах. Тому сьогодні ми запускаємо бета-версії Filament v4 та v5. Ви можете встановити їх у свої проєкти вже зараз. Натомість ми просимо ділитися фідбеком: повідомляйте про баги та розповідайте, наскільки зріс темп роботи саме у вашому кейсі.
# Інструкція зі встановлення
Перейти на бета-версію v4 або v5 можна за кілька кроків:
- Оновіть версії для усіх пакетів
filament/*у вашомуcomposer.jsonна^4.12@betaабо^5.7@beta(залежно від поточної версії Filament). - Виконайте команду
composer update. - Готово!
Без жодних суттєвих змін у коді ви отримаєте значно продуктивнішу версію Filament.
Традиційне застереження: не використовуйте бета-версії у production. Вони можуть бути нестабільними, тому краще обмежитися локальною розробкою або staging-середовищем.
Будь ласка, залиште коментар у цьому обговоренні на GitHub, щоб ми розуміли масштаби тестування. Нам важливо знати і про знайдені помилки, і про те, що оновлення працює стабільно.
# Що саме змінилося?
Якщо вам цікаво, завдяки чому Filament став швидшим, ось головні технічні покращення:
Forms & schemas
- Значно прискорено рендеринг великих форм: Blade-шаблони замінили на функції прямої генерації HTML.
- Repeaters, builders та repeatable entries тепер агресивніше використовують memoization для внутрішніх схем.
- Конфігурації компонентів, кольори, описи, іконки та підказки тепер кешуються (memoized).
- У деяких сценаріях компоненти Select рідше оновлюють список доступних опцій під час рендерингу.
Tables
- Загальне прискорення рендерингу таблиць, зокрема оптимізовано відображення текстових колонок та дій (actions).
- Форматування стану (state formatting) у клітинках тепер виконується рідше.
- Оптимізовано reordering у таблицях для зв'язків BelongsToMany.
- Внутрішні частини query builder тепер використовують memoization замість постійного перезбирання.
Panels & resources
- Кешування пошуку ресурсів за моделями, слагів (slugs), назв сторінок та видимості relation managers.
- Прискорено сортування груп навігації.
Widgets & charts
- Віджети статистики (stat charts) більше не імпортують усю бібліотеку Chart.js, що зменшило розмір бандла.
- Діаграми не перемальовуються, якщо дані не змінилися.
Інше
- Впроваджено ефективніший ComponentAttributeBag замість стандартного в Laravel.
- Виправлено витік пам'яті, спричинений обробниками подій у модальних вікнах дій.
- Зменшено кількість повторних викликів конфігурацій та створення екземплярів кнопок під час запитів.
- Оптимізовано роботу з файловою системою та перевірку наявності файлів.
- Alpine-компоненти сповіщень тепер серіалізують менше даних.
# Велика подяка
Ми не втомлюємося повторювати: Filament не став би такою потужною екосистемою без нашої спільноти. Дякуємо за вашу підтримку та допомогу в тестуванні нових версій. Разом ми зробимо Filament ще швидшим!
P.S. Не забудьте відписатися в обговоренні на GitHub, навіть якщо у вас все працює ідеально!