Changelog

New features, bug fixes, performances and security improvements.

2.22.0
2024-11-30

So long CSRF!

Hey UX'ers!

Here's a shiny new release for you! 🎉

Live components now rely on same-origin/CORS instead of CSRF tokens for protection. They're now stateless and the session is no longer required! In Turbo, <Turbo:Stream> and <Turbo:Frame> Twig components were added plus support for multiple Mercure topics in turbo_stream_listen. The Map component now supports polylines and have come alive with Live Components. Across the board, we've improved performance, fixed bugs, and updated documentation.

Autocomplete

Live Components

Twig Components

StimulusBundle

Turbo

Icons

Map

Svelte

React

Translator

  • Handle W3C locale format on document element by @aleho in #2390

Site

Miscellaneous

  • Add myself to code-owners by @Kocal in #2308
  • Update the issue template by @smnandre in #2320
  • Add CI workflow to compute diff between files dist files by @Kocal in #2269
  • Add per-package Yarn scripts (build, watch, test, lint, ...) by @Kocal in #2326
  • Some improvements for dependencies management when testing by @Kocal in #2349
  • Fix some misc doc issues by @javiereguiluz in #2387
  • Add PR template and auto-close PR on subtree split repositories by @Kocal in #2395
  • Add CONTRIBUTING.md by @Kocal in #2408

New Contributors

Full Changelog: v2.21.0 -> v2.22.0

2.21.0
2024-10-22

Turbo + TwigComponents = ❤️

Hey UX-er's!

In addition to many minor bug fixes and improvements across all packages, this release adds new <twig:Turbo:Stream:*> Twig components to Turbo. Also in Turbo, a newTurboStreamResponse and TurboStream helpers we added.

Map

  • Explicitly require StimulusBundle in Bridges, fix tests by @Kocal in #2207
  • Update index.rst by @ebedy in #2229

Translator

  • Many performance improvements on the cache warming by @Kocal in #2206

Twig Components

Toggle Password

React

  • Update some dependencies to fix some issues from Dependabot by @Kocal in #2219
  • Add permanent option to react_component function by @smnandre in #2283
  • Update phpunit.xml.dist by @smnandre in #2286

Swup

  • For Swup's dev dependencies exclusion from our yarn.lock by @Kocal in #2221

StimulusBundle

  • Normalize Stimulus controller name in event name by @7-zete-7 in #2159

Autocomplete

Icons

Turbo

Dropzone

  • Enable file replacement via "drag-and-drop" by @rrr63 in #2154

Live Components

Miscellaneous

New Contributors

Full Changelog: v2.20.0 -> v2.21.0

2.20.0
2024-09-24

Performance and Optimization!

Hey UX-ers!

This release is packed full of bug fixes and new features. You can now add Polygons in Map and configure icon sets and aliases in Icons. There are also some great performance optimizations, especially in Twig/Live components and StimulusBundle.

Map

Twig Components

Live Components

Autocomplete

  • Reset form state on each request for applications that reuse the Symfony application between requests by @dotdevio in #2094
  • Translate "Add ..." text by @jmsche in #2108

Icons

Dropzone

  • Change physical link to the default style file by @chadyred in #2188

Translator

  • Option to throw an exception instead of returning the message as is when the message is not found. by @Crovitche-1623 in #2185

StimulusBundle

  • Improve StimulusAttributes rendering performances by switching to html escaping strategy by @Kocal in #2180

Miscellaneous

New Contributors

Full Changelog: v2.19.3 -> v2.20.0

2.19.2
2024-08-13

Enable Anon. Twig Components in Bundles

Another follow up to 2.19.0 that fixes UX Map plus enables a convention for providing anonymous Twig Components in 3rd-party bundles!

Map

  • Re-add keyword "symfony-ux", to fix Symfony Flex package.json resolving by @Kocal in #2052
  • [Leaflet] Fix marker icon gradients rendering, which can fails on some projects by @Kocal in #2055

Twig Components

  • Adding convention to load Anonymous components from bundles by @yceruto in #2019

Live Components

  • Update naming of stimulus controller on default attributes - index.rst by @DennisdeBest in #2046

Autocomplete

New Contributors

Full Changelog: v2.19.1 -> v2.19.2

2.19.1
2024-08-12

UX Map Improvements

Just a small follow up to 2.19.0 that adds some missing UX Map features!

Map

  • Add the possibility to not configure map zoom/center if fit bounds to markers by @Kocal in #2045
  • Add support for libraries for Google Bridge, inject provider's SDK (L or google) to dispatched events by @Kocal in #2044

Full Changelog: v2.19.0 -> v2.19.1

