A comprehensive demonstration of React Native's built-in capabilities without any third-party libraries.
This app showcases everything that React Native offers out-of-the-box, including:
- UI/Layout primitives (21 demos)
- Animation & gesture handling (3 demos)
- Platform & device APIs (13 demos)
- Core utilities (2 demos)
Goal: Provide developers migrating from Flutter (or web) with a hands-on reference of React Native's native capabilities.
Total Demos: 39 interactive demonstrations covering all major React Native APIs
- ✅
View- Basic view component with Flexbox layout - ✅
Text- Text styling and formatting - ✅
ScrollView- Scrollable content with refresh control - ✅
FlatList- Optimized list rendering with pull-to-refresh - ✅
SectionList- Sectioned lists with headers - ✅
VirtualizedList- Base virtualized list component - ✅
TextInput- Input fields with various configurations - ✅
Pressable- Touch handling with feedback - ✅
TouchableOpacity- Touch with opacity feedback - ✅
TouchableHighlight- Touch with highlight feedback - ✅
Button- Basic button component - ✅
Switch- Toggle switch component - ✅
Modal- Modal dialogs with animations - ✅
Image- Image display with various modes - ✅
ImageBackground- Background image container - ✅
SafeAreaView- Safe area handling - ✅
ActivityIndicator- Loading indicators - ✅
StatusBar- Status bar configuration - ✅
KeyboardAvoidingView- Keyboard interaction - ✅
RefreshControl- Pull-to-refresh functionality - ✅
Alert- Native alert dialogs
- ✅
Animated- Comprehensive animation system (timing, spring, decay, interpolation) - ✅
PanResponder- Gesture handling and draggable components - ✅
LayoutAnimation- Automatic layout transitions
- ✅
Dimensions- Screen dimensions and orientation - ✅
PixelRatio- Device pixel density information - ✅
Platform- OS detection and version info - ✅
Appearance- Dark/light theme detection - ✅
AppState- Application state management - ✅
BackHandler- Hardware back button handling - ✅
Clipboard- Copy/paste functionality - ✅
Share- Native sharing capabilities - ✅
Linking- URL and deep link handling - ✅
Vibration- Device vibration control - ✅
PermissionsAndroid- Android permissions - ✅
AccessibilityInfo- Accessibility information - ✅
ToastAndroid- Android toast notifications
- ✅
StyleSheet- Style optimization and creation - ✅
InteractionManager- Interaction scheduling
/
├── App.tsx # Main app with navigation
├── data.ts # Demo screen registry (39 demos)
├── build-ios.sh # iOS build script
└── demos/
├── ViewBasics.tsx
├── TextStyling.tsx
├── ScrollViewDemo.tsx
├── FlatListDemo.tsx
├── SectionListDemo.tsx
├── VirtualizedListDemo.tsx
├── TextInputDemo.tsx
├── PressableDemo.tsx
├── TouchableOpacityDemo.tsx
├── TouchableHighlightDemo.tsx
├── ButtonDemo.tsx
├── SwitchDemo.tsx
├── ModalDemo.tsx
├── ImageDemo.tsx
├── ImageBackgroundDemo.tsx
├── SafeAreaViewDemo.tsx
├── ActivityIndicatorDemo.tsx
├── StatusBarDemo.tsx
├── KeyboardAvoidingViewDemo.tsx
├── AlertDemo.tsx
├── AnimatedOpacityLoop.tsx
├── DragBoxPanResponder.tsx
├── LayoutAnimationDemo.tsx
├── DeviceInfoDemo.tsx
├── DarkModeListener.tsx
├── AppStateDemo.tsx
├── BackHandlerDemo.tsx
├── ClipboardCopyPaste.tsx
├── ShareDemo.tsx
├── LinkingDemo.tsx
├── VibrationDemo.tsx
├── PermissionsAndroidDemo.tsx
├── AccessibilityInfoDemo.tsx
├── ToastAndroidDemo.tsx
├── StyleSheetDemo.tsx
├── InteractionManagerDemo.tsx
└── LayoutFlexbox.tsx
- React Native: 0.80.1
- TypeScript: Strict mode enabled
- Hermes: Enabled for better performance
- Target: iOS 13+ / Android 7+
- Node.js 18+
- React Native development environment set up
- For iOS: Xcode 14+
- For Android: Android Studio with SDK
-
Clone the repository
-
Install dependencies:
npm install
-
For iOS:
cd ios && pod install && cd .. npm run ios
-
For Android:
npm run android
- 🟢 Core framework: Complete
- � UI demos: Complete (21/21)
- 🟢 Animation demos: Complete (3/3)
- 🟢 Platform demos: Complete (13/13)
- � Utility demos: Complete (2/2)
Total Progress: 39/39 demos implemented (100% complete)
- macOS with Xcode 14+
- Apple Developer account
- iOS provisioning profiles and certificates
# Quick build using the provided script
chmod +x build-ios.sh
./build-ios.shThe script will:
- Generate React Native code
- Build the iOS archive
- Create IPA file at
ios/build/ipa/ReactNativeCoreShowcase.ipa
# Generate React Native code
npx react-native codegen --platform ios
# Copy generated files
mkdir -p ios/build/generated/ios
cp -r build/generated/ios/* ios/build/generated/ios/
# Build archive
cd ios
xcodebuild -workspace ReactNativeCoreShowcase.xcworkspace \
-scheme ReactNativeCoreShowcase \
-configuration Release \
-destination generic/platform=iOS \
-archivePath ./build/ReactNativeCoreShowcase.xcarchive \
archive
# Create IPA
mkdir -p build/ipa/Payload
cp -r build/ReactNativeCoreShowcase.xcarchive/Products/Applications/ReactNativeCoreShowcase.app build/ipa/Payload/
cd build/ipa
zip -r ReactNativeCoreShowcase.ipa Payload/Option 1: Using Xcode
- Open Xcode → Window → Organizer
- Select your archive
- Click "Distribute App" → "App Store Connect"
- Important: Uncheck "Upload your app's symbols" to avoid Hermes dSYM issues
- Follow the upload prompts
Option 2: Using Transporter
- Install Transporter from Mac App Store
- Drag your IPA file into Transporter
- Click "Deliver" to upload
Option 3: Using Command Line
xcrun altool --upload-app --type ios \
--file ReactNativeCoreShowcase.ipa \
--username your@email.com \
--password your-app-specific-password# For APK (development)
cd android
./gradlew assembleRelease
# For AAB (Play Store)
./gradlew bundleRelease- Open Google Play Console
- Select your app
- Go to "Production" → "Create new release"
- Upload the AAB file from
android/app/build/outputs/bundle/release/ - Fill in release notes and submit for review
- Symbol Upload Warning: When uploading to App Store, disable symbol upload to avoid Hermes-related dSYM issues
- Testing: Use TestFlight for iOS beta testing and Play Console Internal Testing for Android
- Signing: Ensure proper code signing certificates are installed and valid
This project includes automated app icon generation for both iOS and Android platforms.
# Check if your system is ready for icon generation
npm run check-icon-setup
# Generate icons from app-icon.png
npm run generate-icons- macOS: Install ImageMagick via
brew install imagemagick - Windows: Download ImageMagick from official website and add to PATH
- Source Image: 1024x1024 PNG file named
app-icon.png
- iOS:
ios/ReactNativeCoreShowcase/Images.xcassets/AppIcon.appiconset/(25 icon sizes) - Android:
android/app/src/main/res/mipmap-*/(12 icons across 6 densities)
For detailed instructions including Windows setup, see APP_ICON_GENERATOR.md.
- Zero third-party dependencies (except React, React Native, and dev tools)
- No navigation libraries - Custom state-based navigation
- No UI libraries - Pure React Native components only
- No Expo modules - React Native CLI only
- TypeScript strict mode - Better type safety
This project demonstrates React Native's built-in capabilities. When adding new demos:
- Follow the existing demo structure
- Use only React Native built-in APIs
- Include TypeScript with strict mode
- Add comprehensive inline documentation
- Test on both iOS and Android
- Update the
data.tsregistry
MIT License - Feel free to use this as a reference for your React Native projects.