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 - 30.18.0 Latest Release

Published by robot-divkit about 1 month ago

Android Client:

  • Experimental API: added template serialization interfaces.
  • Fixed a bug where the input field intercept vertical scrolling.
  • Fixed corner clipping while transitions is in progress.
  • Support div-custom patching.

iOS Client:

  • Experiment added to use different drawing methods for blur/tint effects inside ImageBlock. Previously MetalImageView.swift was the only option. Now using DivFlagsInfo - we can set imageBlurPreferMetal: Bool or imageTintPreferMetal: Bool to false, and RemoteImageView.swift will be used instead (with new way to render). By default behaviour stays the same as before.
  • Support resolveValue for RawRepresentable type.
  • Supported div-input max_length field for ios
divkit - 30.17.0

Published by robot-divkit about 1 month ago

Android Client:

  • Bump OkHttp version to 4.12.0
  • Implemented support for field accessibility for images inside text. (from version 30.14)
  • Supported alignment_vertical for ranges and images elements.
  • Implemented support for methods for getting values from dict getBoolean, getDict ... You can use them in evaluable expressions like that dict_var.getBoolean(path_to_var).
  • AGP version updated to 8.5.2 and Gradle version updated to 8.10.
  • Added new typed action div-action-show-tooltip that can be used instead of div-actino://show_tooltip.
  • Added new typed action div-action-timer that can be used instead of div-action://timer.
  • Added new typed action div-action-video that can be used instead of div-action://video.
  • Fixed black background behind the corners of shimmer extension on apis lower than Android 26.
  • Fix bug when image preview was skipped after bind with same image_url, but different preview.
  • Fixed corner clipping while transitions is in progress.
  • Throw AssertationError on try to load patch without providing DivDownloader to DivConfiguration.

iOS Client:

  • Fixed bug with last small page.
  • Fixed bug with pager scrolling.
divkit - 30.16.0

Published by vyaivanove about 2 months ago

Android Client:

  • Fixed visibility actions within patch layout.
  • Fixed a bug when separators inside a container ignore margins.

iOS Client:

  • Added test playgrounds with layout of objects from LayoutKit.
  • Added support of autocapitalization type in div-input text fields.
  • Added filtering entered data in div-input using regexp or expressions.
  • Fixed a bug with scrolling through the last page.
divkit - 30.15.0

Published by divkit about 2 months ago

Android Client:

  • Fix indicator disappearing after patch.

iOS Client:

  • Added fix of scrolling multiline text input while typing text to avoid active input to be under keyboard.
  • Fixed variable trigger invocation after calling appends from the client.
divkit - 30.14.0

Published by divkit 2 months ago

Android Client:

  • Added support for local variables field.
  • Fixed an issue when items built from prototypes couldn't receive variable updates.
  • Deprecated method DivCustomContainerChildFactory#bindChildView. Use a new method implementation with childIndex param instead. Otherwise, local variables inside custom containers wouldn't work.
  • Support toString() methods for dicts and arrays.
  • Implemented support for field accessibility for images inside text.

iOS Client:

  • Moved edits from the patch for the swipe_down fix.
  • Fixed a bug when scrolling from page to another page.
  • Fixed boolean type parsing in set_stored_value action.

Web Client:

  • Added markdownExtensionBuilder function, which accepts the markdown processing function and produces a markdown extension.
  • Added getComponentProperty extension API.
divkit - 30.13.0

Published by divkit 2 months ago

Android Client:

  • Now next_focus_ids.forward supports accessibility order.
  • Now div-gallery in paging scroll mode will be centered like in other platforms.
  • Fixed visibility action tracking when DivData moved to another Div2View.
  • Fixed multiple state switching within pager items.

iOS Client:

  • Added variable triggers to div-base. They can be triggered by parent variables.
  • Reset local triggers in the elements after applying div-patch.

Web Client:

  • Updated the layout of the grid, in which elements are superimposed on each other to match the behavior of Android.
  • The logic of transition_change has been brought into line with other platforms: with this change, there is no need to contain the transition_change property in the final state. In addition, parameters from the previous state will be used, not from the new one.
  • Fixed the auto_ellipsize property in the presence of max_lines for the text component.
  • Performance optimizations.
