08 / 11

Friends feed and polls

What your people are playing

SocialPollsFree

Overview

Switch the Games toggle to Friends and the same screen becomes a feed. Posts carry text, an optional category (Trophies, Questions, Memes or Reviews) and at most one attachment: a photo, a game card or a poll. You can like, repost, comment and share, mention someone with @handle, and block or report any post or person. The composer has quick tags such as Started Playing, #nowplaying and #justcompleted, and a 500-character limit. A poll has two to four options and runs for an hour, six hours, a day, three days or a week; adding one sets the category to Questions. Profiles show a picture, connected platforms and library stats, and onboarding suggests players who share your games.

How it works

  1. 1

    Creating a post, voting and following are database functions called with your session, so the same rules apply whatever client asks.

  2. 2

    Before a post is sent, a small on-device filter catches the worst words. Reports and blocks back it up on the server.

  3. 3

    Votes are applied optimistically. Results bars fill after you vote or when the poll ends, and you can change your vote while it is open.

  4. 4

    One database function builds the feed from your own posts, people you follow, their reposts, friends of friends, and popular posts from the last two weeks. Each row comes back with the reason it is there, which the app uses for labels such as “reposted by”. The newest posts come first.

  5. 5

    The database drops anything you may not see, and blocked accounts disappear from each other's feed and search.

  6. 6

    Likes, comments, reposts, mentions (up to the first ten in a post) and new followers write a notification row in the same transaction, which feeds the in-app inbox.

Key decisions

Visibility is enforced, not hidden

The data model supports public posts and friends-only posts, where friends means a mutual follow. If someone outside a restricted post's audience tries to comment on, repost or share it by its id, the database refuses. Today the composer publishes posts publicly.

Feed logic in one place

Building the feed in the database means the rules exist once. A new client, or a change to the app, cannot show a different set of posts or leak one the database would refuse.

The social layer is free

Friends, posts, polls and the feed are never behind the paywall. Pro sells a bigger library and no ads, not access to your friends; a community you have to pay to join does not grow.

Friends feed and polls screen in Prysm

Quick reference

ScreenLibraryScreen (Friends), ComposePostScreen, FriendProfileScreen
StateuseFeedStore, useHomeTabStore
Servicesfeed, post, poll and follow database functions; contentFilter; moderation
Components
PostCardPollCardPostActionsContentWarningSheet
Updated