Skip to content

Commit cc743a4

Browse files
docs: note web-target OptionPicker nested-button dev overlay caveat (#158)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
1 parent 5aec696 commit cc743a4

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,3 +178,4 @@ None currently tracked. Do not trust a static bug list — run `npx tsc --noEmit
178178
- Primary verification here is the trio already documented above (Verification section): `npx tsc --noEmit`, `npm test`, `npm run lint`. Test/lint counts drift upward over time — the bar is exit 0, tests all passing, and lint 0 *errors* (warnings are baseline noise). No device/simulator is available.
179179
- For a UI smoke test you CAN run the web target: `npx expo start --web` (Metro serves on `http://localhost:8081`; first bundle compile is heavy — warm it with a `curl http://localhost:8081/` then request the `/index.ts.bundle?platform=web...` URL from the served HTML before opening a browser). The app renders and navigation/tabs work in Chrome.
180180
- Web-target caveat: `expo-secure-store` is native-only, so any flow that writes a password (e.g. saving a server via `services/storage.ts` `saveServer`, which unconditionally calls `SecureStore.setItemAsync`) FAILS on web with "Failed to save server". This is a web-platform limitation, not a bug — don't try to "fix" it. Flows backed only by AsyncStorage (theme/appearance, language, other preferences) work fine on web and are the safest things to demo without a device or a real qBittorrent server.
181+
- Web-target caveat 2: some pickers (e.g. `OptionPicker`) trip React-DOM's dev-only "`<button>` cannot be a descendant of `<button>`" hydration warning on web, which pops a red error toast / full-screen Expo error overlay in the web dev build. This is a react-native-web DOM-nesting quirk in the dev overlay only; the underlying action (e.g. the theme actually switching) still completes, and it does not affect the real iOS target. Dismiss the overlay and continue — don't treat it as a real app bug.

0 commit comments

Comments
 (0)