No description
  • TypeScript 96%
  • Kotlin 2.1%
  • JavaScript 0.9%
  • Swift 0.4%
  • HTML 0.3%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-10 23:36:31 +01:00
.github ci: roll every android release out to the internal and closed testing tracks on google play 2026-10-23 16:48:22 +02:00
.maestro test: tap continue again when the sign-in link alert is still up in the ios flows 2026-10-31 23:46:19 +01:00
android fix: show the new-mail notification when the connection kept from the foreground has died #94 2026-11-05 22:28:57 +01:00
assets feat: play the Involved sound for calendar reminders 2026-10-31 14:49:56 +01:00
docs docs: describe ios push and client certificates as they are now #3 2026-11-02 23:07:34 +01:00
locales fix: keep an unsaved draft on the device when the session expires and save it to drafts later 2026-11-02 23:07:33 +01:00
mockups feat: step-by-step sign-in with server discovery from the email address 2026-08-01 13:28:31 +02:00
patches fix: stop crafted .eml headers from stalling the parser by moving to postal-mime 4.2 2026-10-31 16:02:01 +01:00
plugins fix: keep ios push renewal from reporting an extension the server refused 2026-10-31 18:10:20 +01:00
scripts fix: answer ios export compliance per testflight build so uploads with pgp and s/mime pass validation #58 2026-11-05 01:02:23 +01:00
src fix: decode windows-1252 quotes where the runtime treats it as plain latin-1 #98 2026-11-10 23:36:31 +01:00
.gitattributes fix: stop widget buttons from going dead when two are drawn in the same millisecond #52 2026-10-02 11:14:40 +02:00
.gitignore fix: stop signing release apks with the public debug key 2026-09-24 18:52:15 +02:00
app.config.js fix: answer ios export compliance per testflight build so uploads with pgp and s/mime pass validation #58 2026-11-05 01:02:23 +01:00
App.tsx feat: add a setting to block screenshots and hide the app in recent apps 2026-10-31 16:03:54 +01:00
babel.config.js refactor: draw the webmail's Tabler icons instead of Lucide 2026-10-15 14:13:02 +02:00
index.ts chore: provide webcrypto from react-native-quick-crypto instead of webcrypto-liner #58 2026-10-31 16:33:18 +01:00
LICENSE chore: allow app store distribution under a provisional AGPL permission 2026-09-30 12:13:28 +02:00
metro.config.js chore: provide webcrypto from react-native-quick-crypto instead of webcrypto-liner #58 2026-10-31 16:33:18 +01:00
package-lock.json chore: update version number to 0.1.92 2026-11-05 22:29:08 +01:00
package.json chore: update version number to 0.1.92 2026-11-05 22:29:08 +01:00
PARITY_CHECKLIST.md docs: tick the webmail 1.10 to 1.18 parity items this pass fixed 2026-10-29 05:26:33 +01:00
README.md ci: put every iOS release on the public TestFlight link 2026-10-02 16:33:07 +02:00
tsconfig.json feat: add content senders and language settings components 2026-04-27 00:06:58 +02:00
VERSION chore: update version number to 0.1.92 2026-11-05 22:29:08 +01:00
vitest.config.ts security: fix push SSE breakage, harden APK updates and email rendering 2026-05-05 22:06:07 +02:00

Bulwark Webmail

Bulwark Mobile

Beta - work in progress. Many features are unfinished or rough. Expect bugs, missing functionality, and breaking changes between releases. Do not rely on this for primary email yet.

React Native (Expo SDK 54) client for Bulwark Webmail - a JMAP-based mail, calendar, and contacts app.

Try it

What works today

  • Sign in to any JMAP server (e.g. Stalwart)
  • Multiple accounts
  • Email list, threads, compose
  • Calendar (basic)
  • Contacts (basic)
  • Push notifications via the Bulwark relay - FCM by default, or UnifiedPush (e.g. ntfy) for devices without Google Play services
  • Android: contacts and calendars sync both ways with the phone's Contacts and Calendar apps (Settings → Contacts / Calendar → Sync to this device)
  • In-app sideload updates from GitHub Releases

What's missing or rough

  • iOS builds, but push notifications, client certificates and syncing with the phone's contacts and calendars are Android-only so far
  • S/MIME, plugins, themes - UI stubs only (filters & rules, the vacation responder and file storage are real implementations)
  • Calendar editing is partial; contacts editing is basic
  • No Play Store or App Store listing yet: Android is a sideloaded APK, iOS a TestFlight beta (see Try it)

Run locally

npm install
npx expo start

Then press a for Android, i for iOS, or scan the QR with Expo Go.

For release APK builds and signing see docs/android-release.md. For iOS builds and TestFlight distribution see docs/ios-release.md.

License

AGPL-3.0-only, with an additional permission to distribute the app through app stores such as the Apple App Store and Google Play. See LICENSE. Contributions are accepted under the same terms. The permission is provisional until every earlier contributor has agreed to it (consent request); contributions made since 30 September 2026 are already covered.