GitPedia
hakimel

hakimel/reveal.js

The HTML Presentation Framework

30 Releases
Latest: 2mo ago
6.0.1Latest
hakimelhakimel·2mo ago·April 11, 2026
GitHub

📋 Changes

  • Upgrade to Vite 8 and TS 6
  • Blacklist `previewIframe` in postMessage API #3887
  • Fix exception in media control removal during PDF exports #3888
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/6.0.0...6.0.1
6.0.0
hakimelhakimel·3mo ago·March 11, 2026
GitHub

New Package: @revealjs/react

  • ```jsx
  • import { Deck, Slide, Fragment } from '@revealjs/react';
  • <Deck>
  • <Slide>
  • <h1>Hello World</h1>
  • <Fragment asChild>
  • <h2>Appears on click</h2>
  • </Fragment>
  • + 4 more

💥 Breaking Changes

  • See the full [upgrade guide](https://revealjs.com/upgrading/) for step-by-step instructions. The short version:
  • Plugin paths have moved —if your presentation HTML loads plugins directly from the file system or via CDN, update your paths from `plugin/<name>/plugin.js` to `dist/plugin/<name>.js` (e.g. `plugin/notes/notes.js` → `dist/plugin/notes.js`, `plugin/highlight/monokai.css` → `dist/plugin/highlight/monokai.css`)
  • ES module paths renamed — `.esm.js` files are now `.mjs` (e.g. `dist/reveal.esm.js` → `dist/reveal.mjs`). If you import via bare module specifiers this doesn't affect you.
  • CSS paths changed — if you install via npm, the `dist/` prefix has been dropped from the public package API (e.g. `reveal.js/dist/reveal.css` → `reveal.js/reveal.css`).
  • TypeScript — reveal.js now ships with types included. If you were previously using `@types/reveal.js` you can remove it and migrate. Note that the type names are slightly different, more info in the [upgrade guide](https://revealjs.com/upgrading/).

📋 Changes

  • Switch from gulp to [Vite](https://vite.dev/) for building and running reveal.js (@hakimel)
  • Add official React wrapper for reveal.js — [@revealjs/react](react/README.md) (@hakimel)
  • TypeScript types are now published as part of the package, based on the great work over at [@types/reveal](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/reveal.js)
  • Dark mode and llms.txt support for [revealjs.com](https://revealjs.com).
  • Add `controls: 'speaker'` config option to show controls only in speaker view (@hakimel in #3853)
  • Videos blocked from autoplaying with audio will now play muted with an unmute button, replacing the previous browser-dependent blocked state (@hakimel)
  • MathJax 4 support in the math plugin (@Khlick in #3811)
  • Accessibility improvements: `alt` tags on images and videos are now announced by screen readers, and slide content is better punctuated for screen reader text (@hakimel in #3757, #3772)
  • + 9 more

🐛 Fixes

  • Fix videos not autoplaying when navigating with control arrows on Android (@hakimel)
  • Fix initial video autoplay not working on Android (@hakimel)
  • Fix multiple videos started simultaneously sometimes failing to render in Mobile Safari (@hakimel)
  • Fix overview mode missing slide thumbnails in adjacent stacks with more than 10 vertical slides (closes #3754) (@hakimel)
  • Fix missing font in dracula theme (fixes #3781) (@hakimel)
  • Fix SCSS deprecation warnings by refactoring all themes to latest Sass syntax (@hakimel)
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/5.2.1...6.0.0
5.2.1
hakimelhakimel·1y ago·March 28, 2025
GitHub

🐛 Lightbox bug fixes and improvements

  • Prevent reveal.js keyboard shortcuts while lightbox is open (@tobi-or-not-tobi in https://github.com/hakimel/reveal.js/pull/3767)
  • Opening iframe lightboxes via `[data-preview-link]` now works all element types, not just `<a>` (@hakimel)
  • Lightbox state is now persisted/restored when calling `Reveal.getState` and `Reveal.setState` (@hakimel)
  • Lightbox now syncs between speaker view and main window (@hakimel)
  • Fix pause overlay/lightbox layering conflict (@tobi-or-not-tobi in https://github.com/hakimel/reveal.js/pull/3768)
  • Added lightbox example to demo.html
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/5.2.0...5.2.1
5.2.0
hakimelhakimel·1y ago·March 19, 2025
GitHub

New Feature: Lightbox

  • ```html
  • <!-- Click to show "A.png" in an overlay -->
  • <img src="A.png" data-preview-image>
  • <!-- Click show "B.png" in an overlay -->
  • <img src="A.png" data-preview-image="B.png">
  • <!-- Click to show "C.mp4" in an overlay and scale it to "cover" -->
  • <img src="A.png" data-preview-video="C.mp4" data-preview-fit="cover">
  • <!-- Works with any element type -->
  • + 5 more

