Routing & Navigation
Dead ends, ghost routes, broken CTAs, blank Suspense pages.
- ›dead-end routes
- ›missing 404
- ›circular redirects
You build fast with AI. We make sure it doesn't lose users, drain your wallet, or become a legal nightmare. Run our CLI, get a report with fixes in seconds.
/$$$$$$$ /$$ /$$ | $$__ $$ |__/ | $$ | $$ \ $$ /$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$/$$$$ | $$$$$$$//$$__ $$ /$$__ $$| $$ /$$__ $$ /$$__ $$ /$$__ $$| $$_ $$_ $$ | $$____/| $$$$$$$$| $$ \__/| $$| $$ | $$| $$$$$$$$| $$ \__/| $$ \ $$ \ $$ | $$ | $$_____/| $$ | $$| $$ | $$| $$_____/| $$ | $$ | $$ | $$ | $$ | $$$$$$$| $$ | $$| $$$$$$$| $$$$$$$| $$ | $$ | $$ | $$ |__/ \_______/|__/ |__/ \_______/ \_______/|__/ |__/ |__/ |__/
▸ verdict: do not launch — 3 critical, 11 high
“Launch” isn’t the day you go live. It’s every feature you build. Periderm CLI turns the question “will this make me lose users, revenue or get into legal trouble?” into a check you run on autopilot.
⚠ Detected severe compliance exposure in user onboarding. High risk of regulatory fines.
⚠ Identified fatal data integrity vulnerabilities. Malicious actors could silently corrupt records.
⚠ Discovered critical infrastructure exhaustion traps. Infinite loops could drain platform quotas overnight.
⚠ Found catastrophic information disclosure risks. Sensitive assets are exposed to public indexing.
Run it locally in your terminal. You get three scores, the top embarrassment risks, and the exact files to open.
Each check is an AST rule, a filesystem probe, or a flow-graph query. No guessing, no “let me just ask an LLM.” Evidence first, then interpretation.
Dead ends, ghost routes, broken CTAs, blank Suspense pages.
Unhandled promises, missing error boundaries, leaked listeners.
Protected routes you forgot to protect. Logout you forgot to ship.
You can be sued, fined, or taken down for compliance gaps you don't even know exist in your app.
Empty arrays, missing avatars, offline users, double-clicks.
Pages that feel frozen, infinite spinners, layout shift.
You can’t fix what you can’t see. Sentry, logs, analytics.
Silent corruption: missing validation, races, double submits.
Headers, secrets, dangerous HTML, CSRF, open redirects.
Sitemaps, OG tags, duplicate titles, placeholder content left behind.
Real humans use keyboards, screen readers, and contrast.
The financial DDoS. An infinite loop in a serverless function quietly bills you for a weekend.
Periderm CLI parses your source with Babel — TypeScript, JSX, modern syntax, and CommonJS/ESM modules. If you ship JavaScript or TypeScript, we can scan it.
hooks, routes, error boundaries
app router, API routes, metadata
server fns, loaders, routing
SPA flows, env vars, assets
webhooks, cron, serverless traps
libraries, scripts, monorepos
▸ also scans .mjs and .cjs — use periderm scan --local-only when you don't need a dashboard upload.
AST + filesystem analysis. The boring, reliable layer that finds missing alt text, dead links, hardcoded secrets, absent error boundaries, and 100+ other patterns.
We build a graph of your app — pages → buttons → handlers → APIs → outcomes. That graph finds dead ends, missing recovery paths, and broken flows no linter can see.
We don't dump your codebase into an LLM. We send structured findings and ask: would this frustrate users? You get a senior-engineer summary, not a wall of warnings.
▸ the moat isn’t a secret prompt — it’s knowing what to observe before AI starts thinking.
Wire Periderm CLI into your CLI, your CI, or your editor save hook. Every change gets reviewed like a senior engineer just glanced over your shoulder.
$ periderm watch$ periderm scan$ periderm scan --local-only$ periderm review --deepuser.avatar.url accessed without a fallback. Users without a photo will see a broken image.
Fetching data without a loading state. Users may perceive the page as frozen on slow networks.
Recursive call has no termination condition behind a feature flag — potential runaway invocation cost.
For makers who want a sanity check before shipping.
For people shipping fast with AI, on real users.
For teams where every release is a launch.
Your next feature is a launch. Make sure it doesn’t lose you the users you don’t know about yet.