Rocket.Chat is proud to announce a new release of its iOS native application, version 3.1.
- You now can change your notification preferences per room;
- Swipe actions in a channel, now you can swipe to mark as read, as unread, to favorite and unfavourite and also to hide a chat from the list;
- Keyboard Shortcuts support, press “Command” from an external keyboard to see the list of available commands;
- Japanese language support;
- Many improvements on the list of chats related to performance and animations;
- Added back the search of messages to the room;
- Fixed a bug on theming search bar for emojis;
- Fixed a bug when showing hidden rooms on the share extension;
- General updates and improvements;
This release brings Rocket.Chat for iPad to new levels of productivity for keyboard users. It comes with new shortcuts to alternate between rooms & servers, reply to the latest message, open preferences and more!
We are also introducing Swipe Actions with this release, which are a long-awaited feature for some of our users so we are really happy that we managed to include it in time for 3.1. Now, when swiping right on a conversation on the chats list, you’ll be able to mark it as read or unread or you’ll be able to hide (close) it or add it to your favorite conversations section by swiping left.
Although it looks like a simple feature, it ended up being a real challenge for us, firstly because the conversation list can be huge for some users and, as the list grows, it becomes harder to keep everything syncronyzed- from user status to last message previews and any other information that might change on another client and must be reflected seamlessly on the iOS app. The complexity of the conversations list, the need to support grouping and sorting changes without impacting on scrolling performance or crowding the main thread also proved challenging. Besides those issues, we found out that Apple’s swipe actions API is broken and have experienced a lot of bugs such as not handling the swipe animation correctly or not supporting images on the actions for cells with a height lesser than 91 pt. Despite these challenges, we got there in the end and are pleased with the results!
In OSS we trust!
In order to solve our issues in relation to our large converstions list and the consequent need to support swipe actions properly, we carefully decided to add two new open source dependencies to our project, they’re DifferenceKit and SwipeCellKit.
DifferenceKit is an awesome diffing algorithm library for iOS development developed and maintened by Ryo Aoyama. The algorithm is based on Paul Heckel’s algorithm, and Ryo’s implementation appears to be the most accomplished one out there! Although it is a young project it has quickly become a popular one and Ryo is very quick to support fixing the issues when they come up, so you should defintely check it out.
SwipeCellKit is another great open source library which was created by Jeremy Koch and is currently maintained by Mohammad Kurabi. This library was conceived due to Jeremy’s frustration with the limitations of Apple’s swipe actions API. You can read the backstory here. We decided to choose SwipeCellKit for one very simple (and good) reason: it just works- better than the Apple’s API!
This is why we love open source. A huge thanks to the creators and maintainers of their awesome libraries and a special thanks to our illustrious contributor Samar Sunkaaria, who handled the implementation of these libraries for us!
That being said, you must update your app to the 3.1 version to experience the new conversations list experience.
Now you can change the notification preferences per room in your iOS app, changing your preferences related to email, desktop and mobile notifications.
Japanese Language Support
We’re also very happy to announce that this release introduces Japanese language support (thanks to the contributor YuuTakahara). We know there were a lot of people requesting this language and now we fully support it on the iOS native app!
Thank you all for helping us on this release!
For a full list of features added and bugs fixed, please see the Rocket.Chat iOS 3.1.0 release changelog on GitHub.