Back in October 2025, I gave a joint talk with the wonderful Nic Crane at Shiny in Production 2025 with an utterly ridiculous title that was the result of several hallucinations:
htmlwidgets Are a Secret Sauce in R – Can LLMs Make Them the Perfect Condiment?
It’s now live on Jumping Rivers’ YouTube channel!
What’s the talk about?
In our talk we wanted to expose hardcore Shiny developers (this was about production shiny after all) to a truth they likely didn’t know.
htmlwidgets power the most compelling and interesting shiny apps.
In fact, during the conference we’d seen many speakers talk about {leaflet} and {plotly} but very few people in the audience realised that those packages are htmlwidgets! And it’s not just them; it’s {DT}, {visNetwork}, {highcharter} and even {profvis}!
We also wanted to show how it’s fairly easy to build your own package using the htmlwidgets framework. But we also needed to tie the talk to LLMs as that’s what everybody is interested in right now. So, what better than exploring how to use LLMs to build a htmlwidgets package - and how they fail along the way. There’s some light live coding in the talk, and you can find the timeline we built on GitHub.
The hex sticker moment
The real reason behind the talk was to finally get htmlwidgets a hex sticker, which I’ve had as a goal ever since 2018. Nic and I had been working with Carson Sievert on a design during the talk writing. We hadn’t managed to get it merged before the conference — but during the Q&A, some of Carson’s friends in the audience told us the sticker had just been officially merged.
Why htmlwidgets still matter
If you’ve been following along with my January post on moving beyond plotly, you’ll know I feel strongly that the {htmlwidgets} ecosystem is vastly underappreciated. The vast majority of R users have no idea that {plotly} and {leaflet} are just two of 130+ registered htmlwidgets packages. Understanding that gives you access to a whole universe of interactive visualisation.