🚀 11ty/eleventy - Release Notes

Eleventy v3.0.1-alpha.5 (2025-03-14)

- Upgrade to use Eleventy Dev Server v2.0.7 https://github.com/11ty/eleventy-dev-server/releases/tag/v2.0.7
- Removes `rifraf` dependency by @jeffalo #3622 #3673 gave us some **BIG WINS to node_modules size**: 27.4 MB to 21.8 MB, eliminated 39 total dependency packages!
- Improve build performance ~50ms (dynamic dev server import only on --serve) by @boehs in https://github.com/11ty/eleventy/pull/3689
- Internals: consolidates TemplateMap with Dependency Graph for more accurate build order during incremental builds (fixing unrendered template errors) #3410 _(Fair warning: this was a big change!)_
- Fix duplicate permaink error on Windows after file delete and re-add #3631
- Fix (and better error messaging) for `link.slice is not a function` errors when using function permalinks #3472 #3619
- Improvements to bundler-friendiness of imports (using Programmatic API in serverless contexts) #3656
- Fix when using `eleventyConfig.setUseTemplateCache(false);` and `11ty.js` JavaScript templates #3667
- Fix for passthrough copy output locations during incremental builds #3285
- Check `Error.cause` for `TemplateContentPrematureUseError` when rendering by @noelforte in https://github.com/11ty/eleventy/pull/3651
- Fix `dateValue.toLowerCase() is not a function` error when using addDateParsing API #3674

**Full Milestone**: https://github.com/11ty/eleventy/milestone/47?closed=1
**Full Changelog**: https://github.com/11ty/eleventy/compare/v3.0.1-alpha.4...v3.0.1-alpha.5

Eleventy v3.0.1-alpha.4 (2025-01-29)

