Important
Marp Core v5 is a release candidate. You can install it with the next tag:
npm install --save @marp-team/marp-core@next
If you are upgrading from v4, see the v4-to-v5 migration guide.
- Rendering HTML with a class attribute throws a TypeError when using ESM (#434, #435 by @nbifrye)
- Failure of import in non-server JS environments due to the bundled Twemoji CJS (#436, #437)
- Upgrade KaTeX peer dependency to v0.18.x (#430, #432)
- Mermaid diagrams are no longer wrapped with
<pre>and<code>(#431, #433)
- Node.js v20.19 and later is now required
@marp-team/marp-coreentrypoint now provides a lightweight core, and some features are splitted into core plugins (#427)- You can use
@marp-team/marp-core/fullfor the full build
- You can use
- Some external libraries for core plugins are now optional peer dependencies and no longer installed by default (#417, #427)
- The default code highlighter has been replaced from highlight.js to Shiki (#296)
- Styling with
.hljs-*classes is no longer supported in favor of--marp-shiki-*CSS variables (#413)
- Styling with
@marp-team/marp-core/fullentrypoint with all core plugins enabled (#427)- Optional core plugin entrypoints (#427)
@marp-team/marp-core/plugins/shiki@marp-team/marp-core/plugins/mermaid@marp-team/marp-core/plugins/katex@marp-team/marp-core/plugins/mathjax
- Mermaid diagrams for the
mermaidcode fence, powered bybeautiful-mermaid(#139, #420) - New code highlighter Shiki for the code fence (#296, #413)
- Simplified color styling in the theme by
--marp-shiki-*CSS variables - Highlight lines based on the attribute of the code fence, like
```markdown {1,3-5}
- Simplified color styling in the theme by
- Publish as dual package for ESM and CJS (#416)
- Upgrade MathJax to v4 (#405, #426)
- Lazy-load optional core dependencies in Node.js (#417, #427)
- Migrate the build system from rollup to tsdown (#416)
- Rewrote the documentation, by splitting into multiple pages for purpose (#427)
- Improve the browser helper for SSR and cross-realm targets (#427)
- Deprecate
math.katexOptionandmath.katexFontPathconstructor options in favor of options for the KaTeX core plugin (#427)
- Removed
highlightjsgetter fromMarpclass (#413)
- Upgrade development Node.js and dependent packages (#425)
- Mitigate incomplete PDF rendering on the
gaiatheme (#424)
Note
The background color no longer changes when applying only the background-color style to the gaia theme. Use the background shorthand style, --color-background CSS variable for the gaia theme, or backgroundColor Markdown directive instead.
- Upgrade Marpit to v3.2.2 (#423)
- Upgrade development Node.js LTS to v26 (#423)
- Upgrade dependent packages (#412, #414, #423)
- Unicode 17 emoji support by Twemoji (#411)
- Upgrade Marpit to v3.2.1 (#411)
- Upgrade development Node.js LTS and dependent packages to the latest version (#411)
- Upgrade Marpit to v3.2.0 (#403, #404)
- PostCSS plugin support by
use()instance method
- PostCSS plugin support by
- Upgrade development Node.js LTS and dependent packages to the latest version (#404)
- Update PostCSS integrations to use Marpit's PostCSS plugin support (#406, #407)
- Use
color-schemeandlight-dark()to define color scheme in built-in themes (#396, #408)
- Upgrade Marpit to v3.1.3 (#398, #399)
- Upgrade development Node.js LTS and dependent packages to the latest version (#399)
- Fixed: Improper neutralization of HTML sanitization by comments that may lead to XSS (CVE-2024-56510 reported by @Ry0taK)
- Upgrade Marpit to v3.1.2 (#390)
- Upgrade development Node.js LTS and dependent packages to the latest version (#391)
Important
The new slide container styles, block container and safe centering, produce breaking changes to existing slide layouts. (#382)
If you are using the built-in theme that contents are vertically centered (or the custom theme that depends on such themes), you can tweak the style in Markdown or the custom theme to get back the previous flex container.
-
For
defaultanduncovertheme:<style> section { display: flex; } </style>
-
For
gaiatheme'sleadclass:<style> section.lead { display: flex; } </style>
- Drop support against end-of-life Node.js versions (v16 and earlier), and now v18+ are required (#359)
- The slide container of built-in themes became the block element and adopted safe centering (#372, #382)
- Transform emojis up to Unicode 15.1 into Twemoji images (#380)
- Upgrade Marpit to v3.1.1 (#378)
- Bump markdown-it to v14.1.0, and follow the latest spec of CommonMark 0.31.2
- Support for CSS nesting (
cssNestingconstructor option)
- Use simpler CSS minification when
minifyCSSoption is enabled (#381) - Relax HTML allowlist: Allowed a lot of HTML elements and attributes by default (#301, #383)
- Make the image background transparent in
defaulttheme (#196, #371, #386)
- Upgrade development Node.js to v20 LTS (#359)
- Upgrade dependent packages to the latest version (#380)
- Switch package manager from yarn to npm (#379)
- Migrate ESLint config to Flat config (#385)
- Suppress uncaught
DOMExceptionerror while upgrading<marp-pre>Web Component elements in Firefox (#370, #384)
- Improper neutralization of HTML sanitization by comments may lead to XSS (CVE-2024-56510 reported by @Ry0taK)
- Enabled
cssContainerQueryconstructor option from Marpit framework by default (#360)
- Upgrade Marpit to v2.6.1 (#358)
- Added
cssContainerQueryconstructor option - Added
langglobal directive and constructor option
- Added
- Slightly changed the color scheme of
defaulttheme to match as the current GitHub style (#358) - Upgrade Node.js and dependent packages to the latest version (#358)
- Regression: Auto-scaling for KaTeX block is always enabled regardless of
@auto-scalingtheme metadata (#353, #354)
highlightjsgetter, to access the generated highlight.js instance per Marp Core instances (#350)
- Marp Core instance is no longer using the shared highlight.js instance (#350)
- Upgrade Node.js and dependent packages to the latest version (#351)
- Upgrade Marpit to v2.5.0 (#342)
- Added
paginate: skipandpaginate: hold
- Added
- Upgrade Node.js and dependent packages to the latest version (#345)
- Assign auto-generated slug to
idattribute of each headings (#299, #338) slugconstructor option (#338)
- An
observer()function exported by@marp-team/marp-core/browser, which was actually designed for internal (#330)
- Patch KaTeX style to fix visibility of some math symbol in Chromium-flavored browsers (#326)
- Upgrade Node and dependent packages (#327)
- Bundle external modules used by emoji plugin (#323)
- Upgrade dependent packages to the latest version (#325)
- Test against Node.js 18 LTS (#318)
- Change CDN for Twemoji images from default to jsDelivr (#320, #321)
- Upgrade Marpit to v2.4.2 (#318)
- Upgrade development Node.js and dependent packages (#318)
- Test against no longer supported Node.js 12 (#318)
- Flush display of
<marp-auto-scaling>only when resized the scaling wrapper (#313)
- Apply workaround for vanished
<marp-auto-scaling>in Chrome 105+ (#312)
- Upgrade Marpit to v2.4.0 (#310)
anchorconstructor option for slide anchor customization
- Upgrade dependent packages to the latest version (#310)
- Replace Google Fonts in
gaiatheme to Bunny Fonts (#311)
- Decrease specificity of highlight.js classes for
defaulttheme (#304, #307) - Apply hydration for custom elements whenever calling browser script (#305)
- An empty auto-scaling component becomes unnecessary bigger (#306)
- Marp Core v3 is available as stable release (See v3.0.0 release note about major changes) (#302)
- Upgrade Marpit to v2.3.1 (#298, #300)
- Upgrade dependent packages to the latest version (#298)
- Make compatible with a patched markdown-it-emoji (#294)
- Upgrade Marpit to v2.2.4 (#291)
- Fixed: Scoped style does not style pseudo elements
section::beforeandsection::afterin advanced background
- Fixed: Scoped style does not style pseudo elements
- Upgrade marpit-svg-polyfill to v2.0.0 (#291)
- Upgrade dependent packages to the latest version (#291)
- Transform Unicode 14.0 emojis into images (#289)
- Dropped Node 10 support and now requires the latest version of Node.js v12 and later (#260, #266)
- Changed the default library for math typesetting from KaTeX to MathJax (#159, #236, #271)
- Auto-scaling for code block in
uncovertheme (#263) - Allow color customization through CSS variables in
defaulttheme (#209, #266)
- Web Components based new auto scaling (#96, #248, #263)
- Match color schemes for
defaulttheme to the latest GitHub (#266) - Adopt
::where()selector to class variants for making styles overridable (#244, #267) - Disable autolink for URL text that has no
http(s)://protocol (#268)
History of versions older than v3
- Make compatible with a patched markdown-it-emoji (#294)
- Upgrade Marpit to v2.2.4 (#291)
- Fixed: Scoped style does not style pseudo elements
section::beforeandsection::afterin advanced background
- Fixed: Scoped style does not style pseudo elements
- Upgrade marpit-svg-polyfill to v2.0.0 (#291)
- Upgrade dependent packages to the latest version (#291)
- Transform Unicode 14.0 emojis into images (#289)
- Preserve HTML comments within html block (#282)
- Upgrade Marpit to v2.2.0 (#273)
::backdroppseudo-element matches to the container SVG
- Upgrade development Node to v16 LTS (#265)
- Upgrade dependent packages to the latest version (#273)
- Upgrade Marpit to v2.1.2 (#262)
- Upgrade dependent packages to the latest version (#262)
- Update
defaulttheme to match styles into the latest GitHub's light color scheme (#262)
- Define the default 16:9 size preset to built-in themes (#250)
- Upgrade dependent packages to the latest version (#241)
- End-of-life Node.js 10 support (Still can use but no longer tested) (#241)
- Upgrade dependent packages to the latest version (#234)
- Fix to work
markdown.typographeroption (#228)
- Upgrade dependent packages to the latest version (#229)
May break appearance of existing presentation if you have a slide with custom style.
- Upgrade Marpit to v2.0.0 (#220)
- Upgrade Node LTS and dependent packages to the latest version (#222)
- Fixed a deprecation warning of highlight.js (#219)
- Upgrade Node LTS and dependent packages to the latest version (#219)
- KaTeX: Persist defined global macro between math renderings (#212)
- MathJax: Prevent leaking defined macro between Markdown renderings (#212)
- Upgrade Marpit to v1.6.4 (#210)
- Upgrade dependent packages to the latest version (#210)
- Rename
masterbranch intomain(#211)
- Support more emoji shorthands (#203)
- Use Node 14 LTS for development (#203)
- Upgrade Marpit to v1.6.3 (#203)
- Upgrade dependent packages to the latest version (#203)
observer()with boolean argument in@marp-team/marp-core/browser(#204)
- Upgrade Marpit SVG polyfill to v1.7.0 (#184, #185)
- Update browser script to make changeable the target root (#185)
- Upgrade dependent packages to the latest version (#186)
observer()with boolean argument from@marp-team/marp-core/browserhas been deprecated in favor of the usage of the option object (#185)
- Setup GitHub Dependabot for marp-team packages (#172)
- Test against Node 14 (#171)
- Upgrade Marpit SVG polyfill to v1.4.0 (#170)
- Upgrade development Node LTS and dependent packages to the latest version (#170)
- Migrate from TSLint to ESLint (#169)
- Transform Unicode 13.0 emojis into SVG images (#167)
- Add MathJax v3 support to math plugin (#164, #165 by @tani, #166)
- Add sandbox directory to make easy to develop core (#157)
- Upgrade Marpit to v1.6.2 and Marpit SVG polyfill to v1.3.0 (#167)
- Upgrade dependent packages to the latest version (#167)
- Marp Core requires Node >= 10 (#143)
- Upgrade Marpit to v1.5.0 (#142)
- Update community health files (#133)
- Upgrade Node and dependent packages to the latest version (#138, #143)
- EOL Node 8 is no longer supported (#143)
- Remove deprecated
Marp.ready()(Use@marp-team/marp-core/browserentrypoint) (#145)
- Fix visual regression by moving script position to after closing section (#131)
- Upgrade dependent packages to the latest version (#130)
- Remove dollar prefix plugin for obsoleted syntax (#127)
- GFM strikethrough syntax (#102, #124 by @matsubara0507)
- Fix type definition for browser to export default func (#120)
- Upgrade Node for development to v12 LTS (#125)
- Upgrade dependent packages to the latest version (#125)
- Inject the inline helper script for browser into rendered Markdown automatically (#115)
- Add
scriptconstructor option (#115)
- Upgrade Marpit to v1.4.1 (#113)
- Upgrade dependent packages to the latest version (#109, #113)
- Apply
font-display: swapto Google Fonts in gaia theme (#114) - Define
word-wrapcss property asbreak-wordin gaia and uncover theme (#108, #119) - Reduce inconsistency about
htmloption between Marp Core and markdown-it option (#111, #117)
Marp.ready()had deprecated in favor of new entrypoint@marp-team/marp-core/browser(#115)
- Remove unused inline web font from default theme (#116)
- Fix dollar prefix option to support
sizedirective (#107)
- Optimize default theme CSS by removing
.markdown-bodyselector on build time (#106)
- Update CircleCI configuration to use v2.1 (#101)
- Upgrade Marpit to v1.4.0 (#105)
- Upgrade Node and dependent packages to the latest version (#105)
- Upgrade Marpit to v1.3.0 and Marpit SVG polyfill to v1.1.1 (#97, #99)
- Upgrade Node and dependent packages to the latest version (#97)
sizeglobal directive and@sizetheme metadata to get easier way for using 4:3 deck in built-in theme (#91, #94)
- Improve bundle size of script for browser to be about one fifth (#93)
- Upgrade Marpit to v1.2.0 and Marpit SVG polyfill to v1.0.0 (#92)
- Upgrade Node and dependent packages to the latest version (#92)
- Marp Core requires Node >= 8.
- Shorthand for text color by image syntax, from Marpit v1 (#87)
- Test with Node 12 (Erbium) (#87)
- Automate GitHub release (#87)
- Remove unnecessary dependency of markdown-it (#88)
- Change auto-scaling features to require enabling by
@auto-scalingmetadata of theme CSS explicitly (#72, #81)
- Deprecated
twemojiBaseoption (#80)
- Fix incorrect scaling in WebKit browser with custom zoom factor, by updating
@marp-team/marpit-svg-polyfillto v0.3.0 (#79)
- Direction keyword for background images, from Marpit v0.8.0 (#76)
- Upgrade Node and dependent packages to the latest (#76)
- Output warning when used deprecated
twemojiBaseoption (#77)
- Use markdown-it's
htmloption instead of Marp Core option to sanitize HTML (#74) - Upgrade dependent packages to the latest (#75)
- Remove dependency to PostCSS (#71)
- Upgrade dependent packages to the latest (#73)
- Allow using twemoji via PNG by added
emoji.twemoji.extoption (#67) - Support custom sanitizer for HTML attributes within allowlist (#68)
- Add usage of multiple classes in Gaia theme (#69)
- Fix over-sanitized attributes with HTML allowlist (#68)
- Normalize known self-closing HTML elements with
xhtmlOut: true(#66) - Upgrade Node and dependent packages to the latest (#70)
emoji.twemojiBaseoption has soft-deprecated in favor ofemoji.twemoji.base(#67)
- Upgrade dependent packages to latest version, includes Marpit v0.7.0 (#63)
- Support an enhanced Marpit enable state (#64)
- Upgrade dependent packages to latest version, includes Marpit v0.6.1 (#62)
- Colored
<strong>element in headings for highlighting (#59) - Support
envoption andhtmlAsArrayenv inrender(), from Marpit v0.6.0 (#61)
- Upgrade dependent packages to latest version (#61)
- Fix incorrect scaling in Marpit SVG polyfill (#58)
- Apply Marpit SVG polyfill for WebKit in
Marp.ready()(#56)
- Update Marpit v0.5.0 (#56)
- Upgrade Node and dependent packages to latest version (#57)
- Upgrade dependent packages to latest version, includes Marpit v0.4.1 (#55)
- Add
usemethod from Marpit v0.4.0 (#52)
- Upgrade Node and dependent packages to latest version (#52)
- Run
yarn auditwhile running CI / publish processes (#52)
- Upgrade dependent packages to prevent the malicious attack in dependencies (#50)
- Support the scoped inline style through
<style scoped>from Marpit v0.3.0 (#49)
- Fix double-bundling KaTeX by porting math parse logic from unmaintained markdown-it-katex (#47, #48)
- Upgrade dependent packages to latest version (#49)
- No longer work with Node v6.14.2 and v6.14.3 (#45)
- Ready to allow contributing by adding guideline for marp-core (#46)
- Force reflow on updated fitting elements in Edge (#43)
- Support Node 10.x and use its LTS for development (#44)
- Upgrade dependent packages to latest version (#45)
- Support collecting HTML comments for presenter notes, from Marpit v0.2.0 (#39)
- Provide CJS version bundle for browser (#41)
- Add
observeargument into functions for browser to allow controlling observation frames (#41)
- Add yarn resolutions to flatten katex to prevent double-bundling (#40)
- Prevent reflow by calling
setAttributein browser context only if value is updated (#41)
- Fix fitting header regression with broken comment traversing (#37)
- Add CI test against Node v6 Boron Maintenance LTS (#35)
- Update code style to use
for-ofloop instead of iterate functions if possible (#34) - Upgrade dependent packages to latest, includes marp-team/marpit v0.1.3 (#36)
- Upgrade marp-team/marpit v0.1.2 (#33)
- Upgrade dependent packages to latest, includes pinned ts-jest v23.10.0 (#33)
- Upgrade dependent packages to latest, includes marp-team/marpit v0.1.1 (#32)
- Support auto scaling for math block (#30)
- Upgrade Node LTS and dependent packages (#31)
- Fix over-sanitized header and footer by updating marp-team/marpit v0.0.15 (#29)
- Support HTML allowlisting (#26)
- Apply color directive to heading of default theme (#28)
- Use rollup-plugin-terser instead of rollup-plugin-uglify (#27)
- Upgrade dependencies to latest (#24)
- Add a separated bundle of
Marp.ready()for browser (#21)
- Fix fitting header's size on printing (#22)
- Reduce bundle size by stopping to resolve dependencies (#15)
- Upgrade dependencies to latest (#16)
- Initial release.