Skip to content

[deps]: Update mjml-core to v5#7547

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/mjml-core-5.x
Open

[deps]: Update mjml-core to v5#7547
renovate[bot] wants to merge 1 commit intomainfrom
renovate/mjml-core-5.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Apr 27, 2026

This PR contains the following updates:

Package Change Age Confidence
mjml-core (source) 4.15.35.1.0 age confidence

Release Notes

mjmlio/mjml (mjml-core)

v5.1.0

Compare Source

What's Changed

Features
  • Beautify: replaced Prettier with Biome (with its WASM Node.js port) for beautification as calls to beautify took 500ms for large MJML documents and was causing 504 errors.. Note: Prettier is still used inside mjml-browser by @​totocap in #​3075 and @​dazgreer in #​3076

Full Changelog: mjmlio/mjml@v5.0.1...v5.1.0

v5.0.1

Compare Source

What's Changed

Documentation

Full Changelog: mjmlio/mjml@v5.0.0...v5.0.1

v5.0.0

Compare Source

Upgrade Guide

These are the changes users need to actively consider when upgrading to MJML 5.x.x from MJML 4.x (and early MJML 5 alphas):

Highlights

  • Replaced legacy html-minifier and js-beautify with htmlnano + cssnano. [breaking change]
  • Added templating syntax sanitization (runs before PostCSS and is restored afterwards)
  • Safer, stricter handling of mj-include and ignoreIncludes [breaking change]
  • Restructured outer HTML: the <body> tag is now driven by mj-body, not the global skeleton. [breaking change]
  • mjml-browser build/minification pipeline updated
  • Better attribute consistency across components (including more flexible border-radius). [breaking change]
  • Migration helper removed [breaking change]
  • Updated toolchain: Node 20/22/24 in CI. Removed Node 16/18 [breaking change]

HTML/CSS minification & formatting

What changed
  • HTML minification now uses htmlnano instead of html-minifier.
  • CSS minification now uses cssnano presets wired via mjml-core.
  • Minification options can be added via .mjmlconfig.js
Impact [potential breaking changes]
  • Generated HTML is more aggressively minified. If you rely on exact formatting (e.g. diffing raw HTML, parsing by regex, or checking snapshots), you may see changes.
  • Some obscure html-minifier specific options used in custom tooling will no longer apply; options are now expressed as htmlnano/cssnano configs.
  • Template tags may error in PostCSS (see Template syntax handling and sanitization below)
  • Fixes this issue: #​2589
What to do
  • Review any automation that assumes pretty‑printed HTML (tests, diffs, CI snapshot comparisons).
  • If you previously passed minify/beautify flags or custom minifier options, re‑map them to the new htmlnano/cssnano config.
Notes
  • cssnano uses lite preset by default. Due to this issue: #​2919. default preset can be used if your fonts don’t contain numerals
