You are correct that the packages convert html to Karax code, rather than the runtime representation.
innerHtml is a good option here, there is also a verbatim node (that uses innerHtml in it's implementation).
When doing manual dom-wrangling it can be useful to pass in a clientPostRenderCallback to the setRenderer call. There's an example using a charts library.
If you have issues with Karax flagging your dom manipulations you can use setForeignNodeId to tell Karax to not check it.