2.19.0
2024-08-12

New UX Map Package

Hey UX-ers!

This is a big new release with a lot of bug fixes, quality of live improvements, and a new UX Map package. A new live_action() Twig function was added to dramatically reduce the boilerplate for Live Component actions.

Translator

Turbo

Twig Components

Live Components

Dropzone

  • Remove event listeners on disconnect by @aleho in #1951

Icons

React

Lazy Image

Map

  • Create Map component by @Kocal in #1937
  • Rename "symfony/ux-map-%s" to "symfony/ux-%s-map" by @Kocal in #2031
  • Fix custom attribute "data-controller" usage by @Kocal in #2032
  • [Leaflet] Fix Marker inside-circle by @Kocal in #2036
  • [Leaflet] Fix Popup's automatic-content by @Kocal in #2035
  • Change "BeforeConnect" for "BeforeCreate" in documentation by @Kocal in #2039
  • Add "extra" data for markers and infowindows by @Kocal in #2040
  • Fix some comments in component defer part by @Nek- in #2043

Miscellaneous

New Contributors

Full Changelog: v2.18.1 -> v2.19.0

2.18.1
2024-06-12

Hotfix

👋🏻 This is a small release that fixes some issues we had in 2.18.0.

Twig Components

  • Revert throwing exception when public property is unitialized by @smnandre in #1911
  • Revert removing twig_component.controllers_json by @smnandre in #1908

Live Components

  • Accept live component Content-Type with suffix by @WebMamba in #1903

Stimulus

Translator

Full Changelog: v2.18.0 -> v2.18.1

2.18.0
2024-06-07

Mostly Maintenance

Hey UX'ers!

This is mostly a maintenance release with a lot of small fixes and improvements across all components. The most notable changes are the addition of Slovak translations for the Autocomplete component the abstraction of image content fetching in the Lazy Image component.

Lazy Image

Autocomplete

Turbo

Live Components

Twig Components

Icons

Translator

Stimulus

Chart.js

ux.symfony.com

New Contributors

Full Changelog: v2.17.0 -> v2.18.0

2.17.0
2024-04-23

New UX Icons Package

Hey UX-ers!

This is a big release - lots of new features to Twig/Live Components and the first release of UX Icons! With UX Icons, comes a beautiful icon search on ux.symfony.com!

Live Components

Twig Components

Icons

Chart.js

Autocomplete

  • Command make:autocomplete-field output a doc compliant class by @lucbu in #1699
  • Use choice_value in the WrappedEntityTypeAutocompleter in EntityAutocompleteField by @jakubtobiasz in #1723

Turbo

Lazy Image

New Contributors

Full Changelog: v2.16.0 -> v2.17.0

2.16.0
2024-02-29

Live Components is Stable 🥳

Hi UX'ers!

This release is the first that declares Live Components as stable 🎆! This means that it is now protected by our backwards compatibility promise. However, there are some BC breaks in LiveComponents that will affect most projects. See https://github.com/symfony/ux/blob/2.x/src/LiveComponent/CHANGELOG.md#2160

In addition, this release has a number of fun features & fixes.

Live Components

  • LiveComponents is now stable and no longer experimental 🥳

  • [BC BREAK] The data-action-name attribute behavior was removed in favor of using Stimulus "action parameters" and data-live-action-param. This is a breaking change if you were using the data-action-name attribute directly in your templates. #1418

    To upgrade your application, follow these changes:

    <button
        data-action="live#action"
    -     data-action-name="debounce(300)|save"
    +     data-live-action-param="debounce(300)|save"
    >Save</button>
    

    To pass arguments to an action, also use the Stimulus "action parameters" syntax:

    <button
        data-action="live#action"
    -      data-action-name="addItem(id={{ item.id }}, itemName=CustomItem)"
    +      data-live-action-param="addItem"
    +      data-live-id-param="{{ item.id }}"
    +      data-live-item-name-param="CustomItem"
    >Add Item</button>
    

    Additionally, the prevent modifier (e.g. prevent|save) was removed. Replace this with the standard Stimulus :prevent action option:

    <button
    -     data-action="live#action
    +     data-action="live#action:prevent"
    -     data-action-name="prevent|save"
    +     data-live-action-param="save"
     >Save</button>
    
  • [BC BREAK] The data-event attribute was removed in favor of using Stimulus "action parameters": rename data-event to data-live-event-param. Additionally, if you were passing arguments to the event name, use action parameter attributes for those as well - e.g. data-live-foo-param="bar". #1418

  • Reverted setting ignoreActiveValue: true in Idiomorph #1548

  • New placeholder macro to generate defer/lazy skeleton #1532

  • improve TestLiveComponent::actingAs() #1461

  • Drop Twig 2 support #1436

  • Add better error message when hydrating dates #1431

  • Store TemplateMap in build_dir #1525

