divkit

DivKit is an open source Server-Driven UI (SDUI) framework. SDUI is a an emerging technique that leverage the server to build the user interfaces of their mobile app

OTHER License

Downloads
11.8K
Stars
2.1K
Committers
75

Bot releases are hidden (Show)

divkit - 29.14.0

Published by divkit 6 months ago

Android Client:

  • Added implicit cast from integer to number inside evaluable expressions.
  • Supported flag is_enabled for input.
  • Fixed restrict_parent_scroll to restrict both directions
  • Fixed reusing of view id in same Div2Context
  • Added support of signed numbers in numeric div-input

iOS Client:

  • Added toString() method support in expressions.
  • Fixed ternary operator parsing.
  • Added get methods for dictionaries and arrays in expressions.
divkit - 29.13.0

Published by divkit 6 months ago

Android Client:

  • Supported loading images from assets by url divkit-asset://
  • Fixed that sometimes extensions could be removed on state change.
  • Fixed a memory leak occurring when using expressions in the "alignment" fields of the container element.

iOS Client:

  • Fixed focus setting when state changes and there are multiple inputs without id.
  • Supported is_enabled property in input.
  • Fixed variables usage in tooltips.
  • Fixed visibility action of empty container.
  • Fixed crash in input with mask.
  • Fixed DivVideo view reconfiguration.
divkit - 29.12.0

Published by divkit 7 months ago

Android Client:

  • Enable android.nonTransitiveRClass.
  • Supported item-builder property in container.
  • Removed excessive list copy creation for thread-safe iteration.

iOS Client:

  • Fixed nested expression parsing.
  • Implemented new typed action clear_focus which removes focus from any focused view.
  • Improved views reuse.
  • Removed id requirement for div-state.

Web Client:

  • Fixed an issue with deep state changes.
  • Implemented new typed action clear_focus which removes focus from any focused view.
  • Supported preload_required property for the video component.
  • Fix timer stop in rare cases.
  • Fixed an issue with the visibility_actions, disappear_actions and tooltips in patches.
  • Fixed a bug where several text styles were not updated when the expression was changed.
  • Fixed an issue with the tel: schema in actions.
  • Minor performance optimization.
  • Fixed parsing of incorrect values of items / states in container, tabs and state.

Kotlin JSON Builder:

  • Added ability to create Patch declaration.
divkit - 29.11.0

Published by divkit 7 months ago

Android Client:

  • Fixed visibility recognition of pages in pager.
  • Removed validation for rectangular grid layout.
  • Screenshot test plugin improvements.
  • Set version without build start time in debug build.
  • Fixed restrict_parent_scroll.
  • Implemented new typed action clear_focus which removes focus from any focused view inside Div2View.
  • Fixed overriding of custom layout params.

iOS Client:

  • Fixed variable names parsing.
  • Add default assets image provider.

Web Client:

  • Fixed a rare call to "tick_actions" after "end_actions" in timers.
  • Removed validation for rectangular grid layout.
divkit - 29.10.0

Published by divkit 7 months ago

Android Client:

  • Migrated to Gradle version catalog.
  • Add div data generator plugin.
  • Fixed SO at state variable change.

Web Client:

  • Fixed several issues with the tabs component with the match_parent and wrap_content heights with the constrained flag.
  • Fixed an animation issue after swipe in tabs component.
  • Fixed a small issue with rendering corners with a frame and radius.
  • Supported scroll_to_start, scroll_to_end, scroll_backward, scroll_forward, scroll_to_position in gallery. Updated set_previous_item and set_next_item to support step argument.
  • Supported scroll_to_start, scroll_to_end in tabs and pager. Updated set_previous_item and set_next_item to support step argument.
  • Fixed an issue with the gallery scroll actions and RTL layout direction.
  • Implicit conversion of integer -> number in expressions is supported.
divkit - 29.9.0

Published by divkit 7 months ago

Android Client:

  • Reduced number of memory allocations at observing of client-side variables.
  • Fixed periodic crash in pager on view rebind.
  • keyboard_type = password has been supported for input.
  • Fixed video overlap with scale fill.
  • Removed redundant memory usage when calling the putOrUpdate method on a DivVariableController with already known variables.
  • Complex rebind enabled by default.

