Releases: divkit/divkit
Releases · divkit/divkit
32.53.0
Android Client:
- Added
scope_idsupport for anchor search forshow_tooltipandhide_tooltipactions. - Added extended error handling at async binding.
- Added support for
image_builderintextthat generates inline images dynamically from adataarray usingprototypesandselector. Each data element is bound to thedata_element_namevariable (defaultit) and toindex, and takes priority over a staticimageslist. - Added support for
range_builderandimage_builderinsidetext.ellipsis, generating the custom ellipsis ranges and images dynamically the same way as for the main text. - Added support for
range_builderintextthat generates character ranges dynamically from adataarray usingprototypesandselector. Each data element is bound to thedata_element_namevariable (defaultit) and toindex, and takes priority over a staticrangeslist. - Added support of scoped search for elements with given
idinfocus_elementandset_cursor_positionactions. Whenscope_idis defined in action search for the target view takes place inside the view, which is a scope, and not in the entireDiv2View. - Added support of scoped search for elements with given
idinscroll_toactions. - Added support of scoped search for elements with given
idinvideoactions. - Fixed ANR at
ErrorCollector.notifyObservers()method call. - Fixed NPE in
DecodeBase64ImageTaskwhenBitmapFactory.decodeByteArrayreturns null for invalid or empty preview data. - Fixed
IndexOutOfBoundsExceptioninDivStatePath.findStatewhen root div is astatewithdiv_id. The method now correctly matchesdivIdin path elements with "stateId:divId" and "divId#N" formats, consistent withparentState()behavior. - Fixed current page preservation for infinite scroll in
pagerafter item builder array variable updates. - Fixed possible ANR at variable change during async binding.
- Fixed timer variable update behavior.
iOS Client:
- Added
Player.configure(_:)toLayoutKitto apply playback settings (mute, speed, loop, autoplay) to a running player without reloading the video source; a no-op default implementation is provided for source compatibility with existing customPlayertypes. - Added
image_builderproperty ontextthat generates inline images dynamically from adataarray usingprototypesandselector, the same way asrange_builder. Each data element is bound to thedata_element_namevariable (defaultit) and toindex, and takes priority over a staticimageslist. - Added
playback_speedproperty onvideoso layouts can set how fast the default player plays the clip (must be greater than 0; default is 1.0). - Added
range_builderproperty ontextthat generates character ranges dynamically from adataarray usingprototypesandselector, mirroringitem_builderfor collections. Each data element is bound to thedata_element_namevariable (defaultit) and toindex, and takes priority over a staticrangeslist. - Added support of
range_builderandimage_builderinside the textellipsis, so the custom ellipsis token can build its ranges and inline images dynamically fromdatathe same way as the top-leveltext. - Added the
allow_tap_while_scrollproperty togallery(iOS only) that controls whether taps on gallery items are handled while the gallery is scrolling or decelerating. Defaults tofalse. - Fixed
match_parentsize on the cross-axis of awrap_contentcontainer. Items are now stretched to the container's resolved cross size. - Fixed an issue with
gallerywhere continuous layout invalidations occurred during scrolling, causing performance degradation and high CPU usage. - Fixed configured playback speed restoration after each loop when the default player repeats a video.
- Fixed horizontal and vertical galleries when the item list or layout updates and the saved scroll position is no longer valid: state is normalized and the correction is applied without animation.
- Fixed timer variable update behavior.
- Optimized
DecoratingView.Modelwith Heap Boxing pattern to avoid expensive copying.
Web Client:
- Added a
contextAPI in theonCustomActionhandler. - Added support for the
scroll_content_alignmentproperty in thegallery. - Changed scroll alignment in the
galleryto better match Android behaviour. - Fixed a bug with the layout of the
match_parentelements inside thewrap_content. - The
execActionandlogErrorAPIs have been changed, now they will be executed in the context of the component (if possible, previously they were executed in the global context).
32.52.0
iOS Client:
- Fixed Retain Cycle in
FunctionsProviderthat causedDivKitComponentsmemory leak. - Fixed
scroll_toandset_next_itemactions on an infinitediv-pager: navigating from the last item to the first (or vice versa) now plays a single-item animation across the buffered edge instead of scrolling linearly through every intermediate page. - Fixed an issue where tapping a gallery, pager or tabs item during an in-flight scroll animation was ignored.
- Fixed double infinite-scroll jump in a pager when deceleration crossed the buffer boundary more than once during a single settling.
- Fixed linear and radial gradient rendering when adjacent stops differ in alpha — transparent → opaque transitions (e.g.
#0000→#FFFFFFFF) no longer pass through mid-grey, matching Android's behavior. - Fixed potential memory leaks in
ValueAnimator,DivViewPreloader, andTabContentsView. - Supported
set-cursor-positionaction.
Web Client:
- Added support for the
alphaBlendfunction. - Fixed
set_cursor_positionwith multiple types ofinput.
32.51.0
Android Client:
- Added
alphaBlendfunction for blending two colors. - Added
scroll_content_alignmentsupport ingallery.
iOS Client:
- Added
alphaBlendfunction for blending two colors. - Added new styles to
blurextension:extra_light,regular,prominent, and thesystem_*_materialfamily (including the_lightand_darkvariants). - Added static images prefetch API for DivData.
- Added support for the
scroll_content_alignmentparameter in gallery to control the position of the item selected viadefault_itemorscroll_to; the default value isstartforscroll_mode="default"andcenterforscroll_mode="paging", and alignment affects scrolling only in paging mode. - Fixed an issue where a running animator could use a stale
end_valuewhen restarted, causing animations to target outdated values after quick consecutive updates.
32.50.0
Android Client:
- Added
playback_speedsupport invideo. - Added
press_start_actionsandpress_end_actionssupport inslider. - Added stored values reset for particular
DivDataTag. - Fixed
is_playing: falsebeing ignored on initial bind oflottieextension. - Fixed an issue where
pagerandgalleryitems withvisibility: invisiblewere removed from layout instead of reserving space.
iOS Client:
- Fixed an issue where a scroll action on a gallery, pager or tabs could be ignored if it was triggered before the previous scroll animation finished.
- Fixed an issue where the first
transition_outanimation inside a pager (or other view that creates cells lazily) was skipped on initial visibility change. - Text images vertical alignment support.
- The ability to trigger actions when the user interacts with the slider has been implemented.
Web Client:
- Added support for the
playback_speedparameter in thevideocomponent.
Kotlin JSON Builder:
- Added
DivanPatch.copy()for creating modified patch instances.
32.49.0
Android Client:
- Fixed
IllegalStateExceptionat BindingCriticalSection.reserveFor() call.
iOS Client:
- Do not log model.child.view in renderingDelegate "Touchable view is too small" error.
- Fixed accessibility mode merge, to respect inactive states and gone blocks.
- Fixed caret jumping on fast typing in masked text input.
- Fixed simultaneous long tap and pan gestures recognition in gallery.
- Supported get/set stored values by cardId.
- TriggerUpdate boolean flag added to DivVariablesStorage.append.
Web Client:
- Added suuport for the
scopevalue in theset_stored_valueaction. - Added the
themeVariableNameconfiguration property, which creates a variable that stores the current theme (lightordark). - Fixed accessibility type =
image. - Fixed sorting of
dictvalues when converting to a string. - The
themeconfiguration property is no longer deprecated.
32.48.0
Android Client:
- Added
getStoredValuefunctions with scope. - Added
scopeparameter toset_stored_valueaction. - Added
set_cursor_positiontyped action support. - Fixed NullPointerException at DivBinder.bind(BindingContext, View, Div, DivStatePath) when Div2View has no children.
- Fixed
transition_changeanimations on views withwrap_contentsize. - Fixed click and long click actions not being triggered on pager's parent elements. Tap and long press events on DivPagerView are now properly propagated up the view hierarchy to the nearest clickable ancestor.
- Fixed deadlock at
Div2View.cleanup()call. - Fixed deadlock at
Div2View.setDataAsync(). - Fixed snapping after scroll actions in gallery with
scroll_modepaging.
iOS Client:
- The
select_all_on_focusproperty on iOS works again.
32.47.0
Android Client:
- Added image loading errors reporting.
- Fixed
ConcurrentModificationExceptionat ErrorCollector.notifyObservers() call. - Fixed an issue where
div-custombinding was called on a background thread. - Fixed loading of animated images in
.webpformat byGlideDivImageLoader.
iOS Client:
- Added
RasterizeExtensionHandlerto fix offscreen rendering issues in overlap containers. - Also reduced redundant full-card refreshes when only the pager size changes, and made automatic page changes on an infinite carousel more reliable.
- Fixed VideoBlock preview size.
- Fixed an issue on iOS where programmatic text updates left the caret at its previous position; the caret now moves to the end of the line.
- Fixed infinite
div-pager: after rotating the screen the carousel could freeze between pages or show the wrong page; it now stays aligned and flips correctly. The same applies to paging gallery when its size changes (e.g. rotation). - Supported reset of persistent variables and data in
DivKitComponents. - When a dictionary is turned into a string in expressions (for example
@{dict}ortoString(dict)), string keys and values are serialized with JSON-style escaping for special characters.
Web Client:
- Supported typed action
scroll_towith destinationitem_idand correspondingscroll_to_item_idaction url.
32.46.0
Android Client:
- Async binding no longer triggers if the DivData hasn't changed.
- Fixed alpha restoring at the end of fade animation in set of animations with different durations.
- Fixed memory leak in case when
Div2Viewis destroyed earlier than correspondingDiv2Context. - Headers are now important for accessibility.
- Supported custom typed actions.
- Supported reset of persistent variables and data in
DivStorage. - Supported typed action
scroll_towith destinationitem_idand correspondingscroll_to_item_idaction url.
iOS Client:
- Fixed a flickering issue in overlap container during transition animations caused by offscreen rendering.
- Fixed remote image distortion in wrap_content mode by using image size in points (scale = 1) for intrinsic layout.
Web Client:
- Added
set_cursor_positionaction. - Updated
sliderticks limits logic, the maximum number of ticks is now 1000.
32.45.0
Android Client:
- Fixed
Div2Viewself locks at async bindng.
iOS Client:
- Div-video
previewstrings (base64 image data, includingdata:URL form) are decoded on a background queue through the image holder pipeline instead of blocking layout on the main thread.