Twig Component

  • Introduce CVA to style TwigComponent #1416
  • Drop Twig 2 support #1436
  • Fix full context is stored in profiler #1552

Autocomplete

Translator

  • Increase version range of intl-messageformat to ^10.5.11, in order to see a faster implementation of ICU messages parsing. #1443

New Contributors

Full Changelog: v2.15.0 -> v2.16.0

Have fun!

2.15.0
2024-02-20

LiveComponents & Autocomplete improvements & more

Hi UX'ers!

This release contains a mixture of new features and important bug fixes, especially LiveComponents & Autocomplete, which were discovered after the morphing library change in 2.14.0.

Autocomplete

Add doctrine/orm 3 support #1468

  • Allow passing extra options to the autocomplete fields #1322
  • Fix 2 bugs where TomSelect would reset when not necessary #1502
  • Add one missing German translation #1521

Chartjs

  • Remove restriction that prevented Chart.js 3.9 #1518

LiveComponent

  • [BC BREAK] The data-live-id attribute was changed to id #1484
  • Fixed child handling bug during re-rendering introduced with the new morphing library in 2.14.0 #1484
  • Fix bug where the active input would maintain its value, but lose its cursor position #1501
  • Restrict Twig 3.9 for now #1486

Turbo

  • Add Turbo 8 support #1476
  • Fix missing use statement used during broadcast #1475

TwigComponent

  • Add the ability to render specific attributes from the attributes variable #1442
  • Restrict Twig 3.9 for now #1486
  • Build reproducible TemplateMap to fix possible post-deploy breakage #1497

New Contributors

Full Changelog: v2.14.2 -> v2.15.0

Have fun!

2.14.2
2024-02-07

Fixing Turbo support for newer Doctrine

Hi UX'ers!

This release fixes a regression in the Live Component testing utilities.

Turbo

StimulusBundle

  • [StimulusBundle] UxPackageReader class doesn't support projects with varied structures using Composer with custom directory structure by @yobrx in #1467

New Contributors

Full Changelog: v2.14.1 -> v2.14.2

Have fun!

2.14.1
2024-02-03

Fix regression in Live Component testing tools

Hi UX'ers!

This release fixes a regression in the Live Component testing utilities.

Live Component

  • fix: use method from metadata for live component test helper by @daFish in #1434

StimulusBundle

  • Handles Windows directory separator when normalizing controller names by @tamcy in #1444

ux.symfony.com

New Contributors

Full Changelog: v2.14.0 -> v2.14.1

Have fun!

2.14.0
2024-01-30

Features & Fixed for LiveComponent, TwigComponent & other packages

Hi UX'ers!

A beautiful release with a set of features across several packages. 100+ commits, from 19 contributors 🔥 .

