rntwsc

React Native Tailwind Server ComponentsWrite once, run everywhere. Use Tailwind CSS class names in React Native with full support for Next.js App Router RSC and SSR streaming. Class names are transpiled at build time on native and kept as-is on web.

Everything you need

Universal

One codebase runs on server, browser, and native. Nature async components with transpiler. Resolve browser extension to separate logic only where needed.

RSC + SSR Streaming

Async server components with Next.js App Router. Stream HTML to the browser with zero client-side waterfall.

Navigation

Type-safe routes with Link and useRoute. Works on web and native with a unified API.

Internationalization

First-class i18n with namespace support. Add languages by dropping in JSON files.

Tailwind CSS

Use Tailwind class names directly in React Native. CVA, responsive selectors, and dark mode variants all work out of the box.

Theming

Built-in theme system with dark mode support. Switch themes at runtime without a page reload.

Built-in Components

Rich set of ready-to-use UI components built on top of the core primitives. Consistent styling, accessibility, and dark mode support included.

Fetch + GraphQL Cache

Built-in Fetch and GraphQL query cache with automatic server-to-client hydration. No extra setup - data is fetched on the server and seamlessly reused on the client.

Dev Tools

Built-in ESLint config with best practice rules for the framework. Kick off new projects with a getting-started template that follows all conventions out of the box.

Why rntwsc?

Style Extraction, Not Injection

Expo Web and React Native Web inject styles at runtime into the DOM. This breaks RSC streaming - the server has no DOM, and injecting styles after the fact causes flash of unstyled content and hydration mismatches.rntwsc transpiles Tailwind class names at build time. No runtime injection, no conflict, fully compatible with Next.js App Router streaming SSR.

True SSR Hydration

Fetching on the client causes waterfall and kills SSR. Passing server data as props breaks down with interactive client components. SWR and React Query require manual serialization and do not integrate with RSC streaming.Built-in Fetch and GraphQL hooks run on the server, populate a cache, serialize it into the streamed HTML, and rehydrate on the client automatically. Zero double fetch, zero setup.

Maximum Code Reuse

Every other framework forces you to write separate files or runtime platform checks to share logic between server, browser, and native.A Babel plugin strips async/await at build time on the client, converting async components into synchronous ones that read from the hydrated cache. One file runs identically on server, browser, and native.