@10play/expo-air 0.12.17 → 0.12.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +16 -141
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,156 +1,31 @@
1
- # @10play/expo-air
2
-
3
- Vibe Coding for React-Native - AI-powered on-device development with Claude.
4
-
5
- ## Features
6
-
7
- - Floating widget overlay on your iOS device
8
- - Send prompts to Claude directly from your phone
9
- - Real-time code changes via Expo Metro
10
- - Git status monitoring
11
- - Tunnel support for remote development
12
-
13
- ## Requirements
14
-
15
- - Expo SDK 54+
16
- - iOS 15.1+ (iOS only in v0)
17
- - Node.js 18+
18
-
19
- ## Installation
20
-
21
- ### 1. Install the package
22
-
23
- ```bash
24
- npm install @10play/expo-air
25
- ```
26
-
27
- ### 2. Initialize in your project
28
-
29
- ```bash
30
- npx expo-air init
31
- ```
32
-
33
- This will:
34
- - Create `.expo-air.json` configuration file
35
- - Add the plugin to your `app.json`
36
- - Update `.gitignore`
37
- - Run `expo prebuild` to generate native iOS code
38
-
39
- ### 3. Start development
40
-
41
- ```bash
42
- npx expo-air start
43
- ```
44
-
45
- This starts:
46
- - Widget Metro server (port 8082)
47
- - Prompt server (port 3847)
48
- - App Metro server (port 8081)
49
- - Cloudflare tunnels for remote access (optional)
50
-
51
- The widget will appear automatically when your app launches in DEBUG mode.
52
-
53
- ## Usage
54
-
55
- ### CLI Commands
1
+ <p align="center">
2
+ <img src="assets/cover.svg" alt="expo-air" />
3
+ </p>
56
4
 
57
5
  ```bash
58
- # Initialize expo-air in your project
59
6
  npx expo-air init
60
- npx expo-air init --force # Overwrite existing config
61
- npx expo-air init --skip-prebuild # Skip running expo prebuild
62
-
63
- # Start the development environment
64
- npx expo-air start
65
- npx expo-air start --no-tunnel # Skip tunnel (local network only)
66
- npx expo-air start --no-build # Skip building the app
67
- npx expo-air start --no-server # Skip starting the WebSocket server
68
-
69
- # Start only the WebSocket server
70
- npx expo-air server
71
7
  ```
72
8
 
73
- ### Port Options
9
+ Connect your device
74
10
 
75
11
  ```bash
76
- npx expo-air start \
77
- --port 3847 \ # Prompt server port
78
- --widget-port 8082 \ # Widget Metro port
79
- --metro-port 8081 # App Metro port
80
- ```
81
-
82
- ## Configuration
83
-
84
- ### .expo-air.json
85
-
86
- Configuration file created by `expo-air init`:
87
-
88
- ```json
89
- {
90
- "autoShow": true,
91
- "ui": {
92
- "bubbleSize": 60,
93
- "bubbleColor": "#000000"
94
- }
95
- }
12
+ npx expo-air fly
96
13
  ```
97
14
 
98
- | Option | Type | Default | Description |
99
- |--------|------|---------|-------------|
100
- | `autoShow` | boolean | `true` | Auto-show widget on app launch |
101
- | `ui.bubbleSize` | number | `60` | Size of the floating bubble |
102
- | `ui.bubbleColor` | string | `"#000000"` | Color of the floating bubble |
103
-
104
- ### .expo-air.local.json (gitignored)
105
-
106
- Auto-generated file containing tunnel URLs for the current session:
107
-
108
- ```json
109
- {
110
- "serverUrl": "wss://...",
111
- "widgetMetroUrl": "https://...",
112
- "appMetroUrl": "https://..."
113
- }
114
- ```
15
+ Boom. You can work from anywhere.
115
16
 
116
17
  ## How It Works
117
18
 
118
- 1. **App launches** - `ExpoAirAppDelegateSubscriber` triggers (DEBUG builds only)
119
- 2. **Config loaded** - Settings read from `Info.plist` (set by plugin during prebuild)
120
- 3. **Widget loads** - `FloatingBubbleManager` loads widget bundle from Metro server
121
- 4. **Connection established** - Widget connects to prompt server via WebSocket
122
- 5. **Ready to vibe** - Send prompts to Claude from your device
19
+ <p align="center">
20
+ <img src="assets/architecture.svg" alt="How expo-air works" />
21
+ </p>
123
22
 
124
- ## Development Mode Only
125
-
126
- The widget is designed for development only and will **never appear in production builds**. This is enforced via:
127
-
128
- - `#if DEBUG` guards in native Swift code
129
- - Widget loads from Metro dev server (no bundled JS)
130
- - No impact on release builds
131
-
132
- ## Troubleshooting
133
-
134
- ### Widget not appearing
135
-
136
- 1. Ensure you're running a DEBUG build (not release/production)
137
- 2. Check that Metro servers are running (`npx expo-air start`)
138
- 3. Verify `autoShow: true` in `.expo-air.json`
139
- 4. Check Xcode console for `[expo-air]` logs
140
-
141
- ### Connection issues
142
-
143
- 1. For local development, ensure device is on same WiFi as your computer
144
- 2. For remote development, use tunnels (`npx expo-air start` enables by default)
145
- 3. Check that ports 3847, 8081, 8082 are not blocked
146
-
147
- ### Prebuild issues
148
-
149
- If prebuild fails, try:
150
- ```bash
151
- npx expo prebuild --platform ios --clean
152
- ```
23
+ expo-air creates a real-time feedback loop between your phone and Claude Code.
24
+ A floating chat widget — running in its own isolated Hermes runtime — overlays your app
25
+ and connects via Cloudflare tunnels to a prompt server on your machine.
153
26
 
154
- ## License
27
+ When you send a message, Claude edits your project files directly,
28
+ Metro picks up the changes, and HMR pushes them to your device instantly.
29
+ The whole loop takes seconds.
155
30
 
156
- MIT
31
+ [See original tweet](https://x.com/SerfatyGuy/status/2021233783769338031) · [Read the docs](https://expo-air.10play.dev/)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@10play/expo-air",
3
- "version": "0.12.17",
3
+ "version": "0.12.19",
4
4
  "description": "Vibe Coding for React-Native",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",