Button
A flexible, fully-typed button component for React Native with variants, sizes, loading states, and icon support.
componentUI ComponentsExpo SDK 55Free
Preview
Interactive9:41
Button Variants
Switch tabs to explore button variants, sizes, and states
Usage
No additional packages requiredZero depsBuilt with React Native core only — no third-party UI library required.
Examples
7Five style presets — default, secondary, outline, ghost, and destructive — to match every context.
tsx
import { View, StyleSheet } from 'react-native'';import { Button } from '~/components/ui/button'';export default function VariantsExample() { return ( <View style={styles.stack}> <Button variant="default"">Default</Button> <Button variant="secondary"">Secondary</Button> <Button variant="outline"">Outline</Button> <Button variant="ghost"">Ghost</Button> <Button variant="destructive"">Destructive</Button> </View> );}const styles = StyleSheet.create({ stack: { gap: 12, padding: 16 },});Overview
Drop-in button for Expo apps built with NativeWind. Supports 5 style variants (default, secondary, outline, ghost, destructive), 3 sizes, loading spinner state, left/right icons, and icon-only mode. Zero dependencies beyond your existing RN setup.
What's included
- 5 style variants (default, secondary, outline, ghost, destructive)
- 3 sizes — sm, md, lg
- Loading state with spinner
- Left icon, right icon, and icon-only support
- Disabled state with automatic opacity
- Full TypeScript props
- NativeWind class support
- Zero extra dependencies
Tech Stack
ExpoReact NativeTypeScript
Get this component
Free
One-time payment · Lifetime access
Free License
Personal and commercial use
- Use in 1 personal project
- Lifetime access to updates
- Email support
- Remove attribution
- Commercial use included
Full TypeScript source code
All examples & variants
Lifetime updates
Email support
More Components