Next generation iOS and Android apps for Mattermost in React Native

Overview

Mattermost Mobile

  • Minimum Server versions: Current ESR version (5.37.0)
  • Supported iOS versions: 11+
  • Supported Android versions: 7.0+

Mattermost is an open source Slack-alternative used by thousands of companies around the world in 14 languages. Learn more at https://about.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.

Can I connect to multiple Mattermost servers using the mobile apps?

At the moment, we only support connecting to one server at a time. If you need to connect to multiple servers, please upvote the feature request so we can track demand for it.

As a work around, you can install both the released "Mattermost" app and sign up to be a tester for the "Mattermost Beta" app so you can connect to two servers at once.

Will there be second generation apps available for tablets?

We plan to add support for tablets in the future, but the timeline depends on how many people have a need for it. If you're looking for a tablet version, please help us out by upvoting the feature request!

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.

Comments
  • MM-28474: Custom Sidebar Categories

    MM-28474: Custom Sidebar Categories

    Summary

    This PR allows the user to see their "custom" categories in the sidebar; bringing the mobile app further inline with the web/desktop clients.

    It also respects the EnableLegacySidebar setting - when enabled, it displays the existing sidebar. For server versions less than or equal to 5.31.0, the ExperimentalSidebarCategories displays the new sidebar.

    Currently UnreadsOnTop is permanently set to true but can now be used to follow user preferences on the mobile app.

    To-Do
    • [x] Unable to create channels in categories via the latest build
    • [x] "More unreads" banner always visible
    • [x] Category collapsing multiple triggers
    • [x] Sort order not respecting user pref on mobile

    Ticket Link

    Resolves https://mattermost.atlassian.net/browse/MM-28474

    Checklist

    • [x] Added or updated unit tests (required for all new features)
    • [x] Has UI changes
    • [x] Includes text changes and localization file updates

    Device Information

    This PR was tested on:

    • iPhone 12 (Simulator) / iOS14
    • Google Nexus 4 (Simulator) / Android 29

    Screenshots

    https://user-images.githubusercontent.com/456511/126950557-ac732cc1-bece-4562-89fc-a848f9de8cc9.mov

    Release Note

    App now displays custom categories in the sidebar.
    
    release-note 
    opened by shazm 132
  • MM-34586 Custom status feature

    MM-34586 Custom status feature

    Summary

    • Mobile Custom User Statuses

    Ticket Link

    • Development Spec - https://mattermost.atlassian.net/wiki/spaces/CS/pages/1096810497/Development+Spec
    • Figma design: https://www.figma.com/file/9OsvCq4z83xH0Vd6e68Ls9/MM-24340-Custom-Statuses?node-id=810%3A23968
    • JIRA - https://mattermost.atlassian.net/browse/MM-34586

    Checklist

    • [x] Added or updated unit tests (required for all new features)
    • [x] Has UI changes
    • [x] Includes text changes and localization file updates

    Device Information

    This PR was tested on:

    • iPhone 11 Pro Simulator - iOS 14.4
    • Android Emulator - Pixel_3a_API_30_x86 - Android 10

    Screenshots

    image image image image image

    Release Note

    Added the custom status feature support for the RN mobile apps. Mattermost server v5.36+ is required to access custom statuses on mobile.
    
    4: Reviews Complete CherryPick/Done release-note 
    opened by chetanyakan 110
  • [MM-23761] [MM-25766] Add

    [MM-23761] [MM-25766] Add "More Messages" button

    Summary

    This PR removes auto-scrolling to the new message line on channel load and adds a "More Messages" button when there are unread posts. The unread post count is calculated on channel switch from the difference channel.total_msg_count - member.msg_count and with the addition of any inserted non-message posts (ie, date line) by makePreparePostIdsForPostList. On press of the button the user is scrolled to the index of the new message line or to the index of the highestMeasuredFrameIndex if the new message line post has not yet been measured. If there are no more unread messages the button is hidden, otherwise the unread count is updated and pressing again will scroll to the updated index of the new message line or the next highestMeasuredFrameIndex.

    Because we don't want a new message line to be added when a user submits their own post either in the current channel or in another channel from separate client, there was a previous condition added in makeFilterPostsAndAddSeparators to not add the new message line if the post's user_id is the current user's ID. This was problematic for this feature as the index of the final new message line would not coincide with the index of the last unread message and so in this case the "More Messages" button would never hide. To get around this I added an ownPost property to Post. When RECEIVED_POST or RECEIVED_NEW_POST actions are handled, if the post is the current user's post then the channel's lastChannelViewTime is updated to be the post's created_at value + 1, ensuring that the new message line is not added since the existing condition post.create_at > lastViewedAt will be false.

    Ticket Link

    https://mattermost.atlassian.net/browse/MM-23761 https://mattermost.atlassian.net/browse/MM-25766

    Checklist

    • [x] Added or updated unit tests (required for all new features)
    • [x] Has UI changes
    • [x] Includes text changes and localization file updates

    Device Information

    This PR was tested on:

    • iOS 13 simulator and iPhone SE
    • Android Q emulator and Mi A3 running Android 9
    2: Dev Review 2: PM Review 3: QA Review 2: UX Review 
    opened by migbot 93
  • App is low on fps on new upgrade to android 11

    App is low on fps on new upgrade to android 11

    Summary

    Since upgrading my S20 plus to the new android 11 update, the app appears to perform super slow. I have also attached a view, and the low fps you will see is not from the recording, but from only the mattermost app.

    Environment Information

    • Device Name: Samsung Galaxy S20 Plus
    • OS Version: Android 11
    • Mattermost App Version: 1.38.0
    • Mattermost Server Version: 5.26.0

    Steps to reproduce

    Have an S20 with the latest update, install mattermost app and try to use anything, you will notice the sluggish behaviour

    Expected behavior

    Before the upgrade, the app used to work very fast and was performing well.

    Observed behavior

    Doesn't matter which channel or team, once I open the app every thing is very low performance Video the online preview makes it a bit hard to see the difference, try to download the file to best see the issue

    Possible fixes

    If you can, link to the line of code that might be responsible for the problem.

    opened by Barlerer 88
  • [MM-11947] Adds dark mode to server select & login

    [MM-11947] Adds dark mode to server select & login

    Summary

    Adds dark and light themes to server select, login options, and login screen.

    I couldn't find all the colours listed in the mock, so I just used the Digital Color Meter to get the approximate colours and created a colours file to keep them all together and hopefully simplify the scheme. If you'd like to change the the colours to use opacities instead, could you please describe the new colours relative to app/styles/colors.js?

    Instead of updating the theme, which has different keys from the ones needed for these few pages, I created objects filled with colours for light and dark schemes in app/styles/colors.js. In the future, maybe these can be integrated with themes, but I don't know enough about the themes to do that yet.

    There's a lot to be updated still! I could really use some fresh eyes and expertise to finish this up. Thanks in advance!

    Ticket Link

    Fixes https://github.com/mattermost/mattermost-server/issues/11947

    Checklist

    • [x] Added or updated unit tests (required for all new features)
    • [x] Has UI changes

    Device Information

    This PR was tested on: iPhone X and Android Nexus_5X_API_29_x86 simulators

    Screenshots

    android_dark android_light ios_dark ios-Light

    2: Dev Review 2: PM Review Lifecycle/1:stale 3: QA Review 2: UX Review 
    opened by courtneypattison 70
  • iOS Update from 6/20, app crash upon login (sig 11)

    iOS Update from 6/20, app crash upon login (sig 11)

    Summary

    After login, signal 11 (null) message appears and closes the app.

    Environment Information

    • Device Name:
    • OS Version: 10.3.2
    • Mattermost App Version: 1.9.0
    • Mattermost Server Version: 5.0.0
    opened by vRobM 70
  • iOS build issues with signing

    iOS build issues with signing

    Summary

    I think the iOS build process does not always take into account the variables from .env file for the signing part. I have an error during signing, since the build is trying to use the default profile instead of mine.

    Environment Information

    I'm using macOS Sierra, latest version of Fastlane (2.85.0) and I cloned the project at this commit : https://github.com/mattermost/mattermost-mobile/commit/1f7ec077860a040e23303481d086939b90e60f75

    Observed behavior

    When I want to build the app, the process will fail when signing with these errors :

    [16:05:47]: ▸ Code Signing Error: Provisioning profile "iOS Team Provisioning Profile: *" doesn't include signing certificate "iPhone Developer: Nicolas furno (********)".
    [16:05:47]: ▸ Code Signing Error: Provisioning profile "iOS Team Provisioning Profile: *" doesn't support the App Groups capability.
    [16:05:47]: ▸ Code Signing Error: Provisioning profile "iOS Team Provisioning Profile: *" doesn't support the group.******.mattermost App Group.
    [16:05:47]: ▸ Code Signing Error: Provisioning profile "iOS Team Provisioning Profile: *" doesn't include the com.apple.security.application-groups entitlement.
    [16:05:47]: ▸ Code Signing Error: Code signing is required for product type 'App Extension' in SDK 'iOS 11.2'
    

    When opening the project in Xcode just after these error, here's what I noticed : the default app ID is used, instead of the one I used in my .env file.

    capture d ecran 2018-03-19 a 16 09 16

    If I edit manually the project.pbxproj file to search all default values and replace these with mine, the build is working fine.

    I guess there is a bug somewhere, that prevents the build process to extract the correct values during the build ?

    Let me know if you need more information.

    opened by nicolinuxfr 66
  • MM-12845 Add widgets and interactive dialogs

    MM-12845 Add widgets and interactive dialogs

    Summary

    Add a text setting widget, refactor menu action selector to be more reusable and add interactive dialogs.

    Ticket Link

    https://mattermost.atlassian.net/browse/MM-12845

    Checklist

    • [x] Added or updated unit tests (required for all new features)
    • [x] Has UI changes
    • [ ] Includes text changes and localization file updates

    Device Information

    iOS Simulator Galaxy S9

    Tests/Done 
    opened by jwilander 65
  • MM-23853 Support dark mode and light mode syncing with OS theme setting

    MM-23853 Support dark mode and light mode syncing with OS theme setting

    Summary

    This PR adds support for dark mode and light mode syncing with OS theme setting

    Ticket Link

    https://github.com/mattermost/mattermost-server/issues/15975

    Checklist

    • [x] Added or updated unit tests (required for all new features)
    • [x] Has UI changes
    • [x] Includes text changes and localization file updates

    Device Information

    This PR was tested on: iPhone 8 (device), iOS 14.6 iPad Pro 12.9-inch 4th gen. (device), iOS 14.6 iPhone 12 (emulator), iOS 14.5 iPhone 6 (emulator), iOS 12.4 Pixel XL (emulator), Android 10.0 API 29

    Also added e2e tests.

    Screenshots

    https://user-images.githubusercontent.com/8155563/130352095-ad45e4ac-a972-471a-8dcb-5d7f3c98000f.mp4

    https://user-images.githubusercontent.com/8155563/130353114-5359e133-4c2a-4031-852c-61ad9fb2aa83.mp4

    When OS not supports dark theme, app fallbacks to light: Screen Shot 2021-08-16 at 09 18 41

    Release Note

    Added support for dark mode and light mode syncing with OS theme setting
    
    2: Dev Review 2: PM Review Hacktoberfest Lifecycle/1:stale 3: QA Review release-note 
    opened by komik966 59
  • MM-34194 Add multiselect to Apps Forms

    MM-34194 Add multiselect to Apps Forms

    Summary

    Add multiselect support to Mobile

    Ticket Link

    https://mattermost.atlassian.net/browse/MM-34194

    Screenshots

    Screenshot from 2021-05-20 13-33-20 Screenshot from 2021-05-20 13-33-28 Screenshot from 2021-05-20 13-33-59 Screenshot from 2021-05-20 13-40-33

    Release Note

    Add multiselect support for Apps Forms
    
    4: Reviews Complete Docs/Done release-note 
    opened by larkox 58
  • MM-18998 Add emojis in the post to recent emojis

    MM-18998 Add emojis in the post to recent emojis

    Summary

    When createPost is called all the emojis would be extracted Emojis available with mattermost will be filtered. Update recent reactions with filtered emojis.

    Ticket Link

    Fixes https://github.com/mattermost/mattermost-server/issues/12750

    Device Information

    This PR was tested on: RedmiNote 8, Android

    Screenshots

    Screenshot_2020-11-24-15-45-02-084_com mattermost rnbeta

    Used an emoji in a post.

    Screenshot_2020-11-24-15-45-13-931_com mattermost rnbeta

    Recent emojis got updated

    4: Reviews Complete 
    opened by a-c-sreedhar-reddy 56
  • M1 Mac    building for iOS Simulator, but linking in dylib built for iOS, file '/Users/xxx/Desktop/Mattermost-mobile/node_modules/react-native-webrtc/ios/WebRTC.framework/WebRTC' for architecture arm64

    M1 Mac building for iOS Simulator, but linking in dylib built for iOS, file '/Users/xxx/Desktop/Mattermost-mobile/node_modules/react-native-webrtc/ios/WebRTC.framework/WebRTC' for architecture arm64

    Per Mattermost guidelines, GitHub issues are for bug reports: http://www.mattermost.org/filing-issues/.

    For troubleshooting see: http://forum.mattermost.org/. For feature proposals see: http://www.mattermost.org/feature-requests/

    If you've found a bug--something appears unintentional--please follow these steps:

    1. Confirm you’re filing a new issue. Search existing tickets in Jira to ensure that the ticket does not already exist.
    2. Confirm your issue does not involve security. Otherwise, please see our Responsible Disclosure Policy.
    3. File a new issue using the format below. Mattermost will confirm steps to reproduce and file in Jira, or ask for more details if there is trouble reproducing it. If there's already an existing bug in Jira, it will be linked back to the GitHub issue so you can track when it gets fixed.

    Summary

    Bug report in one concise sentence

    Environment Information

    • Device Name:
    • OS Version:
    • Mattermost App Version:
    • Mattermost Server Version:

    Steps to reproduce

    How can we reproduce the issue (what version are you using?)

    Expected behavior

    Describe your issue in detail

    Observed behavior (that appears unintentional)

    What did you see happen? Please include relevant error messages, screenshots and/or video recordings.

    Possible fixes

    If you can, link to the line of code that might be responsible for the problem

    opened by lanwenjin 1
  • Can't build android app base on version 1.55.1 released

    Can't build android app base on version 1.55.1 released

    Summary

    Hi everyone, I'm downloading source code from Mobile Version 1.55.1 released, but I'm can't build android app. Can anyone help me? Thank for all

    Environment Information

    • Device Name: Macbook pro M1
    • OS Version: Macos Monterey
    • Mattermost App Version: 1.55.1

    Steps to reproduce

    Step 1: Dowload source code from Mobile Version 1.55.1 released Step 2: run: npm install Step 3: run: react-native run-android

    Expected behavior

    Can run android app on simulator

    Observed behavior (that appears unintentional)

    * What went wrong:
    Execution failed for task ':app:checkDebugAarMetadata'.
    > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
       > The minCompileSdk (31) specified in a
         dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
         is greater than this module's compileSdkVersion (android-30).
         Dependency: androidx.appcompat:appcompat:1.4.1.
         AAR metadata file: /Users/hungnguyen/.gradle/caches/transforms-3/f6cf9637d2f604e9f80955c01bd68647/transformed/appcompat-1.4.1/META-INF/com/android/build/gradle/aar-metadata.properties.
    

    If manual fix with remove minCompileSdk = 31 from aar-metadata.properties after that re-run react-native run-android command and another file will encounter the same problem.

    opened by rain9x 0
  • Update build.sh

    Update build.sh

    added a letter

    Summary

    Ticket Link

    Checklist

    • [ ] Added or updated unit tests (required for all new features)
    • [ ] Has UI changes
    • [ ] Includes text changes and localization file updates
    • [ ] Have tested against the 5 core themes to ensure consistency between them.

    Device Information

    This PR was tested on:

    Screenshots

    Release Note

    
    
    release-note Contributor 
    opened by 1622145167 2
  • MM-46312 - Calls: Replace simple-peer with RTCPeer; use up-to-date upstream react-native-webrtc

    MM-46312 - Calls: Replace simple-peer with RTCPeer; use up-to-date upstream react-native-webrtc

    Summary

    • Use RTCPeer (as close as possible -- some changes needed: importing types from react-native-webrtc package, and being explicit about some types to make typescript happy).
    • Stop using our fork of react-native-webrtc and use the up-to-date upstream release.
    • Everything works after multiple tests: muting-unmuting, sharing-resharing screens.
    • This lets us easily move to glare-free negotiation 🎉 (I have it in another branch, just have to setup calls/rtcd to the right versions and test).

    Ticket Link

    • https://mattermost.atlassian.net/browse/MM-46312
    • https://mattermost.atlassian.net/browse/MM-42553

    Checklist

    • [ ] Added or updated unit tests (required for all new features)
    • [ ] Has UI changes
    • [ ] Includes text changes and localization file updates
    • [ ] Have tested against the 5 core themes to ensure consistency between them.

    Device Information

    • Android: 13, Pixel 6
    • iOS: 15.7, iPhone 7 plus

    Release Note

    Calls: update react-native-webrtc to most recent version
    
    2: Dev Review release-note 
    opened by cpoile 5
  • Clean todos

    Clean todos

    Summary

    Clean several todos in the code, and add relevant tickets.

    Ticket Link

    https://mattermost.atlassian.net/browse/MM-43482 https://mattermost.atlassian.net/browse/MM-43487

    Release Note

    NONE
    
    2: Dev Review Do Not Merge release-note-none 
    opened by larkox 1
