Skip to content

Releases: divkit/divkit

32.53.0

08 Jun 16:56

Choose a tag to compare

Android Client:

  • Added scope_id support for anchor search for show_tooltip and hide_tooltip actions.
  • Added extended error handling at async binding.
  • Added support for image_builder in text that generates inline images dynamically from a data array using prototypes and selector. Each data element is bound to the data_element_name variable (default it) and to index, and takes priority over a static images list.
  • Added support for range_builder and image_builder inside text.ellipsis, generating the custom ellipsis ranges and images dynamically the same way as for the main text.
  • Added support for range_builder in text that generates character ranges dynamically from a data array using prototypes and selector. Each data element is bound to the data_element_name variable (default it) and to index, and takes priority over a static ranges list.
  • Added support of scoped search for elements with given id in focus_element and set_cursor_position actions. When scope_id is defined in action search for the target view takes place inside the view, which is a scope, and not in the entire Div2View.
  • Added support of scoped search for elements with given id in scroll_to actions.
  • Added support of scoped search for elements with given id in video actions.
  • Fixed ANR at ErrorCollector.notifyObservers() method call.
  • Fixed NPE in DecodeBase64ImageTask when BitmapFactory.decodeByteArray returns null for invalid or empty preview data.
  • Fixed IndexOutOfBoundsException in DivStatePath.findState when root div is a state with div_id. The method now correctly matches divId in path elements with "stateId:divId" and "divId#N" formats, consistent with parentState() behavior.
  • Fixed current page preservation for infinite scroll in pager after item builder array variable updates.
  • Fixed possible ANR at variable change during async binding.
  • Fixed timer variable update behavior.

iOS Client:

  • Added Player.configure(_:) to LayoutKit to 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 custom Player types.
  • Added image_builder property on text that generates inline images dynamically from a data array using prototypes and selector, the same way as range_builder. Each data element is bound to the data_element_name variable (default it) and to index, and takes priority over a static images list.
  • Added playback_speed property on video so layouts can set how fast the default player plays the clip (must be greater than 0; default is 1.0).
  • Added range_builder property on text that generates character ranges dynamically from a data array using prototypes and selector, mirroring item_builder for collections. Each data element is bound to the data_element_name variable (default it) and to index, and takes priority over a static ranges list.
  • Added support of range_builder and image_builder inside the text ellipsis, so the custom ellipsis token can build its ranges and inline images dynamically from data the same way as the top-level text.
  • Added the allow_tap_while_scroll property to gallery (iOS only) that controls whether taps on gallery items are handled while the gallery is scrolling or decelerating. Defaults to false.
  • Fixed match_parent size on the cross-axis of a wrap_content container. Items are now stretched to the container's resolved cross size.
  • Fixed an issue with gallery where 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.Model with Heap Boxing pattern to avoid expensive copying.

Web Client:

  • Added a context API in the onCustomAction handler.
  • Added support for the scroll_content_alignment property in the gallery.
  • Changed scroll alignment in the gallery to better match Android behaviour.
  • Fixed a bug with the layout of the match_parent elements inside the wrap_content.
  • The execAction and logError APIs 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

01 Jun 12:41

Choose a tag to compare

iOS Client:

  • Fixed Retain Cycle in FunctionsProvider that caused DivKitComponents memory leak.
  • Fixed scroll_to and set_next_item actions on an infinite div-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, and TabContentsView.
  • Supported set-cursor-position action.

Web Client:

  • Added support for the alphaBlend function.
  • Fixed set_cursor_position with multiple types of input.

32.51.0

25 May 12:02

Choose a tag to compare

Android Client:

  • Added alphaBlend function for blending two colors.
  • Added scroll_content_alignment support in gallery.

iOS Client:

  • Added alphaBlend function for blending two colors.
  • Added new styles to blur extension: extra_light, regular, prominent, and the system_*_material family (including the _light and _dark variants).
  • Added static images prefetch API for DivData.
  • Added support for the scroll_content_alignment parameter in gallery to control the position of the item selected via default_item or scroll_to; the default value is start for scroll_mode="default" and center for scroll_mode="paging", and alignment affects scrolling only in paging mode.
  • Fixed an issue where a running animator could use a stale end_value when restarted, causing animations to target outdated values after quick consecutive updates.

32.50.0

18 May 16:04

Choose a tag to compare

Android Client:

  • Added playback_speed support in video.
  • Added press_start_actions and press_end_actions support in slider.
  • Added stored values reset for particular DivDataTag.
  • Fixed is_playing: false being ignored on initial bind of lottie extension.
  • Fixed an issue where pager and gallery items with visibility: invisible were 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_out animation 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_speed parameter in the video component.

Kotlin JSON Builder:

  • Added DivanPatch.copy() for creating modified patch instances.

32.49.0

13 May 09:42

Choose a tag to compare

Android Client:

  • Fixed IllegalStateException at 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 scope value in the set_stored_value action.
  • Added the themeVariableName configuration property, which creates a variable that stores the current theme (light or dark).
  • Fixed accessibility type = image.
  • Fixed sorting of dict values when converting to a string.
  • The theme configuration property is no longer deprecated.

32.48.0

04 May 16:11

Choose a tag to compare

Android Client:

  • Added getStoredValue functions with scope.
  • Added scope parameter to set_stored_value action.
  • Added set_cursor_position typed action support.
  • Fixed NullPointerException at DivBinder.bind(BindingContext, View, Div, DivStatePath) when Div2View has no children.
  • Fixed transition_change animations on views with wrap_content size.
  • 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_mode paging.

iOS Client:

  • The select_all_on_focus property on iOS works again.

32.47.0

27 Apr 15:01

Choose a tag to compare

Android Client:

  • Added image loading errors reporting.
  • Fixed ConcurrentModificationException at ErrorCollector.notifyObservers() call.
  • Fixed an issue where div-custom binding was called on a background thread.
  • Fixed loading of animated images in .webp format by GlideDivImageLoader.

iOS Client:

  • Added RasterizeExtensionHandler to 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} or toString(dict)), string keys and values are serialized with JSON-style escaping for special characters.

Web Client:

  • Supported typed action scroll_to with destination item_id and corresponding scroll_to_item_id action url.

32.46.0

20 Apr 14:29

Choose a tag to compare

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 Div2View is destroyed earlier than corresponding Div2Context.
  • Headers are now important for accessibility.
  • Supported custom typed actions.
  • Supported reset of persistent variables and data in DivStorage.
  • Supported typed action scroll_to with destination item_id and corresponding scroll_to_item_id action 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_position action.
  • Updated slider ticks limits logic, the maximum number of ticks is now 1000.

32.45.0

14 Apr 11:57

Choose a tag to compare

Android Client:

  • Fixed Div2View self locks at async bindng.

iOS Client:

  • Div-video preview strings (base64 image data, including data: URL form) are decoded on a background queue through the image holder pipeline instead of blocking layout on the main thread.

32.44.0

06 Apr 12:36

Choose a tag to compare

Android Client:

  • Fixed ANR at RuntimeStoreImpl initialization.

iOS Client:

  • Fix blur effect during animations.
  • Fixed visibility action resolve with collection item builder.