Alpha Release: Activity Feeds v3

New
3 min read
Nash R.
Nash R.
Published July 25, 2025

Apps use Stream's Activity Feeds API with hundreds to millions of users. Today, we're excited to share the third iteration of our Feeds API, Feeds v3, which builds on our scalability and expands our Activity Feeds API to include popular community features like for-you feeds, client-side SDKs, comments, activity expiration, and more—all while being 30% faster in most use cases.

Let's dive into the improvements we've made.

What's New in v3 

  • For-you Feeds: Pull in activities from multiple sources and rank to prioritize relevance to the user.
  • Client-Side SDKs: iOS & JS live today, all other SDKs will be ready by the end of September 2025
  • Performance: Major performance improvements to flat feeds and especially aggregation & ranking, with full benchmarking coming soon
  • Comments API: Reddit-style commenting features
  • And more features: Activity search, activity filtering, activity expiration, activity visibility levels, polls, feed visibility levels, feed members, bookmarking, stories, follow approval, query activities, query feeds

Client‑Side vs. Server‑Side

One of the biggest changes in this release is the introduction of client-side SDKs, starting with iOS and JS (with Android, Flutter, React Native, and others on the way). Developers building with Feeds can now perform most API calls directly from the client, shrinking the backend's surface area and speeding up iteration.

Client‑side calls run through the permission system, which is great for anything the current user should naturally be allowed to do.

swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Run the activity processors to analyse topics for text & images let imageProcessor = ["type": "image_topic"] let textProcessor = ["type": "text_topic"] let userFeedConfig: [String: Any] = [ "id": "user", "activity_processors": [imageProcessor, textProcessor] ] // Activity selectors change which activities are included in the feed // The default "following" selectors gets activities from the feeds you follow // The "popular" activity selectors includes the popular activities // And "interest" activities similar to activities you've engaged with in the past // You can use multiple selectors in 1 feed let activitySelectors = [ ["type": "popular"], ["type": "following"], ["type": "interest"] ] // Rank for a user based on interest score // This calculates a score 0-1.0 of how well the activity matches the user's prior interest let rankingConfig = [ "type": "interest", "score": "decay_linear(time) * interest * decay_linear(popularity)" ] let timelineConfig: [String: Any] = [ "id": "timeline", "ranking": rankingConfig, "activity_selectors": activitySelectors ] // Read the feed // Activities will include following, popular and similar (via interest) activities // Sorted by time decay, interest and popularity let forYouFeed = client.feed(group: "timeline", id: "thierry") let response = try await forYouFeed.getOrCreate()

Server‑side calls still shine for:

  1. Updating feed groups/views used in ranking & aggregation (admin/ops tasks)
  2. Syncing or bulk‑importing users
  3. Returning auth tokens for new or returning users
  4. Writing to feeds that aren’t owned by the current user (where permission isn’t granted to the client)
  5. Default mental model: Ship product quickly with client SDKs; fall back to secure server endpoints for privileged mutations and bulk operations.

Performance

We spent a lot of time on the engine. Flat feed reads are now 20–30% faster in real‑world tests. Aggregation and ranking pipelines also got major speedups (full public benchmarks coming soon). Lower latency = more retries for personalization = smoother UX.

We also improved indexing, batching, and hot‑path cache locality under the hood. You don’t have to care—unless you like peeling back the onion—just know your feeds feel instantly responsive.

What’s Next

We are excited to share this first alpha release of Feeds v3 with our community and work together on further refining the API and performance. For existing customers and enterprise users, we are targeting the end of September to have a migration tool and coverage across all frontend SDKs, including performance benchmarks and dashboard integrations.

We’d love your feedback as we polish the experience. Send your thoughts, feature requests, and questions to product@getstream.io — we’re listening closely.

If you're an existing feeds customer, contact us to learn more. Thanks for helping us make Feeds v3 fast, flexible, and production-grade.

Integrating Video with your App?
We've built a Video and Audio solution just for you. Check out our APIs and SDKs.
Learn more ->