PackageTrack
Sign in Get early access

handlebars

Handlebars templating implemented in Rust.

6.4.4 89M downloads/mo #866 most downloaded on crates.io sunng87/handlebars-rust

What this package is like to depend on

Last release 11 days ago

12 Aug 2026

Release timing varies

gaps range from 3 weeks to 10 months

Most releases are documented

notes for 97 of 157 stable releases

3 versions withdrawn

withdrawn after publishing

12 years old

187 releases · first in 2014

5 releases in the last 12 months

see the full history below

Release timeline

187 releases · Dec 2014 to Aug 2026
2015 2017 2019 2021 2023 2025
Release Pre-release Withdrawn

Releases

latest 60 of 187
  1. 6.4.4 12 Aug 2026
    Release notes

    What's Changed

    • test: add shared TestHandlebars helpers and adopt across render tests by @sunng87 in #771
    • chore(deps-dev): bump websocket-driver from 0.7.4 to 0.7.5 in /playground/www by @dependabot[bot] in #772
    • chore(deps-dev): bump fast-uri from 3.1.2 to 3.1.4 in /playground/www by @dependabot[bot] in #774
    • chore(deps-dev): bump shell-quote from 1.8.4 to 1.10.0 in /playground/www by @dependabot[bot] in #777
    • chore(deps-dev): bump webpack-dev-server from 5.2.5 to 5.2.6 in /playground/www by @dependabot[bot] in #776
    • chore(deps-dev): bump webpack-dev-server from 5.2.6 to 6.0.0 in /playground/www by @dependabot[bot] in #779
    • chore(deps-dev): bump fast-uri from 3.1.4 to 3.1.5 in /playground/www by @dependabot[bot] in #780
    • chore: disable preseve order feature by default by @sunng87 in #783

    Full Changelog: v6.4.3...v6.4.4

    Open source →
    Release notes
    • [Changed] We have to revert preserve_json_order as a default feature. Users who need this can still enable it for handlebars-rust, or enable preserve_order for you serde_json.
    Open source →
  2. 6.4.3 12 Jul 2026
    Release notes

    What's Changed

    • chore: drop pprof dev-dependency to remove vulnerable quick-xml by @sunng87 in #769
    • chore(deps-dev): bump ws from 8.18.0 to 8.21.0 in /playground/www by @dependabot[bot] in #770
    • feat: add preserve_json_order feature flag by @sunng87 in #767
    • fix: handle leading tilde on else if chain tags by @sunng87 in #768

    Full Changelog: v6.4.2...v6.4.3

    Open source →
    Release notes
    • [Fixed] Panic when using whitespace omission (~) on an else if chain tag, e.g. {{~else if cond}}. The leading tilde is now handled consistently with {{~else}} [#766]
    • [Added] preserve_json_order feature flag that gates serde_json's preserve_order feature. Enabled by default to keep insertion-order key iteration; disable with default-features = false to restore alphabetical JSON object key ordering. [#767]
    • [Changed] Drop the pprof dev-dependency (and its inferno / quick-xml transitive deps) from benchmarks. This removes the vulnerable quick-xml 0.26 transitive dependency ([#764], [#765]); the upgrade was blocked upstream because pprof pins inferno 0.11. Benchmarks now use plain criterion without in-repo flamegraph generation.
    Open source →
  3. 6.4.2 24 Jun 2026
    Release notes

    chore: Release handlebars version 6.4.2

    Open source →
    Release notes
    • [Fixed] Access to local variables like @key, @index, etc. in #with and partial block [#758]
    • [Fixed] Preserve ordering when iterating an array context inside a partial that receives hash parameters [#760]
    • [Changed] Enable serde_json preserve_order feature. JSON objects are now iterated in insertion order (matching Handlebars.js semantics) instead of alphabetical key order. This fixes index-key ordering for array contexts converted into objects by partial hash parameters (e.g. "10" no longer sorts before "2").
    Open source →
  4. 6.4.1 16 May 2026
    Release notes

    chore: Release handlebars version 6.4.1

    Open source →
    Release notes
    • [Fixed] Allow using @partial-block with block include and fallback template [#752]
    Open source →
  5. 6.4.0 02 Jan 2026
    Release notes

    What's Changed

    • fix: allow colons in identifier by @sunng87 in #706
    • docs: remove incorrect parameters from docstring by @vsbits in #707
    • chore(deps-dev): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /playground/www by @dependabot[bot] in #709
    • expose DirectorySourceOptionsBuilder & added doc example by @markwellis in #710
    • chore(deps): update pprof requirement from 0.14 to 0.15 by @dependabot[bot] in #714
    • chore(deps-dev): bump webpack-dev-server from 5.1.0 to 5.2.1 in /playground/www by @dependabot[bot] in #715
    • chore(deps): update criterion requirement from 0.5 to 0.6 by @dependabot[bot] in #712
    • feat: Added dynamic partial blocks by adding support for empty block closing tags by @henriquecolini in #713
    • feat: Export WriteOutput in public API by @SuchAFuriousDeath in #717
    • chore(deps): bump on-headers and compression in /playground/www by @dependabot[bot] in #718
    • chore(deps): update criterion requirement from 0.6 to 0.7 by @dependabot[bot] in #719
    • feat: else support for boolean helpers by @exoego in #720
    • Fix the build with -Zminimal-versions by @ppentchev in #723
    • Add Ability to Unregister Helpers by @Lepidopteran in #725
    • chore(deps-dev): bump node-forge from 1.3.1 to 1.3.2 in /playground/www by @dependabot[bot] in #727
    • Option to enable recursive resolution of variables by @wez in #730
    • chore(deps): update criterion requirement from 0.7 to 0.8 by @dependabot[bot] in #728
    • chore(deps): bump qs and express in /playground/www by @dependabot[bot] in #731
    • fix: correct partial-block render by @sunng87 in #732

    New Contributors

    Full Changelog: v6.3.2...v6.4.0

    Open source →
    Release notes
    • [Fixed] Reimplement partial-block, fixed partial-block resolution issues [#732]
    • [Added] recursive_lookup mode [#730]
    Open source →
  6. 6.3.2 16 Mar 2025
    Release notes

    What's Changed

    • fix: partial context with literal parameters by @sunng87 in #695
    • feat: correct implementation of partial block by @sunng87 in #699

    Full Changelog: v6.3.1...v6.3.2

    Open source →
    Release notes
    • [Fixed] Reimplementation of partial context [#699]
    Open source →
  7. 6.3.1 09 Feb 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v6.3.0...v6.3.1

    Open source →
    Release notes
    • [Fixed] Regression of partial context [#694]
    Open source →
  8. 6.3.0 05 Jan 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v6.2.0...v6.3.0

    Open source →
    Release notes
    • [Added] Builders for some non-exhaustive structs [#688]
    • [Changed] and and or helper now accepts multiple parameters [#687]
    • [Changed] MSRV is now 1.73
    Open source →
  9. 6.2.0 26 Oct 2024
    Release notes

    What's Changed

    • chore(deps): bump serve-static and express in /playground/www by @dependabot in #675
    • chore(deps): bump send and express in /playground/www by @dependabot in #676
    • fix: improved number compare between different types by @sunng87 in #679
    • chore(deps): bump cookie and express in /playground/www by @dependabot in #680
    • feat: add @index for object iteration by @sunng87 in #682

    Full Changelog: v6.1.0...v6.2.0

    Open source →
    Release notes
    • [Added] @index variable for object iteration [#682]
    • [Changed] improve number comparison between different types [#679]
    Open source →
  10. 6.1.0 06 Sep 2024
    Release notes

    What's Changed

    • docs: fix code examples formatting by @mrnossiom in #668
    • chore(deps-dev): bump webpack from 5.76.0 to 5.94.0 in /playground/www by @dependabot in #671
    • implement floating point and string comparisons by @lovasoa in #673

    New Contributors

    Full Changelog: v6.0.0...v6.1.0

    Open source →
    Release notes
    • [Added] More data type support in comparison helpers [#673]
    Open source →
  11. 6.0.0 20 Jul 2024
    Release notes
    • [Fixed] Various indent issue with partials, empty lines and helpers [#646] [#654] [#658]
    • [Fixed] Bug when accessing nested path [#651]
    • [Added] New public access to PathSeg [#656]
    • [Added] New API to set single block params in BlockContext [#655]
    • [Added] From<RenderError> for RenderErrorReason [#644]
    • [Changed] Add non_exhaustive attribute to all public memebers [#647]
    • [Changed] RenderContext API and improved performance for partial rendering [#661] [#662]
    • [Changed] Improved error messsage for template parsing [#638]
    Open source →
  12. 5.1.2 24 Mar 2024
    Release notes
    • [Changed] Improved error message and syntax rule naming [#638]
    • [Changed] Updated heck to 0.5 [#635]
    Open source →
  13. 5.1.1 18 Jan 2024 withdrawn
    Release notes
    • [Changed] Turned off pub access of chain in HelperTemplate
    Open source →
  14. 5.1.0 17 Jan 2024
    Release notes
    • [Added] Chained else if block support [#629]
    Open source →
  15. 5.0.0 31 Dec 2023
    Release notes
    • [Added] public mutable access to local variables in BlockContext [#533]
    • [Changed] Simplified lifetime specifiers for Helper, ScopedJson and some other related types and functions. [#532]
    • [Changed] Updated TemplateError to reduce its size. Direct field access is removed in favor of access methods
    • [Changed] Introducing RenderErrorReason for typed render error
    • [Changed] Changed register_template_directory api for more customizations #[610]
    • [Changed] Updated rust-embed to 8.0
    Open source →
  16. 5.0.0-beta.5 23 Sep 2023 pre-release

    Nothing published for this version

  17. 5.0.0-beta.4 04 Sep 2023 pre-release

    Nothing published for this version

  18. 5.0.0-beta.3 01 Sep 2023 pre-release

    Nothing published for this version

  19. 5.0.0-beta.2 20 May 2023 pre-release

    Nothing published for this version

  20. 5.0.0-beta.1 25 Nov 2022 pre-release

    Nothing published for this version

  21. 4.5.0 09 Nov 2023

    Nothing published for this version

  22. 4.4.0 01 Sep 2023

    Nothing published for this version

  23. 4.3.7 11 May 2023

    Nothing published for this version

  24. 4.3.6 21 Dec 2022

    Nothing published for this version

  25. 4.3.5 05 Oct 2022

    Nothing published for this version

  26. 4.3.4 11 Sep 2022
    Release notes
    • [Added] New write_fmt function for Output [#522]
    • [Added] reason() method for TemplateError to access underlying reason, this replaces original direct .reason access.
    • [Changed] Direct access to TemplateError's reason field is depreacted will be removed in future.
    Open source →
  27. 4.3.3 20 Jul 2022
    Release notes
    • [Fixed] Disable partial expression indentation with {{~> partial}} to bring behavior closer in line with original javascript version. [#518]
    • [Fixed] Support for using partial context together with partial parameters [#520]
    Open source →
  28. 4.3.2 14 Jul 2022
    Release notes
    • [Added] Render functions that reuse Context for custom std::io::Write: render_with_context_to_write and render_template_with_context_to_write
    Open source →
  29. 4.3.1 09 Jun 2022
    Release notes
    • [Added] Added support for {{~{variable}~}} syntax [#509]
    Open source →
  30. 4.3.0 18 May 2022
    Release notes
    • [Changed] update MSRV to 1.57 as rhai requires
    • [Fixed] Reimplemented indent support for partial expression {{> partial}}, which is introduced in 4.2.0. The new implementation is aligned with original javascript version, that every text line generated from partial are indented as {{> partial}} does. prevent_indent will turn-off this feature. [#505]
    • [Changed] changed error support library from quick_error to thiserror
    Open source →
  31. 4.2.2 09 Mar 2022
    Release notes
    • [Fixed] Block param scope leaked into partials [#496]
    • [Changed] Use Rust 2021 edition and update MSRV to 1.56
    Open source →
  32. 4.2.1 17 Jan 2022
    Release notes
    • [Fixed] Nested partial @partial-block referencing issue [#488]
    • [Fixed] Docs generation on docs.rs for rust-embed feature
    Open source →
  33. 4.2.0 05 Jan 2022
    Release notes
    • [Added] RustEmbed support for loading templates from [#484]
    • [Fixed] Parser support for variables begins with digit [#479]
    • [Changed] Keep indent whitespaces for partial expression {{> partial}} as default in handlebarsjs. A new option prevent_indent is provided on Handlebars to turn off this behaviour. [#486]
    • [Changed] Update MSRV to 1.51 due to dependency changes
    Open source →
  34. 4.1.6 03 Dec 2021
    Release notes
    • [Added] Create Context from owned serde_json::Value [#477]
    Open source →
  35. 4.1.5 17 Nov 2021
    Release notes
    • [Fixed] Single-quote string literal is supported, again [#475]
    Open source →
  36. 4.1.4 05 Nov 2021
    Release notes
    • [Fixed] Corrected empty line stripping strategy [#473]
    Open source →
  37. 4.1.3 10 Sep 2021
    Release notes
    • [Added] @last variable for each block with object [#466]
    • [Fixed] Missing whitespaces behind expression [#468]
    Open source →
  38. 4.1.2 10 Aug 2021
    Release notes
    • [Added] Support for generic types in handlebars_helper!.
    • [Added] Getter and setter for rhai Engine from registry.
    • [Fixed] Improve doc for dev_mode that it has to be enabled before adding templates.
    Open source →
  39. 4.1.1 31 Jul 2021
    Release notes
    • [Changed] Update rhai to 1.0 [#455]
    • [Fixed] Empty line stripping for partial include statement, and other corner cases [#458]
    Open source →
  40. 4.1.0 04 Jul 2021
    Release notes
    • [Added] export StringOutput as requested in #442
    • [Changed] strict mode now applies to our helper macro handlebars_helper! and built-in helpers based on it.
    • [Fixed] Line stripping feature for standalone statment introduced in #404 is now aligned with handlebarsjs. #448
    Open source →
  41. 4.0.1 15 Jun 2021
    Release notes
    • [Fixed] Each block render error with empty array or object [#445]
    Open source →
  42. 4.0.0 25 May 2021
    Release notes
    • [Added] dev_mode for registry: templates and scripts loaded from file are always reloaded when dev mode enabled [#395]
    • [Added] Registry is now Clone [#395]
    • [Added] New built-in helper len [#421]
    • [Changed] Updated rhai to 0.19 and then 0.20 [#391]
    • [Changed] #each helper now renders else block for non-iterable data [#380]
    • [Changed] TemplateError and ScriptError is now a cause of RenderError [#395]
    • [Changed] Empty lines around block helpers are now stripped [#404]
    • [Changed] Breaking RenderContext::get_partial now returns Option<&Template>
    • [Changed] Breaking Capitalize names like HtmlExpression and IoError based on clippy recommendations [#424]
    • [Changed] Breaking Improved return type of call_inner from HelperDef to avoid misleading [#437]
    • [Fixed] reference starts with null, true and false were parsed incorrectly [#382]
    • [Fixed] dir source path separator bug on windows [#389] [#405]
    • [Fixed] stack overflow with nested @partial-block [#401]
    • [Fixed] value access issue when upper block has a base value [#419]
    • [Fixed] escape rules for Json string literal [#423]
    • [Fixed] Breaking zero-arity subexpressions support [#433] Zero-arity subexpression no longer resolved as variable. The behaviour is now aligned with handlebarsjs. For instance, {{(parent)}} can no longer access parent field of the context object, use {{lookup this "parent"}} instead. This change applies to partial inclusion, too.
    • [Removed] Breaking option to disable source map is removed [#395]
    • [Removed] Breaking TemplateFileError and TemplateRenderError are removed and merged into TemplateError and RenderError [#395]
    Open source →
  43. 4.0.0-beta.2 28 Mar 2021 pre-release

    Nothing published for this version

  44. 4.0.0-beta.1 16 Mar 2021 pre-release

    Nothing published for this version

  45. 3.5.5 03 May 2021
    Release notes
    • [Fixed] Panic on reporting invalid tag name [#427]
    Open source →
  46. 3.5.4 27 Mar 2021
    Release notes
    • [Fixed] Json string literal with escape char [#422]
    Open source →
  47. 3.5.3 20 Feb 2021
    Release notes
    • [Fixed] value access issue when upper block has a base value [#419]
    Open source →
  48. 3.5.2 29 Dec 2020
    Release notes
    • [Fixed] allow / as trailing separator on Windows, backported from master [#405]
    Open source →
  49. 3.5.1 25 Oct 2020
    Release notes
    • [Fixed] dir source path separator bug on windows [#389]
    Open source →
  50. 3.5.0 23 Sep 2020
    Release notes
    • [Changed] #each helper now renders else block for non-iterable data [#380]
    • [Fixed] reference starts with null, true and false were parsed incorrectly [#382]
    Open source →
  51. 3.4.0 14 Aug 2020
    Release notes
    • [Added] Debug log that can be turned on by using envlog or other implementation, to trace data resolution during rendering [#369]
    • [Fixed] Derived value as block context base value [#343, #353]
    • [Fixed] Partial name aligned with handlebars.js, added support for ., escape [] and string '' name
    • [Changed] HTML escape aligned with handlebars.js, added =, \ and ``` [#366]
    • [Changed] Update rhai to 0.18 [#370]
    • [Fixed] Result of simple helper is now escaped [#373]
    Open source →
  52. 3.3.0 18 Jul 2020
    Release notes
    • [Added] Added two new APIs to reuse Context for rendering [#352]
    • [Changed] Update rhai to 0.17 [#354]
    • [Fixed] Fixed mustache.js html expression support, which is "&" instead of "$"
    Open source →
  53. 3.2.1 28 Jun 2020
    Release notes
    • [Fixed] block context leak introduced in 3.2.0, #346 [#349]
    Open source →
  54. 3.2.0 28 Jun 2020
    Release notes
    • [Added] API to register an pre-processed template [#331]
    • [Added] Helper macro now has support for named argument and helepr hash [#338]
    • [Added] Added support for $ expression that is part of mustache.js [#339]
    • [Changed] Update rhai to 0.15 [#330]
    • [Fixed] else block for each [#344]
    Open source →
  55. 3.1.0 01 Jun 2020
    Release notes
    • [Added] All new rhai script helper
    • [Added] multiple parameter support for log helper
    • [Fixed] helper lookup priority
    • [Changed] Send and Sync are not required for RenderContext local helper [#319]
    • [Fixed] partial block when using path as name [#321]
    Open source →
  56. 3.1.0-beta.2 12 Apr 2020 pre-release

    Nothing published for this version

  57. 3.1.0-beta.1 11 Mar 2020 pre-release

    Nothing published for this version

  58. 3.0.1 25 Jan 2020
    Release notes
    • [Fixed] Slash in partial path causing syntax error #313
    Open source →
  59. 3.0.0 24 Jan 2020
    Release notes
    • [Changed] Added lifetime specifier to Handlebars structure allowing helper definition to have non-static borrowed data #282
    • [Changed] Removed hashbrown dependency #279
    • [Changed] Features has been reorganized. dir_source were turned off by default. #289
    • [Changed] Refactored RenderContext API to improve performance up to 5x over 2.0
    • [Added] Add new BlockContext API for helper developer to store block scope state #307
    • [Fixed] RenderError should be Send and Sync #304
    Open source →
  60. 3.0.0-beta.6 18 Jan 2020 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive