← Back to home
Comparison · Comms

Converse.js vs Maddy

A side-by-side editorial comparison of Converse.js and Maddy — release velocity, themes, recent moves, and the top alternatives to consider.

Converse.js vs Maddy: at a glance

FeatureConverse.jsMaddy
SectorCommsComms
Velocity score0.00.0
Sparks · 30d00
Top themesxmpp, omemo-encryption, e2e-usability, pubsub-apimail-server, self-hosted, golang, zero-downtime-reload
Last editorial update2h ago2d ago
WebsiteVisit →Visit →

What is Converse.js?

Converse.js 14 lands OMEMO:2 — the browser XMPP client catches up on modern encryption.

Converse.js reached 14.0.0 in June 2026 after a tight beta train, and the release is defined by one thing: support for OMEMO:2, the current revision of XMPP's end-to-end encryption. The surrounding work is all encryption ergonomics — per-chat encryption state remembered across chat-close and re-login, an explicit error surfaced for undecryptable messages instead of silently dropping them, the toggle hidden on untrusted devices, and original filenames preserved on encrypted image download. New PubSub API methods for create, subscribe and unsubscribe round out the release.

Read the full Converse.js trajectory →

What is Maddy?

A one-binary mail server learning to behave like production infrastructure.

maddy is an all-in-one SMTP and IMAP server written in Go, aimed at people who want a working mail host without assembling Postfix, Dovecot and a policy daemon themselves. The 0.9 line moved quickly — 0.9.0 through 0.9.5 between late March and late May — with the sequence following a recognisable shape: a feature release, an immediate patch for a broken integration, a security release, then cleanup. Configuration is directive-based, and much of the changelog concerns the behaviour of individual modules like auth.ldap, check.rspamd and check.dnsbl.

Read the full Maddy trajectory →

Converse.js vs Maddy: editorial side-by-side

C0.0

Converse.js 14 lands OMEMO:2 — the browser XMPP client catches up on modern encryption.

◆ Current state

Converse.js reached 14.0.0 in June 2026 after a tight beta train, and the release is defined by one thing: support for OMEMO:2, the current revision of XMPP's end-to-end encryption. The surrounding work is all encryption ergonomics — per-chat encryption state remembered across chat-close and re-login, an explicit error surfaced for undecryptable messages instead of silently dropping them, the toggle hidden on untrusted devices, and original filenames preserved on encrypted image download. New PubSub API methods for create, subscribe and unsubscribe round out the release.

◆ Where it's heading

The project is closing the gap between having encryption and having usable encryption. Almost every OMEMO change in this cycle is about failure modes users previously had to guess at: a silently dropped message, an encryption toggle offered where it cannot work, an abandoned bundle that never self-healed. That is the work a client does when its encryption is no longer a demo but something people depend on daily. Dropping client-compress for native browser APIs points the same way — fewer bundled dependencies in a security-sensitive path.

◆ Prediction

Expect the 14.x line to settle into interoperability fixes as OMEMO:2 meets other XMPP clients in the wild, with the new PubSub API the most likely base for the next feature layer.

M
Maddy
COMMS
0.0

A one-binary mail server learning to behave like production infrastructure.

◆ Current state

maddy is an all-in-one SMTP and IMAP server written in Go, aimed at people who want a working mail host without assembling Postfix, Dovecot and a policy daemon themselves. The 0.9 line moved quickly — 0.9.0 through 0.9.5 between late March and late May — with the sequence following a recognisable shape: a feature release, an immediate patch for a broken integration, a security release, then cleanup. Configuration is directive-based, and much of the changelog concerns the behaviour of individual modules like auth.ldap, check.rspamd and check.dnsbl.

◆ Where it's heading

The project is systematically removing the compromises that made early versions convenient. Obsolete SASL LOGIN was disabled by default, the STARTTLS plaintext fallback was dropped, the maddyctl symlink behaviour and the implicit run command were deleted after four years of deprecation warnings, and libdns providers that have not kept up with 1.x are being cut. Running the other way is operational maturity: no-downtime config reload, queue-length metrics, OpenMetrics fixes, systemd readiness reporting, and SLSA build attestations on release artifacts. This is a project moving from hobbyist-friendly to operator-friendly, and accepting breakage to get there.

◆ Prediction

0.10.0 is already scoped by the deprecations announced in 0.9.1 — expect the flagged libdns providers to be removed and gandi to require Bearer tokens. Given the 0.9.x pattern, a feature release followed quickly by an integration fix is the likely shape.

Alternatives to Converse.js and Maddy

Other Comms products tracked by Sparkpulse, ranked by recent ship velocity. Each card links to a full editorial trajectory and lets you pivot into a head-to-head comparison with either Converse.js or Maddy.

See all Converse.js alternatives → · See all Maddy alternatives →

Recent activity from Converse.js and Maddy

Latest ship moves from both products, interleaved chronologically. ⚡ = editorial spark.

  1. 1mo agoConverse.jsOMEMO:2 encryption support ships in Converse 14
  2. 1mo agoConverse.jsOMEMO bundle self-healing and new PubSub API methods
  3. 1mo agoConverse.jslibomemo.js dependency bump
  4. 1mo agoConverse.jsclient-compress replaced with native browser APIs
  5. 1mo agoConverse.jsFirst beta carrying the OMEMO usability fixes
  6. 2mo agoConverse.jsReaction attribution and MUC JID parsing fixes
  7. 2mo agoMaddymaddy 0.9.5 fixes nested pipeline logging and systemd reload reporting
  8. 3mo agoMaddymaddy 0.9.4 removes the maddyctl symlink and implicit run command
  9. 3mo agoMaddymaddy 0.9.3 patches an LDAP injection flaw in auth.ldap
  10. 4mo agoMaddymaddy 0.9.2 fixes an rspamd panic on unspecified tls_client
  11. 4mo agoMaddymaddy 0.9.1 flags libdns providers for removal in 0.10.0
  12. 4mo agoMaddymaddy 0.9.0 adds no-downtime configuration reloading

Frequently asked questions

What is the difference between Converse.js and Maddy?

They serve adjacent needs but don't currently overlap on shipped themes. Converse.js and Maddy are shipping at a similar cadence (velocity 0.0 vs 0.0, both within Sparkpulse's "active" band). See the at-a-glance table above for a side-by-side breakdown of velocity, recent sparks, and editorial themes.

Is Converse.js better than Maddy?

Sparkpulse doesn't pick a winner — we score release velocity, not feature parity. Converse.js and Maddy are shipping at a similar cadence (velocity 0.0 vs 0.0, both within Sparkpulse's "active" band). For your specific use case, the alternatives sections above list other Comms products to evaluate alongside.

What are the best alternatives to Converse.js?

Top Converse.js alternatives in Comms are ranked by recent ship velocity. Browse the "Converse.js alternatives" section above for the current picks, or visit /alternatives/converse-js for the full list with editorial commentary on each.

What are the best alternatives to Maddy?

Top Maddy alternatives in Comms are ranked by recent ship velocity. Browse the "Maddy alternatives" section above for the current picks, or visit /alternatives/maddy for the full list with editorial commentary on each.