skip to main content

How well it reads your product

Syncanix works out what your product can do by reading it. That only works if it reads well, so we measure it on real, public projects, publish the result, and tie every number on this page to the test suite that produces it. If the reading gets worse, the build fails before this page can overstate it.

Headline results

100.0%of everything a project can really do was found
100.0%of everything it listed turned out to be real
27real public projects, each checked against a list written by hand
30frameworks supported across 19 languages

Last verified: 2026-07-18 · f8a6fe3c

How this was measured

  • The answer key was written by hand

    For each project we read its code ourselves and wrote down every action it really has. Syncanix is then scored against that list: how much of it did it find, and how much of what it found was actually there.

  • What counts as a match

    It has to name the same action at the same address, including any prefix the code adds. Placeholders are compared by position rather than by name, so two different spellings of “the order's id” in the same slot count as the same thing.

  • It only reads; it never runs anything

    Discovery reads source code. It never runs your app, watches your traffic, or calls anything. Every number here came out of the same reading that `npx syncanix init` does on your machine.

  • Checked on every change, and pinned by tests

    The sample projects are re-read on every change to the reader, and the numbers on this page are tied by tests to what that run produces. A step backwards fails the build before it can ship.

Real public projects, scored

27 real projects, mostly open-source reference apps, each with an answer key written by hand. The projects are public, so you can read the same files we did.

Purpose-built sample apps

A small app per framework, written to exercise it, scored against a minimum each one has to clear. This is the set that runs on every change to the reader.

Purpose-built sample apps
FrameworkSample appsCombinedMust clear
nestjs5100%92%
express3100%85%
fastapi8100%92%
fastify3100%85%
nextjs8100%92%
graphql5100%100%
grpc1100%92%
trpc3100%92%
websocket2100%85%
springboot2100%85%
django2100%85%
flask2100%85%
rails392.6%85%
phoenix1100%85%
gin1100%85%
chi1100%85%
echo1100%85%
fiber1100%85%
net-http1100%85%
actix2100%85%
axum3100%85%
laravel2100%85%
aspnet1100%85%
koa1100%85%
hapi1100%85%
elysia1100%85%
litestar1100%85%
sinatra1100%85%
ktor1100%85%
vapor1100%75%
play1100%75%
compojure1100%75%
dream2100%75%
servant1100%75%
cowboy2100%75%
plumber1100%75%
lapis2100%75%

Whole real projects, kept at a fixed version

Complete real projects, pinned to one version so the score cannot move underneath us, scored against either the project's own published description of itself or a list written by hand.

Whole real projects, kept at a fixed version
FrameworkSample appCombined scoreChecked against
FastAPIfastapi-realworld@029eb77100%openapi
Honohono-open-api-starter@0d5f3bf100%hand-labelled
Symfonysymfony-realworld@5ad39de100%openapi

What these numbers do not claim

  • These are reference projects, not a random sample of all software. Yours can differ, which is why the setup writes you a list to review rather than asking you to take our word for it.
  • This measures the reading: which actions exist and where. How well each one is then DESCRIBED is judged separately and is not part of these figures.
  • Whether an action needs a sign-in is labeled cautiously in some readers, and can disagree with a project's own published description on actions that are genuinely public. The score above is about finding the actions, not about that label.

Check it on your own code

The only check that really matters is your own product: run the setup and read the list it writes. Every capability names the file and line it came from, so you can hold the list against your own code in minutes. To reproduce the numbers on this page yourself:

pnpm --filter syncanix test:f1
pnpm --filter syncanix scan:real

Framework support lists every framework and language it can read, and what to do if yours is not there.