# hexo v8.0.0 - Product: hexo (https://whatsnew.fyi/product/hexo) - Vendor: hexojs - Date: 2025-09-15 - Version: v8.0.0 - Original notes: https://github.com/hexojs/hexo/releases/tag/v8.0.0 - Permalink: https://whatsnew.fyi/product/hexo/releases/v8.0.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **removed** — Drop support for Node.js 16 - **removed** — Drop support for Node.js 18 - **added** — Bind hexo context to helper function callback - **added** — Add url config validation - **added** — Add permalink variable `timestamp` - **added** — Support additional options for Backtick Code Block - **added** — Enforce stricter extension checks in load_config - **fixed** — Change the judgement of whether it has been injected - **fixed** — Backtrack when tag is incomplete in escapeAllSwigTags - **fixed** — `hexo.locals.get('posts')` now shows all posts - **fixed** — Fix parsing error for code blocks in list items - **fixed** — Sort the tags in open_graph - **fixed** — Escape HTML in title of `code` and `include_code` tags - **changed** — Optimize external link filter for performance - **changed** — Add binary relation index for PostCategory/PostTag for performance - **changed** — Add cache for posts in listArchives - **changed** — Reduce GC overhead in escapeAllSwigTags - **changed** — Skip tag render when there is no swigTags - **changed** — Implement faster text-table ##### Breaking Changes * chore: drop Node.js 16 by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5592 * chore: drop Node.js 18 by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5674 ##### New Features * feat: bind hexo context to helper function callback by @dimaslanjaka in https://github.com/hexojs/hexo/pull/5555 * feat: add url config validation by @ShaytonXu in https://github.com/hexojs/hexo/pull/5578 * feat: add permalink variable `timestamp` by @uiolee in https://github.com/hexojs/hexo/pull/5611 * feat: Support additional options for Backtick Code Block by @D-Sketon in https://github.com/hexojs/hexo/pull/5625 * feat(load_config): enforce stricter extension checks by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5591 ##### Fixes * fix:changed the judgement of whether it has been injected by @mRNA16 in https://github.com/hexojs/hexo/pull/5573 * fix(escapeAllSwigTags): backtrack when tag is incomplete by @D-Sketon in https://github.com/hexojs/hexo/pull/5618 * fix: `hexo.locals.get('posts')` doesn't show all posts by @D-Sketon in https://github.com/hexojs/hexo/pull/5612 * fix: Parsing error for code blocks in list items by @D-Sketon in https://github.com/hexojs/hexo/pull/5617 * fix(open_graph): sort the tags by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5656 * Escape HTML in title of `code` and `include_code` tags by @tommy351 in https://github.com/hexojs/hexo/pull/5688 ##### Performances * perf(external_link): optimize external link filter by @D-Sketon in https://github.com/hexojs/hexo/pull/5598 * perf(PostCategory/PostTag): add binary relation index for performance by @D-Sketon in https://github.com/hexojs/hexo/pull/5605 * perf(listArchives): add cache for posts by @D-Sketon in https://github.com/hexojs/hexo/pull/5624 * perf(escapeAllSwigTags): reducing GC overhead by @D-Sketon in https://github.com/hexojs/hexo/pull/5620 * perf: skip tag render when there is no swigTags by @D-Sketon in https://github.com/hexojs/hexo/pull/5650 * perf: faster text-table by @D-Sketon in https://github.com/hexojs/hexo/pull/5665 * warehouse6 * perf(model): add caching for data keys by @D-Sketon in [#271](https://github.com/hexojs/warehouse/pull/271) ##### Refactor * refactor(common): delete unused function `ignoreTmpAndHiddenFile` by @yoshinorin in https://github.com/hexojs/hexo/pull/5600 * delete scripts `pretest` by @uiolee in https://github.com/hexojs/hexo/pull/5610 * refactor(moment): remove unused timezone setting by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5654 ##### Test * test(box/file): extend the mocha timeout to prevent the async file read test from failing by @yoshinorin in https://github.com/hexojs/hexo/pull/5601 * test: improve coverage by @D-Sketon in https://github.com/hexojs/hexo/pull/5638 ##### Depenrencies * chore(deps-dev): bump @types/node to ^20.16.10 by @uiolee in https://github.com/hexojs/hexo/pull/5558 * chore(deps): remove resolve by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5594 * chore(deps): update dependencies by @yoshinorin in https://github.com/hexojs/hexo/pull/5597 * chore(deps): update `cheerio` from `0.22` to `1.0.0` by @yoshinorin in https://github.com/hexojs/hexo/pull/5603 * chore(deps): migrate `husky` from `8.x` to `9.x` by @yoshinorin in https://github.com/hexojs/hexo/pull/5602 * chore(deps): update eslint by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5599 * chore(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in https://github.com/hexojs/hexo/pull/5684 * chore(deps): bump strip-ansi from 6.0.1 to 7.1.0 by @dependabot[bot] in https://github.com/hexojs/hexo/pull/5218 * chore: bump actions/setup-node from 4 to 5 by @dependabot[bot] in https://github.com/hexojs/hexo/pull/5687 ##### Misc * chore(lint): apply eslint to test files by @yoshinorin in https://github.com/hexojs/hexo/pull/5655 ##### New Contributors * @mRNA16 made their first contrib _[Truncated at 4000 characters — full notes: https://github.com/hexojs/hexo/releases/tag/v8.0.0]_