Built with Electron and React, RNUpdater provides an intuitive interface for developers to safely upgrade their React Native projects with automated package updates and comprehensive diff analysis.
Streamlined React Native Updates: Updating React Native projects can be complex and error-prone, requiring manual package.json modifications, dependency updates, and configuration changes. RNUpdater automates this process by analyzing version diffs, providing selective package updates, and ensuring your project stays up-to-date with the latest React Native releases safely and efficiently.
Screenshot coming soon - showing the main interface with project selection, version list, and package update features
- Automatic Detection: Automatically detects React Native projects and analyzes their current configuration
- Version Comparison: Compare your current React Native version with available releases
- Git Integration: Display Git branch information and remote repository details
- Package Analysis: Comprehensive analysis of package.json dependencies and devDependencies
- Diff-Based Updates: Analyze version diffs to identify required package updates
- Selective Updates: Choose which packages to update with an intuitive checkbox interface
- Version Preservation: Maintain existing version prefixes (^, ~, or exact versions)
- Comprehensive Backup System: Automatic backup of all files before applying changes
- Safe Rollback: Easy rollback functionality if updates cause issues
- Complex Change Detection: Automatically detect and categorize complex changes across file types
- Multi-File Updates: Handle package.json, native code, Gradle files, configuration files, and binary files
- Binary File Management: Download and replace JAR files, native libraries, and other binary assets
- Native Code Updates: Automated parsing and application of iOS/Android native code changes
- Gradle Configuration: Parse and apply Android Gradle configuration updates
- Breaking Change Analysis: Detect and warn about breaking changes during upgrades
- Migration Scripts: Generate step-by-step migration instructions for complex updates
- Release Fetching: Fetch all available React Native releases from GitHub
- Pagination Support: Efficiently browse through hundreds of available versions
- Load More: Alternative infinite scroll-like interface for version browsing
- Version Actions: Quick actions for each version including upgrade and package updates
- Project Selection: Easy project folder selection with drag & drop support
- Modern UI: Clean, dark-themed interface built with Tailwind CSS
- Responsive Design: Optimized for different screen sizes
- Real-time Updates: Live updates as you make changes
- Modal Management: Enhanced modals with close buttons and keyboard shortcuts
- Tabbed Interface: Organized workflow with separate tabs for packages, complex changes, and migration
- Comprehensive Details: Display React Native version, React version, platform support
- Bundle ID: Show iOS/Android bundle identifier
- Git Status: Current branch and remote repository information
- Package Dependencies: Complete overview of all project dependencies
- ๐ฆ Package.json Updates: Automated package.json updates based on version diffs
- ๐ Major Version Updates: Support for major React Native version upgrades with complex changes
- ๐ฑ Binary File Parsing: Parse and apply changes to iOS/Android binary files
- ๐ง Native Code Updates: Automated parsing and application of native iOS/Android code changes
- โ๏ธ Gradle Configuration: Parse and apply Android Gradle configuration updates
- ๐พ Comprehensive Backup System: Automatic backup of all modified files
- ๐จ Enhanced UI: Modal management with close buttons and keyboard shortcuts
- ๐ Tabbed Interface: Organized workflow for complex updates
- ๐ Podfile Updates: Automated iOS Podfile dependency management
- ๐ Advanced Diff Analysis: More sophisticated diff parsing for complex project structures
- ๐ Update History: Track and manage update history with rollback capabilities
- ๐จ Theme Customization: Light/dark theme options and customization
- โ๏ธ Cloud Sync: Sync project configurations across devices
- ๐ Batch Updates: Update multiple projects simultaneously
- ๐ Update Analytics: Track update success rates and common issues
- ๐ Electron - Cross-platform desktop framework
- โ๏ธ React 19 - Modern UI library with hooks
- ๐ TypeScript 5 - Type-safe development
- ๐จ Tailwind CSS 4 - Utility-first styling
- ๐ฆ Lucide Icons - Consistent iconography
- ๐ฆ Zustand - Lightweight state management
- ๐ก GitHub API - React Native releases fetching
- ๐ง Git Integration - Git repository information
- ๐ React Dropzone - Drag and drop functionality
- Node.js 20 or higher
- pnpm 10 or higher
# Clone the repository
git clone https://github.com/imokhles/rn-updater.git
cd rn-updater
# Install dependencies
pnpm install
# Start development server
pnpm dev# Build for all platforms
pnpm build
# Build for specific platform
pnpm build --mac
pnpm build --win
pnpm build --linux- Launch RNUpdater
- Select a React Native project by:
- Dragging and dropping the project folder onto the app
- Clicking "Select Project Folder" and browsing to your project
- View project information including current versions and Git details
- Browse available versions using pagination or load more functionality
- Select a target version and click "Upgrade Now"
- Choose package updates from the diff analysis
- Apply changes safely with automatic backup
- React Native projects with package.json
- Projects with Git repositories
- iOS and Android platform support
โ ๏ธ Compatibility Note: Currently tested with React Native CLI projects. Expo support is planned for future releases.
- Cmd/Ctrl + O: Open project folder
- Escape: Close modals and dialogs
- Arrow Keys: Navigate version list
- Enter: Select version or apply changes
rn-updater/
โโโ src/
โ โโโ main/ # Electron main process
โ โ โโโ services/ # Git and file system services
โ โ โโโ ipc/ # Inter-process communication
โ โโโ renderer/ # React renderer process
โ โ โโโ components/ # UI components
โ โ โ โโโ package-updater/ # Package update components
โ โ โ โโโ version-selector/ # Version selection components
โ โ โโโ lib/ # Utilities and services
โ โ โโโ screens/ # Main application screens
โ โโโ shared/ # Shared types and constants
โ โโโ resources/ # Icons and assets
โโโ dist/ # Built applications
โโโ docs/ # Documentation
pnpm dev # Start development server
pnpm build # Build for production
pnpm start # Preview built app
pnpm lint # Run linter
pnpm lint:fix # Fix linting issues- MVVM Pattern: Clean separation of concerns
- Zustand Store: Centralized state management
- IPC Communication: Secure main-renderer communication
- TypeScript: Full type safety throughout
- Service Layer: Modular services for different functionalities
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
- Ensure all checks pass
This project is licensed under the MIT License - see the LICENSE file for details.
This project is built using the excellent Electron App Boilerplate by Dalton Menezes.
The boilerplate provides:
- ๐ฅ Fast and ready-to-go structure with React 19, TypeScript 5, and Tailwind CSS 4
- ๐ Auto reload for main process and Fast Refresh for renderer
- ๐ Window/Screen routing with Electron Router DOM
- ๐ฎ GitHub Action releases for Windows, Mac, and Linux
- ๐ Source code protection support
- ๐ช Absolute paths support
Special thanks to Dalton for creating such a comprehensive and well-maintained boilerplate that makes Electron development a breeze! ๐
This project is inspired by and builds upon the excellent work of the React Native Upgrade Helper by the React Native community. RNUpdater uses the React Native Upgrade Helper's API to fetch version diffs and upgrade information, providing the foundation for all automated update capabilities.
RNUpdater extends this API integration by:
- Providing a desktop application for offline use
- Adding automated package.json updates
- Including Git workflow integration
- Offering selective update capabilities
- Supporting complex project analysis
We're grateful to the React Native community for their continuous efforts in making React Native upgrades more accessible and manageable! ๐
Made with โค๏ธ for the React Native development community