Uptoolkit
GitHub

Social Sample Data

Sample ActivityPub actors, notes, and inbox activities for previewing social UI.

Viewer
@ada@social.example
Actors
6
Timeline objects
4
Inbox activities
6
{
  "id": "https://fediverse.example/users/mira/posts/coastline-drift",
  "type": "Note",
  "attributedTo": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "id": "https://fediverse.example/users/mira",
    "type": "Person",
    "preferredUsername": "mira",
    "name": "Mira Halvorsen",
    "summary": "<p>Cartographer. I make maps of things that are hard to see.</p>",
    "url": "https://fediverse.example/users/mira",
    "icon": {
      "type": "Image",
      "mediaType": "image/svg+xml",
      "url": "https://api.dicebear.com/9.x/thumbs/svg?seed=mira",
      "name": "Mira Halvorsen avatar"
    },
    "image": {
      "type": "Image",
      "mediaType": "image/svg+xml",
      "url": "https://api.dicebear.com/9.x/shapes/svg?seed=mira-cover",
      "name": "Mira Halvorsen cover image"
    },
    "inbox": "https://fediverse.example/users/mira/inbox",
    "outbox": "https://fediverse.example/users/mira/outbox",
    "followers": "https://fediverse.example/users/mira/followers",
    "following": "https://fediverse.example/users/mira/following",
    "published": "2019-07-21T12:00:00.000Z",
    "attachment": [
      {
        "type": "PropertyValue",
        "name": "Atlas",
        "value": "https://maps.example/mira",
        "verifiedAt": "2025-06-05T15:00:00.000Z"
      },
      {
        "type": "PropertyValue",
        "name": "Location",
        "value": "Bergen, Norway"
      }
    ]
  },
  "content": "<p>Spent the week redrawing a 1:25000 coastline by hand. The shoreline has moved 40 metres inland since the 1984 survey.</p><p>Every map is a snapshot of a place that has already changed. #cartography #openstreetmap</p>",
  "published": "2025-06-12T14:26:00.000Z",
  "to": [
    "https://www.w3.org/ns/activitystreams#Public"
  ],
  "cc": [
    "https://fediverse.example/users/mira/followers"
  ],
  "url": "https://fediverse.example/users/mira/posts/coastline-drift",
  "inLanguage": "en",
  "attachment": [
    {
      "type": "Image",
      "url": "https://api.dicebear.com/9.x/shapes/svg?seed=coastline",
      "name": "Hand-drawn coastline contour map with annotated survey markers",
      "width": 1200,
      "height": 800
    },
    {
      "type": "Image",
      "url": "https://api.dicebear.com/9.x/shapes/svg?seed=survey",
      "name": "Comparison overlay of the 1984 and current shoreline",
      "width": 1200,
      "height": 800
    }
  ],
  "tag": [
    {
      "type": "Hashtag",
      "name": "#cartography",
      "href": "https://fediverse.example/tags/cartography"
    },
    {
      "type": "Hashtag",
      "name": "#openstreetmap",
      "href": "https://fediverse.example/tags/openstreetmap"
    }
  ],
  "location": {
    "type": "Place",
    "name": "Bergen, Norway",
    "latitude": 60.39,
    "longitude": 5.32
  },
  "likes": {
    "type": "Collection",
    "id": "https://fediverse.example/users/mira/posts/coastline-drift/likes",
    "totalItems": 214
  },
  "shares": {
    "type": "Collection",
    "id": "https://fediverse.example/users/mira/posts/coastline-drift/shares",
    "totalItems": 38
  },
  "replies": {
    "type": "Collection",
    "id": "https://fediverse.example/users/mira/posts/coastline-drift/replies",
    "totalItems": 2,
    "items": [
      {
        "id": "https://social.example/users/ada/posts/coastline-drift-reply-1",
        "type": "Note",
        "attributedTo": {
          "@context": "https://www.w3.org/ns/activitystreams",
          "id": "https://social.example/users/ada",
          "type": "Person",
          "preferredUsername": "ada",
          "name": "Ada Okoye",
          "summary": "<p>Front-end engineer. Building small tools for large groups of people.</p>",
          "url": "https://social.example/users/ada",
          "icon": {
            "type": "Image",
            "mediaType": "image/svg+xml",
            "url": "https://api.dicebear.com/9.x/thumbs/svg?seed=ada",
            "name": "Ada Okoye avatar"
          },
          "image": {
            "type": "Image",
            "mediaType": "image/svg+xml",
            "url": "https://api.dicebear.com/9.x/shapes/svg?seed=ada-cover",
            "name": "Ada Okoye cover image"
          },
          "inbox": "https://social.example/users/ada/inbox",
          "outbox": "https://social.example/users/ada/outbox",
          "followers": "https://social.example/users/ada/followers",
          "following": "https://social.example/users/ada/following",
          "published": "2020-01-14T10:30:00.000Z",
          "attachment": [
            {
              "type": "PropertyValue",
              "name": "Website",
              "value": "https://ada.example",
              "verifiedAt": "2025-06-10T15:00:00.000Z"
            },
            {
              "type": "PropertyValue",
              "name": "Location",
              "value": "Lagos, Nigeria"
            },
            {
              "type": "PropertyValue",
              "name": "Pronouns",
              "value": "she/her"
            }
          ]
        },
        "content": "<p>Is the 1984 survey digitised anywhere? I would love to run the two through a diff.</p>",
        "published": "2025-06-12T14:34:00.000Z",
        "to": [
          "https://www.w3.org/ns/activitystreams#Public"
        ],
        "cc": [
          "https://social.example/users/ada/followers"
        ],
        "url": "https://social.example/users/ada/posts/coastline-drift-reply-1",
        "inLanguage": "en",
        "inReplyTo": "https://fediverse.example/users/mira/posts/coastline-drift",
        "likes": {
          "type": "Collection",
          "id": "https://social.example/users/ada/posts/coastline-drift-reply-1/likes",
          "totalItems": 12
        },
        "shares": {
          "type": "Collection",
          "id": "https://social.example/users/ada/posts/coastline-drift-reply-1/shares",
          "totalItems": 0
        },
        "replies": {
          "type": "Collection",
          "id": "https://social.example/users/ada/posts/coastline-drift-reply-1/replies",
          "totalItems": 0,
          "items": []
        }
      },
      {
        "id": "https://social.example/users/tobi/posts/coastline-drift-reply-2",
        "type": "Note",
        "attributedTo": {
          "@context": "https://www.w3.org/ns/activitystreams",
          "id": "https://social.example/users/tobi",
          "type": "Person",
          "preferredUsername": "tobi",
          "name": "Tobi Ferrand",
          "summary": "<p>Sound designer. Field recordings from very cold places.</p>",
          "url": "https://social.example/users/tobi",
          "icon": {
            "type": "Image",
            "mediaType": "image/svg+xml",
            "url": "https://api.dicebear.com/9.x/thumbs/svg?seed=tobi",
            "name": "Tobi Ferrand avatar"
          },
          "image": {
            "type": "Image",
            "mediaType": "image/svg+xml",
            "url": "https://api.dicebear.com/9.x/shapes/svg?seed=tobi-cover",
            "name": "Tobi Ferrand cover image"
          },
          "inbox": "https://social.example/users/tobi/inbox",
          "outbox": "https://social.example/users/tobi/outbox",
          "followers": "https://social.example/users/tobi/followers",
          "following": "https://social.example/users/tobi/following",
          "published": "2021-03-08T09:00:00.000Z"
        },
        "content": "<p>The hand-drawn linework is beautiful. Are you inking these on vellum?</p>",
        "published": "2025-06-12T14:39:00.000Z",
        "to": [
          "https://www.w3.org/ns/activitystreams#Public"
        ],
        "cc": [
          "https://social.example/users/tobi/followers"
        ],
        "url": "https://social.example/users/tobi/posts/coastline-drift-reply-2",
        "inLanguage": "en",
        "inReplyTo": "https://fediverse.example/users/mira/posts/coastline-drift",
        "likes": {
          "type": "Collection",
          "id": "https://social.example/users/tobi/posts/coastline-drift-reply-2/likes",
          "totalItems": 5
        },
        "shares": {
          "type": "Collection",
          "id": "https://social.example/users/tobi/posts/coastline-drift-reply-2/shares",
          "totalItems": 0
        },
        "replies": {
          "type": "Collection",
          "id": "https://social.example/users/tobi/posts/coastline-drift-reply-2/replies",
          "totalItems": 0,
          "items": []
        }
      }
    ]
  }
}

