Skip to content

v5.0.0

Latest

Choose a tag to compare

@jaredwray jaredwray released this 25 Jun 16:56
c8d05cd

ecto@5.0.0 — 2026-06-25

Major release: raises the minimum Node.js to 22.18.0 and upgrades the EJS and hookified engines across major versions.

⚠ BREAKING CHANGES

  • Minimum Node.js is now >=22.18.0. Driven by the hookified v3 upgrade; engines.node now declares the floor so older runtimes are warned at install time. (d628ef2, 5f72cd3, #385)
    Migration: upgrade your runtime to Node.js 22.18.0 or newer. Node 20 reached end-of-life in April 2026.

  • EJS upgraded to v6 — template locals no longer resolve through the prototype chain by default. (5f9bba4, #384)
    Migration: if your EJS templates rely on inherited (prototype-chain) properties from class-instance or Object.create() locals, opt back in via the ejs option:

    import { Ecto } from "ecto";
    
    // ecto 4.x (ejs 5): inherited locals resolved automatically
    // ecto 5.x (ejs 6): opt back in for prototype-chain locals
    const ecto = new Ecto({ engineOptions: { ejs: { unsafePrototypeLocals: true } } });

    Plain-object locals (the common case) need no change.

Bug Fixes

  • remove post-render entity decoding on Handlebars output — {{var}} / {{{var}}} now follow standard Handlebars escaping semantics; the previous blanket decode could corrupt legitimately escaped content such as < inside pre-rendered code blocks. (b32cc50, #379)

Internal

  • upgrade GitHub Actions to latest majors: actions/checkout v7, codecov/codecov-action v7 (6cab886, #382)
  • upgrade build tooling: vite 8.0.14 → 8.0.16 (0147b61, #381)
  • upgrade code-quality tooling: vitest 4.1.9, @biomejs/biome 2.5.0, @faker-js/faker 10.5.0 (30c366f, #380)
  • upgrade wrangler 4.92.0 → 4.102.0 for the docs-site deploy (e623c9e, #383)
  • add CLOUDFLARE_ACCOUNT_ID to the deploy-site workflow (52d9fe3, #378)
  • add wrangler as a devDependency for the deploy workflow (396ad11, #377)

Contributors

Full List of Changes

Full diff: v4.8.7...v5.0.0