Release Notes 23.3

Appfarm Create was upgraded yesterday evening. Here are the feature highlights!

First come, first served

All updates to records in the database is ‘last write wins’ by default, meaning two users editing the same entry at the same time, the last edit wins. A new setting, Strict Object Versioning, brings justice to the updates, allowing for ‘first update wins’!

Offline is now online!

Alone on top of a mountain, or at the bottom of a well, and feel the urge to register that support ticket you’ve been thinking about all day? You may now design Apps for offline mode!

If you want to learn more, please check out this article.

More translations, por favor

All built-in texts in Apps are now automatically translated to the active client language!

A few more productivity boosters

  • Data Binding Dialog: Recently used Data Sources and the Data Source for the Object in Context (if present) will now appear on the top
  • Property mapping in Web Requests and Service Endpoints: You may now Automap Node Names - in the cases where the incoming property names match the Object Class Property node names.
  • Global Data Model: You may now see the data model for a single App or Service

….and one breaking change

We are adding a new layer of security for running Services from Unauthenticated Apps: Environment Config now has a setting for allowing anonymous access to Services, that needs to be enabled for these cases. All affected solutions have been notified.

What’s New

  • Language support for UI components (#681)
  • Support for recursive UI iteration (#2612)
  • GeoJSON: Support for lineString (in additions to polygon) (#2615)
  • Make service variables available for result mapping when service is called from client (#2838)
  • Support for Object Classes scoped to apps and services (#3227)
  • Implement support for databinding Built-in App variables (#3229)
  • Add config for public access of services and graphql (#3259)
  • Support for opening and using an app while offline (#3275)
  • Import Data: Support source format Text (#3302)
  • Concurrency control: New setting on ObjectClass - Strict Object Versioning (#3303)
  • On Offline / Online event handler (#3313)
  • Service Interface - Implement option to auto map Node names for body data (#3407)
  • Implement service variable holding user id of calling user when using service account impersonation (#3424)
  • New Data Source Attribute in client: Skip function properties (#3430)
  • UiSelect: Implement sorting option for dropdowns (#3433)
  • Implement date now/today in database filter (#3478)
  • Maintenance Mode Text: allow multi-line strings (#3487)
  • New Event Handler: On Browser History Change (#3508)
  • Internal: Implement support for dedicated data-service deployments for client-service (#3572)


  • Data Binding dialog - Remember recently used Data Sources (#2373)
  • UiMultiSelect: Option for excess tags display when Autocomplete and Tag Limit is set (#2833)
  • Handle “Cast to ObjectId failed for value” errors due to changed data types (#2855)
  • Improve error messages when sending emails using Mailgun. (#2892)
  • Automatic Snapshot: Tooltip + Show info if not enabled (#3020)
  • Visualize Data Source(s) in context in Data Binding dialog (#3177)
  • Roles as properties on User (#3194)
  • Add Object Class Property: Autofocus on Property Name (#3251)
  • Public apps does not work in iframes in Safari (#3255)
  • Support ECMAScript 2020 in function editor (#3301)
  • Make property “App” for push notification action node required (#3309)
  • If you run an action with an if action node, the condition is always evaluated as false if there are no action nodes in the if action node. (#3331)
  • Add referencecheck for Popovers (#3352)
  • Public App when custom login (default app) is used: Not accessible without login (#3401)
  • Data Binding dialog should scroll to selected values when opened (#3425)
  • Improve devtools message when Reply to in Send email is invalid (email provider used) (#3445)
  • UiTextEdit: Support databound adornment text (#3447)
  • Service: Mock created date / updated date / created by / updated by på services (#3451)
  • Click on Data Source in Property Pane should not navigate to Data view (#3463)
  • Services: Implement Iterator Params and make all Context Params available in condition editor (#3491)
  • Better visualization of role names in permissions (#3494)
  • Ui Table - Improve UI of default table filters so that the “Clear all” button is always visible (#3587)
  • Show Generated Data Sources - New Dev Tools Setting (#3731)

Bug Fixes

  • Appfarm Create: Glitch in UI designer appears when switching between views with visibility groups (#2997)
  • Initially disabled data sources that are enabled are emptied after a while (#3133)
  • If you use group by Day on a line chart with navigation the minimum range set ends up being minimum range + 1 day (#3246)
  • Remove Public Access from App settings (#3256)
  • UiTextEdit: With updateOnKeypress and onEnter, onChange runs unnecessary when the enter-key is pressed (#3305)
  • App Variables.Client IP is incorrect (#3317)
  • Built-in properties for file objects not available in GDM function property or in Update Object action node (#3333)
  • Allow using Escape in Keyboard Event Handlers in Dialog (#3335)
  • Databound visibility to a static List of type Subheader doesn’t update in client when the condition is changed more than once (#3337)
  • Bug: Client filter based on Current User Roles doesn’t work and crashes client (#3378)
  • Condition conversion error - crashing client in latest version (#3382)
  • Gantt - When dynamic sorting is enabled, the app crashes when add a new element (#3392)
  • App Health: Data Source property only used in functions shows as not in use (#3395)
  • Adding Input Validation to a Datetime query parameter in a Service Endpoint ends up as ‘undefined’ (#3404)
  • UiDatePicker: If no object exists the datepickers onchange crashes (#3405)
  • Create File Object: Image resizing on non-runtime objects returns original file (#3416)
  • Data source with cardinality 1 holds two objects (#3423)
  • Renaming Actions: Not possible to rename an action right after it’s been renamed (#3431)
  • If you use an action without name () as the process action in a service endpoint it is invisible (#3450)
  • Is First / Last in Datasource: Undefined for all entries when Client Filters exists in Data Source (#3452)
  • Clarify ‘Update Account Image’ forbidden error message (#3466)
  • Enum values of type integer with value 0 are not shown as selected in an editable table column (#3469)
  • Services: Generated DS are not created for deep databindings only used in Custom response body (#3473)
  • Date Picker Min Date and/or Max Date appear visually not as disabled when Week Number is enabled (#3477)
  • Duplicate Object: Object property is not copied if set as Read Only (#3490)
  • Boolean Labels not used as category label in Basic Chart when using a boolean value as category (#3547)
  • Line/Area Chart: Does not take App Time Zone into account (#3591)
  • Advanced Charts: Issues with English US, Armenian and Polish calendar locales (#3603)
  • Filtered Persist: If filter is dependent on some builtin-properties (eg. Object State), Data Sources of the same type is not notified of change. (#3664)
  • Read Objects: When reading a runtime file object from one runtime ds to another ds the filedata (__file) is not read (#3684)
  • Set client language causes onAppLoaded to be triggered again (#3710)

What do you mean by automatically? Do we still have to specify the translations in the Internalization > Translations? I’ve tried setting the active client language to English, but it only translated words we specified ourselves.

Hi! Buillt-in text is for example the text that appear when using a Table in your Apps (the Table Filter menu, Search etc). It is text that cannot be configured in your Apps. All other text is text you have defined yourself in your Apps, and those texts needs to be translates as before (from Internationalization → Translations).