Releases(v1.55.1)
Owner
Mattermost
All team communication in one place, searchable and accessible anywhere.
Mattermost
Bluetooth LE Mesh Chat for iOS and Android

BLEMeshChat Bluetooth LE mesh chat prototype for iOS. Android version over here. Goals Use the Bluetooth 4.0 Low Energy APIs on iOS and Android to all

Chris Ballinger 479 Dec 29, 2022
Spika is universal chat module with backend, web, ios and Android client.

Spika Spika is messenger module for Web/iOS/Android with backend. You can include messenger feature to your app or service with minimum code. For deta

Clover Studio 608 Dec 23, 2022
Template for cross-platform mobile app with native UIs and C++ core

Template for cross-platform mobile app with native UIs and C++ core Structure packages/chat - C++ core packages/ios - iOS app connected to core via C

SimpleX Chat 10 Dec 5, 2022
A native iOS video chat app based on WebRTC

AppRTC - iOS implementation of the Google WebRTC Demo About This Xcode project is a native wrapper for the Google's WebRTC Demo. It organizes the WebR

ISBX 1.3k Dec 31, 2022
Open source, native iOS Messenger, with realtime chat conversations (full offline support).

OVERVIEW This is a native iOS Messenger app, with realtime chat conversations (full offline support). NEW FEATURES Passcode support GraphQL server sup

