What's new in 2.0 MIT · React Native · v2.0.0

Build products that feel
native by default.

Native-UI is a cross-platform React Native design system by POLPROG. It ships 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.1+
  • Android 7+
  • React Native 0.84+
  • Reanimated 4
  • New Architecture ready
51
Components & primitives
1022
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

Compact and regular type scales tuned for iOS and Android. Aurora ships with Space Grotesk, Bloom pairs Outfit with Plus Jakarta Sans, or bring any font you load.

51 production components

41 components and 10 primitives covering every screen surface: buttons, inputs, date pickers, sheets, toasts, list rows, skeletons and more.

Theme-driven design tokens

One typed token system for colours, typography, spacing, radii and elevation, plus tokens per component. Swap the theme variant, accent or density without touching component code.

Typography density presets

Compact (the default) and regular scales with 18 variants each, including tabular figures, with line heights and weights preconfigured.

Accessibility baked in

Text colours meet WCAG AA contrast on every surface, screen readers get roles, labels and announcements, and reduced motion is respected by default.

iOS & Android, one API

Haptics, safe areas, keyboard handling and dialogs follow each platform behind one prop surface. Every label is localizable and icons mirror in right-to-left layouts.

1022 unit tests, strictly typed

TypeScript strict and a Jest suite on every change, and every Storybook story is tested in light, dark, right-to-left and high-contrast themes.

Tree-shakeable & tiny

Published as ESM and CJS, side-effect free, with an export per component. Ship only what your screens import.

Components

51 pieces. One visual language.

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

Preview theme

Buttons

Chips

Today Week Month Custom

Input

Badges & Avatars

AM NU New 3

Skeleton

Toast

Changes saved successfully.

Card

Monthly budget 3

2,450 of 3,000

Toggle

Notifications
Weekly digest

List

Profile John Doe
Language English

Segmented control

Day Week Month

Date picker

Due date Nov 12, 2026

Stat tile

Spent this month $2,450 12% under budget

Action tiles

Scan Send Split

Progress

0%

Button playground

Typography

A type scale tuned for apps.

18 variants with tuned sizes, line heights and weights. Shown here is the iOS-sized regular scale. The compact scale, made for content-dense screens, is the default.

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
Emphasized 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 17 / 22 / 600
Form label
overline 11 / 13 / 600
SECTION OVERLINE

Design tokens

One source of truth for every pixel.

Colours, spacing, radii and elevation: typed, themeable and available to every component.

Colours

Spacing

2xs 2px
xs 4px
sm 8px
smPlus 12px
md 16px
mdPlus 20px
lg 24px
xl 32px
2xl 40px
3xl 56px

Radii

xs 6px
sm 10px
md 14px
lg 18px
xl 24px
2xl 32px
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, VStack } from '@polprog/native-ui';

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

The difference

Raw React Native vs. Native-UI

Concern Raw React Native Native-UI
Typography scale DIY per screen 18 pre-tuned variants · 2 density presets
Design tokens Manual StyleSheet constants Strongly-typed theme · swap in one line
Accessibility Opt-in per component Roles · labels · announcements · AA text contrast by default
Platform parity Platform.select scattered everywhere Unified props, platform behaviours encapsulated
Forms & inputs Build label / helper / error states yourself Input, TextArea, Select, date pickers, 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 1022 unit tests shipped with the library

In production

Shipped in real apps

POLPROG apps on the App Store and Google Play, built on the same components and tokens as this site.

CostBoard

Home and renovation budgets, PDF quotes from your phone

Keeps the household budget and renovation budgets as separate projects and lets contractors send a client a PDF quote straight from the phone. Works offline and without an account.

  • App Store
  • Google Play
  • Offline-first
  • No account
View CostBoard on POLPROG ↗

PhotoToPuzzle

Turn any photo into a jigsaw puzzle, privately

A privacy-first photo puzzle game for phones and tablets. Native-UI drives its buttons, cards, modals, theme tokens and adaptive layouts, while photos never leave the device.

  • App Store
  • Google Play
  • Phone + Tablet
  • Offline-first
View PhotoToPuzzle on POLPROG ↗

Ready to ship something that feels native?

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

Expo React Native 0.84+ iOS Android TypeScript Accessible