You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Bruno Windels 8c74e54f9d
release v0.3.8
1 month ago
.github Build docker image for multiple architectures including ARM 2 months ago
doc Merge pull request #705 from vector-im/bwindels/calls 1 month ago
docker Build a docker image using unprivileged nginx 2 months ago
playwright Fix formatting 5 months ago
prototypes add prototype to show we can prevent the txn from being aborted on error 2 years ago
scripts merge master into bwindels/calls 2 months ago
src Merge pull request #1036 from vector-im/cross-signing/self-sign 1 month ago
.dockerignore chore: optimise Dockerfile 2 years ago
.editorconfig wip 4 years ago
.eslintrc.js JoinedMap to typescript 8 months ago
.gitignore Convert Cypress --> Playwright 5 months ago
.gitlab-ci.yml chore: add GitLab CI definition 2 years ago
.ts-eslintrc.js updates ts-eslint and fixes errors in src/observable 8 months ago remove changelog notes remainder 1 year ago
Dockerfile Use target platform (rather than build platform) for multi-platform container images 2 months ago
Dockerfile-dev Install npm deps in separate docker layer 2 months ago update dirs in docs 2 months ago
LICENSE add full license text 3 years ago update dirs in docs 2 months ago WIP 3 years ago dont use lookbehind in regular expressions, safari & older firefoxes choke on them 1 year ago
package.json release v0.3.8 1 month ago
playwright.config.ts Limit workers to 1 for now 5 months ago
tsconfig-declaration.json somewhat works, but not everything we need 1 year ago
tsconfig.json Revert back option 8 months ago
view-gallery.html rearrange assets and main.js to make them run with vite 1 year ago
vite.common-config.js Change directory name 8 months ago
vite.config.js merge master into bwindels/calls 2 months ago
vite.sdk-assets-config.js Specify theme as array 8 months ago
vite.sdk-lib-config.js Remove unsued imports 12 months ago
yarn.lock lockfile 2 months ago


A minimal Matrix chat client, focused on performance, offline functionality, and broad browser support. This is work in progress and not yet ready for primetime. Bug reports are welcome, but please don't file any feature requests or other missing things to be on par with Element Web.


Hydrogen's goals are:

  • Work well on desktop as well as mobile browsers
  • UI components can be easily used in isolation
  • It is a standalone webapp, but can also be easily embedded into an existing website/webapp to add chat capabilities.
  • Loading (unused) parts of the application after initial page load should be supported

For embedded usage, see the SDK instructions.

If you find this interesting, come and discuss on

How to use

Hydrogen is deployed to You can also deploy Hydrogen on your own web server:

  1. Download the latest release package.
  2. Extract the package to the public directory of your web server.
  3. If this is your first deploy:
    1. copy config.sample.json to config.json and if needed, make any modifications (unless you've set up your own sygnal instance, you don't need to change anything in the push section).

    2. Disable caching entirely on the server for:

      • index.html
      • sw.js
      • config.json
      • All theme manifests referenced in the themeManifests of config.json, these files are typically called theme-{name}.json.

      These resources will still be cached client-side by the service worker. Because of this; you'll still need to refresh the app twice before config.json changes are applied.

Set up a dev environment

You can run Hydrogen locally by the following commands in the terminal:

  • yarn install (only the first time)
  • yarn start in the terminal

Now point your browser to http://localhost:3000. If you prefer, you can also use docker.

PS: You need nodejs, running yarn on top of any other js platform is not supported.


Some frequently asked questions are answered here.