Related Code 4.5k Dec 26, 2022
ChatSecure is a free and open source encrypted chat client for iOS that supports OTR and OMEMO encryption over XMPP.

ChatSecure ChatSecure is a free and open source XMPP messaging client for iOS that integrates OTR and OMEMO encrypted messaging support, and has optio

ChatSecure 3.1k Dec 31, 2022
🌟🌟🌟🌟🌟 Falcon Messenger is a Fast and Beautiful cloud-based messaging app. With iOS and IPadOS Support. Available on the App Store.

Open the FalconMessenger.xcworkspace in Xcode. Change the Bundle Identifier to match your domain. Go to Firebase and create new project. Select "Add F

null 397 Dec 31, 2022
Tutanota is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.

Tutanota makes encryption easy Tutanota is the secure email service with built-in end-to-end encryption that enables you to communicate securely with

Tutao GmbH 5k Dec 26, 2022
Colloquy is an advanced IRC, SILC & ICB client for macOS and iOS!

Colloquy Dependencies This repository uses git submodules for some of its dependencies, so you will have to check those out as well. You can do this f

Colloquy 175 Jan 7, 2023
Free Jabber/XMPP client for iOS and macOS

Monal A cross platform, modern XMPP client for iOS and MacOS This is the Monal XMPP client as found in the app store. If you want to use the latest st

