Most Recent Posts

Integrating with Logging Platforms on iOS

You might ask yourself, are users reaching certain screens? What crashes happen in production? Are certain things happening as expected? This is the area of production logging. Logging during development is straightforward. You just print things to the console. But in production, you do not have this luxury. Instead, you have to roll your logging
Read More4 Min Read

Setting Background Modes and Device Capability Privacies in iOS Apps

What are the required background modes and protected resource privacies on iOS? Discover and learn to set them appropriately in this article. It focuses on configuring background modes for iOS apps in Xcode and requesting authorization to access the user’s camera, microphone, and media. Resources This article uses the following projects to demonstrate how background
Read More11 Min Read

Real-World Xcode Project Using Tuist

There's a file in there with the extension proj. This file is what it is about, this file is probably the source of most of the source-level conflicts you will be facing when working on a single Xcode project with multiple people. How often do you intend to quickly merge your work, only to be
Read More12 Min Read

Linting Documentation with Vale to Increase Quality & Consistency

Most software developers are familiar with tools to lint their source code. Linting code is the process of checking your code against a defined set of rules to help keep a consistent naming convention, prevent common mistakes, and anti-patterns in other aspects of your code, provided the requirement can be expressed in configuration understood by
Read More8 Min Read

SwiftUI Animation: How To Add Facebook Live Reactions to Livestream Chats

An app like Telegram uses fine-grained animations to engage, entertain, and onboard users in many ways. In this article, you will learn how to build and integrate great SwiftUI animations and motion for your iOS apps to provide wow user experiences. You can use the animations in this article in, for example, live video streaming
Read More11 Min Read

How to Achieve a 9ms Inference Time for Transformer Models

Interested in Moderation for your product? Check out Stream's Auto-Moderation Platform! It is crucial for the technology platforms to moderate any harmful content as early as possible. Most modern moderation tools take a few hundred milliseconds to a few seconds to detect harmful content. Often the action against detected harm is taken after the harm
Read More5 Min Read

Minimal Node Integration to Get You Started with Stream

Let's set you up with a minimal integration service written in NodeJS. Note, this implementation should only be used for testing purposes and is intended to get you started. What this sample offers is a very basic login and sign-up endpoint that interacts with the Stream Chat and Feeds API to supply you with user
Read More3 Min Read

Customizing Stream Chat iOS/Swift App for a Unique Look: A Quick Start Guide

This article demonstrates how to perform basic customizations such as swapping colors, fonts, and icons with assets, color, and typographic styles from your style guide. You can create a free chat trial account to follow along with the tutorial. Resources You can find and download the completed Xcode project on GitHub. This tutorial is for
Read More11 Min Read

7 Android Resources To Level Up As a Developer

The development ecosystem is changing so fast. Every day, new tech stacks and solutions are introduced to the community, and some materials are beneficial and reduce many development resources. To be a better developer, you need to not only make an effort to write good code but also keep learning helpful knowledge from excellent resources.
Read More5 Min Read

WebRTC IP Leaks: Should You Still Be Worried?

Before getting to the juicy part of this article, you need to understand why WebRTC requires your IP address and how this is not technically a vulnerability as much as a feature of WebRTC. We’ll explore: Attack vectors that demonstrate how WebRTC can be exploited The privacy implications of a leaked IP address How to
Read More9 Min Read

Using SwiftUI Effects Library: How to Add Particle Effects to iOS Apps

Creating particle animations similar to the iMessage screen and bubble effects in iOS can be difficult. The main reason is that the Core Animation Emitter Layer that allows you to animate, emit and render particle effects is complex to set up and configure due to its large number of parameters. In this article, you will
Read More10 Min Read

Becoming A Successful Open-Source Librarian

The open-source software ecosystem is in a constant state of growth. Every day, new libraries and solutions are introduced on GitHub that are designed to accelerate development speed and make our lives as developers easier. Nowadays most companies, especially startups, are highly dependent on open-source libraries. They reduce development resources needed and have been a
Read More17 Min Read

How to Integrate Live Audio and Video Into iOS Apps Using WebRTC

The main reason is that there are several factors that one needs to consider for the backbone or underlying technology. One way to embed live media into iOS applications is to use Web Real-Time Communication (WebRTC). In this article, you will discover how WebRTC works and how you can integrate it into your next iOS
Read More9 Min Read

