Skip to content

Releases: hakimel/reveal.js

6.0.0

11 Mar 11:54

Choose a tag to compare

New Package: @revealjs/react

reveal.js now has an official React wrapper! The @revealjs/react package lets you build presentations using React componentsβ€”<Deck>, <Slide>, <Stack>, <Fragment>, and <Code>. Learn more over at revealjs.com/react.

import { Deck, Slide, Fragment } from '@revealjs/react';

<Deck>
  <Slide>
    <h1>Hello World</h1>
    <Fragment asChild>
      <h2>Appears on click</h2>
    </Fragment>
  </Slide>
</Deck>

Try it out by pulling reveal.js master and running npm run react:demo.

Breaking Changes

See the full upgrade guide 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.

Changes

  • Switch from gulp to Vite for building and running reveal.js (@hakimel)
  • Add official React wrapper for reveal.js β€” @revealjs/react (@hakimel)
  • TypeScript types are now published as part of the package, based on the great work over at @types/reveal
  • Dark mode and llms.txt support for 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)
  • sync() now also updates slide classes, fixing issues when adding or removing slides and then calling sync (@hakimel)
  • A sync event is now dispatched when reveal.js syncs (@hakimel)
  • Add removeHiddenSlides() to the API (@hakimel)
  • data-id is now supported for slide links (@hakimel)
  • data-preview-link value now takes precedence over the anchor's href (@hakimel in #3854)
  • Prevent iframes from stealing keyboard focus, controllable via the new preventIframeAutoFocus config option (@hakimel)
  • Pressing Enter on the active slide in overview mode now exits the overview and opens that slide (@tobi-or-not-tobi)
  • The display config option now supports !important (@boba-beba)
  • Distinct active/hover state difference in overview mode (@hakimel in #3780)

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: 5.2.1...6.0.0

5.2.1

28 Mar 13:00

Choose a tag to compare

Lightbox bug fixes and improvements

  • Prevent reveal.js keyboard shortcuts while lightbox is open (@tobi-or-not-tobi in #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 #3768)
  • Added lightbox example to demo.html

Full Changelog: 5.2.0...5.2.1

5.2.0

19 Mar 11:03

Choose a tag to compare

New Feature: Lightbox

Any element in your presentation can now be turned into an image/video lightbox trigger. Clicking reveals a full-size lightbox overlay where users can view your image or video. This is great for things like clickable thumbnails in a gallery.

<!-- 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 -->
<button data-preview-video="C.mp4">Play video</button>

Docs: revealjs.com/lightbox.

Here's what it looks like in action:

lightbox.mp4

Changes

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

Bug fixes

  • Fix reveal.js not covering full viewport height in iOS by switching to 100dvh (@hakimel in 6cebb77)
  • Fix background video restarting when switching fragments from notes view (#3633)
  • Fix gulp package not working in gulp 5 (@dennybiasiolli in #3701)
  • Fix last slide not triggering slidechange event in scroll view (@hakimel in fe4a6e8)

Full Changelog: 5.1.0...5.2.0

5.1.0

11 Apr 07:03

Choose a tag to compare

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)
continuous-video-bg-2.mp4

Fixes

  • MathJax3 plugin now works with in non-singleton reveal.js instances (@jokester in #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 #3588)
  • Fix question mark shortcut on non-English keyboard layouts (@lechten in #3603)
  • Fix r-stack overflow behavior in Chromium browsers (@alifeee in #3598)

Full Changelog: 5.0.5...5.1.0

5.0.5

26 Feb 10:23

Choose a tag to compare

Changes

Fixes

Full Changelog: 5.0.4...5.0.5

5.0.4

22 Dec 12:21

Choose a tag to compare

Fixes

  • Missing slide backgrounds in mobile scroll view (#3554)

5.0.3

18 Dec 09:19

Choose a tag to compare

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 #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: 5.0.2...5.0.3

5.0.2

09 Nov 08:11

Choose a tag to compare

Changes

  • Upgrade dependencies (@Mister-Hope in #3505)
  • Make Markdown plugin callable without a reveal deck instance (@hakimel in #3517)
  • Fix exception in speaker view (@hakimel #2512)
  • Fix issue where a future vertical slide background sometimes flashed into view prematurely (@hakimel in #3520)

Full Changelog: 5.0.0...5.0.2

5.0.0

27 Oct 13:58

Choose a tag to compare

Scroll view

reveal.js 5.0 comes with a groundbreaking new feature; scroll view! (#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:

reveal-scroll-view.mp4

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.

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

The scroll view is automatically enabled for viewports below 435px wide. This is done because I believe the scroll view to be a superior way to browse any deck on a mobile device. If you want to revert this behavior and always paginate between slides, see scrollActivationWidth:

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 #3477)
  • Add 'wheel' event listener, remove deprecated mousewheel & 'DOMMouseScroll` (@quochuy in #3489)

Full Changelog: 4.6.0...5.0.0

4.6.0

12 Sep 07:39

Choose a tag to compare

Changes

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)
  • Fix dracula li markers (@t-fritsch #3464)

Full Changelog: 4.5.0...4.6.0