Skip to content

iMokhles/RNUpdater

Repository files navigation

RNUpdater

RNUpdater

A powerful desktop application for automated React Native project updates and version management

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.

๐ŸŽฏ Why This Project is Important

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.

RNUpdater Screenshot

Screenshot coming soon - showing the main interface with project selection, version list, and package update features



RNUpdater Platform License

โœจ Features

๐Ÿ” Smart Project Analysis

  • 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

๐Ÿš€ Automated Package Updates

  • 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

๐Ÿ”ง Major Version Updates

  • 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

๐ŸŽฏ Version Management

  • 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

๐Ÿ–ฑ๏ธ Intuitive Interface

  • 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

๐Ÿ“‹ Project Information

  • 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

๐Ÿ“‹ Roadmap

โœ… Recently Completed

  • ๐Ÿ“ฆ 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

๐Ÿšง In Progress

  • ๐Ÿ“„ Podfile Updates: Automated iOS Podfile dependency management
  • ๐Ÿ” Advanced Diff Analysis: More sophisticated diff parsing for complex project structures

๐Ÿ”ฎ Future Features

  • ๐Ÿ“Š 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

๐Ÿ› ๏ธ Technologies

  • ๐Ÿ”‹ 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

๐Ÿ”ฎ Upcoming Technologies

  • ๐Ÿ”„ React Dropzone - Drag and drop functionality

๐Ÿ“ฆ Installation

Prerequisites

  • Node.js 20 or higher
  • pnpm 10 or higher

Development Setup

# Clone the repository
git clone https://github.com/imokhles/rn-updater.git
cd rn-updater

# Install dependencies
pnpm install

# Start development server
pnpm dev

Building for Production

# Build for all platforms
pnpm build

# Build for specific platform
pnpm build --mac
pnpm build --win
pnpm build --linux

๐Ÿš€ Usage

Getting Started

  1. Launch RNUpdater
  2. Select a React Native project by:
    • Dragging and dropping the project folder onto the app
    • Clicking "Select Project Folder" and browsing to your project
  3. View project information including current versions and Git details
  4. Browse available versions using pagination or load more functionality
  5. Select a target version and click "Upgrade Now"
  6. Choose package updates from the diff analysis
  7. Apply changes safely with automatic backup

Supported Project Types

  • 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.

Keyboard Shortcuts

  • Cmd/Ctrl + O: Open project folder
  • Escape: Close modals and dialogs
  • Arrow Keys: Navigate version list
  • Enter: Select version or apply changes

๐Ÿ“ Project Structure

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

๐Ÿ”ง Development

Available Scripts

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

Architecture

  • 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

๐Ÿค Contributing

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.

Development Guidelines

  1. Follow the existing code style
  2. Add tests for new features
  3. Update documentation as needed
  4. Ensure all checks pass

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

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! ๐ŸŒŸ

React Native Upgrade Helper

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

About

A powerful desktop application for automated React Native project updates and version management

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages