Cloneder news and updates

November 21, 2018

Keeping an app update to date with the latest versions of the libraries, framework, modules, SDK, plugins and OS platforms is a lot of work. It’s very rarely as simple as updating the dependency. For components, such as Ionic, Cordova or iOS and Android major versions its quite unlikely the app will no longer build.

Ideally the breakage happens at build time, and not later at runtime which requires a proper round of testing to notice the issue.

However the upgrades needs to be done if you want to keep up with the latest bug fixes, features and not have API’s you’re dependant on stop working after being deprecated then shutdown or removed.

There still has been plenty of updates to Cloneder happening under the covers. In August Cordova was updated to version 7 and many of the plugins updated to their latest versions. Some of the additional work required to support this was:

  • Changes to the setup for the Facebook plugin
  • Updates to the continuous integration script for the Android build
  • Using a custom version of the module to upload the Android build to the Play store

Each of those took a non-trivial amount time to investigate and work out the solution. So you can see how much time quickly adds up keeps all the moving parts working.

In November the major feature enhancement was updates to the chat message read/unread status. Before it was possible to tell if yourself or the other user had read the latest message in a chat.

The first change was to move the last read time to the Firebase real-time database instead of storing it in the MongoDB through the Parse framework API.

While the Firebase platform also now has the scalable Firestore document database, the real-time database (RTB) is actually a better choice (See https://firebase.google.com/docs/database/rtdb-vs-firestore). This is because the RTB has lower latency and the pricing model works well with small amounts of data that are constantly updated. The only downside is that it doesn’t have unlimited scalability and only a 100,000 concurrent connection limitation per database. So if you’re expecting more than 100,000 concurrent users, then first congratulations on the success of your app, and second its not an insurmountable amount of work to implement sharding across multiple databases.

The other update was to store the last read time per user for the chat, as Cloneder supports group chats. With the new real-time data structure on the front-end we have implemented read indicators like in Facebook messenger, where there is a tiny profile picture under the message a user has seen up to.

Finally an “is typing” indicator has been added to show if anyone in the chat has been typing in the last few seconds.

Check out the latest chat features with the web version here. The updated apps are coming soon.