Engineering (2)

Build an AI Assistant for Android Using Compose

This tutorial guides you through building an AI assistant seamlessly integrated with the Stream Chat SDK for Jetpack Compose. You'll learn how to handle interactions on both the client and server sides by setting up and running your own simple backend. The AI assistant leverages Stream's edge network for optimal performance and uses APIs from
Read more ->
9 min read

Build an AI Assistant with React

In this tutorial, we will demonstrate how easy it is to build an assistant integrated into Stream’s React Chat SDK and learn how to incorporate the interaction on both the client and server sides. We will use the Anthropic and OpenAI APIs as the out-of-the-box examples, but using this method, developers can integrate any LLM
Read more ->
9 min read

Harness the Power of Stream, Cronofy, and OpenAI for Team Collaboration

Geographically dispersed teams often have a hard time scheduling meetings that work for all participants. Human Resources departments also face this challenge when working with existing employees and job candidates alike. Employees have the benefit of a defined and somewhat uniform computing environment, job applicants are a whole different challenge. Each candidate uses whatever computer
Read more ->
7 min read

AV1 vs. H.264: Which Codec Should You Use?

With the explosion of video content across platforms, the demand for efficient video codecs has grown exponentially. AV1 and H.264 stand out as two of the most widely discussed codecs in the industry today, each with its unique strengths, limitations, and ideal use cases. Understanding their differences and when each codec shines is critical for
Read more ->
6 min read

Build AI-Powered Chatbot Apps for Android Using Firebase

AI-powered chatbots are widely used across industries like education, food delivery, and now, even software development. Since the release of large language models (LLMs) from Google and OpenAI, implementing AI-powered chatbots in projects has become much more accessible. Google’s Generative AI offers substantial benefits by enabling content creation, personalization, decision support, and simulation, which improve
Read more ->
8 min read

Best 5 Frameworks To Build Multi-Agent AI Applications

This article aims to help you build AI agents powered by memory, knowledgebase, tools, and reasoning and chat with them using the command line and beautiful agent UIs. What is an Agent? Large language models (LLMs) can automate complex and sequential workflows and tasks. For example, you can use LLMs to build assistants that can
Read more ->
17 min read

Understanding RAG vs Function Calling for LLMs

Unless you’ve been living under a rock, you probably know Large Language Models (LLMs) are all the rage right now. LLMs like OpenAI's ChatGPT and Google’s Gemini have redefined productivity and have more or less changed the world as we know it. However, their capabilities are not without limits. Static models trained on a fixed
Read more ->
7 min read

A Developer’s Roadmap to Mastering Kotlin Multiplatform

In modern mobile development, cross-platform frameworks are gaining popularity because they offer key advantages, such as reducing the resources needed to develop separate native apps and maintaining code consistency across different platforms. By allowing developers to write shareable code, these frameworks enable faster development and easier maintenance, making them attractive not only to startups and
Read more ->
10 min read

Build a URL Shortener with Go, Redis, and HTMX

When learning a new technology, there is no better approach than starting with a side project, getting your hands dirty with the code, and stumbling upon a dozen errors, which make the whole process memorable (and frankly enjoyable). In this tutorial, we will showcase how to build a simple URL Shortener application using only Go
Read more ->
17 min read

The Fundamentals of RocksDB

RocksDB is a high-performance, embeddable storage engine originally developed by Facebook and is now widely adopted across the tech industry and used at Stream as a data storage engine. This powerful database solution has gained significant traction due to its exceptional speed, reliability, and versatility and is used by large companies such as LinkedIn, Meta,
Read more ->
12 min read

Full-Stack Development with Ionic and Nitric: Adding Authentication

In the previous article, we learned the benefits of using tools like Nitric and Ionic to increase productivity. Then we built a simple full-stack application to display a personalized greeting to a user based on a URL parameter. This article will extend our application with authentication and further integrate it with the API. The final
Read more ->
8 min read

