[Bug]: iOS trash button does not remove a persisted environment
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/mobile
Steps to reproduce
- Install the current T3 Code iOS app from the App Store.
- Open Environments; a direct environment saved by an older installation is restored even after reinstalling the app.
- Expand the stale/offline environment.
- Tap the red trash button.
- Force-quit/relaunch the app and restart the iPhone, then repeat.
The stale row in this reproduction is a direct saved environment, not a T3 Connect relay environment.
Expected behavior
Tapping the trash button should present the “Remove from this device?” confirmation and, after confirmation, remove the saved environment and its local credentials/catalog data.
Actual behavior
Tapping the trash button has no visible effect: no confirmation alert appears and the environment is not removed. The behavior persists after force-quitting the app and restarting the iPhone.
The environment also survives deleting and reinstalling the app. This is consistent with the catalog being stored through Expo SecureStore/iOS Keychain (t3code.connection-catalog.v1), whose data can survive reinstall. The current mobile handler appears intended to call Alert.alert("Remove from this device?", ...), but that alert is never presented in this state.
Relevant source paths:
apps/mobile/src/state/use-remote-environment-registry.ts(onRemoveEnvironmentPress)apps/mobile/src/connection/catalog-store.tsapps/mobile/src/persistence/mobile-secure-storage.ts
Impact
Minor bug or occasional failure
Version or commit
Current iOS App Store release installed 2026-09-15 (exact build not shown)
Environment
T3 Code iOS app on iPhone; direct saved environment; stale endpoint offline
Logs or stack traces
Screenshots, recordings, or supporting files
No response
Workaround
None. Force-quit, restart, and reinstall do not clear the entry because the connection catalog persists in iOS Keychain. The stale row can only be ignored.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in apps/mobile/src/state/use-remote-environment-registry.ts at onRemoveEnvironmentPress, then trace persistence through apps/mobile/src/connection/catalog-store.ts and apps/mobile/src/persistence/mobile-secure-storage.ts. Reproduce with a stale direct saved environment on iOS and verify that the removal confirmation appears and that the environment, credentials, and catalog data are gone after relaunch.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, typescript
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 73/100