Docs
Quickstart

Quickstart

Ship a working changelog + new badge in under 10 minutes.

Install

pnpm add featuredrop

Define your manifest

FeatureManifest is an array of typed entries. Required fields are id, label, releasedAt, and showNewUntil.

featuredrop.manifest.ts
import type { FeatureManifest } from 'featuredrop'
 
export const manifest: FeatureManifest = [
  {
    id: 'new-dashboard',
    label: 'New dashboard',
    description: 'Faster charts and CSV export.',
    sidebarKey: '/dashboard',
    releasedAt: '2026-02-01T00:00:00Z',
    showNewUntil: '2026-03-01T00:00:00Z',
    version: { introduced: '1.4.0' }
  }
]

Mount the provider and UI

App.tsx
import { MemoryAdapter } from 'featuredrop'
import { ChangelogWidget, FeatureDropProvider, NewBadge, useNewFeature } from 'featuredrop/react'
import { manifest } from './featuredrop.manifest'
 
function DashboardNavBadge() {
  const { isNew, dismiss } = useNewFeature('/dashboard')
  return <NewBadge variant="dot" show={isNew} dismissOnClick onDismiss={dismiss} />
}
 
export function App() {
  return (
    <FeatureDropProvider
      manifest={manifest}
      storage={new MemoryAdapter()}
      appVersion="1.4.0"
    >
      <div className="flex items-center gap-2">
        <span>Dashboard</span>
        <DashboardNavBadge />
      </div>
 
      <ChangelogWidget title="Product updates" />
    </FeatureDropProvider>
  )
}
⚠️

MemoryAdapter is for local/dev only. For production persistence use LocalStorageAdapter, RemoteAdapter, or a server adapter.

Add validation to CI

npx featuredrop validate --pattern "features/**/*.md"
npx featuredrop doctor --pattern "features/**/*.md"
pnpm size-check

Next Steps