Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ProtonVPN/android-app/llms.txt

Use this file to discover all available pages before exploring further.

The Proton VPN Android app is open source and available on GitHub. Contributions are welcome — whether that’s fixing bugs, improving existing features, or helping with translations.

What contributions are welcome

  • Bug fixes and regression fixes
  • Feature improvements that align with the project’s architecture and tech stack
  • Performance improvements
  • Test coverage additions
  • Documentation corrections
If you plan to work on a larger feature or refactor, consider opening an issue first to discuss the approach before investing time in implementation.

Guidelines

When contributing, keep the following in mind:
  • Stick to the project’s existing code style and naming conventions
  • The codebase is mostly written in Java, but the project is transitioning to Kotlin — new code should be written in Kotlin where possible
  • New features or large refactors should use the preferred tech stack: Kotlin, MVVM, data-binding, and coroutines
  • After adding or updating open source dependencies, run gradlew updateLicensesJson to update the attribution file
By making a contribution to this project, you agree to the following terms:
  1. You assign any and all copyright related to the contribution to Proton AG.
  2. You certify that the contribution was created in whole by you.
  3. You understand and agree that this project and the contribution are public, and that a record of the contribution (including all personal information you submit with it) is maintained indefinitely and may be redistributed with this project or the open source licenses involved.

Opening a pull request

1

Fork and clone the repository

Fork the android-app repository on GitHub, then clone your fork locally.
2

Create a branch

Create a feature or fix branch from the latest development branch.
3

Make your changes

Follow the code style and build instructions to set up your environment. Write tests where appropriate — see the testing guide for how to run them locally.
4

Update license attributions if needed

If you added or updated any open source dependencies, run:
./gradlew updateLicensesJson
5

Submit your pull request

Push your branch and open a pull request against the development branch. Describe what the change does and why, and reference any related issues.

CI checks

When you open a pull request, the internal CI pipeline automatically runs the following checks:
Enforces the Java code style defined in ProtonStyle.xml. Run locally with:
./gradlew checkstyle
Static analysis for Kotlin code. Run locally with:
./gradlew detekt
Runs all JVM unit tests. Run locally with:
./gradlew test
Runs Android instrumented tests. Run locally with:
./gradlew androidTest
All CI checks must pass before a pull request can be merged.

Code ownership

All files in the repository are owned by the @ProtonVPN/groups/android-developers team, who are responsible for reviewing and merging pull requests.

Build docs developers (and LLMs) love