๐ Spotlight: @jeremicz.com
I really like the #SwiftPackage approach. It creates a clean and readable environment within larger workspaces. ๐
The #Xcode Workspace works perfectly with folders, mak...
๐ bsky.app/profile/jeremicz.com/pos...
#IndieSpotlight
I really like the #SwiftPackage approach. It creates a clean and readable environment within larger workspaces. ๐
The #Xcode Workspace works perfectly with folders, making it easy to create new packages and manage their structures inside the IDE. ๐งฐ
#DevDiary #BuildInPublic
All Auth dependencies are registered in ๐ ๏ธ Auth #Assembly. This is a core place of preparing the shareable logic and resolve it when it is needed.
Each #Module can have many assemblies to make clear division how the #SwiftPackage is built. ๐งฉ
#DevDiary #iOS #Architecture #Swift
Dark code editor showing a Swift file defining CommonModule class with assemblies: StoreAssembly(), AuthAssembly(), DeviceAssembly() and import Core.
In my experience, the fewer targets a #SwiftPackage has, the better. ๐
To facilitate function separation, I created Assembly - submodules that enable code separation within the module. ๐งฉ
Tomorrow, I will show you one of the assemblies. ๐ก
#BuildInPublic #DevDiary #Swift #SPM
Dark IDE sidebar showing a Swift Package structure: Core and Common folders, many Feature modules (Agencies, Dashboard, Fares, Feed, Launch, Map, Route, Stops, Timetables, Trips, User, Vehicles) and package dependencies.
Every #Module represents a target located in a #SwiftPackage. There are three types:
๐๏ธ Core: An architecture-only module that can be reused in any app.
๐ Commons: Shareable modules providing global logic.
๐ Features: Modules that provide specific behavior.
#BuildInPublic
โ๏ธ ๐๐ฎ๐ฑ๐ณ๐ฐ๐ท๐ช๐ฏ๐จ ๐๐ธ๐ช๐ง๐ต ๐๐ข๐ค๐ฌ๐ข๐จ๐ฆ ๐๐ค๐ณ๐ช๐ฑ๐ต๐ด ๐๐ช๐ต๐ฉ ๐๐๐ต๐๐ถ๐ฃ ๐๐ค๐ต๐ช๐ฐ๐ฏ๐ด by Daniel Saidi (@danielsaidi.bsky.social)
Stop manually configuring ๐๐๐๐๐ถ๐ฃ ๐๐ค๐ต๐ช๐ฐ๐ฏ๐ด. Get ready-to-use workflows for building, testing, and docs.
#GitHub #Automation #SwiftPackage
danielsaidi.com/blog/2025/11...
So it begins... ๐
Until now, the package had #MainActor default isolation. This was intentional to gain a clear understanding of where the #Sendable declaration is necessary.
Now, it's time to make this package truly thread-safe! ๐
#BuildInPublic #SwiftPackage #concurrency
I've added more modifier variations!
You can now set string as body content, automatically setting the #ContentType to text/plain. Additionally, if you wish to #override all the headings saved in the configuration, you now have that opportunity! ๐ก
#BuildInPublic #SwiftPackage
It is so satisfying! ๐
I have cleaned the code, and here is the final result. The custom #Request uses associated types for the #Response Body and Error types.
The code is clean and type-safe. Under the hood, it builds a complex URL Request. ๐ ๏ธ
#BuildInPublic #SwiftPackage
Morning #debugging session. ๐
I can't find a proper solution for sharing Configuration through the Request tree, so I started with a small case: the EmptyRequest with one modifier. ๐ป
Working on a #SwiftPackage is easier with a sample app that you can run to test your code. ๐ฆ
#BuildInPublic
This is how it looks. ๐ง
The method modifier sets the appropriate method in the configuration. I'm uncertain if this is the final solution, as I have concerns about the store location and how to pass configuration through the tree. ๐ค
Brainstorm! โ๏ธ
#SwiftPackage #BuildInPublic
Work, work... ๐ผ
I have developed basic modifiers to configure URLRequest in the future, along with basic request methods. ๐ ๏ธ
Now, I need to determine how to build a configuration within the Request tree. ๐ณ
#BuildInPublic #SwiftPackage #SPM
Having Request Modifier marks the second step in my #SwiftyNetworking package refactor. ๐
Unlike before, I now rely on modifiers. Previously, #SwiftPackage copied the Request, modified the configuration, and returned a new object.
Now, it's more aligned with #SwiftUI. ๐
#iOS
When designing a #SwiftPackage, I enjoy crafting code that predicts the eventual results of development. ๐ ๏ธ
Here are three sample requests using the GET, POST, and DELETE methods. ๐ฅ
Each request method takes a path parameter and inherits from the Request protocol.
#BuildInPublic
Bill Gates' first game was a lunar lander simulator. In honoring 50yrs of Microsoft I threw together a simple #SwiftPackage replicating it. Enjoy! github.com/dl-alexandre...
www.gatesnotes.com/meet-bill/so...
TIL you can load up your #SwiftPackage with warnings that wonโt show up in projects using it.
Ever wondered how to handle images, colors, and even custom fonts in your #SwiftPlaygrounds projects right from your #iPad? Letโs dive into this with the help of #Textastic and explore the structure of a #SwiftPackage project. ๐โจ
youtu.be/q4C0GdtkNjo