I was involved in an #XMPP OMEMO sprint this weekend with devs from Dino, Conversations and Gajim.
We decided to focus on modifying the various libsignal libraries used by the clients to make them compatible with the latest OMEMO version (which AFAIK no client yet fully supports).
I forked libsignal-protocol-javascript into libomemo.js
https://github.com/conversejs/libomemo.js
A lot of time was spent updating ancient dependencies and getting tests to run. I then started making changes for OMEMO compat.
libomemo.js is still very much a work in progress.
I'm still busy updating it to use the latest protobuf.js which has a completely different API.
Once that's done, I'll make the OMEMO-related protobuf changes to the lib.
I'm also considering migrating the codebase to TypeScript.
Eventually is should be possible for all other JavaScript XMPP clients to use libomemo.js for the crypto part of OMEMO.