# Feeds 101

The following page explains the key concepts of the Activity Feeds API.

## Feeds

A Feed is like a Stack (FILO) of activities. Activities can be pushed directly to a Feed. They can also be propagated from feeds that they follow (see: “Follow Relationships” and “Fan-out”). A single application may have multiple feeds. For example, you might have a user's feed (what they posted), their timeline feed (what the people they follow posted), and a notification feed (to alert them of engagement with activities they posted).

Most activity feeds people think of are “flat” feeds. These are your classic “timeline” feeds. There are also aggregated feeds and notification feeds, but we will get to those a bit later.

## Activities

Activities are the content that appear within a feed. Posts on Instagram, tweets on Twitter/X, workouts on Strava, or posts on Facebook are all examples of activities. In short, activities are the core building block of your feed.

Activities require three pieces of information: a user, a type, and some content (text, attachments and/or custom data). The user is the entity performing the action. The type is typically `post`, but it can be any string. The content is the information a user wants to share:

- User: “Joe”

- Type: “post”

- Content: “Check out Activity Feeds, it's great!”

## Reactions

Reactions are how users engage with activities they did not create themselves. You can think of these as ways to interact with the activity without altering the content of the activity itself. Some common social media reactions include likes and hearts.

## Comments

Users can add comments to activities. Comment lists can be flat, or nested (threaded) by providing a parent comment when adding a new comment.

## Follow Relationships

Feeds can follow each other. When a feed follows another, activities from the followed feed will appear in the follower’s feed. This concept is called “fan out”. A “follow” relationship is one-way. If Feed A follows Feed B, then Feed B’s activities will appear in Feed A, but Feed A’s activities will not appear in Feed B.

## Fan-out

Fan-out refers to propagating activities from the feed they were originally posted in to the feeds that follow it. It is a critical piece of functionality for activity feeds. This feature is how you can see all of the posts for people you follow on your social media in your timeline feed.

For example, say `timeline:susan` follows `user:adam` and `user:susan`, then `timeline:susan` will contain activities from both feeds:

![Fan Out diagram](../_assets/fan-out.png)

If an activity from `user:adam` is deleted, it'll also be deleted from `timeline:susan`.

Following feeds that follow other feeds is usually bad practice (in this example it would be that `user:susan` follows `user:adam`). However in case you have to set up a similar strucutre, it's worth mentioning that fan-out is always one-level deep. So if feed `A` follows feed `B`, and feed `B` follows feed `C`; feed `A` will only see activities from feed `B`, not from feed `C`.

## Users vs feeds

If you're thinking about apps like Instagram or Twitter/X it's easy to think that "users follow other users", but it's important to remember that under the hood, it's always feeds following other feeds, not users. If we follow the example of Instagram, a possible way to set up feeds and users:

- When creating a new user in the application, we can also set up feeds for the user:
  - `user:<user id>` for users to post activities to
  - `timeline:<user id>` for the user to follow other feeds
  - `notification:<user id>` for notification activities (someone liked your photo, etc.)
- To ensure that the user's own posts are displayed in the user's timeline, `timeline:<user id>` can follow `user:<user id>`

## Feed groups

<partial id="activity-feeds/v3-latest/_default/_partials/feed-group-intro"></partial>

Example feed groups: `notification`, `user` or `timeline`.

It's also possible to create your own feed groups.

---

This page was last updated at 2025-11-04T14:26:37.815Z.

For the most recent version of this documentation, visit [https://getstream.io/activity-feeds/docs/ios/feeds-101/](https://getstream.io/activity-feeds/docs/ios/feeds-101/).