Engineering (2)

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

Text-to-Speech Chat App with AWS Polly

We’ll be leveraging AWS Polly’s natural speech capabilities to implement this feature and Stream's Messaging API for our chat infrastructure and interface. AWS Polly supports dozens of languages and a wide selection of natural-sounding male and female voices. When you send text to AWS Polly's API, it returns the audio to your application as a
Read more ->
7 min read

Build a One-to-One Chat Application Using JavaScript

💡 This blog post describes an outdated approach to using Javascript against our Chat platform. Javascript developers can now use SDKs specific to their tech stack, like our dedicated Angular Chat SDK. It allows you to build chat experiences with ease. You can still refer to the post below for its concepts and ideas, but
Read more ->
10 min read

Deploying a Node API to Docker & Kubernetes with a CRA Frontend

Creating an application is a lot of work! Deploying your application shouldn't be. Every developer has said at one time or another, "it works locally, but I can't get it to work on the server!"; it can take you hours, or even days, to figure out what went wrong and to put a fix in
Read more ->
7 min read

Styled Components vs. CSS Stylesheets

Over the last few years, CSS-in-JS solutions have become prevalent across the front-end landscape with many offerings such as styled-components, and emotion that provides a way to colocate your components and style definitions. The power of these libraries lies in the ability to use JavaScript features to enhance reusability & easily create a design system
Read more ->
10 min read

Stream Is Deprecating Virtual Go – It’s Time to Move to Go Modules

TL;DR Stream released vg almost three years ago, and since its inception, Go has improved quite a bit in regards to its dependency management. Since Go has come so far, we’re now advocating that the community use native Go modules rather than vg. The Gist Stream provides an API as a service to build highly
Read more ->
3 min read

Rolling a Custom Docs CMS with Slate and Django REST Framework

The Rundown In 2019 we realized we had a big problem here at Stream. Our documentation for Feeds and Chat was outdated, hard to navigate, and difficult to update due to legacy systems that were in place. We made it a goal to set out and build the best documentation site available to the developers
Read more ->
5 min read

Prevent Native Race Conditions with React’s Context API

Here on the Stream Services team, we have the pleasure of working with a variety of clients and get to solve exciting challenges daily. This blog post provides a peek into one such occasion by highlighting the intricacies of building a native app in Javascript, and the creative solutions that inevitably must arise to support
Read more ->
4 min read

Create a GraphQL API with Node, Mongoose, and Express

GraphQL is a technology that helps developers across the board to build more robust software more quickly. The ability to request all of the information you need in a single request is a game-changer. It has simplified my backend development of APIs for consumption by mobile and web applications that would normally rely on RESTful
Read more ->
6 min read

MongoDB vs. DocumentDB: Which Is Right for You?

Are you trying to decide if you should use MongoDB or DocumentDB? With the recent controversy surrounding licensing with MongoDB, it can be confusing to decide which option is right for your company or project. Amazon decided the core MongoDB code is challenging to scale while remaining highly available. Amazon wrote their implementation, which is
Read more ->
5 min read

Crafting a Command Line Experience that Developers Love

If you’re setting out to build a highly usable developer tool, it goes without saying that a proper CLI to interface with your API is paramount. As Zeit and Heroku have been setting the tone for these types of developer tools by doing extensive research into best practices when it comes to a command line “experience”, we started our
Read more ->
11 min read

How a Go Program Compiles down to Machine Code

Here at Stream, we use Go extensively, and it has drastically improved our productivity. We have also found that by using Go, the speed is outstanding and since we started using it, we have implemented mission-critical portions of our stack, such as our in-house storage engine powered by gRPC, Raft, and RocksDB. Today we are
Read more ->
9 min read

Go 1.11 Rocket Tutorial

This tutorial combines two of my favorite things, the Go programming language and images of SpaceX rocket launches. With Go rapidly picking up adoption in the developer community, its becoming one of the leading languages for building backend systems. Go’s performance is similar to Java and C++, yet it’s almost as easy to write as
Read more ->
17 min read

Google Feed Personalization and Recommender Systems

Lately, I’ve been using Google’s feed on Android and it contains several interesting best practices for content discovery. Google’s feed strikes an effective balance between machine learning and follow relationships. With the recent advancements in AI, it can be hard to know when to apply AI and when to use a more manual method. This
Read more ->
4 min read

JavaScript: Promises and Why Async/Await Wins the Battle

Asynchronous functions are a good and bad thing in JavaScript. The good side is that asynchronous functions are non-blocking and, therefore, are fast – especially in a Node.js context. The downside is that dealing with asynchronous functions can be cumbersome, as you sometimes have to wait for one function to complete in order to get
Read more ->
5 min read

Simple Steps to Optimize Your App Performance with MongoDB, Redis, and Node.js

First Things First Here at Stream, we power activity feeds for 300+ million end users and love playing around with ways to utilize our product in all sorts of use cases. Most recently, we built Winds, an open-source RSS and Podcast application with a strong focus on UI and UX. Shortly after we launched our
Read more ->
12 min read

Takeaways on Building a React Based App with Electron

Earlier this year, Stream launched Winds 2.0, an open-source and native application for macOS, Windows, and Linux, which provides an entirely new way to consume RSS feeds and Podcasts. It was our first time building a native application, so we chose to go with Electron, a framework for creating cross-platform applications. In addition to Electron,
Read more ->
8 min read