Build Your First Android and iOS Mobile App With Kotlin Multiplatform

Cross-platform development provides significant advantages, especially in mobile development, where Android and iOS operate on fundamentally different ecosystems. Developing native apps for each platform can be resource-intensive since it requires separate developers with expertise in different programming languages (Kotlin for Android and Swift/Objective-C for iOS). Managing two distinct codebases also increases development and maintenance costs
Read more ->
6 min read

Using a Speech Language Model That Can Listen While Speaking

Traditional speech language models like Siri or Alexa use turn-taking as the primary interaction style. Although these systems can detect single human voices, they cannot be interrupted in real time. Let's discover an advanced AI speech dialogue system that integrates listening and speaking capabilities to engage in conversations in real time, allowing seamless to-and-fro communication
Read more ->
8 min read

Design Server-Driven UI with Jetpack Compose and Firebase

The primary responsibility of mobile clients is to render components based on data received from the backend, which typically dictates what should be displayed. This means client-side developers must focus on two key tasks: understanding what to do with the data provided by the backend and how to do it by rendering the data into
Read more ->
15 min read

Onnx in Stream Products

Onnx (Open Neural Network Exchange) is an open-source artificial intelligence ecosystem that has become a cornerstone of Stream's product offerings. This versatile and powerful tool enables the creation, training, and deployment of machine learning models across various platforms and frameworks, providing a unified approach to AI development and implementation. At Stream, Onnx plays a pivotal
Read more ->
6 min read

The 5 Best React UI Libraries

When building web applications, especially with React, using a UI library is not necessary – you can build everything from scratch if you prefer. However, UI libraries can be a game-changer, saving you time and effort by providing pre-built, well-designed components that you can easily integrate into your project. Using a UI library can help
Read more ->
3 min read

Using GStreamer with Go for Advanced Streaming Solutions

GStreamer is a powerful and versatile framework for video streaming and media processing. It's used widely in various applications due to its extensive capabilities for handling multimedia content. When combined with Go (Golang), a language known for its efficiency and ease of use, GStreamer can be employed to create robust streaming solutions. This article will
Read more ->
7 min read

The 6 Best LLM Tools To Run Models Locally

Running large language models (LLMs) like ChatGPT and Claude usually involves sending data to servers managed by OpenAI and other AI model providers. While these services are secure, some businesses prefer to keep their data entirely offline for greater privacy. This article covers the top six tools developers can use to run and test LLMs
Read more ->
12 min read

Full-Stack Development with Ionic and Nitric

Why Nitric? Nitric is a multi-language framework designed to simplify and accelerate cloud application development. It abstracts away the complexities of cloud infrastructure, allowing developers to focus on writing code rather than managing underlying resources. Nitric provides similar benefits for backend development to those cross-platform solutions like Ionic and Flutter provide for frontend development.  
Read more ->
11 min read

Is Go The Right Choice for Building a Backend?

Since its creation by Google in 2007, Go (Golang) has emerged as a strong contender in the space of backend development, thanks to its simplicity, performance, robust concurrency support and other benefits. But with so many languages attracting developers' attention, is Go the right choice for your next project? In this article, we'll explore Go's
Read more ->
11 min read

Migrate Your iOS Project From CocoaPods To Swift Package Manager

On August 13, 2024, Orta posted some big news on the CocoaPods blog. CocoaPods is entering maintenance mode. This is big. Thirteen years ago, CocoaPods was developed and it was huge. All of a sudden iOS and mac developers aroudn the world could integrate third party dependencies with relative ease. CocoaPods singlehandedly changed the way
Read more ->
3 min read

Designing Effective UIs For Enhancing Compose Previews

One of the biggest advantages of using Jetpack Compose is the Previews feature provided by Android Studio. This functionality allows developers to build and display parts of their layout incrementally rather than building the entire project. Compose Previews significantly reduce the time required to verify component displays directly within Android Studio by enabling developers to
Read more ->
9 min read

