All Versions
Latest Version
Avg Release Cycle
124 days
Latest Release
1287 days ago

Changelog History
Page 1

  • v4.1.0 Changes

    October 12, 2020

    πŸ”„ Changes

    • πŸ†• New: Add data-visibility="hidden" to a slide to hide it from view. Docs & examples
    • πŸ†• New: Add the r-fit-text class to make a text node grow to be as large as possible without overflowing the slide. Docs & examples
    • πŸ”§ The configured slide width/height is now exposed as CSS variables (--slide-width/--slide-height).
    • The shuffle config option now shuffles vertical slides as well.
    • All themes now invert the text color based on the current slide background color.
    • πŸ“¦ Include /css and /js in npm package.

    πŸ›  Fixes

    • Don't append #/ to the URL on first slide.
    • Don't fill the progress bar when there's only one slide in a deck
    • Correct slide count when using data-visibility="uncounted" (#2675)
  • v4.0.2 Changes

    May 29, 2020

    πŸ”„ Changes

    • πŸ— Enables caching for JavaScript builds, making subsequent builds ~50% faster.
    • In auto-sliding presentations, the data-autoslide attribute now takes precedence over automatic detection of <video> durations.
    • βœ‚ Remove overzealous reset styles when printing to PDF.
    • πŸ”§ Reveal.configure and Reveal.isReady are now available in the pre-initialized reveal.js API, to match v3.x behavior.
    • 🍱 Switches to serving demo presentation assets from a CDN.

    πŸ› Bug fixes

    • πŸ›  Fixes polyfills and adds IE 11 support.
    • πŸ›  Fixes the progress bar direction in right-to-left mode.
  • v4.0.1 Changes

    May 25, 2020

    πŸ› Bug fixes

    • πŸ›  Fixed issues when printing speaker notes to PDF (#2671 by @s-l-lee)
    • πŸ›  Fixed incorrect auto-animations when there are multiple auto-animated presentations on the same page
  • v4.0.0 Changes

    May 20, 2020

    πŸ’₯ Breaking Changes 🚨

    πŸš€ This release includes a small number of breaking changes. Please read the Upgrade Instructions if you want to migrate an existing presentation.


    • πŸ†• New website, docs and logo! πŸš€
    • Auto-Animate lets you create complex animations by automatically transitioning between matched elements across slides. Duration, delay and easing can be set on a per-slide or per-element basis.
    • πŸ‘ We now support multiple presentations on the same page.
      • This also introduces a new embedded config option, which allows presentations to reside within a portion of a page. Previously reveal.js always covered 100% of the page width and height.
      • The new keyboardCondition: 'focused' config option lets presentations capture keyboard events only when they're focused by the viewer.
    • πŸ”Œ The reveal.js core and built-in plugins have been rewritten as ES modules. This makes the project easier to maintain and makes reveal.js itself easier to include in a bundle. Two bundles are provided:
      • dist/reveal.js uses UMD and has broad cross browser support (ES5).
      • dist/reveal.esm.js is an ES module. More info
    • Code highlights are now automatically scrolled into view and it looks soooo good. You've got to try it out.

    πŸ”„ Changes

    • πŸ”Œ The Reveal.initialize method now returns a promise that resolves once reveal.js is ready and all plugins have finished initializing.
    • πŸ‘· Switches build systems from to gulp, using rollup for bundling.
    • ⬆️ Moves all compiled CSS (reveal.css, reset.css and themes) from css/ to dist/. See Upgrade Instructions.
    • πŸ’… Moves all print CSS into reveal.js. The old script-based print styles can be removed. by @quilicicf
    • βž• Adds a new slidetransitionend event.
    • βž• Adds a new r-stack layout helper for placing elements on top of each other.
    • βž• Adds support for data-visibility="uncounted" to exclude slides from the progress bar and slide number count. #2543 by @lassepe
    • βž• Adds Reveal.getComputedSlideSize API method.
    • 🚚 Renames the Reveal.addEventListener and Reveal.removeEventListener API methods to Reveal.on and Old names are aliased for backwards compatibility.
    • βœ‚ Removes the default border style from <img>s. Can be added with the r-frame class.
    • βœ‚ Removes bower.json.

    πŸ”Œ Plugins

    • πŸ†• New syntax for registering plugins.
    • πŸ”Œ All built-in pluginsβ€”such as markdown and highlightβ€”are now available as ES modules. More info
    • πŸ”Œ Notes: No longer depends on resolving an external notes.html file to work. Everything is baked into the plugin JS.
    • ⬆️ Highlight: Upgraded to highlight.js 10.0.1.
    • 🚚 Highlight: Moved highlight themes from lib/css/monokai.css to plugin/highlight/monokai.css.
    • Highlight: 'highlight.js' library is now installed from npm instead of being saved in the repo.
    • πŸ‘ Markdown: Support for line numbers and highlights in syntax highlighted code.
    • πŸ‘ Markdown: Support for boolean data- attributes. by @Bagira80
    • Markdown: 'marked' library is now installed from npm instead of being saved in the repo.
    • 🚚 Multiplex: Moved out to
    • 🚚 Notes Server: Moved out to

    πŸ› Bug fixes

    • πŸ›  Fixes a bug that prevented links from working in exported PDFs. #2628 by @telliott22
    • πŸ›  Fixes a bug where navigationMode: 'linear' incorrectly hid valid vertical directions. #2582 by @earboxer
    • πŸ›  Fixes an issue that caused reveal.js to incorrectly block keyboard events when an element with contentedtable=false was focused. #2650
  • v4.0.0-rc.1

    May 19, 2020
  • v3.9.2 Changes

    January 31, 2020

    πŸ›  Fixes a security vulnerability in the postMessage API. The follow methods are now blacklisted and can not be called via the postMessage API: registerPlugin, registerKeyboardShortcut, addKeyBinding, addEventListener.

  • v3.9.1 Changes

    January 29, 2020

    πŸš€ This version contains no changes. It was only released to bump the published version on npm.

    🍱 3.9.0 was published to npm with local edits πŸ€¦β€β™‚οΈ

  • v3.9.0 Changes

    January 29, 2020


    • βž• Adds step-by-step code highlights! Step through multiple line highlights on the same code block.
    • βž• Adds postMessage callbacks. Makes it possible to use the postMessage API to invoke reveal.js methods with return values.
    • The pacing timer functionality now accepts a total time for the whole presentation. Timing was previously worked out on a per-slide level. (#2400 by longtime reveal.js contributor @fghaas!)
    • 0️⃣ Background iframes no longer preload by default. They load when you arrive at the given slide. This unifies the behavior of in-slide and background iframes. Learn how to turn on preloading.
    • The slide number format specified through slideNumber is now honored in PDF exports. (#2337 by @dougalsutherland)
    • βž• Adds data-fragment=<index> to any slide with fragments in it. This lets you target specific fragment states with CSS like section[data-fragment="2"] { ... }.
    • βž• Adds Reveal.getHorizontalSlides() and Reveal. getVerticalSlides() for getting all horizontal/vertical slides in a deck.
    • βž• Adds Reveal.hasHorizontalSlides() and Reveal. hasVerticalSlides() for checking whether or not a deck contains any horizontal or vertical slides.
    • βž• Adds mobileViewDistance configuration option. Mobile view distance was previously hardcoded at 2. (#2513 by @TuurDutoit)
    • βž• Adds allow="autoplay" to iframes to comply with Chrome's Autoplay Policy Changes (#2437 by @TehDmitry)
    • Switches to CSS transforms to scale decks up on HDPI displays. Previous use of CSS zoom produced sharper results but led to side effects such as iframes not scaling with the deck content.
    • πŸ’» Switches first/last slide keyboard shortcuts from βŒ˜β†/βŒ˜β†’ to Shift←/Shiftβ†’. The old shortcut conflicted with browser back/forward.
    • ⚑️ Updates highlight.js from 9.11.0 to 9.18.0

    πŸ› Bug fixes:

    • πŸ›  Fixes an issue where the navigation down-arrow was blocked by the progress bar (#2410 by @NoriSte).
    • πŸ›  Fixes swipe navigation for decks with navigationMode set to linear (#2416 by @earboxer).
    • πŸ›  Fixes vertical overflow in iPadOS Safari.
    • πŸ›  Fixes inconsistent fragment slide animations by translating by a fixed unit.
    • πŸ›  Fixes failing npm install because of outdated dependencies.
    • πŸ›  Fixes exception when highlighting empty code blocks.

    And more...

  • v3.8.0 Changes

    April 01, 2019


    • ⏱ The cursor is now automatically hidden after five seconds of inactivity. The timeout can be adjusted with hideCursorTime: <milliseconds>, or you can disable the feature entirely with hideInactiveCursor: false.
    • Presentations can be zoomed on touch devices using the standard pinch-to-zoom gestures.
    • πŸ†• New navigationMode: <default/linear/grid> config option. Set to "grid" to navigate across adjacent vertical stacks. Learn more in the docs. (#2307)
    • New hash: <boolean> config option. When set to true, reveal.js will reflect the current slide in the address bar without pushing each slide change to the browser history. (#2286 by @asottile)
    • πŸ†• New preloadIframes config option for flagging if iframes should be preloaded or not. Can be set per-frame using the data-preload attribute. More info. (#2354 by @maxrothman)
    • A resize event is now dispatched anytime the presentation scale changes. (#2300 by @mw75)
    • The "Resume" button in the pause overlay is hidden if controls are set to false. (#2215 by @anderslemke)
    • πŸ†• New keyboard shortcut: CMD/CTRL + left or right arrow to go to first or last slide.
    • βž• Adds Reveal.getRevealElement() for retrieving the presentation's root element (<div class="reveal">).
    • βœ‚ Removes Head JS as it is no longer required to load dependencies.
    • βœ‚ Removes classList polyfill since browser support caught up.
    • βœ‚ Removes the reset styles from reveal.css to make styles easier to override. Reset styles are now included as a separate reset.css file. (6abc6e0 #1952 & #2248)
    • The zoom transition now zooms between all slides, previously it zoomed between horizontal slides and used a slide transition between vertical.
    • ⬆️ Upgrade to Socket.IO 2.2.0.

    πŸ”Œ Plugin Changes:

    • βž• Adds a new API for registering plugins Reveal.registerPlugin( 'myPlugin', MyPluginInstance ). If a registered plugin returns a promise when initialized, reveal.js will wait for that promise to be fulfilled before firing the ready event. Learn more in the docs.
    • πŸ‘ Code highlighting: Support for line numbers! Just add data-line-numbers to your code blocks.
    • πŸ‘ Code highlighting: Highlight specific lines by providing a comma separated list of line numbers to data-line-numbers. Line ranges, like 5-15, are supported too.
    • 🌐 Speaker view: No longer requires a web server, it now works when opened directly from the filesystem. (#2104 by @jurca)
    • Markdown: External .md files are now loaded asynchronously.
    • ⬆️ Markdown: Upgrade to marked 0.6.0. (@sestegra)
    • MathJax config options can now be set via the reveal.js math config option. (#2090 by @bnjmnt4n)

    πŸ› Bug fixes:

    • πŸ›  Fixes npm security warnings by updating all dependencies.
    • πŸ›  Fixes an issue that prevented the same internal link from being clicked twice. (#2350 by @rparree)
    • πŸ›  Fixes an issue with data-transition not working on vertical slides. (b6ce0a9 #1947)
    • πŸ›  Fixes an issue that needless caused the slide methodβ€”and all of its corresponding performance heavy DOM operationsβ€”to be invoked twice for each slide change. (#2263 by @mbotsch)
    • πŸ›  Fixes a layout bug with overlaid speaker notes when reveal.js is smaller than the browser window.
    • πŸ›  Fixes an error that caused Reveal.getProgress() to return a value higher than 1 when there were fragments on the last slide.
    • The speaker view no longer stops working when opened multiple times. (#2251 by @oyron)
    • πŸ’» Prevents presentations from overflowing vertically in some mobile browsers.
    • Elements using .stretch now show up in the overview mode. (@sanand0)

    And more...

  • v3.7.0 Changes

    August 01, 2018


    • Key Binding API (#1885 by @ denehyg)
    • βž• Adds pdfSeparateFragments option for exporting fragments on separate PDF pages (@koehlma)
    • βž• Adds fragmentInURL option for including fragments in the URL (@dougalsutherland)
    • βž• Adds hashOneBasedIndex option for switching slide URLs from 0 to 1-based index (@sean-parent)
    • βž• Adds data-background-opacity attribute for fading out background media
    • βž• Adds a "Resume presentation" button to the pause overlay
    • βž• Adds two new fragment styles
      • semi-fade-out: starts fully visible and fades out to 50% opacity
      • fade-in-then-semi-out: fades in like a normal fragment and remains visible but faded out when you move to the next fragment
    • πŸ†• New API method Reveal.syncSlide: same use as Reveal.sync but more efficient when you've only made changes to one specific slide
    • πŸ†• New API method Reveal.syncFragments: same use as Reveal.sync but more efficient when you've only made changes to fragments on one specific slide
    • βœ‚ Removes arbitrary restrictions on slide IDs, all IDs are now valid
    • The slide number is now an anchor pointing to the current hash, making it possible to copy the current slide URL even when history is disabled (#2133 by @sean-parent)
    • Whitespace is now allowed in background image names (@RobertBaron)

    πŸ› Bug fixes:

    • The left/right navigation arrows no longer appear when there are no horizontal slides
    • Navigating to the same slide twice in a row no longer drops its "present" class
    • The loop option now works correctly in presentations with only vertical slides
    • More graceful error handling of duplicate slide IDs
    • Interactive iframe backgrounds now work in vertical slides

    And more...