divkit - 30.12.0

Published by divkit 3 months ago

Android Client:

  • Supported layout_provider property.
  • Supported div-patch.on_applied_actions and div-patch.on_failed_actions.
  • Support custom corner radius at shimmer extension.
  • Fixed pages in pager not switching in accessibility.

iOS Client:

  • Supported item_builder for pager and gallery.
  • Added callbacks with div actions in div-patch. Called after applying patches.
divkit - 30.11.0

Published by divkit 3 months ago

Android Client:

  • Supported reuse_id field. Use reuse_id for more efficient reuse of items with same structure in gallery/pager.
  • Fixed gallery not reusing items.
  • Fixed custom shadow drawing when view is in transient state.

iOS Client:

  • Supported page transformations in pager.
  • Supported reuse_id field for items in pager, gallery, tabs, grid
  • Update alpha while changing states with action_animation params.
  • Fixed operators in expressions parsing.
  • Fixed div-custom configuration
  • Added items count info to gallery scroll event
divkit - 30.10.0

Published by divkit 3 months ago

Android Client:

  • Make div-stroke.width a number.
  • Now visual errors dump includes card's json and all global variables states.

iOS Client:

  • Fixed video player initialization in VideoBlock.
divkit - 30.9.0

Published by divkit 3 months ago

Android Client:

  • Fix shadow rotation if div uses transform.

iOS Client:

  • Fixed element paths for div-gallery.
  • Added div-base.layout_provider.
  • Optimized DivLastVisibleBoundsCache.

Web Client:

  • Performance optimizations.
divkit - 30.8.0

Published by 4eb0da 3 months ago

Android Client:

  • Implemented DivMarkdownExtensionHandler to support markdown extension for text.
  • Fixed crash after removing child in gallery.
  • Fixed drawing shadows when view is invisible or gone.
  • Fixed NPE at shimmer extension
  • Fix issue when Div2View could not access variable via nested DivVariableController.

iOS Client:

  • Added local variables support.
  • Fixed infinity pager scroll.
  • Opening tooltips in new window.
  • Fixed multiple player.seek call in VideoBlock.

Web Client:

  • Fixed several issues with variable_triggers evaluation.
divkit - 30.7.0

Published by divkit 4 months ago

Android Client:

  • Add numeric value support for fontWeightValue
  • Supported id property in div-collection-item-builder.prototype.
  • Fixed div view state change happened before binding.

iOS Client:

  • Optimized ExpressionResolver.
  • DivVariableTracker state made public.

Web Client:

  • Fixed the top_offset mutation for incoming data in the text component.
divkit - 30.6.0

Published by divkit 4 months ago

Android Client:

  • Fixed multiple state switching with different root state.
  • Experimental API: added new interfaces for data serialization.
  • Introduced index variable for prototyped elements.
  • Fixed grid cell size calculation when margins are set.
  • Fixed div view state change happened before binding.

iOS Client:

  • Fixed inline image reusing in DivText.
  • Added DivVariableStorage.hasValue method.
  • Added font_weight_value support.
  • Added id property into div-collection-item-builder.prototype.
  • Fixed memory leak in VisibilityActionPerfromers.
  • Added hitTest implementation into StateBlockView to pass through touches.

Web Client:

  • Added support for the property font_weight_value in text, input, slider and select.
  • Introduced index variable for prototyped elements.
divkit - 30.5.0

Published by divkit 4 months ago

Android Client:

  • Implemented support for field page_transformation in pager.
  • Old visibility actions are no longer logged after Div2View was rebound by another DivData.
  • Fixed image drawing when its padding bigger than size.
  • Fixed showing of first and last elements in pager with infinite scroll after items changing.
  • Fix closing tooltip on cleanup.
  • Fixed Div2View state reset that resulted in broken expression subscriptions.
  • Fixed vararg functions matching.
  • Detach old indicators from pager on attach new ones.
  • okhttp library updated to version 4.11.0
  • Fixed SynchronizedWeakHashMap.toMap() due to race issues.

iOS Client:

  • Introduced index variable for prototyped elements.
  • Fixed escaped strings resolving in expressions

Web Client:

  • Added array_set_value action.
divkit - 30.4.0

Published by divkit 4 months ago

