hakimel/reveal.js
The HTML Presentation Framework
How reveal.js is put together
reveal.js is a browser-side HTML presentation framework written in TypeScript/JavaScript with SCSS styling. The core is a Deck class (js/reveal.js) composed of many single-responsibility controllers under js/controllers/ that manage navigation, fragments, backgrounds, keyboard/touch input, and views; plugins (highlight, markdown, math, notes, search, zoom) live in plugin/ and are built as separate ES/UMD bundles via Vite. A nested react/ workspace provides an official React wrapper (@revealjs/react) built with Vite and tested with Vitest/jsdom. There is no backend: the library ships as dist bundles consumed by static pages (index.html, demo.html), with no datastores or server runtime.
Languages
Frameworks
Infrastructure
Major components
Core deck engine (js/reveal.js)
The Reveal Deck class that wires configuration, slide DOM parsing, layout/scaling, and exposes the public RevealApi.
Navigation & input controllers (js/controllers/keyboard.js, touch.js, location.js, jumptoslide.js, controls.js, focus.js)
Handle hash-based routing, keyboard shortcuts, touch gestures, jump-to-slide, on-screen controls, and focus management.
Slide content controllers (js/controllers/slidecontent.js, fragments.js, autoanimate.js, overview.js, scrollview.js, printview.js, backgrounds.js)
Manage slide transitions, fragment stepping, auto-animate, overview grid mode, scroll/print views, and slide backgrounds.
Plugin system (js/controllers/plugins.js, plugin/*/plugin.js)
Registers and initializes built-in plugins: highlight, markdown, math (KaTeX/MathJax 2-4), notes, search, zoom.
Speaker notes view (plugin/notes/plugin.js, plugin/notes/speaker-view.html)
Provides the presenter speaker-view window driven by a standalone HTML page.
Styling & themes (css/reveal.scss, css/theme/*.scss, css/print/*)
Core presentation styles, 15+ SCSS themes sharing template mixins/settings, and PDF/paper print stylesheets.
React wrapper (react/src/components/, react/src/index.ts)
React components (Deck, Slide, Stack, Fragment, Code, Markdown) exposing reveal.js declaratively, with Vitest unit tests.
Build & packaging scripts (scripts/, vite.config*.ts, build/dts-paths.ts)
Build core/styles/plugin bundles, generate .d.ts, add license banners, zip releases, and run QUnit-via-Puppeteer tests.
Accessibility and security took center stage, with hidden slides made non-interactive and dependencies upgraded to fix vulnerabilities.
This week's work on reveal.js focused on two things: improving accessibility for people using screen readers and keyboards, and routine maintenance. The standout change marks slides that aren't currently visible as 'inert' so hidden content can't be accidentally interacted with, alongside dependency upgrades that patch known security vulnerabilities.
Feature
Hidden slides marked inert
All slide sections that aren't currently being presented are now marked 'inert', meaning keyboards and assistive technologies can't interact with off-screen content (issue #1587).
Chore
Dependency upgrades to fix vulnerabilities
Project dependencies were upgraded to newer versions that resolve known security vulnerabilities.
Chore
General dependency refresh
A routine dependency upgrade was merged to keep the project's building blocks current.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 241 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required