For the past few weeks I’ve been working with the team on its client. Most of the work described here has been continously merged into the /develop branch of matrix-react-sdk and vector-web and hence has been available on Vector (Develop) for feedback from the community throughout GSoC, and has been developed accordingly. What follows is a brief outline of the work I’ve done (not all commits are mentioned or linked to).

Although originally not a part of my proposal for GSoC, a major part of the work done throughout has been on a rich text editor for Vector. While the Markdown-only editor formerly used was quite convenient for early adopters, RTE is essential for the kind of business and casual users Vector hopes to gain mindshare among next.

As this was a completely new feature, it was implemented based on my own designs, without input from ribot (the design firm for Vector). Once those designs were available, I made the required changes.

Another major part of the work done was autocomplete with various providers replacing the concept of “plugins” from the proposal.

One of the most shockingly popular parts of the work I did (to the extent where I’ve received direct messages about it, and it’s been discussed in the Vector User Feedback room) is emoji replacement. Normally, only platforms with a system font that supports emoji renders them correctly. With my changes, almost all emoji are rendered correctly.

*actually a commit message

Making all of these mostly-WIP changes available on /develop meant we couldn’t have them enabled by default. So, I added a “Labs mode”, for options to enable experimental features:

This is now also used for other experimental features like End-to-End Encryption and Integration Management.

A rather interesting part of the work done was the Slack Webhook-compatible bridge, which immediately makes a Slack-like Webhook interface available for Matrix servers, making it possible to use other services’ Slack integrations without modifications. This is available at

Gitlab Notification Bridged to Matrix

I also spent a fair amount of time refactoring, and cleaning up code; a part of which was setting up eslint with sensible defaults to lint our code; and working on and discussing proposals for message metadata and message type extensions (not linked to here since they are not public.)