A photo of Klaus Herberth Klaus Herberth wrote this on

V4.0.0 Released

Eleven month after the last bug fix release, it's time for something big: JSXC 4.0 is released with a bunch off long requested features like OMEMO, MUC invitation, voice-only call, JID escaping, experimental multi account support, and much more. We are really happy to present you the best version of JSXC since the project was founded in 2013.

With the new release we also deprecate our Github wiki in favour of our new documentation. Please feel free to submit changes to the jsxc/documentation repository;

You can download this release as usual from our release page or the nextcloud app store. If you like to test the release without any installation you can use our release or nightly demo page.

This huge release step will result in a lot of breaking changes, therefore we will explain briefly in the next section how you can install JSXC 4.0. At the end you will find a complete changelog, screenshots and a roadmap for the next release.


The installation is now quite a bit easier, even if there are not all options available you know from JSXC 3.x.

  1. Download and extract the release archive to your web root.
  2. Include the following files into your page:
    • styles/jsxc.bundle.css
    • jsxc.bundle.js
    • JQuery (3.x)
  3. If you like to use OMEMO, download libsignal and include its dist/libsignal-protocol.js. JSXC will then automatically detect it upon initialization.
  4. Initialize JSXC with jsxc.init() and use either jsxc.start() or jsxc.watchForm().

Our new API is now much cleaner and encapsulated. This means you can't call internal functions, like done before. You find more details in our API documentation.



  • OMEMO (XEP-0384)
  • MUC invitation
    • #341 mediated invitation
    • direct invitation (XEP-0249)
    • both also via contact drag and drop
  • #6 voice-only call
  • #501 JID escaping (XEP-0106)
  • #178 add in-band password change (XEP-0077)
  • #178 add in-band registration (XEP-0077)
  • send file via file drop
  • insert emoticon at cursor position
  • MUC subject in window header
  • full screen layout
  • display presence messages
  • option to disable all plugins
  • highlight quotations
  • show notice if offline contacts are hidden
  • show notice if contact list is empty
  • prepared multi account support (still experimental)
  • #512 add option to specify storage backend
  • show MUC avatars
  • show mute icon in roster if notifications are muted
  • support unicode emoticons
  • show spinner while enabling encrypted transfer
  • call all available resources at once
  • add simple webcam test
  • #656 support multiple incoming calls at once
  • use sender avatar color as background color for group chat messages
  • #841 add support for RTL messages


  • video calls can now be initiated from any tab
  • #328 MUC joining from any tab
  • fix and improve emoticon insertion
  • remove non-persistent contacts after login
  • translate OTR status messages
  • enhance roster insertion
  • #608 reset window size if browser gets resized


  • use Consistent Color Generation (XEP-0392)
  • use more natural bounce animation for notice icon
  • use object based public API
  • use custom resource with jsxc prefix as default resource

Developer notes

  • Typescript, Webpack, Handlebars, Karma, Mocha, Chai and Sinon
  • removed build and doc folder, git submodules, bower and grunt
  • share one XMPP connection across all tabs
  • add plugin API
  • form watcher instead of form option
  • API to add roster menu entries (jsxc.addMenuEntry())
  • API to test BOSH server (jsxc.testBOSHServer())
  • use SASS guidelines and BEM-like style syntax
  • add commit lint and require [Conventional Commits]


  • Jingle file transfer
  • bookmarks


We know that there is still a lot to do to make JSXC even better. For an up-to-date list of our roadmap, please see the github milestones, but following you find the most important ones for the next feature release.

  • Message synchronisation: Load all messages (sent and received) since you where offline.
  • Screen sharing with audio: Add a voice to the screen stream.
  • Network events: Automatically reconnect if the network state changes.
  • Multi account: Connect to multiple accounts.
  • Group OMEMO: Enable OMEMO in MUC rooms.
  • Encrypted file transfer: Encrypt files if using end-to-end encryption.

You find a complete list of feature requests on our issue tracker.


Chat window was slightly modernized and updated:

Screenshot chat window

Every user has his own background color and the avatar is beside a message:

Screenshot muc window

Inputs and buttons look a lot more up-to-date:

Screenshot dialog

We offer a two column full screen layout:

Screenshot full screen layout


Get in touch with us