Installation

npx shadcn@latest add https://ui.uptoolkit.com/r/social-sample-data.json

Usage

Fixtures shaped exactly like real ActivityPub responses, so the blocks and pages in this registry render standalone before you have a server to talk to. The social blocks default their data props to these values; swap them for your fetch and delete the file.

import {
  SAMPLE_NOW,
  sampleFeed, // OrderedCollection of Create and Announce activities
  sampleInbox, // OrderedCollection of Like, EmojiReact, Announce, Follow, Create
  sampleFollowers, // Actor[]
  sampleSuggestions, // Actor[]
  sampleTimeline, // Object[]
  samplePost, // Note with attachments, tags, location, and replies
  sampleReplies, // Object[], including one nested reply
  sampleViewer, // the signed-in Actor
  sampleAuthor, // a remote Actor on another domain
  sampleCounts,
} from "@/lib/social-sample-data";

Timestamps derive from the fixed SAMPLE_NOW clock rather than Date.now(), so relative times are stable between server and client renders. Pass it as the now prop of any component that formats a timestamp.

The set deliberately covers the awkward cases: a remote actor on a second domain, an Organization actor, an actor with manuallyApprovesFollowers, a sensitive post behind a content warning, an Article, an Announce boost, a post with an audio attachment and a Mention, and verified rel="me" profile fields.