There's also the closed-source iA Presenter[0], which makes some great-looking slides. It's paid and Mac-only though.
I use Quarto with reveal.js and love it. I teach and particularly like the multiplex plugin[1] to sync the presentation on multiple devices. My students can open it on their laptops and I control the changing of the slides, but they can click on links or interact with the presentation themselves.
I really like these presentation-as-code tools in principle, but in practice I find that they can be a bit limiting. However, I haven't used them enough for this to be anything more than a general sense. Does anyone have an opinion on this?
You could pick an ecosystem with more power to control the finer details if and when that's needed. Typst is a LaTeX replacement with a syntax sort of in the markdown family of syntaxes (https://typst.app/docs/tutorial/writing-in-typst/), but fully programmable and with nice visualization options.
I rarely need anything more than bullet points or an image in my presentations, so I don't find them limiting. However, most of these allow arbitrary HTML/JS/CSS, so I wouldn't say they're that limiting. I occasionally include iframes, for example.
The big downside for me is you don't have easy pixel-level control over layout like you do in PowerPoint or Google Slides. Even changing font size, for example, is a little clunkier. I hear some people also miss being able to draw diagrams and flowcharts.
Limits can be good. I - like most people put too much on slides. Simple slides are good.
the reason complex tools can do so much as each feature is needed in some obscure case. However because it is there presenters are tempted to use it when they should not.
I tried out reveal.js for a while but, especially with Google Slides coming in, I found it limiting and increasingly the collaboration component of Google Slides was becoming more and more important to me at the time.
I really like reveal.js, you can use all the modern web technologies in your slides and it provides you with all you need (including speaker notes).
Even if your presentation runs offline the browser is really good place for presentations to live at. E.g. I can include live circuit simulations on slides using circuit.js and if a student asks whst would happen to the output of a signal processing circuit if there was one more component I can just add it. If a question shows up that isn't in there I press ctrl + t and search for an image or a wikipedia article on the topic.
The only thing one has to think about is maybe to create a "clean" browser profile for presentations so your suggestions and personal things don't show up mid presentation.
[0] https://github.com/marp-team/marp [1] https://github.com/mfontanini/presenterm [2] https://revealjs.com/