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.