iOS Client:

  • Implemented new actions to scroll gallery scroll_to_start, scroll_to_end, scroll_backward, scroll_forward, scroll_to_position.
  • Added implicit cast from integer to number.
  • Fixed actions using item_builder.
  • Fixed numeric values parsing.
  • Fixed skipping pages when scrolling pager by timer.

Web Client:

  • Fixed space symbols collapse inside tabs title.
  • keyboard_type = password has been supported for input.
divkit - 29.8.0

Published by divkit 8 months ago

Android Client:

  • New rebinding algorithm is implemented under complexRebind flag (can be enabled using the DivConfiguration builder).
  • Implemented new actions to scroll gallery scroll_to_start, scroll_to_end, scroll_backward, scroll_forward.
  • Fixed autoallipsizing of div-text with fixed line height.
  • Fixed artifacts on drawing corner_radius with border.

iOS Client:

  • GestureExtensionHandler introduced.

Web Client:

  • The visibility_duration and disappear_duration properties in actions now supports the value 0.
divkit - 29.7.0

Published by divkit 8 months ago

Android Client:

  • Fixed text line height so that it behaves as on other platforms.
  • Fixed baseline alignment for image, gif-image and video.
divkit - 29.6.0

Published by divkit 8 months ago

Android Client:

  • Supported page switching inside pager using focus.
  • separator and image without any action or accessibility block are excluded from accessibility.
  • Fixed subscription in video to fields with variables

iOS Client:

  • Added focus_element action support.
  • Added auto div-accessibility.type.
  • Fixed accessibility for div-input.
  • Fixed concurrency crash in DivStateManager.
  • Added more information about associated action in URL handling.

Web Client:

  • Added support for the preload_required property in image, gif and text components.
  • Fixed an issue with the max_lines and auto_ellipsize on the same text component.
  • Errors from expressions now also contain the path property.
divkit - 29.5.0

Published by divkit 9 months ago

Android Client:

  • Supported functions getArrayFromDict, getDictFromDict, getOptArrayFromDict, getOptDictFromDict.
  • Supported accessibility for slider.
  • Fixed visibility actions not working for items children inside div-pager and div-tabs.
  • Fixed border redrawing after rebind.

iOS Client:

  • Fixed cursor position in the text with emoji.
  • Improved DivData parsing.

Web Client:

  • Fixed several input issues in the slider with two thumbs.
  • Fixed gallery markup in several cases.
  • Fixed input focus outlines in several cases.
  • Fixed a processing error when setting an incorrect value for the integer variable.
  • Fixed an issue with the state patches.
divkit - 29.4.0

Published by divkit 9 months ago

Android Client:

  • Optimized the performance of div-tabs when scrolling.
  • Fixed a bug when the last element twitched when scrolling div-pager with infinite-scroll.
  • Added ability to scroll div-gallery forward/backward by N-items using div-action.
  • Fixed div models generating without templates.

iOS Client:

  • Added action payload to DivReporter.reportAction.
  • Add operators error messages.
  • Supported datetime format functions.
  • Added list value support for div-accessibility.type.
  • Fixed visibility actions for views that can change their size.

Web Client:

  • Added item_builder property support in the container component.
  • Added getDictFromDict, getArrayFromDict, getOptArrayFromDict and getOptDictFromDict functions.
  • Added support for the RTL layout (with the direction configuration property).

Kotlin JSON Builder:

  • Completely removed divkit.dsl.Url input value validation since it doesn't comply with RFC 2396.
divkit - 29.3.0

Published by divkit 9 months ago

Android Client:

  • Fixed element blinking when rebinding galleries.
  • Implemented hash() method for Divs.
  • Added a parameter to DivConfiguration.Builder#divPlayerPreloader. Also implemented ExoPlayerVideoPreloader, which can be used to preload videos if you are using ExoDivPlayerFactory as your video player.
  • Disabled creation of implicit default values for object properties.
  • Fixed a bug that 'visibility_action' does not work for children with size more than 'div-gallery' size.
  • Added parameter describing the reason of div-action call to DivActionHandler methods.
  • Fixed visibility_change animation

iOS Client:

  • Updated VGSL version to 3.0.0.
  • Fixed DivView size calculation.
  • Added ability to force action updates scheduled for the next run loop iteration.

Web Client:

  • transition_in, transition_out, transition_change, action_animation and animation_in / animation_out from the tooltip will now use system setting "prefers reduced motion".
divkit - 29.2.0

Published by vyaivanove 9 months ago

Android Client:

  • Fixed character escaping.
  • Fixed state does not switch inside div-custom.
  • Added support is_enabled for action.
  • Migrated from Dagger to Yatagan DI framework
  • Added supporting len(array) function in evaluable.
  • Fixed min size applying in div-container.
  • Fix wrong gradient color in div-text.
  • Fixed not sending taps through the div-gallery.

iOS Client:

  • Supported is_enabled property in div-action.
  • Optimized accessibility elements creation.
  • Changed DivText.text property type from CFString to String.
  • Fixed DivContainer without items behavior.
  • Fixed accessibility params for elements with margins.
  • Fixed memory leak in FunctionsProvider.
  • Fixed Lottie blinking when state changed.

Web Client:

  • Fixed an issue with the visibility_actions restart on variable changes and their cleanup.
  • Added support for the is_enabled flag inside all types of actions.
  • Added clip_to_bounds property support for the container component.
  • Fixed an issue with the wrap_content images in Safari.
  • Fixed variable_triggers logic to match other platforms. Now they are executed, even if not all variables are present.
  • Fixed variable_triggers to be executed only after components mount.
  • Added auto_ellipsize property support in text component.
  • Fixed an issue with the experimental method setData and video updates.
  • Fixed null value processing in array getter functions.

TypeScript JSON Builder:

  • Added expressions support in fixed function.
divkit - 29.1.0

Published by 4eb0da 10 months ago

Android Client:

  • Supported clip_to_bounds property in div-container.
  • Optimized binding process of base div properties.
  • Optimized binding process of div-text.
  • Optimized binding process of div-separator.
  • Optimized binding process of div-container.
  • Fixed calling of disappear actions for tooltips.
  • Fixed parent's vertical scroll starting at div-slider.
  • Fixed state switching of div-gallery items.
  • Fixed incorrect height of div-input.
  • Fixed text color applying for ranges in div-text.

iOS Client:

  • Fixed DivVariableStorage change events.
  • Optimized DivData parsing.
  • Improved DivBlockModelingContext cloning.

Web Client:

  • Fixed rare cases with the lottie animations load errors.
divkit - 29.0.0

Published by lunarstill 10 months ago

JSON Schema:

  • Removed non_empty_string type.
  • Removed some minItems restrictions.
  • items property in container, gallery, pager and grid became not required.

Android Client:

  • Fixed timers cleared after patch.
  • Added Complex Rebind flag.
  • Added ability to reset expression runtimes, error collectors and selected states for given data tags.
  • Added the ability to change ViewPreCreationProfile in Div2Context.
  • Added supporting 'try' operator.
  • Fixed a case when the wrong DivActionHandler was used.
  • Improved performance by making functions stateless.
  • Fixed a bug that visibility_action does not work for children of the gallery element.
  • Added the ability to enable/disable the scrollbar in the gallery.
  • Added Coil image loader.

iOS Client:

  • Supported item_builder property in DivContainer.
  • Supported scrollbar property in DivGallery.
  • Supported clipToBounds parameter in DivContainer.

