There are widgets other than Plotly that support htmlwidgets::saveWidget(); here's a gallery of them! Many—but not all—of those widgets support Crosstalk, which allows widgets to talk to each other with or without Shiny. If you have a look on the Crosstalk site, you can see some examples of how it'd work in a standalone page without Shiny.
That said, anything reactive other than the widgets themselves—such as general purpose sliders to modify plots—is going to require Shiny, unless you decide to build a custom htmlwidget to handle such behaviour (or fork an existing one!). There's no option to make any old Shiny app run without Shiny AFAIK; they need it to do what they do.
EDIT: actually, looking at Crosstalk examples a bit further, it does allow you to add controls that can filter content (but not do more general purpose computation, like a total rerender). Unless you need R code to rerun whenever your plots update, this might be what you want!