Rocket.Chat mobile clients

Last update: May 17, 2022

Rocket.Chat Mobile

Project Dependencies Codacy Badge codecov CodeFactor

  • Supported server versions: 0.70.0+
  • Supported iOS versions: 11+
  • Supported Android versions: 6.0+

Download

Download on Google Play Download on App Store

Check our docs for beta and Experimental versions.

Reporting an Issue

Github Issues are used to track todos, bugs, feature requests, and more.

Also check the #react-native community on open.rocket.chat. We'd like to help.

Contributing

Are you a dev and would like to help? Found a bug that you would like to report or a missing feature that you would like to work on? Great! We have written down a Contribution guide so you can start easily.

Whitelabel

Do you want to make the app run on your own server only? Follow our whitelabel documentation.

Engage with us

Share your story

We’d love to hear about your experience and potentially feature it on our blog.

Subscribe for Updates

Once a month our marketing team releases an email update with news about product releases, company related topics, events and use cases. Sign up!

GitHub

https://github.com/RocketChat/Rocket.Chat.ReactNative
Comments
  • 1. Chore: Migrate RoomView to Typescript

    Proposed changes

    Issue(s)

    How to test or reproduce

    Screenshots

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] Improvement (non-breaking change which improves a current function)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Documentation update (if none of the other choices apply)

    Checklist

    • [ ] I have read the CONTRIBUTING doc
    • [ ] I have signed the CLA
    • [ ] Lint and unit tests pass locally with my changes
    • [ ] I have added tests that prove my fix is effective or that my feature works (if applicable)
    • [ ] I have added necessary documentation (if applicable)
    • [ ] Any dependent changes have been merged and published in downstream modules

    Further comments

    Reviewed by AlexAlexandre at 2021-12-02 02:25
  • 2. Chore: Start Typescript migration

    Proposed changes

    The purpose of this PR is to start the project's migration to typescript. With that, we need to pay attention to the following points:

    • Add a tsconfig.json file. In this process, I created this file with the default rules. At the moment, I'm allowing the type: any to be used, as this is the beginning of the migration, we still don't know all the types used, in the future it will be necessary to disable this option.
    • Update eslint config to support .ts and .tsx files. In this process, was necessary override some js rules, so I created separated rules to .ts. I also changed our extends rules from airbnb to @rocket.chat/eslint-config, since our company has default lint rules, that's no reason to not use it.
    • We have adopted interfaces as the default for typing in our repository, following the example below:
    interface IActionSheetData {
    	options: any;
    	headerHeight?: number;
    	hasCancel?: boolean;
    	customHeader: any;
    }
    

    All interface name needs start with an I, as IActionSheetData, IAvatar, IButton... This is a common pattern, and helps all to know when see an interface on the codebase.

    • Componentes migrated:
      • app/constants;
      • app/containers;
      • app/presentation;
      • In this process, was necessary migrated some separate files, for example: app/lib/Navigation.ts and app/lib/ShareNavigation.ts. To use your resources elsewhere.

    Prettier

    Taking advantage of all the changes made on lint, I also set up prettier in the project, to help us with te code formatting. This tool has very interesting features, and I recommend that all developers involved in this project configure their IDE for automatic code checking and integration.

    To more information, please see the link: Prettier.

    Thinking about ensuring the quality of the code, I took the liberty of changing our pre-commit script, to not only run lint, but also check the formatting of the code using prettier. The new script now runs this command:

    "prettier-lint": "yarn lint --fix && prettier --write ."

    Important

    Depends on https://github.com/RocketChat/Rocket.Chat.js.SDK/pull/145 Depends on https://github.com/RocketChat/react-native-ui-lib/pull/3

    Issue(s)

    Closes #786

    How to test or reproduce

    We can test the prettier following this steps: To check your code formatting, run this on your terminal:

    yarn prettier-check
    

    To fix your code formatting issues, run this on your terminal:

    yarn prettier
    

    Screenshots

    N/A

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [x] Improvement (non-breaking change which improves a current function)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Documentation update (if none of the other choices apply)

    Checklist

    • [x] I have read the CONTRIBUTING doc
    • [x] I have signed the CLA
    • [x] Lint and unit tests pass locally with my changes
    • [ ] I have added tests that prove my fix is effective or that my feature works (if applicable)
    • [ ] I have added necessary documentation (if applicable)
    • [ ] Any dependent changes have been merged and published in downstream modules

    Further comments

    Reviewed by AlexAlexandre at 2021-07-15 14:25
  • 3. single-server branch specific issue - Android - Notification doesn't load app into workspace when app is closed.

    • Your Rocket.Chat Experimental app version: 4.9.0.1
    • Your Rocket.Chat server version: 3.4.2
    • Device (or Simulator) you're running with: Android

    I am using Firebase notifications set via google-services.json file on single server branch. This started happening after 4.5. (4.8 and now 4.9 still happening) When I get a notification and the rocketchat app is closed, it opens, but then stays on the loading splash screen without moving any further. I have to then force close and re-open the app. If the app is already open in the background though, the notification works fine, it's only when the app is closed, and the notification itself opens the app when clicking it.

    You can test by sending yourself the push notification via admin panel, once it comes in, click it (make sure app is closed) and it will load splash screen, then becomes non responsive.

    Reviewed by BizClimb at 2020-07-21 21:35
  • 4. [IOS] app dialog for sharing files is blank

    Description:

    On IOS the app dialog for sharing files with contacts or channels is blank.

    Environment Information:

    • Rocket.Chat Server Version: 3.9.4
    • Rocket.Chat App Version: 4.13.0.22082
    • Device Name: iPad Gen 7
    • OS Version: 14.3

    Steps to reproduce:

    1. go in any app, like photos or safari
    2. press on share and select rocketchat
    3. dialog is blank

    Expected behavior:

    I'm able to use the share function to share files with rocketchat

    Actual behavior:

    dialog is blank

    Reviewed by BlindHenry at 2021-01-05 04:02
  • 5. [NEW] E2E Encryption

    Proposed changes

    Implement E2E Encrypted rooms on our Mobile Client.

    Libraries

    Issue(s)

    Closes #141 .

    How to test or reproduce

    Pay attention to https://github.com/RocketChat/Rocket.Chat/issues/18672.

    • [ ] Read messages of a e2e encrypted room
    • [ ] Send a message to a e2e encrypted room
    • [ ] Enter your e2e encryption key
    • [ ] Share a text message using Share Extension

    Screenshots

    Screen Shot 2020-08-14 at 11 34 51 Screen Shot 2020-08-14 at 10 54 33 Screen Shot 2020-08-14 at 10 54 19 Screen Shot 2020-08-19 at 14 33 39 Screen Shot 2020-08-19 at 14 34 37 Screen Shot 2020-08-20 at 14 41 47

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] Improvement (non-breaking change which improves a current function)
    • [X] New feature (non-breaking change which adds functionality)
    • [ ] Documentation update (if none of the other choices apply)

    Checklist

    • [X] I have read the CONTRIBUTING doc
    • [X] I have signed the CLA
    • [X] Lint and unit tests pass locally with my changes
    • [ ] I have added tests that prove my fix is effective or that my feature works (if applicable)
    • [ ] I have added necessary documentation (if applicable)
    • [ ] Any dependent changes have been merged and published in downstream modules

    Further comments

    To don't make this pull request even more complex, we'll make all the stuff related to encrypted room push notification on other PR. So these items are not included here:

    • Reply notification for a encrypted room with a encrypted message
    • Receive a encrypted message notification and show the decrypted content
    Reviewed by djorkaeffalexandre at 2020-08-11 18:05
  • 6. [CHORE] Migrate to Watermelon

    @RocketChat/ReactNative

    • [X] Configure (iOS and Android)
    • [X] Load rooms
    • [X] Load room
    • [X] Update rooms (socket)
    • [X] Sync rooms
    • [X] Update room (socket)
    • [X] Sync room
    • [X] Load more messages for room
    • [x] Multiple servers
    • [x] Share extension
    • [X] Message actions (reply, edit, pin, star, etc)
    • [x] Error actions (try again, delete message)
    • [x] Emoji picker
    • [x] User status (active users)
    • [x] Permissions
    • [x] Settings
    • [x] Roles
    • [x] Slash commands
    • [x] Threads
    • [X] Discussions
    • [x] Uploads
    • [x] User typing
    • [X] Clear database on logout
    • [x] Fav, hide, mark as unread room
    • [X] Sort rooms
    • [X] Group rooms
    • [X] Search rooms
    • [x] Save user
    • [x] Unread count on back button
    • [x] Save Notifications
    • [x] Receive Notifications
    • [x] Deep linking
    • [x] Edit room
    • [x] Draft
    • [x] Work offline
    • [x] Muted
    • [x] NewMessage
    • [x] Add user
    • [x] Create channel
    • [x] Test OAuth
    • [x] Test sync credentials with iOS native
    • [x] Performance
    • [x] E2E tests
    • [x] Remove Realm completely
    • [x] Test again (:
    Reviewed by diegolmello at 2019-09-02 20:09
  • 7. User online/presence status are sometimes incorrect

    • Your Rocket.Chat Official app version: 4.6.4.2118
    • Your Rocket.Chat Experimental app version: -
    • Your Rocket.Chat server version: 3.2.0, using helm chart, Kubernetes 1.16, nginx-ingress, and CloudFront
    • Device (or Simulator) you're running with: Realme X2 Pro
    • WebSocket supported: yes

    User online/presence status are sometimes incorrect

    This is the presence status list using web client: (which I say is correct)

    image

    However, React.Chat 4.6.4.2118 on Android shows this:

    Screenshot_2020-05-03-14-40-03-82_6c2112e95a10afaab76cfa27a6d42c7b

    Users that have been offline for quite some time are (e.g. amran, andin) are still shown as online/away on Android.

    Chatting still works.

    What I've tried:

    • In Android app, Settings > Clear local server cache. Still same.
    • In Android app, Logout then Login again. Still same.

    Example response headers given by https://chat.lovia.life/api/v1/users.presence?ids=rnPrRiZpmXbeH84wA,L6xY7zevMTcF6EKtJ,4D3zuTwXYsM6pE7y3,Brum53mQiSS7ttJnD: (note: some time has already passed)

    cache-control: no-store
    content-encoding: gzip
    content-type: application/json
    date: Sun, 03 May 2020 09:05:39 GMT
    pragma: no-cache
    server: nginx/1.17.8
    status: 200
    strict-transport-security: max-age=15724800; includeSubDomains
    vary: Accept-Encoding
    via: 1.1 e869415928b7de75c30c1dc3da361401.cloudfront.net (CloudFront)
    x-amz-cf-id: dBM3hLtMiQDVn2He5LrKLSV7FXjy8NcBv7BGBEComDxP9M-lMwsSXA==
    x-amz-cf-pop: SIN5-C1
    x-cache: Miss from cloudfront
    x-instance-id: ed3ZhwPXAs9K3BAYJ
    x-xss-protection: 1
    
    Reviewed by ceefour at 2020-05-03 09:04
  • 8. Add JWT authorization support to Rocket.Chat.ReactNative clients.

    • Your Rocket.Chat Experimental app version: 4.0.2.2087
    • Your Rocket.Chat server version: 2.1.0
    • Device (or Simulator) you're running with: Xiaomi Redmi Note 4x After implementing [NEW] Jitsi meet room access via a token #12259 we can successfully connect securly from Windows desktop clients to Jitsi calls. User with meet link but without valid JWT-token cannot connect to Jitsi Meet call. That user get logon form, that do not accept any data. But with JWT authentication turned on we have a problem with Rocket.Chat mobile applications (Rocket.Chat React Native). It seems like mobile app do not send JWT token to Jitsi and while connecting to Jitsi Meet call mobile client user get the same logon\password form, that do not accept any data. In Jitsi logs we see in that moment:

    Oct 08 13:58:01 general warn Error verifying token err:not-allowed, reason: token required

    So, please add JWT authorization support to Rocket.Chat.ReactNative clients. Thanks!

    Reviewed by ankar84 at 2019-11-01 11:01
  • 9. ReactOkHttpNetworkFetcher is not public in com.facebook.react.modules.fresco; cannot be accessed from outside package

    Description:

    I've got this error when I try to run android:

    android/app/src/main/java/chat/airlex/reactnative/networking/SSLPinningModule.java:9: error: ReactOkHttpNetworkFetcher is not public in com.facebook.react.modules.fresco; cannot be accessed from outside package

    import com.facebook.react.modules.fresco.ReactOkHttpNetworkFetcher;

    I've inspected ReactOkHttpNetworkFetcher class and it's indeed not declared as public.

    How can I resolve this error?

    Environment Information:

    • Rocket.Chat Server Version: latest
    • Rocket.Chat App Version: latest
    • Device Name: Android
    • OS Version: any

    Steps to reproduce:

    1. npx react-native run-android

    Expected behavior:

    Should be compiled without error

    Actual behavior:

    Throws error

    Additional context:

    SSLPinningModuleCode

    ReactOkHttpNetworkFetcher.java

    I wonder how it does work in other dev's environments?

    Reviewed by glinda93 at 2021-07-10 13:00
  • 10. Rocketchat reactnative client stuck at "updating"

    Description:

    Rocketchat Reactnative app is stuck in the "updating" state by just using the client The "updating" text is seen at the top of the appilication screen below the RocketChat server name As a result the contents of the chat rooms are not updated correctly and no new message notifications gets through. When opening the chat room the client will show just partial contents of the chat room and any messages that cannot be retrieved are not displayed at all. Only "circulating icon" is seen instead
    This renders the client totally unusable

    This may be related to the network connection changes. When this was seen the device had disconnected from Wifi and started to use mobile data and later returned back to Wifi. The app was displaying "no network connection" for some time despite the network connection was working well

    The "updating" issue can be temporarily fixed by cleaning local cache. This will not fix this problem permanently though.

    Environment Information:

    • Rocket.Chat Server Version: 3.14.0
    • Rocket.Chat App Version: 4.16.2.23909
    • Device Name: Huawei P20 Pro
    • OS Version: Android 10

    Steps to reproduce:

    1. Just use the client
    2. Enventually it will start to display "updating" at the top of the screen

    Expected behavior:

    The app works ok

    Actual behavior:

    The app shows "updating" text at the top of the app below the server details

    Additional context:

    Reviewed by Arska777 at 2021-05-28 06:26
  • 11. Notification but no message

    • Your Rocket.Chat Experimental app version: 1.25.0.13048
    • Your Rocket.Chat server version: 2.1.1
    • Device (or Simulator) you're running with: Android 9

    When the app is off, the notification popup with the message and when i run the app the message don't appear. If the discussion continue messages appears but not the first one. But If the app is running in background and a notification come, the last message appear with all lost messages of the discussion

    To Reproduce

    step 1 : close the app step 2 : wait a notification step 3 : run the app (the message don't appear, sometime but few time the message can appear) step 4 : talk to see messages appear but not the first one step 5 : wait for put the application running in background or open another app without close Rocket.Chat step 6 : wait a notification step 7 : open the app => you can see all messages appearing

    Reviewed by rvlta at 2019-12-11 02:24
  • 12. [FIX] Fix iOS Share Extension

    Proposed changes

    Fix iOS Share Extension

    Issue(s)

    How to test or reproduce

    Try to send a file via share extension. Receive a push notification.

    Screenshots

    Types of changes

    • [x] Bugfix (non-breaking change which fixes an issue)
    • [ ] Improvement (non-breaking change which improves a current function)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Documentation update (if none of the other choices apply)

    Checklist

    • [x] I have read the CONTRIBUTING doc
    • [x] I have signed the CLA
    • [x] Lint and unit tests pass locally with my changes
    • [ ] I have added tests that prove my fix is effective or that my feature works (if applicable)
    • [ ] I have added necessary documentation (if applicable)
    • [ ] Any dependent changes have been merged and published in downstream modules

    Further comments

    Reviewed by GleidsonDaniel at 2022-05-10 21:50
  • 13. Chore: Hooks - create custom hook usePermissions

    Proposed changes

    It needs to make the component re-render in case of:

    • user's roles change
    • subscription's roles change
    • permissions change

    Issue(s)

    How to test or reproduce

    • Take an omnichannel chat
    • Go to the Edit room, should render properly
    • If you have access to the admin panel, you can change the roles in permissions: 'edit-omnichannel-contact', 'edit-livechat-room-customfields'
    • The Edit room should re-render properly

    Screenshots

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] Improvement (non-breaking change which improves a current function)
    • [ ] New feature (non-breaking change which adds functionality)
    • [x] Documentation update (if none of the other choices apply)

    Checklist

    • [x] I have read the CONTRIBUTING doc
    • [x] I have signed the CLA
    • [x] Lint and unit tests pass locally with my changes
    • [ ] I have added tests that prove my fix is effective or that my feature works (if applicable)
    • [ ] I have added necessary documentation (if applicable)
    • [ ] Any dependent changes have been merged and published in downstream modules

    Further comments

    Reviewed by reinaldonetof at 2022-05-10 21:07
  • 14. [TEMP] Test login and rocketchat dehydration

    Proposed changes

    Cherry picked

    • https://github.com/RocketChat/Rocket.Chat.ReactNative/pull/4155
    • https://github.com/RocketChat/Rocket.Chat.ReactNative/pull/4182

    Issue(s)

    How to test or reproduce

    Screenshots

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] Improvement (non-breaking change which improves a current function)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Documentation update (if none of the other choices apply)

    Checklist

    • [ ] I have read the CONTRIBUTING doc
    • [ ] I have signed the CLA
    • [ ] Lint and unit tests pass locally with my changes
    • [ ] I have added tests that prove my fix is effective or that my feature works (if applicable)
    • [ ] I have added necessary documentation (if applicable)
    • [ ] Any dependent changes have been merged and published in downstream modules

    Further comments

    Reviewed by diegolmello at 2022-05-10 14:08
  • 15. Chore: Change websocket connection to sdk

    Proposed changes

    Change websocket connection to sdk

    Issue(s)

    How to test or reproduce

    Try to connect to a server

    Screenshots

    Types of changes

    • [x] Bugfix (non-breaking change which fixes an issue)
    • [ ] Improvement (non-breaking change which improves a current function)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Documentation update (if none of the other choices apply)

    Checklist

    • [x] I have read the CONTRIBUTING doc
    • [x] I have signed the CLA
    • [x] Lint and unit tests pass locally with my changes
    • [ ] I have added tests that prove my fix is effective or that my feature works (if applicable)
    • [ ] I have added necessary documentation (if applicable)
    • [ ] Any dependent changes have been merged and published in downstream modules

    Further comments

    Reviewed by GleidsonDaniel at 2022-05-10 11:29
  • 16. Chore: Evaluate TextInput component

    Proposed changes

    The proposal of this PR is unify our current components containers/TextInput and presentation/TextInput inside a single folder on containers/TextInput.

    After the evaluation, we decided rename the component containers/TextInput to containers/TextInput/FormTextInput. Bringing more sense to the responsibility from this file.

    Issue(s)

    How to test or reproduce

    We should test all input on the app. E.g:

    • New workspace, login and register inputs;
    • test if the password input stills show/hide the text;
    • Search on the top of the app;
    • Change the status with a message;

    Go to settings -> language -> select the last one, then check if the input will start from right to left.

    Screenshots

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] Improvement (non-breaking change which improves a current function)
    • [ ] New feature (non-breaking change which adds functionality)
    • [x] Documentation update (if none of the other choices apply)

    Checklist

    • [x] I have read the CONTRIBUTING doc
    • [x] I have signed the CLA
    • [x] Lint and unit tests pass locally with my changes
    • [x] I have added tests that prove my fix is effective or that my feature works (if applicable)
    • [ ] I have added necessary documentation (if applicable)
    • [ ] Any dependent changes have been merged and published in downstream modules

    Further comments

    Reviewed by AlexAlexandre at 2022-05-09 21:03