Web Client:

  • Breaking change: expressions are now executed without waiting for all variables in them.
  • Breaking change. The type Variable and other related types (such as StringVariable) are now classes, not interfaces. In most cases, all the code will work the same way, but in rare cases it may break something. Also note that it is now possible to check variable type with the instanceof, which works as a type-guard in TypeScript (getValue() will return a value with the correct type). Previously, this was not possible because only getType existed, and TypeScript would not use it as a type-guard.
  • Breaking change: private methods in DivKit instance was removed. This methods was not typed and was not documented.
  • Breaking change: added arrows for pager on the desktop platform. There are new customization options for these arrows. Also note that the platform can be configured using the render method.
  • Breaking change: the internal implementation of the lottie extension has been changed. This was required to fix the issue with simultaneous display of fallback gif with lottie itself. If you are providing a similar extension created from scratch, you may need to change it a bit.
  • Added try operator !: for expressions.
  • Undeclared variables would not cause expressions to fail (even without getting their values) (revert change from version 23.4.0). The error would still occur if the expression actually evaluated an undeclared variable.
  • Fixed the behavior of match_parent inside the container with the size of wrap_content and orientation = overlap.
  • Added len function for array variables.
  • Fixed an issue with the expressions support inside transition_change property.
  • Fixed an SSR error that occured when rendering a card with a list of timers.
  • Empty containers (without items) is now allowed.
  • Added support for patches in tabs and states (note that patches require exactly one element for each change, unlike other types of components).
  • text component with an empty text property is now allowed.
  • Fixed an issue with whitespace near brackets () in expressions.
  • Added a new experimental method setData. This method allows you to quickly redraw the DivKit card using a new json, much more efficiently than directly destroying and recreating it again.
  • Fixed possible errors in integer calculation for the functions getArrayInteger, getIntegerFromArray, getArrayOptInteger, getOptIntegerFromArray, getDictInteger, getIntegerFromDict, getDictOptInteger, getOptIntegerFromDict, copySign.
  • Fixed an issue with a separators in container in the ssr mode.
  • Empty grid, gallery and pager are now allowed.
divkit - 28.13.0

Published by lunarstill 11 months ago

Android Client:

  • Fixed using incorrect uri scheme in Beacon.
  • Fixed broken fade animation.
  • Added the ability to set the lineHeight to be smaller than the font size.

iOS Client:

  • Supported !: operator.
divkit - 28.12.0

Published by gulevsky 11 months ago

Android Client:

  • Added getStoredUrlValue functions.
  • Removed dependency on androidx.fragment.
  • Fixed the hyphenation of images in the text.
  • Fixed baseline alignment in DivCustom.
  • Fixed bind on enabled bind_on_attach.
  • Fixed alignment of the DivStateLayout.

iOS Client:

  • Change the unit of video duration to ms
  • Optimized actions resolving.
  • Removed UserInterfaceAction.Payload.json usage.
  • Fixed putting text to pasteboard when cutting in the input with a mask.
  • Fixed DivPager state updating.

Web Client:

  • Added scrollbar property support in gallery.
  • Fixed the text of the missing gif_url error. Also the gif component now uses gif_url and image uses image_url, instead of both of them consuming any of these 2 properties.
  • Removed empty padding attribute from html.
  • Fixed empty images (and gifs) to load error. Note "empty image" here is an image with an image_url property equal to empty://.
divkit - 28.11.0

Published by gulevsky 11 months ago

Android Client:

  • Added functions to get URL value: getUrlValue, getUrlFromArray, getUrlFromDict.
  • Added functions to get Color from Dict: getOptColorFromDict, getDictOptColor.
  • Fixed incorrect height of select.

iOS Client:

  • Supported infinite scrolling in the pager.
  • Fixed change_bounds animations content scale.

Web Client:

  • Fixed an issue with the focus property support in slider component.
  • Added focus_element typed action support.
divkit - 28.10.0

Published by ttokarev 11 months ago

Android Client:

  • Added new evaluable type - EvaluableType.URL
  • Added functions toString(url), toUrl(str) and toColor(str).
  • Added scale property support in the video component.
  • Fixed crash when DivState has empty states array.
  • Fixed crash when clicking "Next" on keyboard in DivInput inside DivGallery.
  • Fixed DivInput not working in DivPager.

iOS Client:

  • Fixed clipping to bounds of view when rotating.

Web Client:

  • Added copy_to_clipboard action support.
  • Fixed cross-axis container items with the match_parent size logic in combination with the wrap_content size of the container itself.
  • Fixed gallery scrolling with wrap_content and max_size property.
divkit - 28.9.0

Published by ttokarev 12 months ago

Android Client:

  • Added infinite scrolling property to the pager.
  • Added common interface for all div views.
  • Added a workaround for a bug in R8 that sometimes causes a ClassCastException when using DivGallery or DivGridLayout.
  • Fixed DivCustom wrong ids for DivGallery items.

iOS Client:

  • Added VideoDurationExtensionHandler.

Web Client:

  • Fixed the first/last separator of the container with space-evenly and space-around alignment.
  • Added an additional api with props and variables for custom components.
  • Added array_insert_value and array_remove_value typed actions.
  • Added support for expressions in the execAction method.