Live demo · 1 online now

Did your release make it slower?

wshapnin times every endpoint, per version, and tells you what a release changed.

Shared and live: everyone online uses this same APIMost traffic is simulated customersChanges reset after 30 min

Ship a feature.

Pick an endpoint, say how much slower (or faster) your feature makes it, ship it. wshapnin compares the new version with the old one.

Endpoint
%

from wshapnin, last 2 h

Server, 95 % of calls under–
Browser, 95 % of calls under–
VersionCallsMedianp95Errors

Waiting for wshapnin…

Find it in wshapnin.

These are the names and labels you will see. Every tag opens its chart.

http one call of an endpoint db.query a block inside it browser.roundtrip what the user waited

How it works.

  1. Measure

    Wrap a route or a block. About a microsecond per call, nothing to configure.

  2. Release

    A new version gets its own numbers. wshapnin marks the release on every chart.

  3. Compare

    Every minute it checks the last 15 minutes against the hours before and flags what got worse.

async with wshapnin.timer("http", labels={"endpoint": "GET /api/products"}, version="1.3"):
    async with wshapnin.timer("db.query"):
        rows = await load_products()

wshapnin.record("browser.roundtrip", 182.4, labels={"endpoint": "GET /api/products"})