Web components are bare metal standard stuff that works on all devices. You could use Lit as a small shim for reactive rendering. That way, you can create your component library with nearly zero dependencies and yet use it in desktop-equivalent apps (via Electron or distribute as a web app).