Release Notes 23.4

Fall is here, at least in Norway, and our latest release is out! This time, it is loaded with bugfixes and improvements. Here are the feature highlights.

:bell: Push notifications to everyone

Everyone loves notifications - they are all around us all day. Why not another one from an Appfarm App?
Push notifications have been around for a while, but only on Android. iOS has (finally) accepted the PWA push notifications. Read more about the Push Notifications and Request Permissions action nodes here.

:bulb: A few noteworthy improvements

  • Copy/Paste Conditional Styles, Transitions, Transforms and Motions
  • Translations: Search is now enabled for this (potentially huge) table
  • New settings available for Tooltip, allowing for line breaking!
  • Container with Iterate data source: You may now change the iterating data source with another data source of the same type, with automatic replacing all usage on child levels.
  • Have an object class with Random Identifier? You may now generate this identifier for all existing records as well. Read more here.
  • Responsive Images: Enabling this serves up images in a size that matches the browser’s viewport, decreasing page load times and reducing bandwidth. Read more here.

…and one deprecated feature

Built-in support for logging to Google Analytics is now deprecated in Appfarm Create. The previous built-in support for Google Analytics Universal has already been deprecated by Google, as they are transitioning to GA4. We now offer a guide on how to integrate with GA4 instead. Read more here.