Android Client:

  • Fixed pager page size evaluation. Now all the pages are the same size, the same as on other platforms.
  • Fixed scroll of pager when more then 2 pages is visible.
  • Added array_set_value action.
  • Added dict_set_value action.
  • Added containsKey method for dictionaries.

iOS Client:

  • Fixed input paddings.
  • Fixed comparing scrollRange in GalleryViewState.
  • Added array_set_value action.
  • Added dict_set_value action.
  • Added containsKey method for dictionaries.

Web Client:

  • Added dict_set_value action.
  • Added containsKey method for dictionaries.
divkit - 30.3.0

Published by divkit 5 months ago

Android Client:

  • Fixed sizes calculation for gallery items wrapped within container.
  • Added tab_title_delimiter property support for tabs.
  • Remove focus from focused input if some clickable div were clicked.
  • Removed z/Z patterns restriction from datetime formatting functions.
  • Added max_length property support for input.
  • Fixed crash by gallery when count of items was less then column_count.
  • Supported font_feature_settings property for div-text.
  • Fixed line height calculation when range line height smaller than text one.

iOS Client:

  • Fixed items position in gallery.
  • Supported font_feature_settings property for div-text.
  • Removed z/Z patterns restriction from datetime formatting functions.
  • Fixed clipping in container.

Web Client:

  • Fixed an issue with the text property top_offset and ranges intersection.
  • Added new API's for the extensions: processExpressions and execAction.
  • Added gesture extension.
  • Fixed an issue with calling disappear_actions after instance destruction.
  • When passing data directly inside item_builder, its expressions are no longer executed.
  • Supported z/Z patterns in datetime formatting functions.
  • Added max_length property support for input.
  • Supported font_feature_settings property for text.
  • Updated error messages for invalid calls inside expressions.
divkit - 30.2.0

Published by divkit 5 months ago

Android Client:

  • Fixed line height adjustment for embedded images and image placeholdes in div-text.
  • Added padding on draw default_item in gallery.
  • Improved expression error messages.

iOS Client:

  • Fixed disappear actions for gone blocks.
  • Improved expression error messages.

Web Client:

  • Calculate is_enabled in actions before executing the entire list of actions, not in the process.
  • Implemented toString function and method for arrays and dicts.
  • Improved expression error messages.
  • Fixed unary minus operator parsing.
  • Added functions parseUnixTimeAsLocal, formatDateAsLocal, formatDateAsUTC, formatDateAsLocalWithLocale, formatDateAsUTCWithLocale and the weekStartDay parameter.
divkit - 30.1.0

Published by divkit 5 months ago

Android Client:

  • Fixed a bug where updates to global variables are lost if they occurred after the destruction of Div2View, but before the creation of a new one.

iOS Client:

  • Implemented operands lazy evaluation.
divkit - 30.0.0

Published by divkit 5 months ago

Android Client:

  • Breaking change: Classes StandardExoDivPlayerView and ZoomExoDivPlayerView replaced with common ExoDivPlayerView
  • Breaking change: Classes removed from public API: ExoDivMediaSourceAbstractFactory, ExoDivPlayer (accessible by interface DivPlayer), ExoDivPlayerView (accessible by interface DivPlayerView)
  • Breaking change: Removed method isCompatibleWithNewParams(scale: DivVideoScale) from DivPlayerView
  • Breaking change: Removed method makePlayerView(context: Context, additional: Map<String, Any>) from DivPlayerFactory
  • Breaking change: Use explicitly passed ExpressionResolver in DivActionHandler, Div2Logger, DivExtensionHandler and custom classes.
  • Breaking change: Restricted variable names with consecutive dots and with a trailing dot.
  • Added gesture extension that allows to perform div-actions when swipe gesture happens at specified div.
  • Added item_builder property support in the container component.
  • Added svg support to all DivImageLoaders
  • Added ability to forcibly release video players by releaseMedia() method of Div2View.
  • Added Jetpack Compose interoperability for Div2View
  • Calculate is_enabled in actions before executing the entire list of actions, not in the process.
  • Do not set new border or background when it has no changes.
  • Fixed text height calculation when line height specified explicitly.
  • Fixes for complex rebind algorithm
  • Old visibility actions are no longer logged after Div2View was rebound.
  • Supported methods in evaluable expressions, such as 123.toString().
  • TextureView is now a default view for DivVideo.

