Build Feedlog

Use Feedlog as shipped with the top-level client, or choose how much you own: all-in-one client (built-in fetch), composable UI (you fetch with FeedlogSDK, Feedlog renders the list), or core-only (your markup, SDK for data and upvotes).

API key

Create an API key in your FeedLog dashboard to authenticate the changelog widget. Go to your installation → API Keys → Create new key. Use the key ID as the apiKey prop. For self-hosted deployments, pass the endpoint prop.

Open Dashboard →

Install packages

Install the package for your framework (or core for a custom UI):

# React
npm install @feedlog-ai/react

# Vue
npm install @feedlog-ai/vue

# Web Components (framework-agnostic)
npm install @feedlog-ai/webcomponents

# Custom SDK (build your own UI)
npm install @feedlog-ai/core

Per-package walkthroughs

Full guides live in the feedlog-toolkit repo on GitHub.

TierWeb componentsReactVueCore
ClientGuideGuideGuide
ComposableGuideGuideGuide
SDK-onlyGuide

1. Top-level client

When to use: You want one component with an API key; the widget handles fetching, errors, and upvotes.

Summary: Install @feedlog-ai/webcomponents, @feedlog-ai/react, or @feedlog-ai/vue and use FeedlogIssuesClient / <feedlog-issues-client>.

import React from 'react';
import { FeedlogIssuesClient } from '@feedlog-ai/react';

function App() {
  return (
    <div>
      <FeedlogIssuesClient
      apiKey="your-api-key"
      type="bug"
      limit={10}
      theme="light"
      maxWidth="42rem"
      onFeedlogUpvote={event => {
        console.log('Issue upvoted:', event.detail);
      }}
      onFeedlogError={event => {
        console.error('Error:', event.detail);
      }}
      />
    </div>
  );
}

2. Composable changelog

When to use: Full SSR without an empty flash, route loaders, dynamic props at request time, or custom loading and error UX while keeping Feedlog’s list and cards.

Summary: Use FeedlogSDK from @feedlog-ai/core to fetch (server or loader). Pass the issues array into FeedlogIssues / <feedlog-issues>. Handle upvotes with sdk.toggleUpvote and update state.

React note: Import issues components from @feedlog-ai/react, not @feedlog-ai/react/ssr-components or @feedlog-ai/react/next.

Composable changelog guide (React + core)

Installation

npm install @feedlog-ai/core
npm install @feedlog-ai/react  # for FeedlogIssues display component

Basic SDK usage

import { FeedlogSDK } from '@feedlog-ai/core';

const sdk = new FeedlogSDK({
  apiKey: 'your-api-key', // your FeedLog API key
});

// Fetch issues
const { issues, nextCursor } = await sdk.fetchIssues({
  type: 'enhancement', // 'bug' | 'enhancement'
  limit: 20,
  cursor: undefined, // for pagination
});

// Toggle upvote
const { upvoted, upvoteCount } = await sdk.toggleUpvote('issue-id');

SSR example (Next.js App Router)

// app/issues/page.tsx
import { FeedlogIssues } from '@feedlog-ai/react';
import { FeedlogSDK } from '@feedlog-ai/core';

export default async function IssuesPage() {
  const sdk = new FeedlogSDK({ apiKey: process.env.FEEDLOG_API_KEY! });
  const { issues } = await sdk.fetchIssues({ limit: 10 });
  return <FeedlogIssues issues={issues} theme="light" />;
}

For upvote handling, create a client component that wraps FeedlogIssues, listens for feedlogUpvote, calls sdk.toggleUpvote(issueId), and updates local state.

View @feedlog-ai/core on GitHub

3. Core-only custom UI

When to use: You want full control over HTML, CSS, or framework components and only need the Feedlog API and types.

Summary: Install @feedlog-ai/core only. You do not need @feedlog-ai/react, @feedlog-ai/vue, or @feedlog-ai/webcomponents for rendering. Use FeedlogSDK, FeedlogIssue types, and optionally sanitizeHtml for issue bodies.

Core-only (SDK only) guide