Skip to main content

Welcome

Thank you for your interest in contributing to Proton WebClients! This monorepo hosts all Proton web applications including Mail, Calendar, Drive, VPN, Pass, Wallet, and more.
Proton WebClients is licensed under GPL-3.0. By contributing, you agree that your contributions will be licensed under the same license.

Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

Node.js

Version >= 22.14.0 and < 23.6.0

Yarn

Version 4.12.0 (Yarn 4)

Git

Latest stable version

Installation

1

Clone the repository

git clone https://github.com/ProtonMail/WebClients.git
cd WebClients
2

Install dependencies

yarn install
This will install all dependencies for the entire monorepo and symlink local packages to one another.
3

Start a development server

# Example: Start Proton Mail
yarn workspace proton-mail start

# Example: Start Proton Drive
yarn workspace proton-drive start

Monorepo Structure

The project is organized as a Yarn 4 monorepo with workspaces:
WebClients/
├── applications/     # Web applications (mail, calendar, drive, etc.)
├── packages/         # Shared packages and libraries
├── tests/           # Test suites
├── utilities/       # Development utilities
└── vendor/          # Vendored dependencies

Applications

Each application in the applications/ directory is a standalone web app:
  • proton-mail - Proton Mail web client
  • proton-calendar - Proton Calendar
  • proton-drive - Proton Drive
  • proton-account - Account settings
  • proton-vpn-settings - VPN settings
  • proton-pass - Password manager
  • proton-wallet - Cryptocurrency wallet
  • proton-lumo - AI assistant

Packages

Shared packages include:
  • @proton/components - Reusable React components
  • @proton/shared - Shared utilities and helpers
  • @proton/crypto - Cryptography utilities
  • @proton/styles - Design system and styles
  • And many more…

Making Changes

Finding Work

Issues

Browse open issues for bugs and feature requests

Questions

Ask questions about the codebase

Development Workflow

1

Create a feature branch

git checkout -b feature/your-feature-name
# Or for bug fixes:
git checkout -b fix/bug-description
2

Make your changes

Follow the code style guidelines and write tests for your changes.
3

Test your changes

# Run tests for a specific package
yarn workspace @proton/components test

# Run type checking
yarn workspace proton-mail check-types
4

Commit your changes

Your commits will be automatically linted using Husky pre-commit hooks. See Pull Request Guidelines for details.

Code of Conduct

We expect all contributors to be respectful and professional. While this repository doesn’t have a formal CODE_OF_CONDUCT.md, please follow these principles:
  • Be respectful and inclusive
  • Focus on constructive feedback
  • Help create a welcoming environment for everyone

Building for Production

To build an application for production:
yarn workspace proton-mail build:web
The build output will be in the application’s dist/ directory.

Versioning Applications

To manually version an application:
yarn workspace @proton/version run version --applications proton-mail --version x.x.x.x
This should be run from the main branch for a clean release.

Translation

Proton WebClients is translated into multiple languages by our community.

Help Translate

Learn more about contributing translations on the Proton blog

Getting Help

Use the Ask a Question issue template to ask code-related questions and discuss technical ideas.
For bugs in the production applications (not related to development), please use the appropriate support channels on proton.me rather than GitHub issues.
Refer to the Yarn Workspaces documentation for details on how to work with monorepos.

Next Steps

Code Style

Learn about linting, formatting, and code standards

Pull Requests

Understand the PR process and requirements

Build docs developers (and LLMs) love