iOS Client:

  • Breaking change: Changed method signature in ExpressionResolver from resolveString(_ expression: String) -> String to resolveString(_ expression: String) -> String?.
  • Breaking change: Protocol DivStateInterceptor and corresponding implementation DivStateInterceptorImpl was removed. Please use DivExtensionHandler instead.
  • Breaking change: public API for DivActionURLHandler.updateReason has been changed.
  • Breaking change: Removed DefaultDivActionLogger (replaced with EmptyDivActionLogger). DivActionLogger became deprecated, use DivReporter for actions tracking.
  • Breaking change: Removed DefaultShimmerViewFactory.
  • Breaking change: Removed DivVariablesStorage.ChangeEvent.oldValues due to performance issues.
  • Breaking change: Removed urlOpener argument from DivKitComponents initializer. Use urlHandler instead.
  • Breaking change: Removed UserInterfaceAction.Payload.composite.
  • Breaking change: Removed UserInterfaceAction.Payload.json.
  • Breaking change: The signatures of the setSource functions have been changed: they are now marked as async to reduce main thread locks.
  • The minimum version of the DivKit has been increased to iOS 13.
  • Disallowed variable names with consecutive dots or with trailing dot.
  • Double quotes are no longer supported in string literals.
  • Fixed animation in gallery.
  • Fixed numbers to string casting in expressions.
  • Fixed position of gallery element after scrolling with action.
  • Fixed unary minus operator parsing.
  • Fixed validation in expressions.
  • Fixed view reuse in ShimmerImagePreviewExtension.

Web Client:

  • Breaking change: actions from variable_triggers lead to execution of a callback onStat with type = trigger.
  • Disallowed variable names with consecutive dots or with trailing dot.

Kotlin JSON Builder:

  • Changed the way of how primitive array elements are added.

This change supports usage of expressions in array elements. As for now, primitive array elements (e.g., transition triggers, gradient backgrounds) must be
wrapped with either divkit.dsl.core.valueArrayElement ordivkit.dsl.core.expressionArrayElement.

divkit - 29.15.0

Published by divkit 6 months ago

Android Client:

  • Added ability to set a specific logging level using DivKit#setLogLevel.
  • Added ability to forcibly release video players by releaseMedia() method of Div2View.
  • TextureView is now a default view for DivVideo.
  • Replaced String with CharArray at expression tokenization process.
  • Recreating subscriptions to local variables in case Div2View is recreated after destroying its lifecyclerOwner in order to preserve the state of local variables.
  • Fixed that invalid base64 preview in DivVideo may cause IllegalArgumentException.
  • Fixed NoSuchElementException on handling disappear actions.
  • Fixed accessibility of gallery children when exclude a11y mode turned on.
  • Fixed that video screen could show up before preview was rendered.
  • Fixed state variable binding loop.

iOS Client:

  • Removed mask from GalleryView to reduce offscreen rendering.
  • Added toString method/function for arrays and dictionaries.
  • Fixed arrays and dictionaries convertion to string.
  • Removed unnecessary re-creation of gestureRecognizers.
  • Fixed resetting inconsistent gallery state in pager.
  • Fixed allocated unfair lock in DivBlockStateStorage.
  • Added toString(string) function.
  • Added scale support in Lottie animation.
  • Added len function for arrays.
  • Fixed resetting video when elapsed_time_variable is not set.
  • Fixed pager state after reuse.
  • Fixed looping of video player events.

Web Client:

  • Persistent variable storage has been implemented, including the action set_stored_value along with the function getStoredStringValue and others.
  • Fixed an issue with calling disappear_actions when destroying a component (for example, when hiding a tooltip).
  • Supported flag is_enabled for input.
  • Fixed an issue with the patch changes after the tooltip action.
  • Added toString(string) function.
  • Added support for methods in expressions, including toString, getString, getBoolean, getInteger, getNumber, getUrl, getColor, getDict, getArray.
  • Added support for the menu_items property inside actions (with a additional customization properties menuPopupClass and menuItemClass).
  • Fixed an issue with the nested longtap_actions and simultaneous actions and longtap_actions processing.