Building A Conferencing App With WebRTC: P2P, SFU, or MCU

Building A Conferencing App With WebRTC: P2P, SFU, or MCU When dealing with relatively simple real-time data, WebSockets and gRPC have become the go-to mechanisms for most developers. These are relatively simple to work with, and the existing documentation makes building larger applications mostly trivial. When dealing with the WebRTC protocol, however, things are more
Read More6 Min Read

HTTP, WebSocket, gRPC or WebRTC: Which Communication Protocol is Best For Your App?

Our forms of communication are constantly improving: getting faster, more convenient, and more reliable. Our communication has evolved from sending messages using carrier pigeons, to postal mail, to the invention of the landline, to email and text messages from a small device that fits in our pockets. In the future, we may even transition meetings
Read More33 Min Read

Design Patterns and Architecture: The Android Developer Roadmap - Part 4

We’ve broken down our 2022 Android developer roadmap into a multi-part series, each covering important Android fundamentals and the current ecosystem. In the last post, we discussed essential elements of modern Android development, including Fragments, App Navigation, Architecture Components, and Android Jetpack libraries. In part four, you’ll learn the following six sections of our Android
Read More17 Min Read

SFU, MCU, or P2P: What's the Difference Between These WebRTC Architectures?

SFUs are commonly used in VoIP and video conferencing applications. SFUs differ from Peer-to-Peer (P2P) connections, in which each party sends and receives media directly to and from the other party. They are also different from Multipoint Control Units (MCUs), which receive media from all parties and then broadcast it to all other parties. SFUs
Read More4 Min Read

6 Jetpack Compose Guidelines to Optimize Your App Performance

Since Google announced Jetpack Compose stable 1.0, many companies are getting started to adopt Jetpack Compose into their projects. According to Google’s What developers are saying, Jetpack Compose increases their productivity and code quality. Jetpack Compose has a dedicated optimization system but it's essential to understand the rendering mechanism of Jetpack Compose for improving your
Read More11 Min Read

Stream Loves Open Source: Aug 2022

At Stream, we rely on open source to build our products and SDKs. In this article, we want to take the time to highlight some of our favorite projects and maintainers ❤️. The key takeaway of this article is to support open source projects you rely on in any way you can. We can all
Read More6 Min Read

Using Xcode: Creating Reusable and Shareable Color Palettes

Having a full range of colors that can be shared and reused in different Xcode projects improves efficiency and workflow because it removes the time wasted in looking for colors that will work together for your projects. Additionally, it ensures consistency of color usage within your apps and projects. Historically, developers and designers create color
Read More7 Min Read

Definitive Flutter Painting Guide

“Everything is a widget.” Well, yes - but what is a widget? Widgets used in making Flutter apps can themselves be composed of smaller widgets. Most widgets carry some kind of visual component - either defined by themselves or represented by smaller widgets. Unlike native frameworks, Flutter underneath does not use OS views. Instead, Flutter
Read More29 Min Read

Exploring Google’s Now in Android Open-Source Project

In 2022 Google I/O, Google’s DevRel team released an open-source project, Now in Android, built with the modern Android architecture and Jetpack libraries. In this article, you will cover the overall architecture, each layer, and tech stacks that are used in Now in Android project, such as Material3, Jetpack Compose, and app performance. Before you
Read More9 Min Read

Transformations in Machine Learning

On 8th September 2020, an article in the Guardian was written by a robot called GPT-3. They asked the robot to write an article about why humans should not be scared of robots and Artificial Intelligence. The human editors wrote the introduction for the article and instructed GPT-3 to generate the next possible sentences iteratively.
Read More17 Min Read

Seeding a Core Data Store With Remote JSON Data

There are various situations where you’ll find yourself needing to import a sizable amount of JSON to seed a Core Data store. Sometimes you can ship this data alongside your app in the form of a pre-populated SQLite store. Other times, the data that you need to retrieve is so dynamic that shipping the data
Read More18 Min Read

WWDC State of the Union, What Can We Look Forward To?

Yesterday we wrote about the Apple WWDC Keynote on our blog. On the same day of the WWDC keynote, Apple also live-streamed the Apple WWDC Platform State of the Union. Apple focussed software developers often call this “the Developer Keynote”. The State of the Union session is a more technical presentation with much more detail
Read More12 Min Read