Go 10 Week Backend Engineering Onboarding

Welcome to Stream. If you’re reading the public version of this consider checking out our careers page. We’re currently hiring for Go roles of entry to principal/director levels. Stream is an API for building chat, live video and activity feeds. We power thousands of apps and reach over a billion end users. Apps like Strava,
Read more ->
13 min read

Best Firebase Tools for Your Mobile Application

When building mobile applications, you often need to implement essential features such as authentication, push notifications, and more, which can be especially challenging for startups that lack the budget and time to develop these features from scratch. Implementing these features can be very time-consuming and resource-intensive. Firebase offers a comprehensive suite of tools that can
Read more ->
11 min read

5 Software Development Tools That Make Our Life Easier at Stream

At Stream, we are dedicated to developing high-quality software that efficiently delivers real-time experiences for Chat and Video. Developers can use our SDKs with their platform of choice to accelerate their product’s real-time experience to new heights. To achieve our goals of providing you with the best Chat and Video SDKs possible, relying on the
Read more ->
7 min read

Boost Performance by Over 100x Using the Accelerate Framework

We use Apple's Accelerate Framework in two of our SDKs, and even more implementations are underway. In this article, we'll share why and how it helped us solve some performance-related challenges, bringing immediate value to our customers and their end-users. In this article we will provide you with a couple of things: A quick introduction
Read more ->
13 min read

Building a Conferencing App with Next.js

Building a video calling app might seem like a daunting task. But what if I told you it doesn't have to be? Imagine building an enterprise-ready video and audio experience, seamlessly adding it to any app within just a few hours. In this tutorial, you'll learn how to build a scalable video conferencing app in
Read more ->
4 min read

Shared Element Transition In Jetpack Compose: Enriching Android User Experiences

The Shared Element Transition or Container Transform is an animation that forges a visual connection between two UI elements, significantly enhancing the app's aesthetic and user experience. By implementing transitions between screens to appear seamless and integrated, shared element transitions help maintain user engagement and spatial awareness within the app. Using shared element transition animations
Read more ->
5 min read

React Tutorials for Beginners

Front-end libraries have become indispensable components of the modern web development stack. Among these choices is React JS, which stands out as one of the most popular frameworks thanks to its efficiency and flexibility in developing user interfaces (UIs). If you're just getting started learning about this powerful front-end library, you've come to the right
Read more ->
9 min read

Introduction to WebRTC for Unity Developers

What is WebRTC? Web Real-Time Communication (WebRTC) is a powerful technology enabling real-time video, voice, and data exchange between peers over the network. WebRTC is an open-source technology freely available for both personal and commercial use. While most modern web browsers natively support WebRTC, its core is a C++ library that integrates with many programming
Read more ->
9 min read

Jetpack Compose Tutorials for Beginners in 2024

Embarking on Android app development presents a steep learning curve, especially in a landscape where Android dominates as the leading mobile OS with a 70.1% market share in 2023. You might find it challenging to understand how to use kits like Jetpack Compose effectively, mainly because you aren't sure which learning resources to use. We've
Read more ->
10 min read

Optimize App Performance By Mastering Stability in Jetpack Compose

Jetpack Compose, Google's cutting-edge UI toolkit, has shown immense promise since its stable 1.0 release. The adoption for production purposes has surged, with over 125,000 apps developed using Jetpack Compose now successfully launched on the Google Play Store, as reported by Google. Although Jetpack Compose has built-in optimization features, developers should understand how Compose renders
Read more ->
20 min read

Building a Flutter SDK: A Deep Dive Into pub.dev — Part Two

Introduction Building a Flutter SDK is a series about crafting your own Flutter packages and SDKs from scratch. The articles in the series put into words the lessons the Stream Flutter team has learned over the years building our own Flutter SDKs. The series uses two of our SDKs as examples which you can take
Read more ->
14 min read

