Conformance, measured against the originals
Each number below comes from compiling the same input through Hozo and through the thing it stands in for: Tailwind's own engine, the official StyleX Babel plugin, React Native's type definitions, and the ARIA roles in aria-query.
They are read from packages/tailwind-conformance/snapshot.json as committed. The report runs on every push to main and weekly, and a number that differs from the snapshot fails that run until the change is committed with a reason.
Tailwind on the Web
Hozo's CSS against Tailwind's for the same class, after both are normalised: custom properties resolved, calc() folded, shorthands expanded. A value that cannot be normalised with certainty is skipped, not guessed.
A hand-picked slice of what app code uses. It shows the common path works; it is not a claim about Tailwind as a whole.
Every class Tailwind's design system lists, 23,286 entries. The rest produce no rule from Tailwind, or one that paints nothing until combined with another utility. 0 mismatches.
0 mismatches. The rest paint nothing on their own. 467 of the matches are compared as text, because only a browser can reduce the value.
Single and stacked, such as md:hover:flex. The selector and the at-rules around the rule are compared, not just its declarations.
Gradients and their stops, ring and shadow layers, the filter chain and transform axes, compared once they are put together.
Rules in the candidate stylesheet in the order Tailwind writes them, which decides who wins the cascade. 0 classes reached the DOM with no rule behind them.
Tailwind on iOS and Android
A class becomes a StyleSheet property, or the build names it and refuses it. The number that has to stay at zero is silent: a class that compiles to nothing without a diagnostic.
4 refused with a diagnostic, 1 a deliberate no-op (whitespace-normal, which React Native already does), 0 silent.
21,123 refused, 0 silent. 4,746 of the covered ones work only on some elements, such as a state variant on a Pressable; using one elsewhere is a build error.
Most are CSS properties React Native has no key for, so 2,271 are refused. 0 silent.
Web-only refusals checked against React Native's types: confirmed impossible there. 28 are partly expressible, and 1 looks fully expressible and is flagged to be re-read.
Cases that need configuration or an interactive element, such as transitions and pressed-state transforms.
Style objects emitted for every catalogue class that matches on the Web, type-checked against React Native's own declarations. 0 rejected.
StyleX
Static stylex.create sheets, lowered by the same backends. The StyleX page has the rest of these numbers and compiled samples.
Of every name StyleX's types publish. The other 17 are shorthands StyleX rejects by default, @font-face descriptors, or obsolete.
Names React Native has, or has an exact compile-time equivalent for.
Declarations whose Web output agrees with the official plugin. 0 silent failures.
Accessibility and diagnostics
Two halves: whether the checks stay quiet on correct code, and whether they speak at all. A check that cries wolf gets switched off; one that stopped firing looks like code with no defects.
Every concrete role in aria-query: 83 static, 30 interactive. 0 raised a warning.
Each provoked by a case. 0 stayed silent, 1 has no case yet, and 1 is a defensive branch nothing can reach.
Cases that compile one source through both backends and state what each must produce. They cover 76 of 76 primitives.
Primitives checked to lower straight to DOM elements and CSS on the Web, and to React Native on iOS and Android, with no react-native-web in between.
Canvas and SVG filters
A canvas shape has a fill, a stroke, a stroke width and an opacity, so nearly every utility is refused there; what matters is that none is refused without saying so.
Catalogue utilities a canvas shape can paint. 0 silent, 0 painted with a value no canvas resolves.
0 silent, 4 painted with a value no canvas resolves.
From react-native-svg 15.15.5's exports. API, compiler and import routing only: not prop parity, pixel equivalence or device rendering. Its 16 warning-only Native stubs are not counted. See packages/tailwind-conformance/src/svg-filters.test.ts.
Run it
pnpm --filter @hozo/tailwind-conformance report, after rebuilding the native addon. It prints each section with the classes behind every number that is not a match.