Release Notes - Enketo - version 2.8.1

We have upgraded Enketo Express from version 2.5.6 to 2.8.1 on the following servers:

  • HHI on 29 September 2021 at 21:00 UTC.
  • OCHA on 5 October 2021 at 04:25 UTC.

This is a major upgrade that includes many performance improvements, bug fixes and new features such as last-saved and support for digest().

Thank you to everyone who helped with testing over the last few months as we went through several iterations before finally deploying to the whole community. Your efforts are highly appreciated and we hope this will prove to be a welcome update to your workflow and critical work.

The remainder of the changes are included in Enketo’s change log, which is excerpted below.

[2.8.1] - 2021-09-10

  • #293 Form’s default media references are removed after submission, image labels not rendered for new forms

[2.8.0] - 2021-07-13


  • Support for odk:setgeopoint for odk-instance-first-load and xforms-value-changed events.
  • Support for last-saved values!


  • Updated Russian translation.
  • Increased maximum number of columns in Grid Theme from 10 to 13.


  • Range default or loaded value (number) not shown.
  • Distresspicker default or loaded mercury level not shown.
  • Radiobuttons value still shown in view after programmatic clearing (e.g. by a calculation).
  • Triple-nested repeats and higher are not created properly.
  • The “d” query parameter to supply dynamic defaults is decoded twice.
  • Static resources caching at web-server level could break offline functionality.
  • When loading a long text default value into a multiline text widget, it doesn’t expand automatically.
  • When using “goto” on a comment question with a form divided into pages, it doesn’t open the comment dialog.
  • XPath inconsistencies with date-as-string result formats.
  • XPath Result of if() is no longer cast to a string (recently updated ODK XForms spec).

[2.7.3] - 2021-04-20

  • decimal-date() function (as it was an accident and is not in the spec).
  • Improved accessibility for screen readers.
  • Improved performance.
  • Using decimal-time() with a node-set parameter fails.
  • The not-equals operator fails when preceded by a node-set without a trailing space.
  • Using uuid() with a node-set parameter fails.
  • Redirect doesn’t work with a base root url.

[2.7.2] - 2021-04-12

  • Using node() mid-axis, causes an exception.
  • Using ends-with() with a node parameter causes an exception.
  • Using not() with an empty node-set parameter returns false.
  • Using uuid() with a node parameter fails.
  • Using exp(), exp10(), log(), log10(), sqrt() with node-set parameters returns incorrect results.
  • Using randomize() with a non-nodeset parameter does not throw an error.

[2.7.1] - 2021-04-07

  • Completed Turkish translation.
  • Some unlaunched previews (using a form query parameter) fail to load.

[2.7.0] - 2021-04-02

  • Default form languages will now be shown upon load regardless of browser language.
  • Preview button does not switch to another language.
  • Forms containing select questions with very large lists of options become unbearably slow to validate.
  • Some relevant groups will no longer ignore page break rules.
  • Native XPath functions do not handle node-set arguments.

[2.6.3] - 2021-03-18

  • Exception occurs with lazy evaluation of and-or statements.

[2.6.2] - 2021-03-02

  • Setvalue/xforms-value-changed inside a select multiple question is not working.
  • Setvalue/xforms-value-changed with trigger inside a repeat and target outside the repeat does not work.
  • A calculation without form control inside a non-relevant repeat with 0 instances, fails to prune non-relevant nodes.
  • Misplaced image-map when used in conjunction with complex custom comment widgets (OC).
  • The function jr:choice-name causes an exception if the choices list of radiobuttons or checkboxes is empty.
  • The function jr:choice-name causes an exception if the choices list of pulldown selects is empty.

[2.6.1] - 2021-02-04

  • The uuid() XPath function implementation has improved with a reduced chance of collisions.
  • Readonly views with triggered calculations load with a TypeError.
  • Action setvalue/odk-instance-first-load and setvalue/odk-new-repeat actions are not properly added for radiobutton and checkbox questions (in enketo-transformer).
  • Lazy and/or evaluation within function arguments (in openrosa-xpath-evaluator).
  • Action setvalue/odk-new-repeat does not run non-form-control actions before form controls (since 5.17.0).
  • Static itemsets with radio buttons inside multiple repeat instances do not load correctly.
  • Draw widget changes file name whenever browser window resizes.
  • Draw widget updates file name when canvas loses focus if drawing hasn’t changed.
  • Nested XPath expressions with dead branches cause an exception (since 2.6.0).
  • Installation issue in Travis-CI, possible affecting other servers as well.

[2.6.0] - 2020-12-28

  • Support for digest() function.

Let’s do the OCHA deployment at the same time (2100 UTC) on Monday, October 4 if nothing goes wrong. I updated the post above for easier reference :+1:


The deployment to OCHA is complete.