CodePush is an App Center feature that enables React Native developers to deploy mobile app updates directly to their users' devices. It consists of two parts: CodePush Server where developers can publish app updates to (e.g. JS, HTML, CSS or image changes), and CodePush React Native Client SDK that enables querying for updates from within an app.
We announced that Visual Studio App Center will be retired on March 31, 2025. You can learn more about the support timeline and alternatives on https://aka.ms/appcenter/retire. In order to let developers keep using CodePush functionality after App Center is fully retired, we created a standalone version of CodePush Server that can be deployed and used independently from App Center itself. Code of this standalone version can be found in this repository. It is fully compatible with CodePush React Native Client SDK.
The CodePush server, located in the api
subdirectory, allows developers to build, deploy and manage CodePush updates themselves.
For detailed information about the CodePush server, including installation instructions and usage details, please refer to the CodePush Server README.
The CodePush CLI, located in cli
subdirectory, is a command-line tool that allows developers to interact with the CodePush server. For detailed information about the CodePush CLI, including installation instructions and usage details, please refer to the CodePush CLI README.
While we cannot accept contributions or issues in this repository; however, as a permissively licensed open-source project, it is ready for community development and forks independently.
This code is provided "as is", because of that Microsoft will not provide support services for it.
Microsoft grants you access to the code in this repository under the MIT License, see the LICENSE to learn more.
Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The license for this code does not grant you rights to use any Microsoft names, logos, or trademarks. Go to Microsoft Trademark and Brand Guidelines for more information.
Privacy information can be found at https://privacy.microsoft.com/.
A modern web interface for managing CodePush applications, deployments, access keys, and collaborators.
- Google OAuth authentication
- Dashboard with key metrics
- App management
- Deployment tracking and creation
- Access key management
- Collaborator management
- Modern, responsive UI built with Material-UI
- TypeScript for type safety
- Node.js 16 or later
- npm or yarn
- Access to ${domain} API server
- Clone the repository:
git clone <repository-url>
cd codepush-web-ui
- Install dependencies:
npm install
- Create a
.env
file in the root directory:
VITE_API_URL=https://${domain}
- Start the development server:
npm run dev
The application will start on port 3000 and will proxy API requests to ${domain}.
To create a production build:
npm run build
The built files will be in the dist
directory.
src/
βββ components/ # Reusable UI components
βββ contexts/ # React contexts (auth, etc.)
βββ pages/ # Page components
βββ App.tsx # Main app component
βββ main.tsx # Entry point
The application uses Google OAuth for authentication. The authentication is handled by the ${domain} server.
The application uses the following API endpoints from ${domain}:
/auth/login/google
- Google OAuth login/auth/logout
- Logout/api/user/profile
- Get current user profile/api/apps
- App management/api/deployments
- Deployment management/api/access-keys
- Access key management/api/collaborators
- Collaborator management
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
A modern, feature-rich web dashboard for Microsoft CodePush, built with React, TypeScript, and Material-UI. This dashboard provides a comprehensive interface for managing mobile app deployments, collaborators, and releases.
- Google OAuth Integration: Secure login and registration using Google accounts
- Access Key Authentication: Support for CodePush access keys
- Protected Routes: Authenticated access control for all dashboard features
- Automatic Session Management: Seamless token handling and renewal
- Create & Configure Apps: Add new mobile applications to CodePush
- App Overview Dashboard: View app statistics, deployments, and collaborators
- App Transfer: Transfer ownership of applications between accounts
- App Deletion: Remove applications with confirmation dialogs
- Multiple Deployment Environments: Support for staging, production, and custom deployments
- Create Deployments: Set up new deployment environments for your apps
- Deployment Statistics: View active installations, downloads, and metrics
- Deployment Keys: Manage and copy deployment keys for client integration
- Delete Deployments: Remove deployments with confirmation safeguards
- Bundle Upload: Upload app bundles via file upload or URL
- Drag & Drop Interface: Modern file upload with drag-and-drop support
- Release Configuration: Set app versions, descriptions, and release notes
- Mandatory Updates: Mark releases as mandatory for forced updates
- Rollout Percentage: Gradual rollout with percentage-based deployment
- Release History: Complete history of all deployments and releases
- Promote Releases: Promote releases between environments (staging β production)
- Rollback Capability: Quick rollback to previous stable releases
- Release Metrics: Track download success, failures, and active installations
- Conditional Releases: Target specific app versions and user segments
- Add Collaborators: Invite team members to manage apps
- Permission Management: Owner and Collaborator role-based access
- Global Collaborator View: Overview of all collaborators across apps
- Collaborator Removal: Remove team members from applications
- Dark Theme: Modern dark theme with customizable colors
- Responsive Design: Mobile-friendly interface that works on all devices
- Interactive Dashboard: Quick navigation with statistics cards
- Real-time Notifications: Toast notifications for all actions
- Loading States: Smooth loading indicators for better UX
- Error Handling: Comprehensive error messages and recovery options
- Statistics Dashboard: Overview of apps, deployments, and collaborators
- Deployment History: Detailed timeline of all releases
- Metrics Tracking: Monitor download rates, success rates, and user adoption
- Filter & Search: Find specific deployments and releases quickly
- API Integration: Full integration with CodePush REST API
- Export Capabilities: Copy deployment keys and configuration
- Debug Information: Detailed logging for troubleshooting
- Development Guide: Built-in guide for using all features
- Frontend Framework: React 18 with TypeScript
- UI Library: Material-UI (MUI) v5
- Routing: React Router v6
- State Management: React Context API
- HTTP Client: Axios
- Notifications: React Toastify
- Authentication: Google OAuth 2.0
- Build Tool: Vite
- Styling: Emotion CSS-in-JS
- Clone the repository:
git clone <repository-url>
cd ct-code-push
- Install dependencies:
npm install
# or
yarn install
- Set up environment variables:
cp .env.example .env
Configure the following variables in .env
:
VITE_API_URL=https://your-codepush-server.com/api
- Start the development server:
npm run dev
# or
yarn dev
- Open your browser and navigate to
http://localhost:5173
VITE_API_URL
: URL of your CodePush server API endpoint
The application requires a CodePush server with Google OAuth configured. Ensure your server supports:
/auth/login/google
- Google OAuth login endpoint/auth/register/google
- Google OAuth registration endpoint/auth/accesskey
- Access key retrieval endpoint/account
- User profile endpoint
- Navigate to the dashboard and sign in with Google
- Create your first app using the "Add App" button
- Set up deployment environments (staging, production)
- Upload your first bundle or promote between environments
- Select an app from the Apps page
- Create deployments for different environments
- Upload bundles with version information and release notes
- Monitor deployment metrics and user adoption
- Promote successful staging releases to production
- Navigate to the Collaborators section
- Add team members by email address
- Manage permissions and access levels
- View all collaborators across your applications
- Rollback: Quickly revert to previous stable releases
- Gradual Rollout: Release to a percentage of users first
- Mandatory Updates: Force users to update for critical fixes
- Cross-Environment Promotion: Move releases between staging and production
src/
βββ components/ # Reusable UI components
β βββ Layout.tsx # Main application layout
β βββ ProtectedRoute.tsx # Authentication wrapper
βββ contexts/ # React contexts
β βββ AuthContext.tsx # Authentication state management
βββ pages/ # Page components
β βββ Dashboard.tsx # Main dashboard
β βββ Apps.tsx # Application management
β βββ Deployments.tsx # Deployment management
β βββ DeploymentHistory.tsx # Release history
β βββ DeploymentDetails.tsx # Individual deployment view
β βββ BundlePush.tsx # Bundle upload interface
β βββ Collaborators.tsx # Team management
β βββ AppTransfer.tsx # App ownership transfer
β βββ Login.tsx # Authentication page
β βββ OAuthCallback.tsx # OAuth callback handler
β βββ Guide.tsx # User guide and documentation
βββ theme/ # Material-UI theme configuration
β βββ index.ts # Custom theme definition
βββ utils/ # Utility functions
β βββ api.ts # API client configuration
βββ App.tsx # Root component with routing
βββ main.tsx # Application entry point
- Protected Routes: All dashboard routes require authentication
- CSRF Protection: Cross-site request forgery protection
- Secure Token Storage: Automatic token management and renewal
- Permission-Based Access: Role-based access control for team features
- Input Validation: Client-side validation for all forms
- Error Boundary: Graceful error handling and recovery
The dashboard integrates with the following CodePush API endpoints:
GET /account
- Get user profilePOST /auth/login/google
- Google OAuth loginPOST /auth/register/google
- Google OAuth registrationGET /auth/accesskey
- Retrieve access keys
GET /apps
- List all applicationsPOST /apps
- Create new applicationPATCH /apps/:name
- Update applicationDELETE /apps/:name
- Delete application
GET /apps/:name/deployments
- List deploymentsPOST /apps/:name/deployments
- Create deploymentDELETE /apps/:name/deployments/:deployment
- Delete deploymentGET /apps/:name/deployments/:deployment
- Get deployment detailsPOST /apps/:name/deployments/:deployment/rollback
- Rollback deployment
POST /apps/:name/deployments/:deployment/release
- Upload releasePATCH /apps/:name/deployments/:deployment/promote
- Promote releaseGET /apps/:name/deployments/:deployment/history
- Get release historyGET /apps/:name/deployments/:deployment/metrics
- Get deployment metrics
GET /apps/:name/collaborators
- List collaboratorsPOST /apps/:name/collaborators/:email
- Add collaboratorDELETE /apps/:name/collaborators/:email
- Remove collaborator
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow TypeScript best practices
- Use Material-UI components consistently
- Write comprehensive error handling
- Add loading states for all async operations
- Test authentication flows thoroughly
This project is licensed under the MIT License - see the LICENSE.md file for details.
For support and questions:
- Check the built-in Guide page in the dashboard
- Review the API documentation
- Create an issue in the repository
- Contact your CodePush server administrator
See the deployment history page within the application for tracking releases and updates.
Om Prakash Tiwari |
Kanishk Gupta Twitter | LinkedIn |
---|