CLI
CLI Overview
The Bundle Drop CLI ships with @gfean/react-native-bundle-drop. Once the package is installed, run it through npx bundle-drop without a separate global installation.
Bundle Drop Sight
Use Bundle Drop Sight for React Native bundle analysis to inspect JavaScript packages and files, compare Git branches, review emitted assets, and measure Bundle Drop OTA archive size locally.
npx bundle-drop sight --platform ios
npx bundle-drop sight --compare origin/main --fetch --platform iosThe Sight CLI guide covers setup, comparison options, assets, OTA size, and troubleshooting. For existing React Native or Expo tooling, follow analysis without the CLI. JavaScript analysis needs no Bundle Drop account; OTA archive measurement requires the analyzed revision's Bundle Drop configuration and app/runtime identity.
Authentication Commands
npx bundle-drop login
npx bundle-drop whoami
npx bundle-drop logoutloginauthenticates the local machine and completes first-time project setup.whoamishows the active CLI account.logoutremoves the local CLI session.
Project Setup
The normal first-time flow is:
npx bundle-drop login
npx bundle-drop doctorlogin creates bundle.drop.config.js, detects Expo or bare React Native, previews the complete setup plan, and applies it after confirmation.
If you prefer to integrate without AI-assisted setup, create or copy the project's bundle.drop.config.js first, then follow Manual Setup. With an existing project config, login authenticates and synchronizes the project without running guided setup.
Use init to rerun setup or control project detection explicitly:
npx bundle-drop init
npx bundle-drop init --project-type expo
npx bundle-drop init --project-type bare
npx bundle-drop init --dry-runUseful setup options include:
--token <pat>authenticates with a Personal Access Token.--project-type <expo|bare>resolves an ambiguous project explicitly.--dry-runpreviews setup without applying changes.--prebuildenables the Expo layered prebuild flow.--migrate-expo-updatesexplicitly migrates an Expo project away fromexpo-updatesownership.--yesaccepts supported non-interactive prompts.
Setup owns the required Metro, Expo plugin, and native integration changes. Removed legacy commands such as separate Metro or native initialization are not part of the current CLI.
Runtime Delivery Sync
login and init synchronize the package-managed runtime-delivery trust bootstrap automatically. Refresh or repair it explicitly with:
npx bundle-drop sync
npx bundle-drop sync --dry-runsync validates the authenticated project identity and trust configuration, writes or refreshes .bundle-drop/runtime-delivery.lock.json, and repairs the matching .gitignore rules. It also recreates the file if .bundle-drop was accidentally deleted. Projects with the former runtime-delivery.generated.json filename remain readable; a successful sync validates the new lockfile before removing the legacy file. The lockfile contains public trust material rather than a private secret, so commit it with the app. If it changes, create a new native binary before relying on the new identity or keys. The dry-run form validates and previews the synchronization without changing files.
See Installation for the commit and backup rules.
Diagnostics
npx bundle-drop doctor
npx bundle-drop doctor --platform ios
npx bundle-drop doctor --project-type expoDoctor checks the current project configuration, Metro integration, native integration, runtime authority, and applicable platform identity.
Expo Build Receipts
Projects that opt into strict Expo fingerprint authority can import a receipt from EAS Build:
npx bundle-drop eas-receipt ios --build-id <eas-build-id>The default literal runtime mode does not require Expo build receipts. See Expo.
Upload Commands
Upload syntax differs slightly between Expo and bare React Native. Expo resolves version identity from its project configuration, while bare projects can provide native version files or an explicit version.
See Uploading for the full command reference.
Version Flag
npx bundle-drop --cli-version