#conversejs has some unique characteristics which no other chat app which I'm aware of has.
It has view modes, so you can have separate chat boxes overlayed over an existing website, a fullscreen app or an embedded "widget".
It's pluggable and you can remove core plugins to shape it into the form you need. E.g. you can remove groupchats entirely, or the roster view or OMEMO etc.
Almost anything is changeable or overridable and it has lots of configuration settings.