Even with the new code that comes with our releases, you don’t have to worry about massive breaking changes that disrupt your workflow. In fact, we have a great deprecation convention where we give you weeks, sometimes even months, to migrate your codebase to new ways of using our API and components.
There are some times when we have to plan for the long run and bundle several large features and changes together into a major release. If you’re familiar with semantic versioning, major releases are the number that comes right after the “v” notation - for example, v5.11.3 is the major version 5 of our Android Chat SDK, where 11 is the minor release, and 3 is the patch version.
Q4 of 2022 - it seems impossible, but we’re already at the end of the year. And this quarter is one of the times when we are looking into releasing a major version of our Android Chat SDK.
We’re in the process of merging major improvements and changes, as well as polishing the SDK API, cleaning up deprecated code and unused structures, and even thinning the SDK to make it smaller. With all these changes, we’ll be releasing a major version - v6 of Stream Chat Android.
We’re the ones building it, so we’re definitely biased, but this is an exciting release! Some of the things we’re planning to ship in the coming weeks are the following:
-
Database & State Decoupling: We’ll split these two things into separate artifacts, which will allow you to only include the code you need. On top of that, it’ll allow you to replace our default database provider (Room) for something else, like Realm!
-
Video thumbnails: A long-awaited feature, we’re finally ready to ship. With the full BE support and alignment between SDKs, we’ve prepared video thumbnails as a special attachment preview. We’ve also improved the way video attachments are rendered in the Gallery preview, and we’ve allowed the playback feature in various places.
-
New CDN: Our BE team has provided us with extra CDN functionality - like having information about image dimensions on the get-go. We also expose several transformations for these images, for example, image resizing!
-
New Websocket implementation: This isn’t as user-facing as some other features, but we’ve improved the way our WebSocket connections work, making them more stable, faster, and with less overhead.
-
Bi-directional pagination: Now you can jump and scroll through history in channels! You can scroll to a quoted message and continue paginating in both directions to fill in the history gaps!
-
MessageComposerView: We deprecated the old MessageInputView in favor of our MessageComposerView, which is much more customizable and stable. You should feel no difference in the UI or UX, but the API changed in some ways to allow for customization similar to what our Compose counterparts provide, where you can replace smaller sections of the UI without much trouble.
-
Result Class refactor: This is a breaking change worth having. Instead of the Result class being a wrapper of Success/Failure cases, it’s now a sealed class that works like an Either construct - you can never be in a state where there is a Successful response without data. Or a Failure with data.
-
ChatError refactor: We’ve changed the way the ChatError behaves to follow the sealed class structure. It now makes it easier to handle each error type.
-
Avatar rendering changes: No more weird and complex Bitmap factories! Inspired by Compose, our Avatars in XML now render a grid of images that help us optimize the memory taken for images and custom bitmap building, and it reduces the amount of code by a lot!
-
Removed 3rd party libraries: We removed some third-party libraries to rely on fewer outside-of-stream solutions. Your APK sizes will be happy! :]
-
Package Cleanup Removing of "com.getstream" package: It was highly confusing to have two or three sets of packages and naming for our codebase, so we decided to migrate everything from “com.getstream” to “io.getstream”. We also moved code around to clean it up and we’ve renamed some of the module packages to make more sense, such as common modules, state and database modules and others.
-
Versioned documentation & deprecated v4: End of September, we deprecated our v4 SDK release. That means if you haven’t migrated we strongly recommend using at least v5 and possibly moving to v6 as soon as possible. But in the meantime, we’ve added versioned documentation on our SDK page, that lets you switch between pages that correspond to v5 and those that only exist in v6. We’ll continue this effort for future major releases too!
-
Support for Android 33 API (Android 13): As part of keeping up to date, we’ve updated our supported API version to 33! This means we’ve had to integrate a different permission system for media storage for Android 13, as well as permission to show push notifications. Be on the lookout for these, as there have been some major permission changes in the latest Android release.
Whew! That’s a lot. We assure you all of these changes are constantly being tested on our end, and we’ve taken great care that nothing breaks for you. However, we need your help, as we cannot predict every edge case our customers experience in their applications and highly specific use cases. That’s why we’d love to have you help us with testing the future release!
Android Chat v6 Beta!
You might be wondering how you can test the release if it’s not out yet?
We have just released our first beta version of the v6 Chat SDK for Android!
If you follow the link above, it’ll give you full information about how to access the beta or which version to use in your migration.
In case you find any issues in your use case or anything that you’d like for us to look into, improve, or clean up, please open a new issue, using our Android Chat SDK Task template.
Additionally, don't forget to attach the v6-beta
label below:
Swag Giveaway 🎁
Did you find any issues with our v6 Beta? Then please don't hesitate to report them on Issues! We want to reward the early adopters of the v6 Beta and ensure that all issues are resolved before the stable release. Win Stream swag by reporting a critical issue or creating a PR for an issue.
Note: This event is valid until the v6 stable is released. If you'd like to be notified as we change event status, keep your eye on Stream on Twitter.