Launching the Android, at the same time we deprecated the Cordova was tough. I wanted to share, after completing 2 months having the Android app in the store (and a huge amount of new users), what are the most frequent pains they’re having and how I think we can handle it.
The list points most for the bad experiences that our users had. There were of course some bad reviews saying we’re lacking features, but this is something we knew would happen. The topics I wanna talk about are things I honestly didn’t expect from server administrators and I think we can do better to the next ones.
No support for WebSockets: many reviews were pointing to errors related to not having WebSockets support. This is super required for both applications to work. Both iOS and Android rely on WebSockets to get updates and of course that if the user is using Rocket.Chat on the web, he will never notice, because Meteor has it’s own fallback way to handle it. IMHO we must act on this and warn the admin users when WebSocket is not enabled on the server. The Wizard is a major entry point now for us to do that. Just saying to the administrator that WebSockets aren’t enable would reduce drastically the bad experience some of them are having on the apps.
“Store_Last_Message” setting disabled: we leaved it false by default, and we already discussed about it here. The Android app is already handling correctly when the setting is false and the iOS will support it too when the new layout come out. But that doesn’t mean it needs to be the default experience. We need to act on it, make it true by default as soon as possible (at least in our hosting, where we have much more control?).
Other improvements
Number of unread messages: this was a long discussion between me, Gabriel and Thiago. I’m bringing this subject here because I still think it’s important and I’m want to try to change our mind about it.
The thing is: people that are using our mobile apps are expecting to have an experience similar to WhatsApp/Telegram now in terms of interface. But there’s one tricky thing that we’re no doing: the badge that we show to the user is only showing the number of unread messages that are related to the user. So, for instance, when you see #general in unread state, you’ll hardly see how many messages are unread. I don’t see how this can be good to the mobile user, because some of the chats are going to have a number (like DMs or some channel/group that mentioned him) but others don’t.
My point is: let’s show the badge to any message that’s unread by the user on the channel/group/dm. I think this will provide a much better experience when using the mobile apps.
Update data in background: I really wanted to start this discussion with you guys. I know we’ve touched this subject but never changed anything on this. Let me give you guys some clarification on how the app networking/data sync works so we make sure we’re on the same page: the iOS/Android apps now do not sync in background. What we currently do is: when the app opens, we ask for the changes on the room/subscriptions list, and when the user opens a chat, we fetch all the new messages from that room. That’s not even close to the experience that we want our users to have. I’ve couple of suggestions for us to investigate (and I wanna hear your feedback on them):
- We can update the data on the app via silent push-notifications. The push can contains all the information from a message and then we can store this data on the app and show later to the user from the database.
- We can have a “sync” API that the apps fetch from time to time to get the changes since the last update.