JourneyApps Product Team

Runtime 4.88.20 (Supported Stable)

AUTHOR: JourneyApps Product Team

We are excited to announce that runtime version 4.88.20 stable has been released.

Version 4.88 introduces the ability to upload and apply custom fonts to an app; includes updates to app digest cycles for improved app performance; and includes enhancements for the capture-signature UI component.

You can use this version of the runtime by selecting it from the list of stable runtime versions under App Settings/Runtime Version in OXIDE.



  • A regression that caused object-table callouts to no longer function correctly.

    • Note that for correct linting in OXIDE, make sure your app's runtime-build version is 2.3.2 or above.



  • An issue where calendar days in the date picker could sometimes be offset in locales other than English/EN.



  • An issue that prevented users from scrolling in an overflowing fullscreen object-table.

  • State changes to object-table (e.g. paging) causing other states to be changed (e.g. fullscreen being exited).

  • Double left and right padding on display object-table cells.

  • view.getSize() throwing an error after live app updates during development.



  • Added a check to catch Cannot read properties of null (reading '$ref') errors.



  • A regression that resulted in users not being able to scroll through a view, after scrolling through an object-table on Desktop.

  • An issue that would sometimes cause buttons on an object-table to not render.

  • A UI issue where selection dropdown boxes' background color would render as the same color as its text.



  • Dropdown components not being set as the active component when the dropdown dialog was opened. This caused a bug where the view or dialog would scroll to the previously selected dropdown upon selecting an option.

  • A bug where an object-table showed double headers when scrolling.




  • An issue where the capture- and display-coordinate components would throw an error upon loading.

  • A bug where using an object-table inside a dialog on a small screen would cause constant and rapid collapsing and expanding.



  • Added improvements that should catch most click-through issues on mobile devices. These occurred when clicking inside a component such as actionSheet, dialog and context-menu, triggered a different component behind it.


  • A regression where the sort-value attribute of an object-table column threw an error when using $object.

  • An issue with power-bi component causing an error when the component loads and an issue causing the on-interaction attribute to fail.

  • An issue causing a race-condition with the map component affecting the capture- and display-coordinates components.

  • The font-size attribute being ignored on certain input components

  • ActionSheet popup not being positioned correctly when called from a button-group click.



  • Removed the unused searchbar at the top of the object-table filter modal used on mobile devices.

  • Added a search icon to the filter inputs on the object-table filter modal.


  • The following issues with the object-table UI component:

    • Table button-group and pagination controls not collapsing on smaller screens.

    • Table pagination controls overflowing off-screen. These controls will now render in smaller iterations based on the screen size.

    • Incorrectly sorting on columns where no sort-value had been provided.



  • Allowing a user to interact with an object-table even when set to be hidden.

  • Theme and padding on an object-table when there are no results to be displayed.



  • Support for custom image asset icons on floating action button button-group and navigation general-section items.


  • An issue where locked users would not get navigated back to the login screen. This also caused the no enrolled user error when the container was re-opened.

  • An issue where the ActionSheet popup did not show at the click location when called from a card or list component.

  • An issue where an object-table in fullscreen mode would render over its label.

  • Input dialogs (e.g. from BarcodeScanner) missing the bottom padding between the input and the button container.

  • An issue where disabling a floating action button button-group would not disable a child button as expected.

  • An issue where a hidden primary button-group created whitespace at the bottom of the screen.



  • An issue where users could not select the last item in a dropdown list (e.g. object-dropdown, optionList).

  • An issue where position and alignment attributes relating to icons and labels would not resolve correctly. The issue affected card, list, info, info-table and various input and display- components.

  • An issue where the PDF previewer (in the capture-file / display-file components) would always render in portrait even if the pdf was in landscape.



  • A number of issues with object-table, namely:

    • Component method setState() not setting fullscreen correctly.

    • Double clicking into an edit-text cell will now remain in edit mode.

    • The on-change event not triggering on mobile devices.

  • An issue with the navigation drawer's background color not applying the style-header-background attribute.

  • An issue with object-dropdown and optionList dialogs preventing users from accessing the last item on some mobile devices.

  • An issue causing the on-long-press action of the back button to not work correctly.



  • An issue where the navigation component's logo would not update until navigating to a new view.



  • A regression with layout UI components, namely columns and grid, that caused nested hidden components to trigger validation.

  • An issue where the html UI component would show a scrollbar unexpectedly, specifically on Windows.



  • Internal updates to the capture-coordinates and display-coordinates components.



  • An issue where the edit-typeahead dropdown in an object-table was not always fully visible when the column was one of the last columns of the table.



  • A regression causing the checkboxes in an object-table edit-boolean cell to not center correctly when no label was provided.

  • An issue where the capture-coordinates component would take long to load when entering a view from a cold start.



  • An issue with the capture-file component causing it to get stuck in an infinite loading state.

  • A regression resulting in a difference in row height when using frozen columns in an object-table.



  • A regression where a button with an empty label displayed full-width, instead of shrinking to the size of the icon.

  • An issue where a button or button-group with attribute type="primary" did not appear at the bottom of the view.

  • An issue where object-table columns with action icons did not render the icon at the end of the cell.



  • The ability to upload custom fonts and apply them in an app. Read more about this in the docs here.

  • New font attribute to UI components to override the font on a component level.

  • The following attributes to the capture-signature component:

    • orientation - See its docs here.

    • dialog-title - See its docs here.

    • Advanced styling attributes: dialog-title-color, dialog-title-background-color, dialog-divider-color, dialog-background-color, dialog-icon-color


  • The draw-pad of the capture-signature component now includes a “Sign here” title to improve the user experience.

  • App digest cycle performance (i.e. when the app recalculates values in the view):

    • We changed how often digest cycles are being run/enqueued:

      • Previously, most actions triggered (or enqueued) a digest cycle. This could cause multiple digest cycles to become enqueued and then at some point would block the user for an extended period until all digest cycles completed.

      • Now, digest cycles are only triggered when necessary. Specifically:

        • Blocking (non-concurrent) actions: a digest cycle is only triggered after all blocking actions complete.

          • Note: when a blocking action takes longer than a set period, a blocking spinner appears, preventing the user to perform any other actions.

          • Most actions are of this kind, e.g. components’ on- events and init and resume functions.

        • Non-blocking (concurrent or asynchronous) actions: only the last action to complete will trigger a digest cycle.

          • An example of this is the on-change event for a text-input.

    • Query results are now cached and re-used in digest cycles, only re-running the queries when a JS/TS function is called, such as in the case for on-scan, on-capture and on-change on input components. This makes the behavior of digest cycles more consistent with that of version 4.84 and previous versions of the JourneyApps Runtime.

Powered by LaunchNotes