Developing with live reload
Editing your keyboard component doesn't require a rebundle-and-reinstall loop — DEBUG builds connect to Metro like any other RN screen.
# From your app, start Metro first:
npx react-native start
Android
Also run adb reverse tcp:8081 tcp:8081 (automatic if you use react-native run-android), and
install a debug build. Nothing else to configure — the native module already asks
ReactHostImpl for dev support, which checks for Metro on its own and applies real Fast Refresh
on save.
iOS
Also start Metro, then, one time only:
- Set
RequestsOpenAccesstotruein the extension'sInfo.plist(NSExtension > NSExtensionAttributes). - Enable "Allow Full Access" for the keyboard in Settings.
An extension has no network access without both — this is why they're off by default. Flip
RequestsOpenAccess back to false before a release build; it's a real permission prompt end
users would otherwise see for no reason.
Release/production builds on both platforms always use a committed bundle — none of this affects what ships.