The silent bugs — documentation that lies
Docs that describe old behavior — the most dangerous kind of documentation
Public functions and endpoints without proper documentation
Comments that say one thing while code does another — worse than no comments
API docs that don't match actual endpoints — the #1 cause of integration failures
Storybook and component documentation that doesn't reflect props changes
TypeDoc/JSDoc types that lie about actual interfaces and signatures
Every place where docs and code can drift apart
Function and method documentation
Project and package overviews
Code explanations and TODOs
Endpoint descriptions and examples
Interface and type comments
Version history accuracy
Just like technical debt, documentation debt accumulates silently. We give your codebase a Documentation Health Score — a single number that shows how much your docs have drifted from reality.
README.md
Last updated 45 days ago, code changed 12 times since
src/api/
3 endpoints undocumented
CHANGELOG.md
Missing entries for v2.3.0, v2.3.1
src/utils/
8 exported functions without JSDoc
Not just generic doc checks — we understand your framework's documentation patterns
For function processPayment(amount, currency, options):
/**
* Processes a payment transaction
* @param amount - Payment amount in cents (integer)
* @param currency - ISO 4217 currency code
* @param options - Processing options
* @param options.idempotencyKey - Unique key
* @param options.metadata - Custom key-value pairs
* @returns Promise<PaymentResult>
* @throws PaymentError if declined
*/When we find missing or outdated documentation, we don't just report it — we generate the fix. AI analyzes your function signatures, return types, and usage patterns to suggest accurate documentation.
Creates documentation from function signatures and types
Patches outdated documentation to match current code
Real examples of docs that needed updating
/**
* Fetches user by ID
* @param id - User ID
* @param includeDeleted - Include soft-deleted users
*/
async function getUser(id: string, options?: GetUserOptions) {
// includeDeleted moved to options object 3 months ago
// but JSDoc still shows old signature
}JSDoc shows old signature with positional param
/**
* Fetches user by ID
* @param id - User ID
* @param options - Query options
* @param options.includeDeleted - Include soft-deleted users
* @param options.fields - Fields to select
*/
async function getUser(id: string, options?: GetUserOptions) {
// Documentation matches actual signature
}Update to match current options object pattern
// Retry 3 times with exponential backoff
async function fetchWithRetry(url: string) {
const MAX_RETRIES = 5 // Changed from 3
const response = await fetch(url)
// Actually no retry logic implemented anymore
return response
}Comment describes retry logic that doesn't exist
// Simple fetch wrapper, no retry logic
// For retries, use fetchWithRetry from @/lib/http
async function simpleFetch(url: string) {
const response = await fetch(url)
return response
}Comment reflects actual behavior
## Installation
```bash
npm install
npm run setup # This script was removed
```
## Environment Variables
- `DATABASE_URL` - PostgreSQL connection
- `REDIS_URL` - Redis connection # We switched to in-memory cache
README references removed script and old Redis config
## Installation
```bash
npm install
```
## Environment Variables
- `DATABASE_URL` - PostgreSQL connection string
- `CACHE_TTL` - Cache duration in seconds (default: 3600)
Documentation reflects current setup process
Documentation Reviewer doesn't just check if docs exist — it verifies they match what the code actually does. When you change a function signature, it flags the JSDoc.
Compares what docs say vs what code does
Notices when code changes invalidate nearby docs
Provides specific text to fix documentation
Compare Code & Docs
Checks if documentation matches actual implementation
Detect Changes
Identifies when code changes invalidate existing docs
Flag Mismatches
Reports documentation that could mislead developers
Suggest Updates
Provides specific text to bring docs up to date
Bad docs cost more than no docs
Accurate docs mean developers don't waste hours chasing false leads
New developers can trust what they read instead of guessing
Users can rely on your API docs without trial and error
Every code change is a chance for docs to drift.
Documentation Reviewer catches it every time.
These issues slip through every day — until now
of README files are outdated within 6 months
of JSDoc comments don't match function signatures
average time wasted debugging due to wrong docs
of API docs miss at least one required field
Let Documentation Reviewer catch drift before it misleads. Free for 14 days, no credit card required.