Mirror read-only upstream mattermost/mattermost-mobile para Synaptic Mobile Android.
Go to file
yasser khan 3e1331248c
Some checks are pending
ci / lint-typecheck (push) Waiting to run
ci / detox-lint-typecheck (push) Waiting to run
ci / test (push) Waiting to run
ci(e2e): say whether each main-run failure is new, still failing, flaky or a setup problem (#10284)
* ci(e2e): say whether each main-run failure is new, still failing, flaky or a setup problem, from the triage verdict

The channel message judged failures from their error text, beside the E2E triage
jobs that judge the same failures from TSIO history, and the two disagreed: on
main run 40764686027 it listed tests that passed on retry as needing a look. The
message now waits for triage and reads each run's findings. On main, a test that
passed every earlier main run and fails now is new, with the changes merged since
the last main run named (TSIO's previous run, GitHub's compare); a run where most
tests failed at once is called out first. Runs with no triage verdict keep the
error-text judgement.

* ci(e2e): judge from the error text each failed test triage named no verdict for, and say how many were not checked

* ci(e2e): count each test once per run, so a test that failed and then passed its retry is flaky, not a failure

* ci(e2e): a main-run failure triage calls flaky or a test problem is not blamed on new changes; a same-commit re-run says nothing was merged; a long PR list says it is partial

* Fix TSIO current report selection

Co-authored-by: yasserfaraazkhan <15979783+yasserfaraazkhan@users.noreply.github.com>

* Fix lint comment spacing

Co-authored-by: yasserfaraazkhan <15979783+yasserfaraazkhan@users.noreply.github.com>

* ci(e2e): update the TSIO upload action, so a failed screenshot upload no longer drops a shard's results

* ci(e2e): an earlier attempt of the same main run is not the previous run, so a re-run still lists the changes merged since the last run

* ci(e2e): drop the note from the TSIO upload action pin comment

* ci(e2e): a re-run replaces the first attempt's triage findings, so the channel message never posts stale verdicts

* ci(e2e): the main-run message says in a few lines which failures may be product bugs and which are not, and posts nothing when none may be

* ci(e2e): main and CMT call a failure a product bug only when it fails again on a fresh device, and clear what the error text proves is not the app

* ci(e2e): a re-run hands Android Detox and Maestro results to the channel message too

* ci(e2e): CMT re-runs start after a failed lane; a spec that differs from main, or a feature the server has off, is not a product bug

* ci(e2e): the CMT message plans the re-run as the planner job does, leaving out tests that differ from main

* ci(e2e): one channel post per run, and a test's name can never mention the channel

* ci(e2e): a re-run keeps the run's own report and runs only the failed flows

* ci(e2e): a PR run posts to the channel only when something failed

* ci(e2e): an E2E/Override PR keeps its statuses on a new push; a few simpler lines in the channel notify

* ci(e2e): exclude isolated report-problem flows from reruns and prevent label/action concurrency collisions

<!-- coderabbit-ai-generated:v1 -->

* ci(e2e): pass support paths to E2E triage

* ci(e2e): pin TSIO report-upload to release-0.16.0 (main@3212731)

Brings the TSIO action pin up to the latest release, which includes
mattermost-test-system-io#129, #130 and #124. The report-upload action itself
is unchanged between the two pins.

* ci(e2e): re-run E2E jobs once when a lane is red only on infrastructure

Triage (rerun-attempts: 1, with actions: read to read the failed jobs) asks for
one re-run when a lane is red only because jobs died or reports never arrived;
a build or test-server failure holds it. e2e-tests-rerun.yml carries the re-run
out once the run finishes. CMT keeps its own re-run of failed specs.

---------
2026-11-03 07:45:59 +05:30
.cursor Add Cursor Cloud Agent environment for PR babysitting (#10128) 2026-09-04 12:03:39 -04:00
.github ci(e2e): say whether each main-run failure is new, still failing, flaky or a setup problem (#10284) 2026-11-03 07:45:59 +05:30
.husky Push react native to 0.73.6 (#7863) 2024-04-22 12:44:39 +02:00
android Bump app build number to 834 (#10289) 2026-10-30 11:18:12 +02:00
app identify the calls bot by bot_user_id (#10292) 2026-11-02 21:21:19 +01:00
assets Mm 70564 channel labels use in channel creation (#10146) 2026-10-30 15:03:55 +01:00
build/notice-file Ignore @mattermost/calls-native in notice file generation (#9875) 2026-06-23 11:00:37 +01:00
detox ci(e2e): say whether each main-run failure is new, still failing, flaky or a setup problem (#10284) 2026-11-03 07:45:59 +05:30
docs Mm 68219 show placeholder for redacted files (#9719) 2026-10-15 15:59:13 -07:00
eslint Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
fastlane Update supported ESR version (#9954) 2026-08-17 08:33:58 +03:00
ios Bump app build number to 834 (#10289) 2026-10-30 11:18:12 +02:00
libraries/@mattermost Calls dm v2 (#10225) 2026-10-22 12:24:07 +02:00
patches Calls dm v2 (#10225) 2026-10-22 12:24:07 +02:00
scripts Fix version bump checkout when a tag shares the branch name (#10229) 2026-10-08 11:17:23 +03:00
share_extension Mm 68767 zero persistence (#9803) 2026-07-16 13:55:45 +02:00
test Calls dm v2 (#10225) 2026-10-22 12:24:07 +02:00
test-runner Fix push notification crash when server returns non-Map error data (#9618) 2026-04-16 19:26:50 -04:00
types [MM-71167] Disable admin-managed profile attributes (#10244) 2026-11-02 10:12:02 -05:00
.buckconfig Barebones code for v2 2020-11-17 14:20:58 -03:00
.editorconfig MM-35115 [Gekidou] Login flow - Email and Password (#5402) 2021-06-18 00:57:40 -04:00
.flowconfig [Gekidou] Upgrade to RN 0.70 (#6690) 2022-10-20 10:18:25 -03:00
.gitattributes Update v2 dependencies (#5312) 2021-04-14 10:55:29 -04:00
.gitignore [MM-70605][MM-70607] Scope pre-auth secret storage per server (#10149) 2026-10-23 12:02:41 +02:00
.gitmodules feat(iOS): Add Microsoft Intune MAM integration with multi-server support (#9312) 2025-12-10 13:07:28 +02:00
.node-version Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
.npmrc MM-54535 Fixed hang when using the magic keyboard on iPadOS 17 (#7555) 2023-09-27 18:54:33 +03:00
.nvmrc Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
.ruby-version bump .ruby-version to 3.2.11 (#9962) 2026-07-30 12:44:29 +05:30
.solidarity Update dependencies and upgrade to RN 0.76.5 (#8421) 2025-01-16 07:11:32 -07:00
.watchmanconfig Barebones code for v2 2020-11-17 14:20:58 -03:00
AGENTS.md Add Cursor Cloud Agent environment for PR babysitting (#10128) 2026-09-04 12:03:39 -04:00
app.json Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
babel.config.js Add BoardView, PropertyField, PropertyValue WatermelonDB tables (#9708) 2026-06-01 12:46:40 +02:00
CHANGELOG.md Barebones code for v2 2020-11-17 14:20:58 -03:00
CLAUDE-IOS-SIMULATOR.md [MM-66591] Channel Summaries with Agents (#9405) 2026-02-13 07:00:43 -05:00
CLAUDE.md Mm 67525 bump min version (#9640) 2026-09-16 10:53:06 +00:00
CONTRIBUTING.md Barebones code for v2 2020-11-17 14:20:58 -03:00
env.d.ts E2E feature schedule posts (#8709) 2025-04-23 12:10:37 +05:30
eslint.config.mjs E2E: run shared channels tests on CI, demo plugin v0.12.2 on all full-suite servers (#10267) 2026-10-27 11:42:07 +05:30
Gemfile pin rexml to >=3.4.2 (#9533) 2026-03-11 10:52:43 +01:00
Gemfile.lock pin rexml to >=3.4.2 (#9533) 2026-03-11 10:52:43 +01:00
index.tsx keep app logs on iOS by configuring NSE logger once per process and r… (#10246) 2026-10-16 09:13:15 +02:00
ISSUE_TEMPLATE.md Update ISSUE_TEMPLATE.md (#7080) 2023-02-03 08:55:40 -05:00
jest.config.js Escape % in route params so Expo Router's repeated decoding can't alter values (#10245) 2026-10-23 20:46:22 +03:00
jsconfig.json Secure Files and preview PDF inline (#8844) 2025-06-19 15:30:56 +08:00
LICENSE.txt Barebones code for v2 2020-11-17 14:20:58 -03:00
metro.config.js Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
NOTICE.txt chore: Update NOTICE.txt file with updated dependencies (#10277) 2026-10-26 12:27:26 +02:00
package-lock.json MM-70924: Bump react-native-emm to 2.0.1 (#10248) 2026-10-23 16:31:35 +00:00
package.json MM-70924: Bump react-native-emm to 2.0.1 (#10248) 2026-10-23 16:31:35 +00:00
PULL_REQUEST_TEMPLATE.md Barebones code for v2 2020-11-17 14:20:58 -03:00
react-native.config.js Fix intune autolink path (#9760) 2026-05-15 21:20:19 +08:00
README.md Mm 67525 bump min version (#9640) 2026-09-16 10:53:06 +00:00
SECURITY.md Barebones code for v2 2020-11-17 14:20:58 -03:00
sentry.options.json Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
tsconfig.json Fix/detox recovery hardening cluster (#10022) 2026-08-10 21:33:53 +00:00
tsconfig.test.json Barebones code for v2 2020-11-17 14:20:58 -03:00

Mattermost Mobile v2

  • Minimum Server versions: Current ESR version (11.7.0+)
  • Supported iOS versions: 18.0+
  • Supported Android versions: 11.0+

Mattermost is an open source Slack-alternative used by thousands of companies around the world in 21 languages. Learn more at https://mattermost.com.

You can download our apps from the App Store or Google Play Store, or build them yourself.

We plan on releasing monthly updates with new features - check the changelog for what features are currently supported!

Important: If you self-compile the Mattermost Mobile apps you also need to deploy your own Mattermost Push Notification Service.

How to Contribute

Testing

To help with testing app updates before they're released, you can:

  1. Sign up to be a beta tester
    • Android
    • iOS - Open this link from your iOS device
  2. Install the Mattermost Beta app. New updates in the Beta app are released periodically. You will receive a notification when the new updates are available.
  3. File any bugs you find by filing a GitHub issue with:
    • Device information
    • Repro steps
    • Observed behavior (including screenshot / video when possible)
    • Expected behavior
  4. (Optional) Sign up for our team site

You can leave the Beta testing program at any time:

  • On Android, click this link while logged in with your Google Play email address used to opt-in for the Beta program, then click Leave the program.
  • On iOS, access the Mattermost Beta app page in TestFlight and click Stop Testing.

Contribute Code

  1. Look in GitHub issues for issues marked as [Help Wanted]
  2. Comment to let people know you’re working on it
  3. Follow these instructions to set up your developer environment
  4. Join the Native Mobile Apps channel on our team site to ask questions

Frequently Asked Questions

How is data handled on mobile devices after a user account is deactivated?

App data is wiped from the device when a user logs out of the app. If the user is logged in when the account is deactivated, then within one minute the system logs the user out, and as a result all app data is wiped from the device.

I need the code for the v1 version

You can still access it! We have moved the code from master to the v1 branch. Be aware that we will not be providing any more v1 versions or updates in the public stores.

Troubleshooting

I keep getting a message "Cannot connect to the server. Please check your server URL and internet connection."

This sometimes appears when there is an issue with the SSL certificate configuration.

To check that your SSL certificate is set up correctly, test the SSL certificate by visiting a site such as https://www.ssllabs.com/ssltest/index.html. If there’s an error about the missing chain or certificate path, there is likely an intermediate certificate missing that needs to be included.

Please note that the apps cannot connect to servers with self-signed certificates, consider using Let's Encrypt instead.

I see a “Connecting…” bar that does not go away

If your app is working properly, you should see a grey “Connecting…” bar that clears or says “Connected” after the app reconnects.

If you are seeing this message all the time, and your internet connection seems fine:

Ask your server administrator if the server uses NGINX or another webserver as a reverse proxy. If so, they should check that it is configured correctly for supporting the websocket connection for APIv4 endpoints.