Potentially breaking upcoming change to template processing: PLEASE READ


The library being used for handlebars supports a nonstandard syntax for accessing array values. This syntax will be going away soon. If you are using the “bad” syntax, {{ foo[bar] }}, change it to the “good” syntax {{ foo.[bar] }} and let us know that you were using the “bad” syntax.

Back in version 0.52 a bug was discovered when accessing array items in handlebars templates, 4615. Basically accessing an item in an array using syntax like, {{ foo[bar] }} resulted in an error. The bug was tracked back to a version bump in the library we use to process handlebars, handlebars-rust. The solution was to just revert the version bump and pin the dependency to the previous version. That was a fine solution at the time, but upon further research we found that the {{ foo[bar] }} was actually nonstandard syntax for handlebars. The proper syntax should be {{ foo.[bar] }}. The bug discovered was due to a bugfix in the handlebars library. We would like to upgrade that library to a more recent version. Unfortunately the library does not return a good error in this case, 246; this makes it difficult for us to provide a deprecation notice or proper error messaging. We will be upgrading the library to a newer version in the future, but we would like to prevent as much turbulence as possible.

So what does this all mean to me you might be asking? Well fortunately the current version of the library we’re using supports both syntaxes. So if you are already using the “good” syntax then you have nothing further to do. If, however, you are using the “bad” syntax then we ask you do two things: 1) Change to the good syntax; 2) Let us know that you were using the “bad” syntax. We want to give folks time to migrate, but we would also like to get a feeling for how many people are using the “bad” syntax in order to help us determine when to actually make the change.

Issue 6323 will be our tracking issue. Just comment there if you are using the “bad” syntax.