Release notes

Migration guide

Data binding

Array binding changes

Data binding now supports a wider range of array types, including:

  • arrays of strings
  • polymorphic arrays
  • multidimensional arrays
  • arrays containing other containers

Support for these arrays requires setting the BindElement field in the ArrayInfo struct.

Required changes

If you have:

  • custom Property implementations, or
  • overrides of GetArrayValue<>::Invoke

you must populate the BindElement field in the returned ArrayInfo. The callback is the same one passed to TryBindArrayByRef and can be reused directly.

Performance considerations

Arrays of boolean values, numbers, and user-defined types are directly evaluated without going through creating JavaScript values.

Arrays types that require using the BindElement callback have some overhead due to converting the elements to JavaScript values.

If this becomes a concern, you can continue using the previous workaround of wrapping nested containers in a user-defined type. For example, instead of std::vector<std::vector<Foo>> use std::vector<Wrapper>, where Wrapper contains std::vector<Foo>.

Changelog

Version 2.2.4


Released 05 May 2026
FeatureAdded complete support for binding dynamically typed values and implemented support for std::variant.
EnhancementSimplified loading of the cohtml library on Linux by adding rpath.
EnhancementUnreal EngineUpdate Gameface statistics only when the stats are visible.
FixUnreal EngineFixed warnings triggered when binding arrays of FVector instances in Unreal Engine.
FixFixed text-stroke artifacts that occurred when the text-stroke-width property changed.
FixFixed a flex gap issue that left extra trailing space.
FixFixed text-stroke failing to apply width when styled dynamically.
FixFixed a bug in WebP image decoding that caused artifacts in alpha values around the image boundaries.
FixFixed lossy WebP alpha decoding for images with widths not divisible by the pixels-per-byte ratio.
FixFixed a crash during view destruction when using animated pseudo-elements.