• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
stevekrouse

stevekrouse

repro-fyi

Infosite on how to make a minimal repro
Public
Like
1
repro-fyi
Home
Code
4
README.md
index.md
H
main.ts
template.tsx
Environment variables
Branches
1
Pull requests
Remixes
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
index.md
Code
/
index.md
Search
…
Viewing readonly version of main branch: v18
View latest version
index.md

repro.fyi

The Art of the Minimal Reproduction

Here's a secret: Creating a minimal repro often solves your own bug before you even ask for help. Seriously. The process of isolating a problem is debugging.


Why Bother?

πŸͺž For Yourself (The Selfish Reason)

Isolation is debugging. You can't fix what you can't find.

Think of it like a bisect: you remove code until the bug disappears. Then you add back the last thing you removed. That's your culprit. This is how experienced developers debugβ€”not by staring at thousands of lines of code, but by systematically narrowing down the problem.

The XY Problem: Sometimes while making a minimal repro, you'll realize you're solving the wrong problem entirely. You thought you had a CSS bug, but actually you're fighting the browser's default styles. Read more about the XY Problem β†’

🀝 For Others (When You Need Help)

When you ask for help with a messy, complex codebase, you're essentially saying: "Here's my whole room. Find my keys."

A minimal repro says: "Here are my keys on an empty table. Why won't they turn?"

Asking someone to isolate your bug for you is like asking a painter to clean your room before they can paint the walls. That's your job. The isolation work is the prerequisite to getting helpβ€”not part of the help itself.

People who help in forums, Discord servers, and GitHub issues are volunteering their time. Respect it.


What Makes a Good Repro?

A great repro puts the other person into the bug as fast as possible. Here's what that looks like:

πŸ“ Steps to Reproduce

Write out the exact steps. Don't assume anything is obvious.

Example of good steps
  1. Go to the login page
  2. Enter any email address
  3. Leave password blank
  4. Click "Submit"
  5. Expected: Validation error appears
  6. Actual: Page crashes with white screen

πŸ” Debug Information

Include the context that helps diagnose:

  • Error messages β€” Copy the full text, not just "it says error"
  • Console logs β€” Open DevTools (F12) β†’ Console tab
  • Network requests β€” DevTools β†’ Network tab (look for red/failed requests)
  • Crash reports β€” Stack traces, error codes, anything the system tells you
Tools that capture this automatically
  • Jam.dev β€” Captures console logs, network requests, and more in one click
  • Browser DevTools β€” Your built-in best friend
  • Screen recording with voiceover β€” Walk through what you're seeing

🎬 Show, Don't Just Tell

A video of you recreating the issue while talking through it is incredibly valuable. Describe:

  • What you're clicking
  • What you expect to happen
  • What actually happens

⚑ One-Click Repros (The Gold Standard)

The absolute best repro is one someone can run instantly:

  • JSBin / CodePen / JSFiddle β€” For frontend issues
  • Val Town β€” For backend/API issues
  • TypeScript Playground β€” For TypeScript type issues
  • Rollup REPL β€” For bundler issues
  • GitHub repo β€” For complex setups (but keep it minimal!)

If someone can click a link and see your bug, you've done the work for them.


How to Make a Minimal Repro

Option A: Start Fresh (Recommended)

  1. Create a new project/file/sandbox
  2. Add only the code needed to show the bug
  3. If you can't reproduce it, that tells you something!

Option B: Strip Down

  1. Make a copy of your project
  2. Delete half the code
  3. Does the bug still happen?
    • Yes: Delete half of what remains
    • No: The bug was in what you deletedβ€”put it back and delete the other half
  4. Repeat until you have the smallest possible code that shows the bug
What to remove first
  • Unrelated features and buttons
  • Styling and CSS (unless it's a styling bug)
  • Authentication and API calls (replace with hardcoded data)
  • Extra dependencies
  • Comments and dead code
  • Configuration files (use defaults)

πŸŽ‰ Plot Twist: You Might Fix It Yourself

Somewhere in this process, you'll often go: "Wait, why did I write it that way?"

That's the magic. The minimal repro process forces you to understand your own code. And understanding is 90% of fixing.


The Checklist

Before sharing your repro, verify each item. Click any item to link directly to it.

βœ… Do This

  • Self-contained β€” Can someone copy-paste-run it without setup?

  • Include the error β€” Full error message, not "it doesn't work"

  • Include versions β€” Node version, browser, OS, package versions

  • Steps to reproduce β€” Numbered list of exactly what to do

  • Expected vs Actual β€” What should happen? What happens instead?

  • Actually minimal β€” Could you remove anything else? Try.

❌ Don't Do This

  • No screenshots of code β€” I can't copy-paste an image. Give me text.

  • No partial code β€” "Here's the relevant part" often hides the bug

  • No entire codebases β€” Your 50-file project isn't a repro

  • "It doesn't work" β€” Doesn't work how? What did you expect?

  • Nothing is "obvious" β€” State your environment, steps, everything

Quick Links

  • The XY Problem β€” Are you solving the right problem?
  • SSCCE β€” The original guide that inspired this page
  • Jam.dev β€” Capture bug reports with full context
  • How to Report Bugs Effectively β€” Simon Tatham's classic guide

repro.fyi β€” Because debugging is isolating, and isolating is your job.

Found this helpful? Share it with someone who sends you "it's broken" messages.

FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
Β© 2026 Val Town, Inc.