Monal 400 Jan 5, 2023
📱 Wire for iOS (iPhone and iPad)

Wire™ This repository is part of the source code of Wire. You can find more information at wire.com or by contacting [email protected]. You can find

Wire Swiss GmbH 3.2k Dec 30, 2022
iOS-mail — ProtonMail iOS client app

iOS-mail Introduction iOS-mail — ProtonMail iOS client app The app is intended for all users of the ProtonMail service. Whether they are paid or free,

null 1.2k Jan 3, 2023
Anonymous chat app leveraging Google's Firebase, a NoSQL backend and WebSocket for real time data synching

Chaty Chaty is an anonymous chat app that allows millions of users to chat at the same time. Firebase is Google's real time NoSQL Backend as a Service

Terry Wang 369 Nov 26, 2022
A chat simulator app that uses FireBase for Authentication and chat storage

Chat-App Description Flash chat is a chat simulator app that uses FireBase for Authentication and chat storage Tools Used - Swift (Programming Languag

Victor Alvarenga 0 Oct 14, 2021
Integrate third party libraries by using Cocoapods and Swift Package Manager, store data in the cloud using Firebase Firestore.

Integrate third party libraries by using Cocoapods and Swift Package Manager, store data in the cloud using Firebase Firestore. Exercising query and s

WEI 0 Dec 19, 2021
A Flutter powered messaging app including Firebase registration, authentication and group messaging feature.

we_chat A Flutter powered messaging app including Firebase registration, authentication and group messaging feature. Getting Started This project is a

Yamin Arafat 0 Jan 10, 2022
Flash-Chat - Firebase Cloud Firestore, TableViews and Cocoapod Dependencies

Flash-Chat Firebase Cloud Firestore, TableViews and Cocoapod Dependencies What I

null 0 Jan 19, 2022
Secret Messenger - a free and open source Jabber (XMPP) messaging client for Apple

Secret Messenger is a free and open source Jabber (XMPP) messaging client for Apple and Android devices focused on Privacy and Security with full OMEMO encrypted messaging support.

Secret Messenger 4 May 2, 2022
A full stack real time messenger clone. Frontend is written in swift, and the backend is written in javascript.

FullStack-Messenger-Project A full stack real time messenger clone. Frontend is written in swift, and the backend is written in javascript. The Fronte

Arkash Vijayakumar 6 Nov 29, 2022