TwigComponent

  • Make ComponentAttributes traversable/countable
  • Fixed lexing some {# twig comments #} with HTML Twig syntax
  • Fix various usages of deprecated Twig code

LiveComponent

  • Add support for URL binding in LiveProp
  • DOM morphing changed from morphdom to idiomorph
  • Allow multiple LiveListener attributes on a single method
  • Requests to LiveComponent are sent as POST by default
  • Add method prop to AsLiveComponent to still allow GET requests, usage: #[AsLiveComponent(method: 'get')]
  • Add a new urlReferenceType parameter to AsLiveComponent, which allows to generate different type URL (e.g. absolute) for the component Ajax calls
  • The symfony/serializer dependency is now optional
  • Added a data-skip-morph attribute to allow skipping morphing of an element (the element's attributes will be morphed, but its inner HTML will be overwritten instead of morphed)
  • Added an entry to the packages' package.json file so that @symfony/ux-live-component will appear in the user's importmap.php file if using AssetMapper. This will allow using the JavaScript from the package without extra setup.
  • Fixed edge-case rendering bug where a 2nd Ajax request might start before the 1st finished processing
  • Fix usage of {% embed %} with {% block %} in <twig:> components
  • Fixed data-loading not working when on root element of a component
  • Fixed error when class attributes contained a space at start or end
  • Fixed loading directives being matched in a child component

Autocomplete

  • Fixed behavior of Autocomplete when the underlying select or option elements were modified to hopefully, more reliably, reset the autocomplete instance. This is particularly important with LiveComponents.
  • Add support for the render.loading_more Tom Select Virtual Scroll option (loading_more_text)
  • Avoid losing the selected options when the Stimulus component is disconnected and reconnected to the DOM.
  • Added tom-select/dist/css/tom-select.bootstrap4.css to autoimport - this will cause this to appear in your controllers.json file by default, but disabled see.

StimulusBundle

  • Added Typescript controllers support

ChartJs

  • Add support for Chart.js version 4

Full Changelog: v2.13.3 -> v2.14.0

New Contributors

Have fun!

2.13.3
2024-01-30

Various minor bug fixes

Hi UX'ers!

A bug fix release. Nice!

TwigComponent

  • Merge data-action in ComponentAttributes #1288
  • Fix DataCollector return types #1297

LiveComponent

  • Fix date object hydration for custom format #1295
  • Allow trailing coma in "props" tags #1298
  • Fix BatchActionController redirection #1301

StimulusBundle

  • Remove stimulus.asset_mapper.loader_javascript_compiler when no asset-mapper

Full Changelog: v2.13.2 -> v2.13.3

New Contributors

Have fun!

2.13.2
2023-11-11

Revert change to type: module

Hi UX'ers!

In 2.13.0, all UX JavaScript packages changed to type: module. This had unintended side effects in certain environments / setups. This release reverts that change. See #1268.

Full Changelog: v2.13.1 -> v2.13.2

Have fun!

2.13.1
2023-11-09

Fix chart.js but with type: module

Hi UX'ers!

This release fixes a but in ux-chart.js. We changed the package to type: 'module', but due to some inconsistencies with the chart.js library, that can't be done quite yet. We've reverted for now.

What's Changed

Full Changelog: v2.13.0 -> v2.13.1

Have fun!

2.13.0
2023-11-08

Lazy/Deferred components, Symfony 7 support & more

Hi UX People!

This is a big release that contains new features across the components! It's the result of 156 commits from 29 different contributors! Note there is an edge-case BC BREAK in StimulusBundle if you were using action parameters in an unexpected way.

All Components

  • Add Symfony 7 support.
  • Change JavaScript package to type: module

Autocomplete

  • Add new BaseEntityAutocompleteType
  • Drop symfony 5.4 support.

TwigComponent

  • Added configuration to separate your components into different "namespaces"
  • Add outerScope variable reach variables from the parent template of an "embedded" component.
  • Deprecate calling ComponentTemplateFinder constructor without directory argument.
  • Add profiler integration: TwigComponentDataCollector and debug toolbar templates
  • Add search feature in debug:twig-component command.
  • Fix inconsistencies with how {% component %}/<twig:component> syntaxes are rendered vs component(): PostRenderEvent is now dispatched & the template resolution happens at runtime.
  • Fix priority of passed in props vs default props with anonymous components.
  • Add Symfony 7 support.
  • TwigPreLexer: improve performance.
  • Fix twig:lint bug with anonymous component tag.

LIveComponent

  • Add deferred/lazy rendering of Live Components.
  • Fix option tag synchronization.
  • Handle array-like objects when working with checkboxes.
  • Normalize "true" & "false" model values
  • Fix DTO hydration from phpdoc typehints.
  • Fix instantiating LiveComponentMetadata multiple times.
  • Throwing an error when setting an invalid model name.

StimulusBundle

  • Normalize parameters names given to twig helper 'stimulus_action()'. BC Break: previously, parameters given in camelCase (eg. bigCrocodile) were incorrectly registered by the controller as flatcase (event.params.bigcrocodile). This was fixed, which means they are now correctly registered as camelCase (event.params.bigCrocodile).
  • Added AssetMapper 6.4 support.
  • Add Symfony 7 support.
  • Fix missing double dash in namespaced Stimulus outlets.
  • Change JavaScript package to type: module

Svelte

  • Add support for Svelte 4.

New Contributors

Full Changelog: v2.12.0 -> v2.13.0

2.12.0
2023-09-22

LiveComponent DTO support & much more

Hi UX People!

This release contains a basket-load of goodness.

TwigComponent

  • Added a debug:twig-component command.
  • Fixed bad exception when the error comes from a Twig template.
  • Fixed deprecation with TemplateCacheWarmer return type.

LiveComponent

  • Add support for (de)hydrating DTO classes in LiveProp.
  • Fixed emit() method of TestLiveComponent to properly test events.
  • Add actingAs() to TestLiveComponent.
  • Fixed rendering bug when using Chrome's translation feature.
  • Add onUpdated() hook for LiveProp.
  • Fix support for Alpine.js & live components.

TogglePassword

  • Added default values for the Stimulus controller values.

New Contributors

Full Changelog: v2.11.2 -> v2.12.0

Have fun!