Files
2026-03-05 09:13:24 +00:00

2.6 KiB

SimpleX Chat iOS -- Known Gaps & Recommendations

Aggregation of [GAP] and [REC] annotations discovered during specification analysis. Organized by product area.

Related spec: spec/README.md


UI: Error Feedback

GAP: No user-visible error on FFI command failure

Source: spec/architecture.md API calls via chatApiSendCmd return APIResult<R> which can be .error(ChatError). Not all error cases surface user-visible feedback in the UI.

REC: Audit all chatApiSendCmd call sites and ensure .error cases show appropriate alerts or banners.


UI: Loading States

GAP: No loading indicator during initial chat list population

Source: spec/client/chat-list.md When ChatModel.chatInitialized transitions to true, the chat list appears fully formed. There is no intermediate loading state for users with large numbers of chats.

REC: Add a progress indicator during apiGetChats for users with 100+ conversations.


Flows: Group Lifecycle

GAP: Bulk member role change — API supports batch but UI uses single-member calls

Source: spec/api.md APIMembersRole accepts NonEmpty GroupMemberId, supporting batch role changes at the API level. However, the iOS UI (GroupMemberInfoView.swift) currently invokes it with a single member at a time.

REC: Expose batch role change in the UI for group admins managing large groups.


Security

GAP: Database passphrase not enforced by default

Source: spec/database.md Database encryption is optional and requires the user to manually set a passphrase. New installations start with an unencrypted database.

REC: Consider prompting users to set a database passphrase during onboarding, especially on devices without hardware encryption.

GAP: No forward secrecy indicator in UI

Source: product/glossary.md While the double-ratchet protocol provides forward secrecy, there is no UI indicator showing whether a specific conversation has achieved forward secrecy (i.e., completed initial key exchange ratcheting).

REC: Add a security indicator in contact/group info showing ratchet state.


Documentation

GAP: Haskell Store layer not fully specified

Source: spec/database.md The Haskell Store modules (Store/Direct.hs, Store/Groups.hs, Store/Messages.hs, etc.) are referenced by function name but not fully specified with parameter types and return types.

REC: Expand database spec with key Store function signatures as the specification matures.