- Internals: adds `remove` method to HtmlTransformer (for Bundle Plugin)
- Minor dependency upgrades
	- [Bundle Plugin](https://github.com/11ty/eleventy-plugin-bundle/releases/tag/v3.0.1) adds support for delayed bundle transforms
	- [Dev Server](https://github.com/11ty/eleventy-dev-server/releases/tag/v2.0.5) minor upgrade to fix issue with 404 errors on video requests.
	- [PostHTML URLs](https://github.com/11ty/eleventy-posthtml-urls/releases/tag/v1.0.1) dependency cleanup/reduction.

**Full Changelog**: https://github.com/11ty/eleventy/compare/v3.0.1-alpha.3...v3.0.1-alpha.4

Eleventy v3.0.1-alpha.3 (2025-01-14)

- Changes template rendering concurrency default to 1, fixes `Tried to use templateContent too early` issue in 3.0.1-alpha.1 #3596 (related to #3277)

**Full Changelog**: https://github.com/11ty/eleventy/compare/v3.0.1-alpha.2...v3.0.1-alpha.3

Eleventy v3.0.1-alpha.2 (2025-01-14)

- Upgrades `@11ty/eleventy-dependency-tree-esm` to fix bug with import attribute parsing https://github.com/11ty/eleventy-dependency-tree-esm/issues/4
- Upgrades `entities` dependency from v5 to v6 (upstream change related to deep import paths https://github.com/fb55/entities/releases/tag/v6.0.0)

**Full Changelog**: https://github.com/11ty/eleventy/compare/v3.0.1-alpha.1...v3.0.1-alpha.2

Eleventy v3.0.1-alpha.1 (2024-12-20)

## Try it out in your project

```
npm install @11ty/eleventy@canary --save-exact
```

Read more about [getting started with Eleventy](https://www.11ty.dev/docs/) or [why you should use Eleventy](https://www.11ty.dev/#why-should-you-use-eleventy).

## What's Changed

* Support for Import Attributes #3580 e.g. `import data from './data.json' with { type: 'json' };`, see https://github.com/11ty/eleventy-dependency-tree-esm/issues/2
* Adds `html-relative` Passthrough Copy mode for relative asset references in HTML. Learn more at https://github.com/11ty/eleventy/pull/3573 (from issue #3552)
* Build performance improvements to v3.0.0 in https://github.com/11ty/eleventy/pull/3493
* Upgrades to `@11ty/eleventy-utils@2.0.0` #3595 (thank you @Zearin!)
* Render templates in parallel. by @fqueze in https://github.com/11ty/eleventy/pull/3277
	* Adds `eleventyConfig.setConcurrency(Number)` API to control concurrency (defaults to `os.availableParallelism()`) #3585
* Bumps `liquidjs` dependency to `10.19.0` (from `10.17.0`)
* Replace UserConfig typedef with a subpath export (#3460) by @noelforte in https://github.com/11ty/eleventy/pull/3562
* Bump cross-spawn from 7.0.3 to 7.0.6 in the npm_and_yarn group by @dependabot in https://github.com/11ty/eleventy/pull/3579
* Fix import-related error with CommonJS modules in Node 23 by @vrugtehagel in https://github.com/11ty/eleventy/pull/3519 #3518
* Removes unreliable character encoding detection in debug output #3584
* Fix for InputPathToUrl plugin to support unencoded paths with spaces #3559 #3583
* IdAttribute plugin has `checkDuplicates` option (always enabled by default, now allows you to disable) #3560 Docs: https://www.11ty.dev/docs/plugins/id-attribute/#with-options
* Bug fix for returning non-traditional data with `eleventyConfig.addCollection` API #3467
* Error messaging improvements:
	* Improved error messaging when attempting to link to a `permalink: false` template (in the HTML `` plugin) #3503
	* Better errors with Custom template types with non-string permalink values: #3472
	* Improved error messaging with syntax errors in `.11ty.js` files #3571
	* Improved require(esm) error messaging to reflect proper support in Node v22.12 #3568
	* Error stack improvements by @noelforte in https://github.com/11ty/eleventy/pull/3572

## New Contributors
* @noelforte made their first contribution in https://github.com/11ty/eleventy/pull/3562

**Full Changelog**: https://github.com/11ty/eleventy/compare/v3.0.0...v3.0.1-alpha.1 

Eleventy v3.0.0: Possums ❤️ ESM (2024-10-01)

We did it. After 22 pre-releases and over a year of work, Eleventy 3.0.0 is now available. You can try it out now on your project using:

```js
npm install @11ty/eleventy@latest
```

**If you’re upgrading from a previous version** of Eleventy, use the [Upgrade Help plugin](https://v3.11ty.dev/docs/plugins/upgrade-help/) for automated checks and help with your upgrade!

**[Why should you use Eleventy?](https://v3.11ty.dev/#why-should-you-use-eleventy)** Eleventy is a flexible and production-ready site generator known for its zero-client JavaScript footprint, [speedy sites, speedy builds](https://v3.11ty.dev/docs/performance/), and [full control over the output](https://www.youtube.com/watch?v=b4frtsT4Cgo).

A few numbers on the best version of Eleventy yet:

| Stats | `v2.0.1` | `v3.0.0` |
| - | - | - |
| 20% smaller | 35.2 MB | 28.1 MB |
| 11% fewer dependencies | 213 | 189 |
| 9% faster npm install | 4.511s\* | 4.103s\* |

_\*fastest time of 3 runs (bypassing local cache)_

## Flagship 3.0 features

1. Eleventy is now written in ESM with **full** support for ESM in your projects: configuration, data files, 11ty.js templates, etc. For many projects this won’t be a breaking change and we’ll continue to support CommonJS too. Every example on the docs now includes both a CommonJS and ESM version. Docs: https://v3.11ty.dev/docs/cjs-esm/

```js
// ESM
export default function(eleventyConfig) {}

// We’ll keep supporting CommonJS:
module.exports = function(eleventyConfig) {}
```

2. Supporting more package managers and runtimes: pnpm, yarn, Deno. More examples on the docs! https://v3.11ty.dev/docs/
3. Asynchronous configuration #614 Docs: https://v3.11ty.dev/docs/config/

```js
// ESM
export default async function(eleventyConfig) {}

// CommonJS
module.exports = async function(eleventyConfig) {}
```

4. For-free performance improvement to built-in `slugify`, `inputPathToUrl` universal filters (via memoization) #840 Docs: https://v3.11ty.dev/docs/memoize/
5. Named `config` export improves consistency for plugins #3246 and `set*Directory` configuration API methods #1503 Docs: https://v3.11ty.dev/docs/config-shapes/#optional-export-config-object and https://v3.11ty.dev/docs/config/#configuration-options

```js
export default function(eleventyConfig) {
  eleventyConfig.setInputDirectory(".");
  eleventyConfig.setOutputDirectory("_site");
};

export const config = {
  dir: {
    input: ".",
    output: "_site"
  },
};
```

6. Virtual Templates, configuration API to add content (great for plugins, used by the new RSS plugin!) #1612 Docs: https://v3.11ty.dev/docs/virtual-templates/

```js
export default function(eleventyConfig) {
  eleventyConfig.addTemplate("robots.njk", "User-agent: *\nAllow: /", {
    permalink: "/robots.txt",
  });
};
```

7. IdAttribute plugin adds `id` attributes to headings for on-page anchor links (supports all template-languages) #3363 Docs: https://v3.11ty.dev/docs/plugins/id-attribute/

```html

Welcome to my web site

becomes

Welcome to my web site

``` 8. Plain-text Bundler included: https://v3.11ty.dev/docs/plugins/bundle/ ```js export default function(eleventyConfig) { eleventyConfig.addBundle("css"); // Adds {% css %} paired shortcode to create per-page CSS bundles }; ``` 9. InputPath to URL plugin lets you link directly to an input file path (and we’ll output the right URL) Docs: https://www.11ty.dev/docs/plugins/inputpath-to-url/ ```html Home becomes Home ``` 10. Use arbitrary JavaScript with the `js` Front Matter #2819 Docs: https://v3.11ty.dev/docs/data-frontmatter/#javascript-front-matter ```js ---js const hello = "hi"; --- {{ hello }} ``` 11. `page.rawInput` unlocks access to raw template content #1206 https://v3.11ty.dev/docs/data-eleventy-supplied/#page-variable 12. `addPreprocessor` configuration API to modify raw content before rendering works for file ignores and drafts #188 Docs: https://v3.11ty.dev/docs/config-preprocessors/ 13. `addDateParsing` configuration API to add your own custom date parsing logic #867 Docs: https://v3.11ty.dev/docs/dates/#configuration-api-for-custom-date-parsing 14. `eleventyDataSchema` data option to validate data cascade values #879 Docs: https://v3.11ty.dev/docs/data-validate/ 15. Reserved Eleventy properties in data cascade are now frozen #1173 Docs: https://v3.11ty.dev/docs/data-eleventy-supplied/#frozen-data 16. Support for asynchronous plugins and async-friendly `addPlugin` configuration API #2675 Docs: https://v3.11ty.dev/docs/plugins/#plugins-are-configuration 17. `useLayouts` option for Custom Template Languages allows opt-out of Eleventy Layouts #2830 Docs: https://v3.11ty.dev/docs/languages/custom/#uselayouts 18. `renderTransforms` Universal Filter will run project transforms on an arbitrary block of content (useful for RSS and other feeds) #3294 19. `--incremental=filename.md` on the command line #3324 Docs: https://v3.11ty.dev/docs/usage/#incremental-for-partial-incremental-builds 20. `renderContent` Universal Filter now included with Render Plugin #3370 Docs: https://v3.11ty.dev/docs/plugins/render/#rendercontent-filter 21. Dev Server updates including [`onRequest` API for handling requests dynamically during development](https://github.com/11ty/eleventy-dev-server/releases/tag/v2.0.0) (used with the new [Image Transform plugin](https://v3.11ty.dev/docs/plugins/image/#eleventy-transform)) ## Breaking Changes and Upgrade Path **Rather than navigating this list manually, use the [Upgrade Help plugin](https://v3.11ty.dev/docs/plugins/upgrade-help/) for automated project checks and upgrade help!** * Requires Node 18 or newer. * Removes Serverless and Edge plugins. * Use of bundled Eleventy plugins from CommonJS requires changing `require("@11ty/eleventy")` to `await import("@11ty/eleventy")` for ESM reasons. We provide [helpful error messaging for this](https://www.zachleat.com/web/future-friendly-esm/). * `pug`, `ejs`, `haml`, `mustache`, and `handlebars` template languages moved from core to official plugins: * `handlebars`: https://v3.11ty.dev/docs/languages/handlebars/ * `mustache`: https://v3.11ty.dev/docs/languages/mustache/ * `ejs`: https://v3.11ty.dev/docs/languages/ejs/ * `haml`: https://v3.11ty.dev/docs/languages/haml/ * `pug`: https://v3.11ty.dev/docs/languages/pug/ * Throw errors if `--config=` command line file is missing #3373 * The `htmlOutputSuffix` feature was removed #3327 * Aliased custom templates must be declared in active formats #3302 * `--formats=` and `--formats=""` on command line means no formats (previously aliased to `*`) #3255 * Custom Template Language `compileOptions.permalink` option changed from `true` to `"raw"` #2780 * Major semver updates of dependencies: * `js-yaml` [v3 to v4 Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md#400---2021-01-03) * Better error messaging when using tabs in YAML * Numbers are now parsed according to YAML 1.2 spec (from 1.1) * `@sindresorhus/slugify` [v2 to v3 Changelog](https://github.com/sindresorhus/slugify/releases/tag/v2.0.0): Node 12+, Pure ESM * `bcp-47-normalize` [v1 to v2 Changelog](https://github.com/wooorm/bcp-47-normalize/releases/tag/2.0.0): Pure ESM * `dependency-graph` [v0.x to v1 Changelog](https://github.com/jriecken/dependency-graph/blob/master/CHANGELOG.md#100-dec-5-2023) * `iso-639-1` [v2 to v3 Changelog](https://github.com/meikidd/iso-639-1/blob/master/CHANGELOG.md#v300): Pure ESM * `markdown-it` [v13 to v14 Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md#1400---2023-12-08): Pure ESM, removed `dist` folder * [Full list of breaking changes](https://github.com/11ty/eleventy/issues?q=milestone%3A%22Eleventy+3.0.0%22+is%3Aclosed+label%3Abreaking-change) ## Minutiae * Packages are now published using [npm package provenance](https://github.blog/security/supply-chain-security/introducing-npm-package-provenance/). * The code base is using tabs 😱😈 #3098 **Full Eleventy v3 Milestone** (177 closed): https://github.com/11ty/eleventy/milestone/40?closed=1 **Full Changelog**: https://github.com/11ty/eleventy/compare/v2.0.1...v3.0.0 ## Thank You Notes This release would not have been possible without our community and supporters. * To everyone that has built something with Eleventy: thank you! * To everyone that has answered a question about Eleventy: on the Discord, on social media, in GitHub issues or discussion, at your local meetup or coffee shop: thank you! * To everyone that attended the [11ty Conference](https://conf.11ty.dev/) earlier this year: thank you! * To everyone that brought a well-intentioned complaint about something you didn’t like about Eleventy: thank you! * To everyone that dropped a few nice words of appreciation: **_thank you!_** * To everyone that has supported us and made this release possible: **_thank you!_** Thank you to @bobmonsour, @pdehaan, @Snapstromegon, @cdransf, @5t3ph, @BenDMyers, @siakaramalegos, @shivjm, @dleatherman, @darthmall, @clottman, @nachtfunke, @David-Large, Olivia Nicholson, and @mneumegen for their community contributions! Thank you for the code contributions from @VividVisions, @mayank99, @Zearin, @chriskirknielsen, @mendhak, @fqueze, @shivjm, @rdela, @w0whitaker, @vrugtehagel, @sachac, @Snapstromegon, @alifeee, @uncenter, @Zwyx, @mayankkamboj47, @aschrab, @jgarber623, @korverdev, @mathertel, @mathieuprog, @epelc, @Ryuno-Ki, @lexoyo, @satgo1546, @KiwiKilian

Eleventy v3.0.0-beta.2: The Final Countdown (2024-09-30)

## What's Changed from [3.0.0-beta.1](https://github.com/11ty/eleventy/releases/tag/v3.0.0-beta.1)

* Includes Dev Server v2.0.4:
  * https://github.com/11ty/eleventy-dev-server/releases/tag/v2.0.4
  * https://github.com/11ty/eleventy-dev-server/releases/tag/v2.0.3
  * Add your own headers (e.g. CORS)
  * Improvements to DOM Diff algorithm for Declarative Shadow DOM, Custom Elements, inline `