Updated for 2026 MIT · React Native · v1.4.0

Build products that feel
native by default.

Native-UI is a cross-platform React Native design system by POLPROG - shipping native-feeling components on iOS and Android with production-grade visual polish out of the box.

Today

Tuesday, 14 Jan

Steps +12%
8,420
Focus time +6%
2h 14m
Upcoming
Design review · 10:00
Stand-up · 11:30
1:1 with Sam · 14:00
Runs on
  • iOS 15+
  • Android 7+
  • Expo SDK 50+
  • React Native 0.74+
  • New Architecture ready
40
Components & primitives
188
Passing unit tests
100%
TypeScript strict
2
Density presets

Why Native-UI

Everything a product team needs
to ship a polished app.

Opinionated defaults. Unopinionated APIs. Zero-config visual parity - native on iOS, native on Android.

Native-grade polish, out of the box

A compact-density typography preset tuned for iOS and Android. Pairs with Space Grotesk or any font you ship.

43 production components

34 components + 9 primitives covering every screen surface - Buttons, Inputs, Sheets, Toasts, List rows, Skeletons, Confetti and beyond.

Theme-driven design tokens

One typed token system for colors, typography, spacing, radii and elevation. Swap themes, density or brand without touching component code.

Typography density presets

Regular (iOS-native 17pt) and Compact (15pt headline) presets with correct line-heights, tracking and weight families preconfigured.

Accessibility baked in

Accessible roles, labels, hit-slops, focus management and reduced-motion support are defaults - not opt-ins.

iOS & Android, one API

Platform-aware behaviours (haptics, safe areas, modals, gestures) unified behind a single prop surface - works on both platforms without conditional code.

188 unit tests, strictly typed

Every component is fully typed in TypeScript strict mode and covered by an extensive Jest suite - so consumers upgrade without fear.

Tree-shakeable & tiny

Published as ESM + CJS with individual component exports. Ship only what your screen actually imports.

Components

40 pieces. One visual language.

Every surface a product needs - composed from the same theme, tokens and motion system.

Buttons

Chips

Today Week Month Custom

Input

Badges & Avatars

AM NU New 3

Skeleton

Toast

Changes saved successfully.

Typography

A type scale tuned for apps.

Ten variants with iOS-correct sizes, line-heights and tracking - plus a compact preset for content-dense screens. Pairs with Space Grotesk or any font you ship.

displayLarge 34 / 41 / 700
Native by default
displayMedium 28 / 34 / 700
Design system, shipped
h1 28 / 34 / 600
Section title
h2 22 / 28 / 600
Subsection
title 17 / 22 / 600
Card headline
bodyLarge 17 / 22 / 500
Emphasised body text
body 17 / 22 / 400
Body - the default reading size used throughout the design system.
bodySmall 15 / 20 / 400
Subheadline used for list subtitles and secondary text.
label 13 / 18 / 500
Form label
overline 11 / 13 / 600
SECTION OVERLINE

Design tokens

One source of truth for every pixel.

Colors, spacing, radii, elevation - typed, themeable, and accessible from every component.

Colors

Spacing

xs 4px
sm 8px
md 12px
lg 16px
xl 24px
2xl 32px
3xl 48px

Radii

sm 6px
md 10px
lg 14px
xl 20px
full 9999px

Install

Ship your first screen
in under a minute.

Drop in the provider, import components, done. No config, no theme-writing, no token-wrangling required.

App.tsx
import { NativeUIProvider, Button, Card, Heading, Stack } from '@polprog/native-ui';

export default function App() {
  return (
    <NativeUIProvider>
      <Card>
        <Stack gap="lg">
          <Heading level={1}>Welcome</Heading>
          <Button variant="primary" onPress={handlePress}>
            Get started
          </Button>
        </Stack>
      </Card>
    </NativeUIProvider>
  );
}

The difference

Raw React Native vs. Native-UI

Concern Raw React Native Native-UI
Typography scale DIY per screen 10 pre-tuned variants · 2 density presets
Design tokens Manual StyleSheet constants Strongly-typed theme · swap in one line
Accessibility Opt-in per component Labels · roles · hit-slop · reduce-motion by default
Platform parity Platform.select scattered everywhere Unified props, platform behaviours encapsulated
Forms & inputs Build label / helper / error states yourself Input, TextArea, Select, Checkbox, Radio, Switch ready
Motion & haptics Install & wire up separately PressableScale, Toast, Confetti, Skeleton - built-in
Visual consistency Drifts across screens / teams Production-grade parity enforced by tokens
Test safety net Your responsibility 188 unit tests shipped with the library

Ready to ship something that feels native?

Install Native-UI and spend your time on product, not pixels.