From 91675ec5ab8d90574f92a1d5ab1a3aa5d74e85ed Mon Sep 17 00:00:00 2001 From: "Evgeny @ SimpleX Chat" <259188159+evgeny-simplex@users.noreply.github.com> Date: Tue, 27 Oct 2026 07:46:01 +0000 Subject: [PATCH] docs: Swift functions inside types, extensions only where required (#7901) --- apps/ios/CLAUDE.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/apps/ios/CLAUDE.md b/apps/ios/CLAUDE.md index 99ee350f47..c2722350fa 100644 --- a/apps/ios/CLAUDE.md +++ b/apps/ios/CLAUDE.md @@ -1 +1,12 @@ @README.md + +## Swift code + +- Functions and computed properties are declared in the body of the type they belong to, never at file scope or in an extension of a type declared in this project. +- A member of a SimpleXChat type is declared in that type when everything it uses is available in SimpleXChat. A member that depends on the app is a static member of the app type that uses it; when several app types use it, of the type that names its concept. +- An extension is written only where Swift has no other form: + - a SwiftUI environment value, which SwiftUI requires as a property of EnvironmentValues; + - a conformance, required by an API, of a type declared in another module. +- A view modifier is a ViewModifier type applied with `.modifier(_:)`. +- A custom alignment is a static constant of a non-generic type that uses it. +- A new member is declared in its type even when the file already extends that type. Existing extensions and file-scope functions are moved only in a task that concerns them.