ProtonMail/ios-mail: Architecture and Public Build Status
Secure email that protects your privacy
At a glance
- What is it?
- ProtonMail/ios-mail is the Swift and SwiftUI client for Proton Mail, with core email and security logic delegated to a Rust SDK. Its application source is public for transparency, but the repository cannot currently be built without Proton's internal SDK distribution infrastructure.
- Who is it for?
- Engineers should use this repository for architectural review and source-level reference, while prospective external contributors should not plan to build or ship the app from it. Before adoption as a buildable codebase, verify that the Proton Mail SDK and its dependency delivery mechanism are publicly available, then confirm that the internal setup has documented public replacements.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 168 days ago.
- What is it written in?
- Mainly Swift, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What ProtonMail/ios-mail Contains
ProtonMail/ios-mail contains the iOS application layer for Proton Mail, a privacy-focused encrypted email service. The code primarily addresses Proton engineers and researchers who want to inspect the application, while the finished application serves privacy-conscious iOS users. Proton says the source was published to provide transparency into its Engineering Transformation initiative.
The project uses Swift for iOS application development, SwiftUI for modern interface components, Rust for core business logic and cross-platform functionality, and Swift Package Manager for dependency management. Its top-level layout includes `Modules/`, several entitlement files, `Settings.bundle/`, `TestPlans/`, Fastlane configuration, and `project.yml`. This is the structure of an iOS application repository, not a reusable Swift package, command-line program, or standalone email API.
That distinction matters when deciding what the repository can provide. Useful application source can remain a reference implementation without being self-contained for an outside developer. The README explicitly says the project cannot currently be built directly from GitHub because a required part of the SDK integration is not publicly accessible. The repository is therefore not an immediately usable foundation for an external development team.
Swift UI and Rust SDK Responsibilities
The application follows a layered architecture. The iOS client owns interface rendering, navigation, and integrations specific to Apple platforms. It communicates with the Proton Mail SDK through Swift bindings. According to the README, email processing, encryption, and business rules reside in the SDK rather than being duplicated in the iOS client.
This creates a visible responsibility boundary. Presentation changes remain in Swift and SwiftUI, while shared behavior can live in Rust and serve other Proton clients. Proton identifies cross-platform consistency as the reason for sharing business logic with Android. It also states that core encryption and security operations are implemented in Rust.
The Swift bindings form the connection between those layers. They allow the iOS application to invoke SDK functionality, while the client maps that functionality into screens, navigation state, notification handling, and sharing. The README does not document individual binding types, error propagation, concurrency rules, or encryption lifecycles. Those implementation details may be present in the source, but they are not established by the public architectural description and should not be presented as a supported API contract.
The structure is clear at a high level. An engineer can determine which side is expected to own presentation, mail processing, encryption, and business rules. The public documentation does not provide enough information to recreate the SDK or explain every supported platform-client integration.
Why the Public Build Is Not Reproducible
The primary blocker is the SDK delivery path, not Swift or Xcode. The README says Proton Mail depends on the Proton Mail SDK, which is open sourced in a separate repository. However, the application integration relies on an internal distribution system that is not publicly accessible. The existence of separate SDK source does not provide the exact artifact or integration route needed by this application.
Files such as `mail-sdk-version`, `project.yml`, `.bundle/`, `Mintfile`, and `fastlane/` suggest that SDK version selection, project generation, dependency configuration, and automation have established roles in Proton's development process. They do not make the dependency graph reproducible outside Proton. An external developer may be able to inspect how the application expects the SDK to be integrated, but the README does not publish commands for resolving it.
Proton states that it is working toward making the full stack buildable from open-source components. That is an intended direction, not a documented public capability. Until Proton publishes the required SDK retrieval process and setup commands, the current `main` branch cannot be treated as a self-contained build target.
This limitation also prevents responsible claims about build output or test results. The repository presents several paths relevant to validation, including `TestPlans/`, but no public process for executing the complete application test suite. Engineers can inspect source organization without claiming that the current GitHub state compiles outside Proton.
Public Installation and First-Use Limits
The README does not provide public installation or build steps. It directs Proton employees with access to internal infrastructure to `DEVELOPMENT.md`, but it also says that file refers to private Proton infrastructure and is not included in the public repository. A reproducible tutorial for an outside developer would therefore require inventing commands, package names, environment variables, or configuration details.
There is some source for an inspection-based introduction. Start with `project.yml` to examine the declared project structure, then look under `Modules/` for the application organization. `mail-sdk-version` can show where Proton records the expected SDK version. These are concrete places to begin reading the repository, but they do not define a complete compiler environment.
The README also does not state the required Xcode version, simulator destination, signing configuration, build phase, or launch command. It does not provide instructions for creating an account, signing into Proton Mail, sending a first message, or verifying notification behavior. The product description identifies secure email as the application area, but the public repository documentation does not describe the end-user setup path.
For external readers, the available first use is therefore source inspection rather than execution. Checking out `main` and opening a generated project cannot presently be presented as a successful installation procedure because the required SDK integration is not publicly available.
Contributions, Licensing, and Maintenance Costs
Proton says it is not currently accepting contributions through the GitHub repository. The published source is intended for transparency and reference. This rules out treating the repository as an open contribution workflow with an expected external pull-request process.
The repository is not archived, and its last push was on 2026-05-08. The listed release history includes Proton Mail 4.22.1 (2) and 4.22.0/7 on 2025-07-17, followed by 4.21.1/3 on 2025-05-14. Those records identify release points, but the README does not explain whether a tagged release can be built without the same internal SDK integration.
Repository activity does not eliminate the public build restriction. A team following `main` may receive application changes while still lacking the dependency mechanism required to compile them. That creates an upgrade and verification cost for anyone attempting to turn the reference into a working fork: they must first establish a supported SDK source, match the expected version, and resolve any private configuration before evaluating application changes.
No license is identified in the repository README or the repository metadata available for this review. As a result, the permissions and conditions for copying, modifying, redistributing, or building another product from this source cannot be established. Public visibility and transparency language should not be treated as a substitute for an explicit license. Clarifying licensing is a prerequisite for code reuse, not merely an administrative detail.
Rust Core Versus a Swift-Only Client
A conventional Swift-only mail client would place networking, account state, mail processing, and encryption-related behavior directly in the iOS application. ProtonMail/ios-mail uses a different arrangement: email processing, encryption, and business rules belong to a Rust SDK, with Swift bindings connecting that core to the iOS interface and platform services.
The practical difference is ownership of shared behavior. In Proton's design, Android can use the same Rust-centered business logic while each client retains its own presentation and native integrations. A Swift-only architecture may avoid language bindings, but behavior used by multiple Apple-platform clients could still require deliberate sharing through Swift packages or another internal module.
This is an architectural comparison only. The README does not publish binary-size measurements, build-time comparisons, battery results, memory data, or defect statistics. It is therefore not possible to claim that the SDK approach produces better performance or lower maintenance cost in practice.
For replacement projects, the SDK boundary creates both reuse potential and integration work. Reusing it depends on obtaining a supported artifact and reviewing its Swift interface. Replacing it would move substantial behavior outside the layer where the application code places it. ProtonMail/ios-mail is most relevant to engineers investigating a Rust core with a Swift and SwiftUI client, rather than teams seeking a self-contained Apple-only implementation.
Useful Inspection Paths and Adoption Blockers
The repository offers several concrete entry points for architectural review. `Modules/` exposes the main application organization, while `NotificationService.entitlements`, `ShareExtension.entitlements`, and `ProtonMail.entitlements` identify separate iOS targets or capabilities by file name. `Settings.bundle/`, `TestPlans/`, and `fastlane/` provide further areas for examining configuration and automation. The README identifies Swift Package Manager as the intended dependency manager.
These paths do not amount to adoption readiness. External compilation currently depends on an internal SDK delivery mechanism, contributions are not accepted through GitHub, and the public documentation does not identify the license. The README also does not provide an external test procedure or a public environment specification.
Reviewers should also separate architecture claims from verified behavior. Proton says the SDK centralizes encryption and security operations, but the public documentation does not describe an audit, key-management model, cryptographic primitives, or verification procedure. Engineers assessing security need those details from the SDK and service documentation rather than drawing conclusions from the language choice.
The repository is consequently best treated as an architectural reference and transparency release. It is the wrong starting point for a team that requires a turnkey iOS mail application, an immediately buildable sample, an established public contribution process, or confirmed reuse rights.
Editorial conclusion
Engineers should use this repository for architectural review and source-level reference, while prospective external contributors should not plan to build or ship the app from it. Before adoption as a buildable codebase, verify that the Proton Mail SDK and its dependency delivery mechanism are publicly available, then confirm that the internal setup has documented public replacements.
Frequently asked questions
Can ProtonMail/ios-mail be built from the GitHub repository?
No. The README says the app cannot currently be built directly because its SDK integration depends on an internal distribution system that is not publicly accessible.
What technologies does ProtonMail/ios-mail use?
The iOS application uses Swift and SwiftUI, while Rust contains core business logic and cross-platform functionality. Swift Package Manager is used for dependency management.
Can developers contribute to ProtonMail/ios-mail through GitHub?
The README says contributions through the GitHub repository are not currently accepted. The published source is intended for transparency and reference purposes.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/protonmail-ios-mail)Was this useful?