Part 6 of 7 · Chapter 3 of 3

After You Ship

Monitoring, reading real bug reports, and iterating on something people are already using.

Intermediate10 min read

Worth reading first: From Idea to Deployed App


Shipping is the start of the interesting part. Real users do things you never considered, on devices you do not own, and the feedback they generate is worth more than any amount of further polishing in private.

Find out before your users tell you

The worst way to learn about an outage is a message from someone who hit it an hour ago. Two things fix most of that, and both are free at small scale.

  1. 1

    Error tracking

    Sentry or your host's built-in equivalent. It reports what broke, on what page, with the stack trace and browser.

    This is the single highest-value thing to add after launch.

  2. 2

    Uptime checks

    A service that loads your site every few minutes and emails you when it stops responding.

You are not building an observability practice. You are answering two questions: is it up, and is it throwing errors.

Reading a real bug report

Real reports are vague. “It doesn’t work” is the median. Your job is to convert that into something reproducible before you prompt anything.

Get these four things

  • What were you trying to do?
  • What did you expect to happen?
  • What happened instead?
  • What device and browser?

The fourth catches a surprising share of issues outright — a layout that only breaks on Safari, or a feature that assumed a mouse.

The fix loop, with the AI in it

Once you can reproduce it, the loop is the one you already know — with one addition that stops the same bug returning:

Prompt
Users on Safari cannot submit the contact form. I reproduced it:the date field stays empty and the submit button does nothing.Works in Chrome. Relevant file: src/components/ContactForm.tsx First write a test that reproduces this, then explain the cause,then fix it.

Test first, cause second, fix third. The test is what makes this a permanent fix rather than a temporary one.

Watch what people do, not what they say

Analytics answer questions your intuition cannot. Which pages do people land on? Where do they leave? Which feature you spent a weekend on has never been used?

A privacy-respecting analytics tool — Plausible, Fathom, or your host’s built-in option — is a few lines to add and does not require a cookie banner. Start with page views. Do not build a dashboard nobody reads.

Keeping it alive

A shipped project needs maintenance that is easy to skip because nothing is visibly broken:

  1. 1
    Update dependencies monthly

    npm outdated shows what has moved; run your check command after updating.

  2. 2
    Act on security advisories

    npm audit, and GitHub will open PRs for you if you enable Dependabot.

  3. 3
    Keep your rules file current

    It rots, and a stale one confidently misleads the AI.

  4. 4
    Delete what is unused

    Every feature nobody uses is still code you have to keep working.

The part nobody says out loud

Most projects get few users, and that is a normal outcome rather than a failure. The value of shipping is not traffic — it is that reality gives you feedback that imagination cannot.

One real user hitting one real bug teaches you more about building software than another week of adding features in private. Ship the small thing, watch what happens, and let that decide what you build next.

Key takeaways

  • Add error tracking on day one. It is the highest-value post-launch addition.
  • Convert vague reports into a reproduction you have seen yourself before prompting.
  • Ask which device and browser — it resolves a surprising share of bugs immediately.
  • Write a failing test for every real bug, so the fix is permanent.
  • Analytics tell you which of your features nobody uses. Believe them.
  • Few users is the normal outcome. The feedback is the point, not the traffic.