🚀 React-Native App for rocket launches 🛰
🚀 React-Native App for rocket launches 🛰

Moonwalk A simple way to stay up to date with upcoming space launches, built with React-Native, using the Launch Library 2 and the Spaceflight News AP

May 9, 2022
Unofficial Gitter.im (chat for GitHub) client for iOS and Android. [build with react-native]
Unofficial Gitter.im (chat for GitHub) client for iOS and Android. [build with react-native]

GitterMobile Unofficial Gitter.im client for iOS and Android. Download Go to the releases page to download the latest available apk. App preview Featu

May 10, 2022
Firebase chat app built with React Native

Firebase chat app built with React Native

May 10, 2022
A working Chat written in React Native and using Firebase

Chat App with Firebase and React Native

Feb 1, 2022
Spoke is a messaging app built for iOS and Android that allows cyclists to chat and organize group rides.

Spoke is a messaging app built for iOS and Android that allows cyclists to chat and organize group rides. Developed with React Native, Expo, Firebase, and Firestore.

Feb 23, 2022
💬 Full-featured high performance chat UI for React Native
💬 Full-featured high performance chat UI for React Native

react-native-chatty ?? Full-featured high performance chat UI for React Native. Demo With and without customizations: Check out Expo snack (For better

May 12, 2022
TweetDeck for GitHub - Filter Issues, Activities & Notifications - Web, Mobile & Desktop with 99% code sharing between them
TweetDeck for GitHub - Filter Issues, Activities & Notifications - Web, Mobile & Desktop with 99% code sharing between them

DevHub: GitHub Notifications & Activities on your Desktop Android, iOS, Web & Desktop with 95%+ code sharing between them thanks to React Native + Rea

May 13, 2022
Mobile, desktop and website Apps with the same code
Mobile, desktop and website Apps with the same code

Mobile, desktop and website Apps with the same code This project shows how the source code can be architectured to run on multiple devices. As of now,

May 11, 2022
a free (libre) open source, mobile OS for Ethereum
a free (libre) open source, mobile OS for Ethereum

Status - a Mobile Ethereum Operating System Join us in creating a browser, messenger, and gateway to a decentralized world. Status is a free (libre) o

May 11, 2022
The Art World in Your Pocket or Your Trendy Tech Company's Tote, Artsy's mobile app.
The Art World in Your Pocket or Your Trendy Tech Company's Tote, Artsy's mobile app.

Meta State: production Point People: Brian Beckerle, David Sheldrick CI : This is an Artsy OSS project. Other mobile projects are Energy and Eidolon,

May 17, 2022
:iphone: React-Native mobile application for Buttercup
:iphone: React-Native mobile application for Buttercup

Buttercup Mobile The mobile application for the Buttercup Credentials Manager. About This repository holds the source for the Buttercup mobile applica

May 9, 2022
React Native mobile app for Magento 2.x
React Native mobile app for Magento 2.x

Open source React Native mobile app for Magento 2 Magento React Native is a fully functional eCommerce App for your Magento 2 website. It uses Magento

Mar 28, 2022
Audiobook mobile application accomplished with React Native and React ecosystem, just a single code base.
Audiobook mobile application accomplished with React Native and React ecosystem, just a single code base.

Audiobook App Open Source Audiobook mobile application accomplished with React Native and React ecosystem, just a single code base for both android an

May 9, 2022
Short-term memory training game (mobile). Built with React Native and Redux.
Short-term memory training game (mobile). Built with React Native and Redux.

sequent Short-term memory training game. Remember the sequential order of numbers displaying on your screen. Free, no ads, open source. Created in Rea

Apr 17, 2022
A mobile application to deploy private VPN servers in the cloud with DNS ad-blocking and other features
A mobile application to deploy private VPN servers in the cloud with DNS ad-blocking and other features

ZudVPN A mobile application to deploy a personal VPN server in the cloud (DigitalOcean, AWS, GCP, Azure and others) with DNS ad-blocking and other fea

Apr 28, 2022
Mobile app for Chatwoot - React Native
Mobile app for Chatwoot - React Native

Mobile app for chatwoot platform. Built with React Native Chatwoot is an opensource alternative to Intercom, Zendesk, Drift, Crisp etc. Supported Chat

May 1, 2022
Gmail mobile app clone built with ReactNative
Gmail mobile app clone built with ReactNative

Gmail mobile app clone built with ReactNative

Apr 29, 2022
Project management mobile app built with React Native
Project management mobile app built with React Native

Project Management mobile app built with ReactNative App UI Mockup project_management_mobile_app3.mp4 App Screenshots Like this project? Don't forget

Apr 29, 2022