content surface · pds
<atproto-feed>
Author's posts and reposts, chronological, paginated. PDS-direct — no AppView feed semantics.
Live
<atproto-feed src="pfrazee.com" limit="10"></atproto-feed>
<atproto-feed src="..." include-replies></atproto-feed>
<atproto-feed src="..." no-reposts></atproto-feed> Attributes
| Name | Type | Default | Description |
|---|---|---|---|
src * | string | — | Author handle or DID. |
collection | string | app.bsky.feed.post | Which collection to list. Override for custom lexicons. |
limit | number | 10 | Items per page (post + repost streams merged chronologically). |
include-replies | boolean | — | Include the user's own replies (skipped by default). |
no-reposts | boolean | — | Skip the parallel app.bsky.feed.repost stream. |
Parts
External CSS can target these via atproto-feed::part(<name>) { ... }.
| Part | What it is |
|---|---|
feed | Container with role=feed. |
feed-item | Each item wrapper (may include a repost-label + nested atproto-post). |
repost-label | Attribution row above reposted items. |
post | Each nested atproto-post. |
loadmore / empty | Pagination button and empty-state. |
What it does
Shows a chronological list of an author's records. By default: top-level
posts plus the user's own reposts, merged by createdAt. Replies
are filtered out (opt in with include-replies). Reposts render
as their target post with a "Reposted by @handle" label above.
Important caveats
This is not a Bluesky-AppView-equivalent feed. There's no algorithmic ordering, no moderation labels, no thread collapse, no "Because you follow X" signals. It's a chronological list of the user's own records from their own PDS. For a Bluesky-like feed, use the official embed widget.
The feed pages each author independently. "Following feed" (posts from accounts you follow) isn't a thing here — that would require an aggregator, which is what the AppView is. We intentionally don't have one.
Pagination shape
Under the hood the component runs two listRecords streams
in parallel — app.bsky.feed.post (over-fetched 3x to offset
reply filtering) and app.bsky.feed.repost (when not disabled) —
and merges results by createdAt desc before capping at the
limit. Two independent cursors track progress per stream.
Custom lexicons
If you ship a custom lexicon (com.example.article, whatever)
and want an author-scoped chronological list of it, just pass
collection. Reposts auto-disable for non-post collections.
For full lexicon-agnostic browsing, see
<atproto-record-list>.
When to use this vs alternatives
<atproto-feed>— one author's chronological posts + reposts.<atproto-thread>— a single conversation's full arc.<atproto-record-list>— any collection, including non-posts.