Skip to main content

Installation

Prerequisites​

Before you begin, ensure your project meets the following requirements:

  • React Native New Architecture: React Native Molecules is built for the New Architecture (Fabric).
  • React 19+: Requires React 19 or higher.

1. Install the package​

pnpm add react-native-molecules

We recommend using pnpm for the monorepo because it is the package manager we ship with the repo and produces the smallest install footprint.

2. Add peer dependencies​

React Native Molecules uses react-native-unistyles for high-performance styling. This is the only required peer dependency.

pnpm add react-native-unistyles

Optional Dependencies​

Because React Native Molecules is modular, you only need to install additional dependencies if you use specific components.

ComponentDependency
FilePicker / useFilePicker@react-native-documents/picker
pnpm add @react-native-documents/picker

3. Configure fonts & icons​

React Native Molecules uses MaterialDesignIcons behind the scenes.

Web Support​

Due to a known issue in react-native-vector-icons, you must manually load the font file on the web.

  1. Copy MaterialDesignIcons.ttf from node_modules/@react-native-vector-icons/material-design-icons/Fonts/ to your project's public folder (e.g., public/fonts/).
  2. Add the @font-face definition to your global CSS:
src/global.css
@font-face {
font-family: 'MaterialDesignIcons';
src: url('/fonts/MaterialDesignIcons.ttf') format('truetype');
}

4. Register Unistyles themes​

You must configure react-native-unistyles so that components can access the theme tokens. This setup also ensures full TypeScript support for your themes.

src/unistyles.ts
import { StyleSheet } from 'react-native-unistyles';

import { MD3DarkTheme, MD3LightTheme } from 'react-native-molecules/styles';

const breakpoints = {
xs: 0,
sm: 300,
md: 500,
lg: 800,
xl: 1200,
};

type AppBreakpoints = typeof breakpoints;

type AppThemes = {
light: typeof MD3LightTheme;
dark: typeof MD3DarkTheme;
};

// override library types
declare module 'react-native-unistyles' {
export interface UnistylesThemes extends AppThemes {}
export interface UnistylesBreakpoints extends AppBreakpoints {}
}

StyleSheet.configure({
settings: {
initialTheme: 'light',
},
breakpoints,
themes: {
light: MD3LightTheme,
dark: MD3DarkTheme,
},
});

5. Wrap with PortalProvider (Optional)​

If you use components that require a portal (like Popover, Tooltip, Menu, Modal, etc.), you must wrap your application with PortalProvider.

App.tsx
import { PortalProvider } from 'react-native-molecules/components/Portal';

export default function App() {
return <PortalProvider>{/* Your app code */}</PortalProvider>;
}

6. Start building​

Import any component from react-native-molecules and pass props exactly as you would in React Native. Components are platform-aware, so the same JSX renders on iOS, Android, and the web.