📋 Changes

  • Upgrade to gulp 5.0.
  • Add `controls: "speaker-only"` config option for only showing controls in speaker view (@gpotter2 in https://github.com/hakimel/reveal.js/pull/3716)
  • Extend search API to include `closeSearch` and `toggleSearch` (@lechten in https://github.com/hakimel/reveal.js/pull/3685)
  • Automatic source code spellcheck via GitHub action (@yarikoptic in https://github.com/hakimel/reveal.js/pull/3602)
  • Math plugin now ignores `code` tags by default (@hakimel in 0d02d8a303a39b02c919d86c94ec477d1e1b107d)
  • Muted background videos now autoplay in the speaker view.
  • Prevent `initialize` from being called twice (@hakimel in 16ac4b00671a8ac6433091118c4ebd9b00255545)
  • Auto-animate no longer skips matching fragments on adjacent slides (@hakimel in 6dea2a50941bf3be6824b3eadc5cb17feb87eb5b)

🐛 Bug fixes

  • Fix reveal.js not covering full viewport height in iOS by switching to `100dvh` (@hakimel in 6cebb771eec18e244a23719f94baf0e70242abe7)
  • Fix background video restarting when switching fragments from notes view (https://github.com/hakimel/reveal.js/issues/3633)
  • Fix gulp package not working in gulp 5 (@dennybiasiolli in https://github.com/hakimel/reveal.js/pull/3701)
  • Fix last slide not triggering `slidechange` event in scroll view (@hakimel in fe4a6e82b01df923085fa867656cf11180490465)
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/5.1.0...5.2.0
5.1.0
hakimelhakimel·2y ago·April 11, 2024
GitHub

📋 Changes

  • Add the `enter-fullscreen` class to any element in your presentation to turn it into fullscreen trigger (@hakimel)
  • Video backgrounds now continue to play seamlessly across multiple slides (@hakimel)
  • https://github.com/hakimel/reveal.js/assets/629429/d1bcbced-5ede-4e2d-83fb-d3f3804eb674

🐛 Fixes

  • MathJax3 plugin now works with in non-singleton reveal.js instances (@jokester in https://github.com/hakimel/reveal.js/pull/3595)
  • Changing slides via swipe gestures now works when swiping on videos—unless their controls are visible (@hakimel)
  • Fix exception when destroying uninitialized reveal.js instance (@hakimel in #3593)
  • Fix videos restarting each time a fragment is shown (@hakimel in #2882)
  • Fix broken backwards navigation in RTL mode (@hakimel)
  • Fix error when the notes plugin receives a non-string message (@NatKarmios in https://github.com/hakimel/reveal.js/pull/3588)
  • Fix question mark shortcut on non-English keyboard layouts (@lechten in https://github.com/hakimel/reveal.js/pull/3603)
  • Fix `r-stack` overflow behavior in Chromium browsers (@alifeee in https://github.com/hakimel/reveal.js/pull/3598)
  • + 1 more
5.0.5
hakimelhakimel·2y ago·February 26, 2024
GitHub

📋 Changes

  • Keyboard navigation support in scroll view (@hakimel in #3515)
  • Add F1 shortcut for showing help overlay (@gchriz in #3570)

🐛 Fixes

  • Fix postMessage XSS exploit (@hakimel in 3dade6117628beb7706b4abdc61c268ce281abbc)
  • Fix stack backgrounds not working in scroll view (@bouzidanas in #3568)
  • Fix `fragmentshown` and `fragmenthidden` not firing in scroll view (@bouzidanas, @ hakimel in #3580)
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/5.0.4...5.0.5
5.0.4
hakimelhakimel·2y ago·December 22, 2023
GitHub

🐛 Fixes

  • Missing slide backgrounds in mobile scroll view (#3554)
5.0.3
hakimelhakimel·2y ago·December 18, 2023
GitHub

📋 Changes

  • Search plugin now supports searching for diacritics and searches full phrases (@t-fritsch in #3532)
  • Jump-to-slide now adapts to the configured slide number format (@hakimel in #3501)
  • Slide background XSS prevention (@EastSun5566 in https://github.com/hakimel/reveal.js/pull/3548)

🐛 Fixes

  • Fix speaker notes not appearing in PDF exports (@hakimel in #3535)
  • Fix exception when stepping backwards through code highlights (@hakimel in #3524)
  • Fix exception when navigating decks in mobile browsers (@hakimel in #3539)
  • Fix pause/help overlay position in scroll view (@hakimel in #3542)
  • Fix mobile scroll view navigation when fragments began at a index higher than 1 (@hakimel #3540)
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/5.0.2...5.0.3
5.0.2
hakimelhakimel·2y ago·November 9, 2023
GitHub

📋 Changes

  • Upgrade dependencies (@Mister-Hope in https://github.com/hakimel/reveal.js/pull/3505)
  • Make Markdown plugin callable without a reveal deck instance (@hakimel in https://github.com/hakimel/reveal.js/issues/3517)
  • Fix exception in speaker view (@hakimel #2512)
  • Fix issue where a future vertical slide background sometimes flashed into view prematurely (@hakimel in https://github.com/hakimel/reveal.js/issues/3520)
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/5.0.0...5.0.2
5.0.0
hakimelhakimel·2y ago·October 27, 2023
GitHub

📦 Scroll view

  • reveal.js 5.0 comes with a groundbreaking new feature; scroll view! (https://github.com/hakimel/reveal.js/pull/3482)
  • Slide decks are a great format for giving presentations, but scrollable web pages are easier for viewers to read on their own.
  • The scroll view gives you the best of both worlds—without any extra effort. Present in the format best suited for presenting, share in the format best suited for consumption.
  • Here's what it looks in action:
  • https://github.com/hakimel/reveal.js/assets/629429/bd0e35ed-a859-4703-84ed-aac87702a6b6
  • Want to try it out yourself? Check out the announcement deck I put together for slides.com 👉 <https://slides.com/news/scroll-mode/scroll>

📦 How to use it

  • The scroll view is enabled by initializing reveal.js with `view: "scroll"` or by appending `?view=scroll` to a deck URL.
  • ```js
  • Reveal.initialize({ view: 'scroll' });
  • ```
  • It's possible to fine tune this view through multiple new config options. Full documentation available at <https://revealjs.com/scroll-view>.

💥 Breaking change

  • ```js
  • Reveal.initialize({ scrollActivationWidth: null })
  • ```

📋 Changes

  • The PDF print view can now be activated via config `Reveal.initialize({ view: 'print' })` (@hakimel in #3482)
  • The new URL query for activating the print view is `?view=print`. It used to be `?print-pdf`, which is still supported for backwards compatibility. (@hakimel in #3482)

🐛 Fixes

  • Notes from `data-notes` were not working on the slide-level (@skyboyer in https://github.com/hakimel/reveal.js/pull/3477)
  • Add 'wheel' event listener, remove deprecated `mousewheel` & 'DOMMouseScroll` (@quochuy in https://github.com/hakimel/reveal.js/pull/3489)
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/4.6.0...5.0.0
4.6.0
hakimelhakimel·2y ago·September 12, 2023
GitHub

📋 Changes

  • Add support for line number offsets in Markdown code blocks. [Read the docs](https://revealjs.com/markdown/#line-number-offset) (@flowolf #3409)
  • Significantly speed up livereload (@t-fritsch #3446)
  • Add support for links to the id of an element nested inside slide (@t-fritsch #3444)
  • Adds ability to override Markdown plugin default options (@t-fritsch #3443)
  • Allow theme subfolders (@t-fritsch #3442)
  • Refactored Markdown plugin to use let/const and strict equality (@grgprarup #3454)

🐛 Fixes

  • Auto-slide duration falls back on global setting `autoSlide` instead of using first fragment auto-slide (@hakimel)
  • When a fragment sets `data-autoslide`, all fragments of the same index will now use the same auto-slide timing (@hakimel)
  • Fix code block auto-animate bug that caused unmatched lines to appear without fading in (@hakimel)
  • Fix livereload when using root CLI param (@t-fritsch #3441)
  • Fix scss watch tasks broken on syntax error (@t-fritsch #3445)
  • Fix typos in variable names (@individual-it #3453)
  • Fix code blocks font when printing pdf (@t-fritsch #3457)
  • Fix dracula's theme list-style on sub-items (@gildasio #3450)
  • + 2 more
4.5.0
hakimelhakimel·3y ago·April 13, 2023
GitHub

📋 Changes

  • Add support for jump-to-slide! 🚀 Press the G key and type a slide number or title. [Read the docs](https://revealjs.com/jump-to-slide/) (@hakimel)
  • Add `dracula` theme (@iiska #3324)
  • Add two new high contrast themes: `black-contrast` and `white-contrast` (@peter-kehl @hakimel #3367)
  • Add default lang attribute to index.html (@sojinsamuel)
  • It's now easier to define custom fragment styles via a new `.custom` class and reduced specificity. [Read the docs](https://revealjs.com/fragments/#custom-fragments) (@hakimel)
  • Live reload now works with `.html`/`.md` files in subfolders (@lolmaus #3305)

🐛 Fixes

  • Update dependencies and fix all npm audit warnings (@hakimel)
  • Fix issue with special characters in slide background image URLs (@Martinomagnifico #3315)
  • Fix an issue where leading whitespace was sometimes incorrectly stripped from Markdown (@jerrykan #3358)
  • Fix spacing between slides in overview mode when `disableLayout: true` (@Proliecan #3291)
  • The reveal.js print styles will no longer apply to content outside of reveal.js (@hakimel #3348)
  • Improve selection color contrast for black theme (@hakimel)
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/4.4.0...4.5.0
4.4.0
hakimelhakimel·3y ago·October 17, 2022
GitHub

📋 Changes

  • Gradient slide backgrounds, [read the docs](https://revealjs.com/backgrounds/#gradient-backgrounds) 🌈 (@gcmznt in #2510)
  • If multiple separate notes are provided for the same slide they will now all show in the speaker view (@lechten in #3010)
  • Updated browser targets from `> 0.5%, IE 11, not dead` to `> 2%, not dead`
  • Stop using `zoom` for presentation scaling. Zoom produced sharper upsizing than CSS transforms but it's a non-standard CSS property with a few too many quirks. e281b3234e7991283ce4dcca705dd9a6a9ebe5d2

🐛 Fixes

  • Fix issue where speaker view wasn't syncing (@hakimel #3285)
  • Fix incorrect slide numbers when exporting vertical slides to PDF (@chivongv in 3182)
  • Fix inconsistent fragment visibility in looped presentations (@hakimel in #3123)
  • Fix bug where `r-fit-text` caused text to truncate in PDF exports (@hakimel in #3120)
  • Fix bug where auto-animate could interfere with inherited line-height (@hakimel)
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/4.3.1...4.4.0
4.3.1
hakimelhakimel·4y ago·March 21, 2022
GitHub

📋 What's Changed

  • Fix bug that prevented speaker view from working from `file://` protocol (@hakimel #3158)
  • Fix console errors attempting to parse postMessage events from sources other than reveal.js (@hakimel)
  • Fix issue with providing your own config for MathJax3 plugin (@eric-wieser in https://github.com/hakimel/reveal.js/pull/3157)
  • Fix ZIP package gulp task (@dennybiasiolli in https://github.com/hakimel/reveal.js/pull/3156)
  • Replace deprecated String.prototype.substr() (@CommanderRoot in https://github.com/hakimel/reveal.js/pull/3165)
  • Full Changelog: https://github.com/hakimel/reveal.js/compare/4.3.0...4.3.1
4.3.0
hakimelhakimel·4y ago·February 28, 2022
GitHub

📋 Changes

  • It's now possible to destroy/uninitialize a reveal.js presentation. This will remove all event listeners and roll back all changes made to the DOM. It will also unregister all plugins and destroy them if they expose a destroy method. (#1145 / @hakimel)
  • ```js
  • Reveal.destroy();
  • ```
  • You can now provide an absolute URL to the presentation that should be loaded in the speaker view. This is useful if you have a presentation integrated as part of a web page but still want the speaker view to work.
  • ```js
  • Reveal.initialize({ url: 'https://example.com/my-reveal-presentation' })
  • ```
  • + 1 more

🐛 Fixes

  • Fix the speaker view no longer goes out of sync with your presentation after live-reloading (#2822 / @hakimel).
  • Fix XSS vulnerability in speaker view (#3137 / @r0hanSH)
  • Fix issues with scaling embedded presentations when entering fullscreen mode in Safari (#3080 / @Martinomagnifico)
4.2.1
hakimelhakimel·4y ago·December 6, 2021
GitHub

🐛 Fixes

  • Fix an issue where some slides disappeared (fully or partially) after slide transitions in Chrome (9e583b8df4edecb94cb89f012ae5c80014a859ee @hakimel)
  • Fix an issue that caused double-navigations and impacted presentation performance (@hakimel #3079)
  • Fix `--host` not working in `npm start -- --host=0.0.0.0` (@cashcat #3075)
  • Fix incorrect sizing of auto-sized text in PDF exports (https://github.com/hakimel/reveal.js/issues/2865#issuecomment-970258829 @hakimel)
  • Fix background video playback issue in some browsers by inferring MIME type from file extension (#3078 @vanch3d)
4.2.0
hakimelhakimel·4y ago·November 12, 2021
GitHub

📋 Changes

  • The math plugin now supports three typesetting libraries: KaTeX, MathJax 2 and MathJax 3. We continue to use MathJax 2 as our default so this is fully backwards compatible. Learn how to choose between typesetters and how to configure them in the docs at <https://revealjs.com/math#typesetting-libraries> (@burgerga in #2559).
  • New event: `beforeslidechange` (#3003). This makes it possible to conditionally prevent navigations:
  • ```js
  • // This prevents all slide changes
  • Reveal.addEventListener( 'beforeslidechange', e => e.preventDefault() );
  • ```
  • New keyboard shortcut for skipping fragments while navigating: alt + ←/↑/→/↓.
  • New API option for skipping fragments in directional navigation `Reveal.right({ skipFragments: true })`.
  • + 12 more

🐛 Fixes

  • The last slide keyboard shortcut now works for looped presentations (#3007).
  • Markdown code blocks can be turned into fragments (@nicojs in #2982).
  • Unit tests can now run in Windows (@Vandivier in #3027).
  • Restored support for base64 background images, broken since 4.1.1 (#2978).
  • Fixes an issue that prevented presentations from looping when `navigationMode` was set to `linear`.
  • Internal links leading to a slide with video/audio element will now correctly start media playback. This issue only affected mobile browsers.
4.1.2
hakimelhakimel·5y ago·June 9, 2021
GitHub

📋 Changes

  • Adds support for `data-auto-animate-restart` and `data-auto-animate-id`. These properties give you finer control over which slides that should auto-animate between each other (@coffeenotfound in #2896).
  • Theme properties are now available as CSS variables, making them easy to override. [Full list of variables](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/exposer.scss) (#2740 + #2968).
  • Here's an example you can drop into your presentation's HTML:
  • ```html
  • <style type="text/css">
  • :root {
  • --r-background-color: indigo;
  • --r-main-color: #f5f5f5;
  • + 4 more

🐛 Fixes

  • Markdown enabled speaker notes (`<aside class="notes" data-markdown>`) are no longer visible on-slide.
4.1.1
hakimelhakimel·5y ago·May 20, 2021
GitHub

📋 Changes

  • Adds support for Node.js 16.
  • `data-background-image` now accepts multiple images (#2940).
  • New Markdown config option `animateLists` — automatically turns all lists into stepped fragments (#2956).
  • Reduce the tab size in code blocks from 8 to 2.
  • More accurate calculation of which slide to jump to when clicking on the progress bar (#2836).
  • Optimize DOM interactions and reduce forced layouts when exporting to PDF (#2843).

🐛 Fixes

  • Video/audio inside of a fragment now stop playing when the fragment is hidden.
  • Markdown is now split into individual slides by the default separator (`---`) as advertised.
  • The `r-fit-text` layout helper now sizes text correctly in PDF exports.
  • Fixes an issue where some slide-specific transitions were incorrectly overridden by the global transition setting.
  • The `has-dark-background` helper class now works when using named colors for `data-background-color ` (#2933).
4.1.0
hakimelhakimel·5y ago·October 12, 2020
GitHub

📋 Changes

  • New: Add `data-visibility="hidden"` to a slide to hide it from view. [Docs & examples](https://revealjs.com/slide-visibility)
  • 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](https://revealjs.com/layout/#fit-text)
  • 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)
4.0.2
hakimelhakimel·6y ago·May 29, 2020
GitHub

📋 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.
4.0.1
hakimelhakimel·6y ago·May 25, 2020
GitHub

🐛 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
4.0.0
hakimelhakimel·6y ago·May 20, 2020
GitHub

📦 Highlights

  • New website, docs and logo! https://revealjs.com/ 🚀
  • [Auto-Animate](https://revealjs.com/auto-animate/) lets you create complex animations by automatically transitioning between matched elements across slides. [Duration, delay and easing](https://revealjs.com/auto-animate/#animation-settings) can be set on a per-slide or per-element basis.
  • We now support [multiple presentations](https://revealjs.com/initialization/#multiple-presentations) on the same page.
  • This also introduces a new [embedded](https://revealjs.com/presentation-size/#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](https://revealjs.com/initialization/#es-module)
  • + 1 more

📋 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](https://revealjs.com/upgrading/).
  • Moves all print CSS into reveal.js. The old [script-based print styles](https://github.com/hakimel/reveal.js/blob/00b0ace3863952ce95df4430d203686fd27bfc20/index.html#L16-L23) can be removed. by @quilicicf
  • Adds a new `slidetransitionend` event.
  • Adds a new [r-stack](https://revealjs.com/layout/#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.
  • + 3 more

📦 Plugins

  • New syntax for [registering plugins](https://revealjs.com/plugins/).
  • All built-in plugins—such as markdown and highlight—are now available as ES modules. [More info](https://revealjs.com/plugins/)
  • 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](https://revealjs.com/markdown/#syntax-highlighting) in syntax highlighted code.
  • Markdown: Support for boolean data- attributes. by @Bagira80
  • + 3 more

🐛 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
3.9.2
hakimelhakimel·6y ago·January 31, 2020
GitHub

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`.

3.9.1
hakimelhakimel·6y ago·January 29, 2020
GitHub

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 🤦‍♂️

3.9.0
hakimelhakimel·6y ago·January 29, 2020
GitHub

📋 Changes

  • Adds [step-by-step code highlights](https://github.com/hakimel/reveal.js/blob/master/README.md#step-by-step-highlights)! Step through multiple line highlights on the same code block.
  • Adds [postMessage callbacks](https://github.com/hakimel/reveal.js#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!)
  • 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](https://github.com/hakimel/reveal.js#lazy-loading-iframes).
  • The slide number format specified through `slideNumber` is now honored in PDF exports. (#2337 by @dougalsutherland)
  • Adds `data-fragment=<index>` to any slide <section>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.
  • + 11 more
3.8.0
hakimelhakimel·7y ago·April 1, 2019
GitHub

📋 Changes

  • 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](https://github.com/hakimel/reveal.js/blob/master/README.md#navigation-mode). (#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](https://github.com/hakimel/reveal.js/blob/master/README.md#lazy-loading-iframes). (#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.
  • + 22 more
3.7.0
hakimelhakimel·7y ago·August 1, 2018
GitHub

📋 Changes

  • [Key Binding API](https://github.com/hakimel/reveal.js#custom-key-bindings) (#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
  • + 11 more
3.6.0
hakimelhakimel·8y ago·November 23, 2017
GitHub

📋 Changes

  • New project domain: [revealjs.com](http://revealjs.com).
  • New presentation control arrows:
  • Redesigned for improved aesthetics and clarity.
  • Arrows bounce to attract attention until the viewer first navigates. The downwards arrow bounces the first time you arrive at a vertical stack too, making vertical slides harder to miss. This can be turned off by setting the `controlsTutorial` config option to false.
  • Arrows automatically change color to contrast the slide background. [Step left/right here to test.](https://revealjs.com/#/10)
  • Initialize reveal.js with `controlsLayout: "edges"` to have the controls appear along the edges of the screen instead of the bottom right corner. [Try it out](http://revealjs.com/?controlsLayout=edges).
  • New mobile-friendly layout for presentations shared with visible speaker notes.
  • The `showNotes` config option no longer shows the notes UI if there are no notes.
  • + 11 more
3.5.0
hakimelhakimel·9y ago·May 5, 2017
GitHub

📋 Changes

  • Add `display` config option to control the display mode slide section elements. (#1324 by @mojavelinux)
  • Add `Reveal.toggleHelp()`for toggling the help overlay. (#1816 by @frazer)
  • Slide fragments can now hold their own speaker notes. (#1636 by @traff)
  • The speaker view can now provide pacing advice. This makes it easy to detect if you're running out of time, or going too quickly. (#1564 by @aspiers, [more info](https://github.com/hakimel/reveal.js#speaker-notes-clock-and-timers))
  • Switch to a `<textarea data-template></textarea>` wrapper for Markdown to avoid HTML parsing issues. (#1780 by @ccqgithub)
  • Background videos now autoplay in iOS. (#1851 by @astone123)
  • Background iframes are now interactive when there is no content in the slide or `data-background-interactive` is present on the slide element.
  • Shift `dependencies` to `devDependencies` (#1764 by @demoneaux)
  • + 3 more