More detail: (#​2858 (comment))

Template syntax handling and sanitization (PostCSS)

What changed
  • Template syntax (e.g. {{ }}) is now sanitized before PostCSS and with syntax restored post-processing.
Impact
  • A CssSyntaxError error will occur when applying CSS minification to files with some template syntax
  • Fixes this issue: #​2858 (comment)
What to do
  • If you use a templating engine on top of MJML (Handlebars, Liquid, Twig, etc.), run your existing templates and visually verify output.
  • Pay special attention to templates that put templating markers in CSS or style attributes.
More detail: (#​2858 (comment))

Includes are more locked down

What changed
  • ignoreIncludes / allowIncludes (CLI) defaults and behavior have changed to be more secure. Includes are ignored by default
  • A new includePath option is introduced to explicitly control where includes can be loaded from outside of a templates filePath
  • Support MJML, HTML and CSS includes only
Impact [potential breaking changes]
  • Includes are ignored by default, you will need to explicitly allow them
  • Projects that relied on implicit include behavior (e.g. loading templates from arbitrary paths without explicit configuration) may now fail, warn, or simply skip includes.
  • In locked‑down environments (containers, CI, hosting), path resolution for includes may change and require configuration.
  • Fixes this issue: #​2589
What to do
  • Audit usage of mj-include and any config that touches ignoreIncludes / allowIncludes.
  • Explicitly configure includePath (and related options) in your .mjmlconfig or CLI usage to match your desired include directories (see docs)
  • Expect safer, stricter defaults; don’t rely on includes working without explicit configuration.
More detail: (#​2858 (comment))

mj-body and skeleton structure

What changed
  • The <body> HTML tag is now generated under mj-body instead of a global skeleton file.
  • Added id attribute to mj-body
  • mj-body attributes have been refactored:
    • class attribute is applied to the body tag rather than the child div
    • background-color removed from body, applies to child div only
Impact [potential breaking changes]
  • If you rely on the exact skeleton (where <body> lived, what attributes were on it), this structure is now different.
  • External CSS that relies on the specific placement of the class may no longer apply
  • Fixes this issue: #​2396
What to do
  • Re‑check any tooling that injects or manipulates the outer HTML skeleton around MJML output.
  • Re‑verify any CSS relating to class or background-color attributes that were applied to mj-body
Notes

Browser bundle / build scripts

What changed
  • mjml-browser build/minification pipeline has been updated to use new minifiers
Why
  • New minifiers were not compatible
Impact
  • If you import mjml-browser directly or depended on its legacy build scripts, behavior and bundle size/shape might change.
  • Bundle size down from 1.22M to 1.04M
What to do
  • Re‑build any tools using mjml-browser and verify they still load, minify, and run as expected.

Attributes & layout consistency

What changed
  • All border-radius attributes now accept a string, previously this was inconsistent across components. Allows more flexible input
  • Updated the inner-padding attributes of mj-hero and fixed an Outlook issue with width/padding
Impact [potential breaking changes]
  • For some components, border-radius values are less strict
  • inner-padding for mj-hero is now applied to all clients, not just Outlook
What to do
  • Visual regression‑test focusing on all instances border-radius and mj-hero's inner-padding

Migration helper removal

What changed
  • The standalone mjml-migrate tool and associated noMigrateWarn option are removed.
Impact [potential breaking changes]
  • You can no longer rely on MJML 5 to automatically migrate very old MJML syntax (3.x/early 4.x) on the fly.
What to do
  • If you still have legacy MJML, migrate those templates with MJML 4 tooling before moving the project to MJML 5, or update them manually.

Node.js version support

What changed
  • CI now runs against Node LTS 20, 22 and 24; older Node versions are effectively deprecated/unsupported.
Impact [potential breaking changes]
  • MJML 5 may not work (or will be untested) on Node 16/18 in the long term.
What to do
  • Plan to run MJML 5 on Node 20, 22 or 24 in CI and production.

Full Changelog: mjmlio/mjml@v4.18.0...v5.0.0

v4.18.0

Compare Source

What's Changed
Documentation

Full Changelog: mjmlio/mjml@v4.17.2...v4.18.0

v4.17.2

Compare Source

What's Changed
Fixes

Full Changelog: mjmlio/mjml@v4.17.1...v4.17.2

v4.17.1

Compare Source

What's Changed
Fixes

Full Changelog: mjmlio/mjml@v4.17.0...v4.17.1

v4.17.0

Compare Source

What's Changed
Features
Fixes
Documentation
Other
New Contributors

Full Changelog: mjmlio/mjml@v4.16.1...v4.17.0

v4.16.1

Compare Source

Fixes

  • Fix build issue of version 4.16.0 for mjml-browser

Full Changelog: mjmlio/mjml@v4.16.0...v4.16.1

v4.16.0

Compare Source

What's Changed

Features
Fixes
Documentation
Dependencies

New Contributors

Full Changelog: mjmlio/mjml@v4.15.3...v4.16.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "every 2nd week starting on the 2 week of the year before 4am on Monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot requested a review from a team as a code owner April 27, 2026 03:01
@renovate renovate Bot requested a review from vleague2 April 27, 2026 03:01
@bitwarden-bot bitwarden-bot changed the title [deps]: Update mjml-core to v5 [PM-35863] [deps]: Update mjml-core to v5 Apr 27, 2026
@bitwarden-bot
Copy link
Copy Markdown

Internal tracking:

@renovate renovate Bot changed the title [PM-35863] [deps]: Update mjml-core to v5 [deps]: Update mjml-core to v5 Apr 27, 2026
@renovate renovate Bot force-pushed the renovate/mjml-core-5.x branch from ac2d938 to a465551 Compare April 29, 2026 09:48
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 29, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 59.54%. Comparing base (cdfe428) to head (5540006).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #7547      +/-   ##
==========================================
- Coverage   59.54%   59.54%   -0.01%     
==========================================
  Files        2089     2089              
  Lines       92452    92452              
  Branches     8218     8218              
==========================================
- Hits        55050    55049       -1     
- Misses      35458    35459       +1     
  Partials     1944     1944              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@renovate renovate Bot force-pushed the renovate/mjml-core-5.x branch from a465551 to 5540006 Compare May 1, 2026 09:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant