API Reference
This is the reference for the utility functions that bsky-react-post provides for building your own post components or simply fetching a post. Navigate to the docs for the Bluesky theme if you want to render the existing Post components instead.
fetchPost
function fetchPost(
config: PostHandleProps,
fetchOptions?: RequestInit
): Promise<AppBskyFeedDefs.ThreadViewPost>;
Fetches and returns a Post, it returns information about the post:
- post -
Post: The post data. - parent -
Post(Optional): The parent post. - replies -
Post[](Optional): The replies to the post.
usePost
If your app supports React Server Components, use
fetchPostinstead.
import { usePost } from "bsky-react-post";
const usePost: (
options: PostHandleWithApiUrlProps & { fetchOptions?: RequestInit }
) => {
isLoading: boolean;
data: thread | null | undefined;
error: any;
};
SWR hook for fetching a post in the browser. It accepts the following parameters:
- handle -
string: the post handle. For example inhttps://bsky.app/profile/adima7.bsky.social/post/3laq6uzwjbc2tthe handle isadima7.bsky.social. - did -
string: the post DID. For example inat://did:plc:xdwatsttsxnl5h65mf3ddxbq/app.bsky.feed.post/3laq6uzwjbc2tthe post DID isdid:plc:xdwatsttsxnl5h65mf3ddxbq. - id -
string: the post ID. For example inhttps://bsky.app/profile/adima7.bsky.social/post/3laq6uzwjbc2tthe post ID is3laq6uzwjbc2t. - apiUrl -
string(Optional): the API URL to fetch the post from. Defaults tohttps://bsky-react-post.rhinobase.io/api/post?handle=:handle&id=:id&did=:did. - fetchOptions -
RequestInit(Optional): options to pass tofetch. Try to pass down a reference to the same object to avoid unnecessary re-renders.
You can either provide handle and id or did and id to fetch the post. If you provide apiUrl, then handle, id, and did will be ignored.
We highly recommend adding your own API endpoint in apiUrl for production:
const post = usePost({ apiUrl: id && `/api/post/${id}` });
It's likely you'll never use this hook directly, and apiUrl is passed as a prop to a component instead:
<Post apiUrl={id && `/api/post/${id}`} />