Honeycomb

HiveAuthorPostList

Display top-level posts authored by a specific Hive account, with optional client-side tag filter and cursor-based Prev/Next pagination.

Uses bridge.get_account_posts

Fetches top-level posts from the Hive blockchain via the Bridge API for a specific account (sort is fixed to "posts"). Use the tag prop to additionally filter by a Hive tag (client-side filter on the returned page). Requires a HiveProvider wrapper.

Usage

import { HiveAuthorPostList } from "@hiveio/honeycomb-react";

function AuthorBlog() {
  return <HiveAuthorPostList account="hiveio" />;
}

Preview

Welcome to Hive - Getting Started Guide

@hiveio

312 87$124.50

Hive Improvement Proposals: How They Work

@hiveio

198 42$58.20

Building on Hive: Developer Resources

@hiveio

156 34$41.75
Page 1

Props

PropTypeDefaultDescription
accountstringrequiredHive account name to fetch posts for
tagstring-Optional client-side tag filter applied to the returned page
limitnumber20Posts per page (see Pagination note below)
pinned_postsAccountPost[]-Full AccountPost objects rendered above the list. Unlike HivePostList, no extra fetch is performed.
variant"card" | "compact" | "grid""compact"Layout variant for post items
hide("author" | "thumbnail" | "payout" | "votes" | "comments" | "time")[][]Elements to hide from post cards
linkTargetstring"https://blog.openhive.network"Base URL for post links. Only http(s):// and root-relative paths are accepted; invalid values fall back to the default.
classNamestring-Additional CSS classes applied to the wrapper
api_endpointstringfrom HiveProviderOverride the API endpoint for this component instance

Pagination behavior

The first page returns up to limit posts. Subsequent pages return up to min(limit, 19) posts because bridge.get_account_posts consumes one slot for the cursor (start_author / start_permlink). This is an upstream Hive API constraint, not a component limitation.

Tag filter

Combine account with tag to show only posts of that author tagged with a specific Hive tag. The filter is applied client-side to the returned page.

import { HiveAuthorPostList } from "@hiveio/honeycomb-react";

// Filter posts by an author and a specific tag.
function HiveDevPosts() {
  return (
    <HiveAuthorPostList
      account="hiveio"
      tag="hivedev"
    />
  );
}

Pinned posts

Unlike HivePostList (which accepts { author, permlink } and refetches each pinned post), HiveAuthorPostList expects full AccountPost objects so pinned posts can be rendered without an extra API call (avoiding N+1 fetches).

import { HiveAuthorPostList } from "@hiveio/honeycomb-react";
import type { AccountPost } from "@hiveio/honeycomb-core";

// Unlike HivePostList, pinned posts here are full AccountPost objects
// (no extra fetch — rendered directly).
const pinned: AccountPost[] = [
  /* full AccountPost objects from a previous fetch */
];

function PinnedAuthorFeed() {
  return (
    <HiveAuthorPostList
      account="hiveio"
      pinned_posts={pinned}
    />
  );
}

useHiveAuthorPostList Hook

For full control, use the useHiveAuthorPostList hook directly. It returns posts, loading state, and cursor-based pagination controls.

Return values

PropertyTypeDescription
postsAccountPost[]Current page of posts authored by account
is_loadingbooleanWhether data is being fetched
errorError | nullFetch error, if any
pagenumberCurrent page number (1-based)
has_prev / has_nextbooleanWhether previous/next page exists
prev_page / next_page() => voidNavigate to previous/next page

Example

import { useHiveAuthorPostList } from "@hiveio/honeycomb-react";

function CustomAuthorFeed() {
  const {
    posts,
    is_loading,
    error,
    has_next,
    has_prev,
    next_page,
    prev_page,
    page,
  } = useHiveAuthorPostList({
    account: "hiveio",
    limit: 10,
  });

  if (is_loading) return <p>Loading...</p>;
  if (error) return <p>Error: {error.message}</p>;

  return (
    <div>
      <p>Page {page}</p>
      <ul>
        {posts.map((p) => (
          <li key={`${p.author}/${p.permlink}`}>{p.title}</li>
        ))}
      </ul>
      <button onClick={prev_page} disabled={!has_prev}>Prev</button>
      <button onClick={next_page} disabled={!has_next}>Next</button>
    </div>
  );
}
Post ListContent Renderer