Quick Start
Get your first JetStart project up and running in just 5 minutes! This guide will walk you through creating a new project, starting the development server, and making your first hot reload change.
Step 1: Create a New Project
Create a new JetStart project with a single command:
npx jetstart create my-awesome-app --package com.example.myapp
The package name should follow Android package naming conventions (e.g., com.yourcompany.appname). This will be used as your app's unique identifier.
What Gets Created?
JetStart generates a complete Android project structure:
my-awesome-app/
├── app/
│ ├── build.gradle # App-level Gradle configuration
│ ├── proguard-rules.pro # ProGuard rules
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/example/myapp/ # Your app package
│ │ ├── MainActivity.kt # App entry point
│ │ ├── data/ # Data models
│ │ ├── logic/ # Business logic
│ │ └── ui/ # UI screens & components
│ │ ├── NotesScreen.kt
│ │ └── NotesViewModel.kt
│ └── res/ # Android resources
├── build.gradle # Root build file
├── settings.gradle
├── gradle.properties
├── jetstart.config.json # JetStart configuration
├── gradlew # Gradle wrapper (Linux/macOS)
├── gradlew.bat # Gradle wrapper (Windows)
└── README.md
Step 2: Navigate to Your Project
cd my-awesome-app
Step 3: Start the Development Server
Launch the JetStart development server:
npx jetstart dev
You'll see output like this:
Starting JetStart development server...
[ADB] Found at: C:\Android\platform-tools\adb.exe
[Core] Starting JetStart Core server...
[Logs] Server listening on port 8767
[Core] Injected buildConfigFields into build.gradle
[Core] Injected server URL: ws://192.168.43.220:8766
[Core] [JsCompiler] kotlinc-js ready: kotlinc-js.bat
[Core] Found kotlinc at: C:\kotlinc\bin\kotlinc.bat
[Core] Found d8 at: C:\Android\build-tools\34.0.0\d8.bat (build-tools 34.0.0)
[Core] Using Android SDK: android-34
[Core] Added 242 transforms-3 JARs to classpath
[Core] Built static classpath with 242 entries + 1 project entries
[Core] 🔥 True hot reload enabled (DEX-based)
[Core] HTTP server listening on 0.0.0.0:8765
[Core] WebSocket server listening on port 8766
✔ [Core] JetStart Core is running!
[Core] HTTP Server: http://192.168.43.220:8765
[Core] WebSocket Server: ws://192.168.43.220:8766
[Core] Session ID: YZj0l1Ms
[Core] Session Token: fMLoUwp6w3Cm
ℹ Emulator deployment not configured: deployer=false, packageName=null
✔ JetStart dev server is running!
ℹ Local: http://localhost:8765
ℹ Network: http://192.168.43.220:8765
ℹ Project: test-app
Scan QR or connect manually:
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█ ▄▄▄▄▄ █▀█ █▄ ▀▀▀▄▀██▄▀█ ▄▄▄▄▄ █
█ █ █ █▀▀▀█ ▄▀ ███▄ ▄█ ▄█ █ █ █
█ █▄▄▄█ █▀ █▀▀██▄▄▀ ▄▄ ▄███ █▄▄▄█ █
█▄▄▄▄▄▄▄█▄▀ ▀▄█ █ █▄▀ ▀▄█ █▄▄▄▄▄▄▄█
█▄ ▄ ▀▄ ▄▄▀▄▀▀▀▀▄ ▀▀▄█▄▄█ ▀ █▄▀ ▀█
█ ▄█▄▄▄▀▀█▄█▀ ▄ ▄████ ▄█▄█▄▄▀▄ █▀█
█▄ █ ▄█▄▀▄ ▄█▄█▄ ▀ █▀ ▀▀ █▀▀█▄ ▀▄ █
█▀▀▀█▄█▄ █▀█ ▄█▀█▀█▀▀ ▀▀▄ ▀ ██▀█▀█
██▄ ▄▄▀▄█ ▀▄▀▀▀▀█▄█▀ ▄▄▀▀▀▀▀▄▄█▀▀█
█ █▀▀▀▄▄█ ▄▀█▀ ▄ ██▀█ ▀▄▄▀ ▄█ ▀██
█ ▄ ▄█▄▄▄ ███▄█▄▄ ▄▀█ ▀ ▀▀▀▀▀▄▀█▀ █
█ █▄ █ ▄▄▄██ ▄█▀ ███▀ ▀▀▀█ █ ▄█▀▀██
█▄██▄▄▄▄▄▀ ▄▄▀▀▀▄ ▄█ ▀█ ▀ ▄▄▄ ▀▀▀█
█ ▄▄▄▄▄ █▄ ██▀ ▄ ▄▄▄█▀ ▄▄ █▄█ █ ▀▀█
█ █ █ █ ▄▄█▄█▄▄▀▄█▄▀▀▄█ ▄▄ ▄▀ ▀█
█ █▄▄▄█ █ ▄▄ ▄█▀ █▀█ ▀▄▀█ ▀▄▀███
█▄▄▄▄▄▄▄█▄▄▄▄█████▄▄▄█▄▄█▄███▄██▄██
ℹ IP: 192.168.43.220
ℹ Session: YZj0l1Ms
ℹ Token: fMLoUwp6w3Cm
ℹ Watching for file changes...
ℹ Press Ctrl+C to stop
JetStart started two servers:
- HTTP Server (port 8765) - Serves APK files for download
- WebSocket Server (port 8766) - Handles real-time hot reload updates
Step 4: Connect Your Device
You have three ways to connect your Android device:
Option A: QR Code (Recommended)
First, install the JetStart Client app on your Android device:
-
Download the JetStart Client APK:
📥 Download JetStart Client APK
Alternatively, visit GitHub Releases to download the latest APK (e.g.,
jetstart-client-v1.2.0.apk). -
Disable Play Protect (required for now):
ImportantSince the JetStart Client app is not yet on the Play Store, you'll need to disable Play Protect temporarily.
- Settings → Security → Google Play Protect
- Tap Settings (gear icon) → Toggle off "Scan apps with Play Protect"
- See Client Documentation for detailed steps
-
Install the APK:
- Tap the downloaded APK file
- Tap "Install" when prompted
- Grant permissions (Camera, Install packages)
-
Connect to dev server:
- Open the JetStart Client app on your device
- Tap "Create Connection"
- Point camera at the QR code displayed in your terminal
- Connection established automatically!
-
Your app installs automatically:
- Once connected, JetStart Client triggers the initial build
- The APK downloads and installs automatically
- Your app launches and is ready for hot reload!
Option B: Manual Connection
If QR scanning doesn't work:
-
Install JetStart Client app (see Option A, steps 1-3)
-
Open JetStart Client app on your device
-
Tap "Create Connection" then click enter details manually
-
Enter connection details from your terminal:
- Host:
192.168.43.220(your computer's IP) - Session ID:
YZj0l1Ms - Token:
fMLoUwp6w3Cm
- Host:
-
Tap "Connect"
Option C: Android Emulator
If you don't have a physical device, you can use an Android Virtual Device (AVD):
-
Create and Start your emulator:
npx jetstart android-emulator- Follow the prompts to "Create JetStart-optimized emulator" (if you haven't yet).
- Then select "Start emulator" from the main menu to launch it.
-
Run the development session with automated deployment:
npx jetstart dev --emulator
JetStart will detect your running emulator, automatically build and install the JetStart Client APK, and launch the app with a hot-reload connection established.
Option D: Web Emulator (No Device Required: experimental)
Don't have an Android device? Use the web emulator:
- Open a new terminal window
- Run explicit web emulator command:
npx jetstart dev --web - JetStart automatically opens your browser to
http://localhost:8765 - This will redirect you to the JetStart Web Emulator with your session
Alternatively, if jetstart dev is already running:
- Manually open
http://localhost:8765in your browser - It will redirect and connect automatically
Make sure your computer and Android device are on the same Wi-Fi network!
The JetStart Client app is available as an Android APK only. It supports Android 7.0+ (API 24+). iOS support is not available.
Step 5: Make Your First Hot Reload Change
Now for the exciting part - let's see hot reload in action!
-
Open
app/src/main/java/com/example/myapp/ui/NotesScreen.ktin your editor -
Find the header
Textcomponent and change its content:
// ... inside Column
Text(
text = "Hello, JetStart! 🚀", // Change this text from "✅ DESUGARING ! 🚀 HOT "
style = MaterialTheme.typography.displaySmall,
modifier = Modifier.padding(start = 16.dp, top = 16.dp, bottom = 20.dp)
)
-
Save the file
-
Watch your device update in under 100ms! ⚡
The text on your connected device or web emulator will change instantly - no rebuild, no reinstall!
Understanding Hot Reload
JetStart uses a two-tier hot reload system:
Tier 1: DEX Hot Reload (Fast - under 100ms)
Any .kt file change that compiles in isolation triggers DEX hot reload:
- ✅
@Composablefunction body changes - ✅ Text, color, layout, modifier changes
- ✅ Logic changes inside Kotlin classes
- ✅ Any class
kotlinccan compile independently
JetStart compiles the file, generates DEX with d8, and pushes it to your device via WebSocket. No reinstall required.
Tier 2: Full Gradle Build (Slower - 30-60s)
Some changes cannot be hot-reloaded and require a full Gradle rebuild:
- ⏳ New library dependencies in
build.gradle - ⏳ Resource file changes (
.xml, drawables, strings) - ⏳
AndroidManifest.xmlchanges - ⏳ Any
.ktfile that fails independent compilation
These produce a new APK that the client downloads and installs automatically.
Viewing Logs
While developing, you might want to see app logs. Open a new terminal and run:
npx jetstart logs --follow
This shows real-time logs from your connected devices:
[INFO] [CLIENT] Connection established
[INFO] [CORE] Client connected: device-abc123
[INFO] [BUILD] Hot reload: kotlinc + d8 completed in 84ms
[INFO] [CLIENT] UI updated in 87ms
Filter Logs
# Show only errors
jetstart logs --level error
# Show only build logs
jetstart logs --source BUILD
# Show last 50 lines
jetstart logs --lines 50
Building for Production
When you're ready to build a production APK:
npx jetstart build --release
The APK will be in /build/.
Common Commands
Here are the most common commands you'll use:
# Create new project
jetstart create <name> --package <com.example.app>
# Start development server
jetstart dev
# Build APK
jetstart build
# View logs
jetstart logs --follow
# Check dependencies
jetstart install-audit
# Manage emulators
jetstart android-emulator
Next Steps
Congratulations! You've created your first JetStart project and experienced hot reload. Here's what to explore next:
- Learn the Architecture - How hot reload works
- Explore CLI Commands - Full command reference
- Read Guides - Best practices and tips
- Troubleshooting - Solutions to common issues
Having Issues?
If something isn't working:
- Check Troubleshooting Guide
- Verify System Requirements
- Run
jetstart install-auditto check dependencies - Ask for help on GitHub Discussions
Happy coding with JetStart! 🚀