🎭 Zero refactoring. Zero mock code.

Ship Faster.
Delete Nothing.

Build your frontend with production-ready API calls from day one. When your backend is ready, just change the host. No refactoring. No "remove mock code" commits.

The Migration Problem

Traditional mock APIs force you to maintain two codebases

❌ Traditional Approach
// Development - mock data
if (DEV_MODE) {
  return mockData
}

// Production - real API
const response = await fetch('/api/users', {
  body: JSON.stringify({ user_id })
})

// Maintain two codepaths forever 😩
βœ… Stubbr.dev - Same Request, Real Response
// Identical code in dev AND production!
const response = await fetch(`${API_HOST}/users`, {
  body: JSON.stringify({
    user_id: 191, // ← Real payload
    __instructions: { // ← Ignored in prod
      body: { users: { __repeat: 10 } }
    }
  })
})

The Secret: Request Stays Clean

Real payload outside. Mock response inside __instructions.

{
  "user_id": 191,              // ← Production payload
  "filters": { "active": true }, // ← Backend sees this
  
  "__instructions": {        // ← Gets ignored in prod
    "body": {
      "users": {
        "__repeat": 10,
        "name": "?name",
        "email": "?email"
      }
    }
  }
}

Built for Modern Development

Everything you need to ship faster

🎯

Clean Request Separation

Real payload outside. Mock response in __instructions. Backend sees exactly what it'll get in productionβ€”no placeholder pollution.

πŸ”„

Instant Array Generation

Use __repeat to generate 1 or 1000 items. Perfect for testing infinite scroll, pagination, and data grids.

⚑

Test Real Scenarios

Add delays, custom status codes, and headers with __instructions. Test loading states and error handling properly.

🎲

40+ Fake Data Types

Names, emails, addresses, prices, dates, UUIDs, and more. Realistic data makes better UI decisions.

🀝

Backend Parallel Development

Backend team sees exactly what shape you're sending. No "wait, what format?" conversations.

πŸš€

One-Line Migration

Change API_HOST and you're done. Backend ignores your placeholders. Zero refactoring needed.

Get Started in 60 Seconds

No installation. No configuration. Just make requests.

$ curl -X POST https://stubbr.dev/__token/request \
-H "Content-Type: application/json" \
-d '{"email": "dev@example.com"}'
{"token": "a3bb189e-8bf9-3888-9912-ace4e6543002"}
$ curl https://stubbr.dev/api/users \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"user_id": 191,
"__instructions": {
"body": {"users": {"__repeat": 3, "name": "?name"}}
}
}'
{"users": [
{"name": "John Doe"},
{"name": "Jane Smith"},
{"name": "Bob Wilson"}
]}
βœ“ Change host to prod β†’ backend ignores __instructions
βœ“ Your request payload (user_id) stays identical!

Stop Writing Mock Code.
Start Shipping.

Join developers who ship features, not refactoring PRs.