What’s New

  • Create: Implement copy/paste for Conditional Styles, Transitions, Transforms and Motions (#2482)
  • Implement support for dynamic page titles in browser tab (#3106)
  • Implement support for duplicate role (#3151)
  • Implement search in Translations table (#3332)
  • Support Import Data action node in services (#3448)
  • New action node “Request Permission” supporting Web Push for iOS (#3468)
  • Add execution mode on foreach action node (#3496)
  • Implement support for responsive images (#3500)
  • Only show references from the current app or service when “Find References” is used from app or service data (#3530)
  • Support translations on View name (#3533)
  • Create: Reset rezisable panels to default size on double click (#3546)
  • Implement support for max number of lines with ellipsis for multiline text (#3578)
  • Accessibility: Add Non-persistent option on the tooltip property (#3585)
  • UI Advanced Chart: Add On Series Clicked event handler (#3598)
  • Services: Allow duplicate readable ID on endpoints where verb and URL params are non-overlapping (#3607)
  • Farmer’s Market: Support app bundles (#3618)
  • UI Map: Add WMS layer support (#3639)
  • UI Icon Button: Support for custom background color (#3666)
  • Create: Option to replace references when replacing iterating datasource in UI Container with datasource of same type (#3669)


  • Tooltip: new Line-break property (#2208)
  • Disable built-in Google Analytics functionality (#2716)
  • Implement navigate to root flag on the Navigate Action Node (#2902)
  • Built-in identifiers: generate identifiers for existing objects (#3010)
  • Make it possible to disable default border on persistent drawer (#3138)
  • UI Table: Built-in Search doesn’t consider hidden columns (#3156)
  • Create: Deploy: Inform if not all changes in Staging are scheduled for deployment (#3181)
  • Allow for closing all dialog boxes within Create with esc-key (#3299)
  • Support increasing POST payload limits for service endpoints (#3346)
  • Allow for bigger flexibility regarding phone numbers on Create User Account (#3362)
  • Allow for greater flexibility for panels width/height in Create (#3363)
  • Offer the same context menus for recent and favourite views as for alphabetically sorted views (#3379)
  • Make it possible to copy code that’s inside a blue dot (#3497)
  • Improve display value and preview of functions, scripts and other code in Property Pane (#3505)
  • Tag tooltip for long labels is not always shown when it should (#3532)
  • UI Combined Chart: On Zoom event handler action params: X Axis Min / Max not available (#3542)
  • UI Coded Component: Support Open Popover with ‘Infer from the event’ (#3549)
  • UI Select: Make Autocomplete available also when Selection Type is set to Basic (#3556)
  • Add the ability to generate plaintext property for existing Rich Text data (#3570)
  • Action node “Advanced search” should be possible to filter (#3571)
  • Support rounded corners for drawer (#3577)
  • Shareable Link Info: Set og:type meta tag to ‘website’ (#3580)
  • FilterEdit: Support filters and conditions of type === (#3588)
  • Email Action Node: Ensure that the error message thrown conforms to the standard error message format (#3605)
  • UI Button: Allow button variant to be set as a conditional property (#3615)
  • Farmer’s Market: Downloaded apps / app bundles should always have scoped datamodels (#3619)
  • UI Basic Chart: ‘Show legend’ with no datasets in basic charts (line, bar) results in ‘undefined’ in the legend (#3621)
  • Services / apps: Generated datasources should inherit setting skip function properties (#3634)
  • Send SMS: Add visual feedback if text too long (in Create) (#3635)
  • Deprecate “Enable Push” in App Settings (#3651)
  • Deleting object with delete constraint to self or other object to be deleted results in Cannot delete - bound by delete constraint (#3653)
  • Offline: Clean data from device if app is deleted or no longer marked as offline (#3867)
  • Increase size limit when persisting file objects (#3877)

Bug Fixes

  • Refresh user role cache when creating/changing/deleting a new Service Account (#2864)
  • Cardinality badge overlaps header in App Data (#3153)
  • Triggering an action that is already running while trying to import a file causes the error “Action Node failed: Create File Object” (#3502)
  • Select (dropdown) should reset the property when creating and replacing a runtime object but doesn’t (#3518)
  • If you duplicate an action node “Duplicate objects” the duplicated action node gets a different Selection when Data Source is changed (#3529)
  • The default theme colour flashes briefly before settling on the theme in login config (#3534)
  • First creation of public app in a solution requires restart of services (#3540)
  • UI Advanced Chart: Static dataset color not working (#3541)
  • UI Text Edit: Autofill values does not trigger value change (#3551)
  • Data type does not get updated when changing name of the referenced Enum/Object in global data model (#3557)
  • UI Select: When autocomplete is enabled and the Select is disabled, the text inside the Select is not displayed visually as disabled (#3562)
  • Repeating containers do not update when objects are changed so they disqualify from active client filter (#3566)
  • Import Data: Improve feedback when parsing fails (#3573)
  • Catch Exception: Custom Exceptions with Custom Codes defined are not caught (#3584)
  • UI Table: Without columns crashes the client and lacks validation in Create (#3601)
  • Create: Crashes in action node Run Service if data source is removed by collaborator (#3613)
  • UI Map: Current position and zoom not updated correctly (#3617)
  • Reference Finder: References in Breadcrumbs Navigation Result in Empty Reference for Actions (#3629)
  • Deleting objects with deep cascade delete can result in Cannot delete - encountered circular reference (#3645)
  • Secrets: When a secret has been set to secret type “OAuth2 Value”, it cannot be changed back (#3672)
  • Labels for deep databound booleans doesn’t work (#3677)
  • Condition statement not showing left side of condition when using object state = synchronized (#3709)
  • UI Rich Text Edit: Create crashes when toolbar is shown and all toolbar content removed (#3711)
  • Web Request with Body Type Raw: Option to send Blob data and not only Content URL for File Data Sources (#3754)
  • Offline: Option to reset App Variables on load (#3778)
  • UI Text Edit: On Value Change (on self) + Update on keypress: Changed behaviour, UI not updated (#3827)
  • Persist file objects can fail with “RangeError: offset is out of bounds” with previously persisted files in data source (#3896)
  • Restore personalized deploy functionality (lost in 23.3) (#3909)
  • UI Text Edit: On Enter + Update on Keypress: Not correct behaviour (changed behaviour in 23.3) (#3922)
  • Dialog for selecting initial solution in Create is dismissable by click outside but should not (#3940)

Yet another great update!

Some questions/feedback:

As I understand, this has only been linked to the App name. How can this be changed dynamically now?

This is a bit annoying when the function is long, as it is hard to open the function editor (the preview is over the on click, as showed here:

I see this only occurs for the image component, but not when using images as a background of a container. We use the latter the most because of better control of the size etc of the image, so to include this feature there would also be nice!

Thanks for feedback!

The Page Title can be altered dynamically by changing the App Variable named Document Title. Your other comments have been noted.

1 Like