Apple WWDC Keynote Impressions

Like many things, software development happens in cycles. Apple as a company is like this as well. Each year Apple releases new hardware and new major versions of their hardware and software. To give software developers working in the Apple ecosystem a chance to adopt new hardware and software versions, Apple organizes a yearly conference
Read More13 Min Read

Server-Side Vapor Swift Implementation With Google, Apple, and Github Authentication

In this post, you'll learn how to build a server application with the Vapor framework to provide tokens to an iOS app to use with the Stream Chat SDK. You'll learn how to leverage different types of authentication for users and provide them with tokens. Note: for this tutorial, you'll need Xcode 12.3 installed, Homebrew,
Read More15 Min Read

App Navigation and Jetpack: The Android Developer Roadmap - Part 3

We’ve broken down our 2022 Android developer roadmap into a multi-part series. Each section dives deep into important Android fundamentals and the current Android ecosystem. In the last post, we discussed important elements of Android’s primary components, including Intents and App Entry Points. In part three, we’ll cover the next four sections of our Android
Read More11 Min Read

Building Your First Application With Deno

Deno is a recently launched runtime environment for JavaScript and TypeScript used for building modern server-side applications. In this article, you will learn how to build a backend server with Deno. I will show you how to create a live server, create API routes, store environment variables, read and write files in file systems, and
Read More12 Min Read

Modeling Retrofit Responses With Sealed Classes and Coroutines

As the rate of data communication increases, the complexity of the application architecture also increases. How an application handles API responses will determine its overall architectural design and code complexity. In this post, you will cover how to model Retrofit responses with Coroutines and Sealed classes to reduce code complexity and make your application architecture
Read More7 Min Read

Scaling Your Xcode Projects With Tuist

One of the biggest challenges for iOS development teams is scaling a codebase when their company or product takes off. Growth and scaling issues are a great thing, but they introduce some typical growing pains as well, like: Clearly defining responsibilities when splitting up your development effort across multiple teams. Decreasing the edit-build-run cycle of
Read More6 Min Read

Reducing App and SDK Size With Emerge Tools

The Importance of Mobile App and SDK Size When developing a mobile app, one crucial performance metric is app size. An app’s size can be difficult to accurately measure with multiple variants and device spreads. Once measured, it’s even more difficult to understand and identify what’s contributing to size bloat. Many people think that as
Read More5 Min Read

App Components: The Android Developer Roadmap - Part 2

We’ve broken down the Android developer roadmap into five modules, each covering different aspects of the Android development ecosystem. In the last post, we discussed important elements of Android’s architecture, including the primary Android languages, the OS, the Android Platform, and the App Manifest. In part two, we’ll cover the next three sections of our
Read More7 Min Read

AvatarView for Android: Take Your Profile Images to the Next Level

Introducing the AvatarView Library AvatarView supports loading profile images with fractional style, borders, indicators, and initials for Android. It also provides internal image loaders to load profile images with your loading strategies. To show you how useful the API is, this post will show you how to use AvatarView so that you can implement your
Read More5 Min Read

Tips & Tricks to Improve Flutter Performance

Held in Oslo, Norway (and more recently online), FlutterVikings is the largest community-driven Flutter conference in the Nordic region. Focused on Flutter and Dart, the conference gathers global Flutter experts from some of the world’s most innovative and well-known tech companies for two days of technical presentations, networking, and connecting with sponsors. Stream was proud
Read More1 Min Read

Build Vikings Feb 2022 Winners 🎉

As avid open-source Flutter developers, the Stream team was in full attendance at this year's Flutter Vikings conference. Similar to our previous participation at Flutter Vikings, the team decided to host a codelab and hackathon for the event. For this year's codelab, entrants were required to create a chat application with custom stickers and animations. A daunting task! We
Read More1 Min Read

Exploring Jetpack WindowManager for Foldable Devices

Of this new generation of foldable devices, dual-screen devices, which provide symmetrical screens that work together in unique ways, are particularly interesting. But, they also present unique challenges. A key feature of these foldable, responsive UIs is that screen sizes can change in runtime. This means that applications should recognize screen changes in runtime, which
Read More7 Min Read

The Android Platform: The 2022 Android Developer Roadmap - Part 1

