Web slides are web apps: live interactivity for Reveal.js and Slidev

Cover for Web slides are web apps: live interactivity for Reveal.js and Slidev

Nothing could make me switch from Keynote. I tried. Sli.dev, Google Slides—I’d poke around, appreciate the novelty, and then go right back. Keynote was my home base; ready to express any creative idea with powerful animations and my own muscle memory. Then, about a month ago, something shifted, and it wasn’t about the slide tech, but about how I work. This made me take the leap—and I built an open-source tool for adding live audience quizzes to web presentations.

Book a call

Irina Nazarova CEO at Evil Martians

Book a call

From slides to web app

Once I started doing AI-assisted research—pulling data from multiple sources, storing results in .md files, analyzing with scripts—reaching for a web-based presentation felt natural. The slide deck becomes part of the codebase, not a separate artifact you maintain by hand.

I first built a custom web presenting app for my talk at RubyConf Thailand this January (check it out). Then, it hit me: a deployed web presentation is a real web app. And if it’s a web app, I can connect it to a WebSocket service and get real-time communication between me and the audience!

People in the room scan a QR code, land on a page, and answer my questions live. I see results animate my slides in real time. We’ve been building real-time features with AnyCable for years—for Doximity, Healthie, ClickFunnels, and others—so naturally, I reached for our own tool. Specifically, AnyCable Plus—our free hosted service.

(A quick note on AnyCable Plus—sign up and instantly get your AnyCable Pro credentials. Free tier supports up to 2,000 connections, more than enough for a conference. You can also use other pubsub services like Ably or Pusher, or deploy AnyCable yourself—it’s MIT licensed.)

Introducing slide-quiz

So after trying this out live in Bangkok, I went back and started building a plugin for live quizzes for web presenting frameworks, starting with Reveal.js and Slidev.

As a result, Slide Quiz was born. Here you can see it in action:

Slide Quiz is an open-source plugin for Reveal.js and Sli.dev that adds live audience quizzes to your presentations. Define questions on your slides, deploy to Netlify or Vercel with a couple of serverless functions as your tiny backend, and present!

While there are serious services that do this for PowerPoint, Google Slides, and Keynote (Mentimeter, Slido, Poll Everywhere), but they don’t integrate with existing web presenting frameworks.

Right now, slide-quiz supports two question types: multiple choice with live bar charts, and free text with a live word cloud. Here’s what it looks like in Reveal.js (HTML data attributes) and Slidev (Markdown frontmatter):

<!-- Reveal.js: Multiple choice -->
<section data-quiz-id="q1"
         data-quiz-question="Where are you joining from?"
         data-quiz-options='[
           {"label":"A","text":"San Francisco"},
           {"label":"B","text":"New York"},
           {"label":"C","text":"Europe"},
           {"label":"D","text":"Elsewhere"}
         ]'>
</section>

<!-- Reveal.js: Free text → word cloud -->
<section data-quiz-id="q2" data-quiz-type="text"
         data-quiz-question="What's your favorite framework?">
</section>
---
# Slidev: Multiple choice
layout: quiz
quizId: q1
question: Where are you joining from?
options:
  - { label: A, text: San Francisco }
  - { label: B, text: New York }
  - { label: C, text: Europe }
  - { label: D, text: Elsewhere }
---

Questions are defined once on the presenter’s slides and synced automatically to the audience page—when the presenter advances to the next question, everyone’s phones update instantly.

Answers flow back just as fast: switch to the results slide and watch the bar chart or word cloud build up live as people respond.

The setup has three parts: your slide deck, a couple serverless functions (automatically deployed to Netlify or Vercel), and a WebSocket service. We made a CLI for it (because of course we did):

npx create-slide-quiz

The CLI detects whether you’re using Reveal.js or Slidev, walks you through creating a free AnyCable Plus app, scaffolds the project (or installs the slidev-addon-slide-quiz addon into your existing Slidev deck), and optionally deploys it.

Try the live demo—open it in one tab as the presenter, then scan the QR code with your phone.

What’s next?

This is early, and the list of things we want to do is already longer than the list of people who have used it for anything real:

  • More question types — ratings, polls, reactions?
  • Persistent results — right now, quiz data lives in the presenter’s browser session. Once you close the tab, it’s gone. Exporting to real storage would make post-talk analysis possible.
  • More deployment targets — AWS Amplify, Cloudflare Workers, and beyond.

Note that this is my first npm package ever, and a huge thank you to Vladimir Dementyev and Pavel Grinchenko for their code review and help! Thank you to Vladimir for contributing the CLI signup flow for AnyCable Plus! If you like this, please star the repo and consider contributing.

In the meantime, I’m hoping to see more interactive quizzes at the Evil Martians All Hands!

Book a call

Irina Nazarova CEO at Evil Martians

From live quizzes to collaborative editing, we build real-time experiences powered by AnyCable and WebSockets. Let's talk about what we can build for you!