{"id":34931616,"url":"https://github.com/getstream/stream-feeds-js","last_synced_at":"2026-04-16T15:01:16.803Z","repository":{"id":306444191,"uuid":"871365697","full_name":"GetStream/stream-feeds-js","owner":"GetStream","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-02T08:45:22.000Z","size":64776,"stargazers_count":22,"open_issues_count":4,"forks_count":0,"subscribers_count":16,"default_branch":"main","last_synced_at":"2026-03-02T12:41:07.031Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GetStream.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-10-11T20:10:14.000Z","updated_at":"2026-03-02T08:45:26.000Z","dependencies_parsed_at":"2025-08-26T19:24:53.440Z","dependency_job_id":"ecd56be7-5278-4857-ab56-a25b1af46f92","html_url":"https://github.com/GetStream/stream-feeds-js","commit_stats":null,"previous_names":["getstream/stream-feeds-js"],"tags_count":230,"template":false,"template_full_name":null,"purl":"pkg:github/GetStream/stream-feeds-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Fstream-feeds-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Fstream-feeds-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Fstream-feeds-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Fstream-feeds-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GetStream","download_url":"https://codeload.github.com/GetStream/stream-feeds-js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetStream%2Fstream-feeds-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30175919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T11:48:51.886Z","status":"ssl_error","status_checked_at":"2026-03-06T11:48:51.460Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-26T16:25:28.485Z","updated_at":"2026-03-06T12:04:23.443Z","avatar_url":"https://github.com/GetStream.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stream Feeds for JavaScript, React and React Native\n\nBring users together through personalized feeds, threaded discussions, and real-time updates that make every interaction feel meaningful.\n\n## **Quick Links**\n\n- [Register](https://getstream.io/chat/trial/) to get an API key for Stream Feeds\n- [React SDK](./packages/react-sdk#official-react-sdk-for-steram-feeds)\n- [React Native SDK](./packages/react-native-sdk#official-react-native-sdk-for-stream-feeds)\n- [JavaScript SDK](./packages/feeds-client#official-plain-js-sdk-and-low-level-client-for-stream-feeds)\n- [React sample apps](#react-demo-app)\n- [React native sample app](./sample-apps/react-native/ExpoTikTokApp/#expo-tiktok-sample-app)\n- [Docs](https://getstream.io/activity-feeds/docs/)\n\n## What is Stream?\n\nStream allows developers to rapidly deploy scalable feeds, chat messaging and video with an industry leading 99.999% uptime SLA guarantee.\n\nStream's Activity Feed V3 SDK enables teams of all sizes to build scalable activity feeds. The best place to get started is to follow one of the tutorials:\n\n- [React tutorial](https://getstream.io/activity-feeds/sdk/react/)\n- [React Native tutorial](https://getstream.io/activity-feeds/sdk/react-native/)\n\n## 👩‍💻 Free for Makers 👨‍💻\n\nStream is free for most side and hobby projects. To qualify, your project/company needs to have \u003c 5 team members and \u003c $10k in monthly revenue. Makers get $100 in monthly credit for feeds for free.\n\n## 💡 Supported Features 💡\n\nHere are some of the features we support:\n\n- **For-You feed**: Most modern apps combine a “For You” feed with a regular “Following” feed. With activity selectors you can:\n  - surface popular activities\n  - show activities near the user\n  - match activities to a user’s interests\n  - mix-and-match these selectors to build an engaging personalized feed.\n- **Comments**: Voting, threading, images, URL previews, @mentions \u0026 notifications. Basically all the features of Reddit style commenting systems.\n- **Advanced feed features**: Activity expiration • visibility controls • feed visibility levels • feed members • bookmarking • follow-approval flow • stories support.\n- **Activity filtering**: Filter activity feeds with almost no hit to performance\n- **Search \u0026 queries**: Activity search, **query activities**, and **query feeds** endpoints.\n- **Modern essentials**: Permissions • OpenAPI spec • GDPR endpoints • realtime WebSocket events • push notifications • “own capabilities” API.\n\n## React demo app\n\nDeployed version: https://feeds-react-tutorial-getstreamio.vercel.app/\n\nPrerequisites:\n\n- Install dependencies: `yarn`\n- Build React SDK: `yarn build:client` and `yarn build:react-sdk`\n- Create a `.env` file in `sample-apps/react-demo`:\n\n```\nNEXT_PUBLIC_API_KEY=your_api_key_here\nAPI_SECRET=your_API_secret\n```\n\nAfter the above steps run the following command in `sample-apps/react-demo`:\n\n```\nyarn dev\n```\n\nYou can provide `user_id=\u003cuser id\u003e` query param when opening the app, or provide nothing, and let the application generate a user for you.\n\n## Test Data Generator\n\nThe `test-data-generator` directory contains scripts to populate your Stream Feeds app with sample data for testing and development purposes.\n\n### Setup\n\n1. Create a `.env` file in `test-data-generator/` with your credentials:\n\n```\nSTREAM_API_KEY=\u003cStream API key\u003e\nAPI_SECRET=\u003cStream API secret\u003e\nAPI_URL=\u003cOptional, Stream API URL\u003e\n```\n\n2. Install dependencies: `yarn` (from the repository root)\n\n### Typical use-case\n\nRun these scripts in the following order from `test-data-generator` folder:\n\n```bash\nyarn create-users\nyarn create-follows\n# Optional, for hashtag feeds (run before create-posts when using --features hashtags).\nyarn create-hashtag-group\n# Adjust what features you need\nyarn create-posts --features link,hashtags,attachment,mention,poll,reaction,comment,bookmark,repost\n# Optional, only useful if you have story feeds\nyarn create-stories\n# Optional, if you want premium posts too\nyarn create-premium-membership\nyarn create-premium-members\nyarn create-premium-posts\n# Optional, adds 4 location-tagged posts (2 Amsterdam, 2 Boulder) with fun facts\nyarn create-location-posts\n```\n\n### Available Scripts\n\nRun these commands from the `test-data-generator/` directory:\n\n| Script                    | Command                          | Description                                                                                                                                                                                   |\n| ------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Create Users              | `yarn create-users`              | Creates users and their feeds                                                                                                                                                                 |\n| Create Follows            | `yarn create-follows`            | Sets up follow relationships between users                                                                                                                                                    |\n| Create Posts              | `yarn create-posts`              | Generates sample activities/posts                                                                                                                                                             |\n| Create Stories            | `yarn create-stories`            | Creates sample stories                                                                                                                                                                        |\n| Create hashtag group      | `yarn create-hashtag-group`      | Creates `hashtag` feed group (current_feed selector, public default visibility) and the `hashtag:getstream_io` feed with public visibility (for use with the `hashtags` create-posts feature) |\n| Download Images           | `yarn download-images`           | Downloads sample images for posts                                                                                                                                                             |\n| Create premium membership | `yarn create-premium-membership` | Creates `premium` membership level                                                                                                                                                            |\n| Create premium members    | `yarn create-premium-members`    | Adds premium members to randomly selected user feeds                                                                                                                                          |\n| Create premium posts      | `yarn create-premium-posts`      | Updates a few posts of user feeds with premium members to `premium` members only                                                                                                              |\n| Create location posts     | `yarn create-location-posts`     | Creates 4 activities (2 for Amsterdam, 2 for Boulder, CO) with location (lat, lng) and fun-fact text, added to randomly selected users' user feeds                                            |\n\n### Create Posts Feature Flags\n\nThe `create-posts` script supports a `--features` flag to control which features are included in the generated posts:\n\n```bash\nyarn create-posts --features \u003cfeature1,feature2,...\u003e\n```\n\n**Available features:**\n\n| Feature      | Description                                                                                                                |\n| ------------ | -------------------------------------------------------------------------------------------------------------------------- |\n| `link`       | Adds random URLs to posts                                                                                                  |\n| `hashtags`   | When used with `link`: adds `#getstream_io` to text and `hashtag:getstream_io` to feeds (run `create-hashtag-group` first) |\n| `attachment` | Uploads and attaches 1-3 images to posts                                                                                   |\n| `mention`    | Adds @mentions to other users                                                                                              |\n| `poll`       | Creates and attaches polls to posts                                                                                        |\n| `reaction`   | Adds 1-5 reactions from random users                                                                                       |\n| `comment`    | Adds 1-5 comments from random users                                                                                        |\n| `bookmark`   | Bookmarks posts by random users                                                                                            |\n| `repost`     | Creates reposts of existing activities                                                                                     |\n\n**Examples:**\n\n```bash\n# Create basic posts without any features\nyarn create-posts\n\n# Create posts with polls and reactions\nyarn create-posts --features poll,reaction\n\n# Create posts with links and hashtags (run create-hashtag-group first)\nyarn create-posts --features link,hashtags\n\n# Create posts with all content features\nyarn create-posts --features link,hashtags,attachment,mention,poll,reaction,comment,bookmark,repost\n```\n\n\u003e Note: Each feature has a probability of being included (not every post will have every enabled feature). Link and attachment are mutually exclusive per post. The `hashtags` feature only applies when a link is added to a post.\n\n### Create location posts\n\nThe `create-location-posts` script creates 4 activities and adds each to a randomly selected user's user feed:\n\n- **2 for Amsterdam** — `location`: lat `52.3676`, lng `4.9041`; text is a fun fact about Amsterdam.\n- **2 for Boulder, Colorado** — `location`: lat `40.015`, lng `-105.2705`; text is a fun fact about Boulder.\n\nEach activity has `location` set (lat, lng) and post text set to a fun fact about the city. If present, one image per post is read from `test-data-generator/images/location/amsterdam/` or `test-data-generator/images/location/boulder/` (`.jpg`, `.jpeg`, or `.png`), uploaded to Stream, and attached to the activity. Run after `create-users` (and optionally after `create-posts`).\n\n### Download Images flags\n\nThe `download-images` script downloads 100 sample images (from picsum.photos) into `test-data-generator/images/`. By default it skips images that already exist.\n\n| Flag                           | Description                                                                                                                     |\n| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- |\n| `--replace=N` or `--replace N` | Force re-download of specific image(s). `N` can be a single index (1–100) or comma-separated indices (e.g. `--replace=1,5,10`). |\n\n**Examples:**\n\n```bash\n# Re-download only image 42\nyarn download-images --replace=42\n\n# Re-download images 1, 5 and 10\nyarn download-images --replace 1,5,10\n```\n\n## Local Setup\n\n### Prerequisites\n\nYou'll need to have [node 22](https://nodejs.org/en/download) installed on your computer\n\n### Install dependencies\n\nIn the repository root run the following command to install all dependencies of all packages in this monorepo:\n\n```\nyarn\n```\n\n### Build and run JS client\n\n```\ncd packages/feeds-client\nyarn build\n# or\nyarn start\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetstream%2Fstream-feeds-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetstream%2Fstream-feeds-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetstream%2Fstream-feeds-js/lists"}