The 2022 Android Developer Roadmap is designed to give you a comprehensive understanding of the current Android ecosystem and provides suggested learning paths along the way to help you grasp the concepts. In part one of this 5-part series, we’ll start by covering the first four sections of the Android Roadmap: Languages Android OS The
Read More6 Min Read

Why Every Flutter Dev Should Care About BuildContext

While the quest for abstraction and the purist’s assertion that all APIs should be simple by design are both noble pursuits, there is a point where too much abstraction becomes harmful and hinders the personal growth of new developers. One of the most common complaints of developers who are new to Flutter is the general
Read More11 Min Read

Exploring Material You for Jetpack Compose

You'll learn all about Material You and how you can dynamically import colors from the Material 3 Compose library into our versatile Chat Compose SDK, giving your app a more polished and personalized feel for your users. To show you just how powerful the API is, you'll also learn how to use the Material Theme
Read More4 Min Read

macOS Performance Comparison: Flutter Desktop vs. Electron

This article covers the following: The underlying engines and technologies powering Flutter and Electron. Important performance considerations and how they relate to Flutter Desktop and Electron. Real performance metrics demoing example Flutter Desktop and Electron applications on macOS. Before reading on, keep in mind that this article isn’t intended to promote one solution over the
Read More13 Min Read

Flutter vs React Native: The Ultimate Comparison

Over the years, it’s become common for developers to compare Flutter and React Native. Both are prevalent multi-platform tools for quickly and easily building mobile applications. If you walk into a developer meetup and ask the question, "What should I pick, Flutter or React Native?", you’re setting the stage for a very spirited debate. In
Read More12 Min Read

Building a Production-Ready Chat SDK Using Jetpack Compose

Released in July 2021, Jetpack Compose is the highly anticipated native UI toolkit for Android that is designed to help developers build faster and with more ease. After two years in development, Jetpack Compose is now in its 1.0 version, and is both stable and deeply flexible. Stream’s Lead Android Developer for Jetpack Compose, Filip
Read More1 Min Read

Keeping Public API in Check With the Kotlin Binary Validator Plugin

Within the Stream Chat Android SDK project, we use the Kotlin binary compatibility validator plugin to keep track of all the changes we make to our public API. This is a first-party plugin by JetBrains, though it's still experimental (it's an incubator project by JetBrains on GitHub). In this article, you'll learn what the plugin
Read More5 Min Read

Add Location Sharing to a Messaging App Using Flutter

A stand-out feature of the most popular messaging applications is the ability to share a user's location quickly and conveniently with trusted peers. Using Stream Chat and Flutter, we can implement a similar feature in very little time. In this article, we will build a small location-sharing chat feature using Flutter, Stream Chat, and the
Read More15 Min Read

Clean Chat Example App with Jetpack Compose

Stream now provides a Jetpack Compose Chat SDK. Check out the Compose Chat Messaging Tutorial and give it a try today! We've recently published a Jetpack Compose design sample on Twitter, recreating the Contacts & Messages design by Mickael Guillaume on Dribbble. The source code for this sample is available on GitHub. In this article,
Read More5 Min Read

Creating a fast and beautiful chat with Flutter

We all have probably written chat apps multiple times in our lives, and we all know that it takes time! So I always wondered if there is a way to make a custom and beautiful chat app using some lib/service that does all the heavy lifting for me. A few weeks ago, I came across
Read More6 Min Read

Announcing the Beta Release of Activity Feeds for Flutter

Today, we are incredibly excited to announce the beta release of Stream’s Feeds SDK for Flutter 🥳. Stream’s Activity Feed API was built by developers, for developers to make their lives easier by not having to worry about scalability, maintenance, and reliability of a complex feed infrastructure. By leveraging Stream’s API or integrating our libraries
Read More1 Min Read

Activity Feed Personalization 101: Top Feed Features to Improve User Engagement

Personalization comes in many flavors, and the data science team at Stream can help you build your own feeds personalization engine based on your specific needs. In conjunction with our analytics client we recommend tracking every event for every user, such as clicking on a link) we use both engagement and feed data to power
Read More4 Min Read

Jetpack Compose: First Impressions and Learning Resources

As you most certainly already know, Jetpack Compose is the hot new thing for Android UI development. Its promise is to save us by making all the pain points of the old View system and XML layouts go away. Stream now provides a Jetpack Compose Chat SDK. Check out the Compose Chat Messaging Tutorial and
Read More6 Min Read