Configuration as Code, Using PKL

You are building the next best thing. You are scoping out some amazing features. But now you have to add a way for someone running your software to configure things. So, you break out the JSON parser and start coding the interpretation of your new-fangled config file format. But JSON does not allow schemas, and
Read more ->
8 min read

Building a Flutter SDK: Breaking Down a Flutter Package — Part One

Background In our opinion, it is generally easier to write a package for Flutter compared to other app development frameworks. Packages do not take a tremendous amount of specific knowledge to create if you already know app development in Flutter. In other frameworks, packages can have different structures and several distribution methods, making it much
Read more ->
10 min read

Mastering the Model Layer: Iron-Clad State Management in Model-Driven Apps

Model-driven architectures like Model-View-ViewModel (MVVM), Model-View-Controller (MVC), or even simply connecting the Model to the View directly in SwiftUI (I know you're out there!) have dominated the iOS development landscape. MVC, the previously Apple-endorsed pattern, was pushed for UIKit and AppKit apps. SwiftUI, the successor, sees the Model View approach dominating Apple's code examples. These
Read more ->
10 min read

Jetpack Compose: The Android Developer Roadmap - Part 5

We've segmented our Android Developer Roadmap into a multi-part series, delving into crucial Android fundamentals and the current ecosystem. In our previous post, we delved into crucial aspects of contemporary Android development, covering design patterns, architecture, asynchronous operations, networking, and local databases on Android. In part five, we'll explore the fundamental concepts of Jetpack Compose,
Read more ->
18 min read

Improve Your Android App Performance With Baseline Profiles

Baseline Profiles empower you to achieve faster code execution, boasting potential speed improvements of around 20-30% from the first launch. This is accomplished by delivering pre-compiled source code information, effectively bypassing interpretation and just-in-time (JIT) compilation steps when users launch your application. When you integrate Baseline Profiles into your application, Android Runtime (ART) optimizes precise
Read more ->
9 min read

How To Test Remote Push Notifications With iOS Simulators

In iOS, developers can create and send user notifications locally or remotely from a server through the Apple Push Notification Service (APNs). Enabling remote push notifications in iOS apps requires setting up a server to communicate with the APNs for a production app. However, using the simulator, you can quickly emulate and debug remote push
Read more ->
9 min read

The Ultimate Guide to Open Source

Introduction In the modern software world, open-source projects have gained immense value, helping conserve significant resources in software development. Open-source solutions have played pivotal roles in the success of startups, aiding them in various aspects, from optimizing development resources for timely project launches to occasionally contributing to business strategies. As more companies integrate open-source software
Read more ->
11 min read

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 more ->
4 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 more ->
11 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 more ->
12 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 more ->
8 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 more ->
11 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 more ->
5 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 Feeds and Chat API to supply you with user
Read more ->
3 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 more ->
5 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 more ->
9 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 more ->
10 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 more ->
17 min read

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

When adding live video to your applications on Stream, we recommend checking out our newly released Video API! Using Stream Video, developers can build live video calling and conferencing, voice calling, audio rooms, and livestreaming from a single unified API, complete with our fully customizable UI Kits across all major frontend platforms. To learn more,
Read more ->
9 min read

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 complicated and nuanced - especially with video and audio. Video
Read more ->
6 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 more ->
33 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 more ->
17 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 more ->
4 min read

6 Jetpack Compose Best Practices for Optimizing 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 more ->
11 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 more ->
6 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 more ->
7 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 more ->
29 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 more ->
9 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 more ->
17 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 more ->
18 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 more ->
12 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 more ->
13 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 more ->
15 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 more ->
11 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 more ->
12 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 more ->
7 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 more ->
6 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 more ->
5 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 more ->
7 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 more ->
5 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 more ->
1 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 more ->
1 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 more ->
7 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 more ->
6 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 more ->
11 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 more ->
4 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 more ->
13 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 more ->
12 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 more ->
1 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 more ->
5 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 more ->
15 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 more ->
5 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 more ->
6 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 more ->
1 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 more ->
4 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 more ->
6 min read

Stream 💙 Open Source: February

Take a look at our updated article for August 2022 on our latest OSS contributions. Open source is at the heart of nearly all projects built today. From rockets on Mars to next-gen chat and feeds, they all rely on the software created and maintained by developers worldwide. At Stream, we not only love developers, but
Read more ->
1 min read

React Native: How To Build Bidirectional Infinite Scroll

Introduction There have been many discussions on Stack Overflow and GitHub around implementing infinite scroll using React Native, on top of FlatList or SectionList. I've found that there aren't any easy solution out there for bidirectional infinite scroll for React Native. Recently, while working on v3.0.0 of React Native Chat SDK at Stream, we had
Read more ->
5 min read

Swift WebSockets: Starscream or URLSession in 2021?

Building applications such as online games and real-time chat has never been more straightforward since the standardization of the WebSocket protocol in 2011. Before that, most app experiences were plagued with manual refreshes to access the latest data available. Remember F5? Since then, most apps use WebSockets in some form to update their user interface
Read more ->
4 min read

Singleton vs Dependency Injection in Swift

When coding iOS apps, we often create classes that manage a particular aspect of the application. For example, it's common to develop "manager" classes that encapsulate methods for interacting with a specific application aspect. These aspects commonly include the REST API, WebSockets, database, caching, notifications, chat, etc. That is what's called the Facade pattern, and
Read more ->
4 min read

Publishing Android libraries to MavenCentral in 2021

Introduction This is an updated version of an article published two years ago on blog.autsoft.hu. This new version supports non-Android libraries, uses command line GPG handling instead of a specific Windows GUI app, includes new best practices, and uses GitHub Actions for its CI integration. Update, April 2021: addressed new Sonatype infra, moved to using
Read more ->
19 min read

Announcing Flutter SDK 1.0.0 Beta

At Stream, we are always trying to find new ways to help developers build great apps in as little time as possible. That's why today, we are thrilled to announce the release of our new Flutter Chat SDK and not one but two new Stream Flutter packages 🚀. Our goal with this release is to
Read more ->
3 min read

Announcing Experimental Multi-Platform Support for the Stream Flutter SDK

Stream is always looking out for the next big thing in developer tools to build new applications. React Native was one of the first mobile development framework supported by our SDKs and is still going strong. We announced support for Dart/Flutter in February of 2020. Flutter has been one of our fastest-growing integrations since -
Read more ->
2 min read

Choose Your iOS Dependencies Wisely

Dependencies are vital for most iOS projects. They allow us to speed up development and not reinvent the wheel every time we need components such as networking, rendering, chat, calendar, and many others which can be common to different types of projects. It's also an efficient way of deferring code maintenance to a company or
Read more ->
4 min read

Deploy HTTP Services Written in Swift to AWS in Seconds

Recently, Apple announced the Swift AWS Lambda Runtime. It's now possible to write self-contained functions that run on AWS using the same Swift you use for iOS development. This lets you not only reuse the knowledge you already have of Swift, but also share code between the server and client. However, everything is still a
Read more ->
1 min read

Streamoji - Custom Emoji Library for iOS UITextView

Custom emojis are a fun way to bring more life and customizability to your apps. They're available in some of the most popular apps, such Slack, Discord, and Twitch. However, iOS SDK doesn't provide straight forward support for custom emojis out of the box. Now, you're a couple lines of code away from adding them
Read more ->
2 min read

How to use GitHub with Android Studio

Android Studio makes it easy to push changes to your favorite Open Source, professional, or personal projects on GitHub. In this tutorial, we'll learn how to use GitHub with Android Studio. We'll use an Open Source contribution for context. Android developers use Open Source projects to speed up development or enable functionality that is otherwise
Read more ->
4 min read