Majid Jabrayilov
@mecid.bsky.social
📤 1734
📥 587
📝 542
Swift Developer: iOS, watchOS, visionOS, tvOS, macOS.
https://swiftwithmajid.com
pinned post!
Hi, I'm Majid. I’m an indie developer building apps for iOS, watchOS, visionOS, and all other Apple platforms. I mostly build health-related apps like CardioBot, allowing you to understand and improve heart metrics. I try to share my experiences by writing blog posts.
swiftwithmajid.com
loading . . .
Home
Majid’s blog about Swift development
https://swiftwithmajid.com
over 1 year ago
2
32
1
You can display emphasized variants of system text styles using symbolic traits. In SwiftUI, use the bold() modifier; in UIKit, use traitBold in the UIFontDescriptor API. The emphasized weights can be medium, semibold, bold, or heavy. It is not always bold.
2 days ago
0
5
1
SwiftUI introduces the contentMargins view modifier, allowing us to shift a particular type of content in the view. The contentMargins view modifier is a crucial piece of the safe area management that was missing before in SwiftUI.
swiftwithmajid.com/2024/04/23/c...
5 days ago
0
5
1
There are three ways to define the size of a column inside a lazy grid in SwiftUI. It can be fixed or flexible or adaptive. The most exciting option is adaptive. The adaptive option allows us to place multiple items in the space of a single flexible column.
swiftwithmajid.com/2020/07/08/m...
7 days ago
0
3
1
The recent version of the SwiftUI framework introduces a trigger value pattern across its APIs. Trigger value allows us to attach a view modifier that runs its action whenever the trigger value changes.
swiftwithmajid.com/2024/04/02/t...
8 days ago
0
4
1
reposted by
Majid Jabrayilov
Lucas van Dongen - Swift developer
12 days ago
I wrote an article about it a while ago, absolutely fascinating stuff
getstream.io/blog/acceler...
loading . . .
Boost Performance 100x Accelerate Framework
How we improved performance 100x in some parts of our Video SDK by using the Accelerate Framework.
https://getstream.io/blog/accelerate-framework/
1
2
1
Apple introduced the Accelerate framework many years ago, so it is available almost on every version of Apple platforms. It is a high-performance and energy-efficient way of doing computations using the vector-processing capabilities of the device.
swiftwithmajid.com/2025/05/13/o...
12 days ago
2
6
0
Did you know that you can easily animate SF Symbols in your apps using the symbolEffect view modifier? I’ve used the heart symbol in my HeartRateView view and want it to bounce whenever its value changes to grab attention.
swiftwithmajid.com/2021/12/21/s...
14 days ago
0
5
1
reposted by
Majid Jabrayilov
Snapp iOS Weekly
15 days ago
📜 𝐵𝑢𝑖𝑙𝑑𝑖𝑛𝑔 𝑎 𝐿𝑖𝑠𝑡 𝑅𝑒𝑝𝑙𝑎𝑐𝑒𝑚𝑒𝑛𝑡 𝑖𝑛 𝑆𝑤𝑖𝑓𝑡𝑈𝐼 by Majid Jabrayilov (
@mecid.bsky.social
) Build custom scrollable containers using ScrollView with lazy stacks and Container View APIs. Create reusable ScrollingSurface, DividedCard, and SectionedSurface components for full control over the UI.
#SwiftUI
loading . . .
Building List replacement in SwiftUI
Whenever you consider creating a scrollable screen in SwiftUI, you might think of using a List. However, it’s not always the best choice. Lists are great for displaying uniform data. For anything…
https://swiftwithmajid.com/2026/04/06/building-list-replacement-in-swiftui/
0
3
2
SwiftUI provides a way to keep the structural identity of our view hierarchy while changing the layout container using the new AnyLayout type. SwiftUI doesn’t recreate the views. It only moves them according to the new layout.
swiftwithmajid.com/2022/08/16/c...
15 days ago
0
7
1
GeometryGroup view modifier isolates the geometry of the view and doesn’t animate every node of the view separately. Instead, it acts like a barrier and affects the whole view as a single item.
swiftwithmajid.com/2020/04/15/l...
16 days ago
0
3
1
reposted by
Majid Jabrayilov
Snapp iOS Weekly
18 days ago
Authors:
@tracymiranda.bsky.social
,
@fatbobman.com
,
@natpanferova.bsky.social
,
@mecid.bsky.social
,
@0xwdg.bsky.social
, Mark Szymczyk, Franz Enzenhofer, Hypersolo. Never miss an issue → subscribe: ios-newsletter.snappmobile.io/subscribe
loading . . .
Snapp iOS Weekly | Subscription
I agree to receive your newsletters and accept the data privacy statement.
https://ios-newsletter.snappmobile.io/subscribe
0
3
1
I’ve been generating 2-3 images using ImageCreator API and store them in the app state. iOS aggressively kill my app in background. Solved by storing images in temp directory.
18 days ago
0
2
0
List automatically decors NavigationLinks with a trailing chevron. To achieve this behaviour in ScrollView, we can implement a custom ButtonStyle and apply it to the whole ScrollView.
swiftwithmajid.com/2026/04/06/b...
19 days ago
0
6
0
It feels like Apple Foundational Model doesn’t follow instructions very well in the most recent iOS version.
20 days ago
1
3
0
Another interesting UI primitive I built is the SectionedSurface. It uses ForEach(sections:) which allows us to extract all the sections from the passed view and filter out the sections without content and add some paddings to section headers.
swiftwithmajid.com/2026/04/06/b...
20 days ago
0
4
0
Group(subviews:) is a part of SwiftUI Container View API. This initializer of the Group type allows us to decompose the view passed with a ViewBuilder closure and wrap the whole view with a background with rounded corners to make it feel like a card.
swiftwithmajid.com/2026/04/06/b...
21 days ago
0
7
1
Whenever you consider creating a scrollable screen in SwiftUI, you think of using a List. However, it’s not always the best choice. Lists are great for displaying uniform data. For anything else, a ScrollView with a lazy stack is almost always the best option.
swiftwithmajid.com/2026/04/06/b...
loading . . .
Building List replacement in SwiftUI
Whenever you consider creating a scrollable screen in SwiftUI, you might think of using a List. However, it’s not always the best choice. Lists are great for displaying uniform data. For anything…
https://swiftwithmajid.com/2026/04/06/building-list-replacement-in-swiftui/
22 days ago
1
12
1
I use Container API in SwiftUI to create a custom List replacement with my own styling and precise control over its appearance. This allows us to decompose views and compose them by hiding the implementation details of our container views.
swiftwithmajid.com/2024/09/24/m...
28 days ago
0
4
1
Most of SwiftUI apps look same because they use List and its default styling. I've introduced the DesignSystem module in my apps containing custom stuff like headers, divided card, hero card, scrolling surface, etc.
swiftwithmajid.com/2022/01/12/m...
about 1 month ago
0
12
1
In Jujutsu VCS you work with changes instead of commits, and those changes remain mutable until you push them to a remote. That means you can freely move between changes and edit them.
swiftwithmajid.com/2025/10/15/i...
loading . . .
Introducing Jujutsu VCS
I’ve been using Jujutsu VCS for a few months now, and it’s completely changed how I work with version control. No — it’s not a martial art — it’s a modern, Git-compatible version control system that…
https://swiftwithmajid.com/2025/10/15/introducing-jujutsu-vcs/
about 1 month ago
0
5
1
reposted by
Majid Jabrayilov
Stewart Lynch 🇨🇦
about 1 month ago
Did you know that you can add scope Guides to your code in Xcode 26.4? I didn’t know that until today.
#Xcode
#Swift
loading . . .
1
9
1
reposted by
Majid Jabrayilov
MacStories
about 1 month ago
Apple Discontinues the Mac Pro
https://www.macstories.net/linked/apple-discontinues-the-mac-pro/
loading . . .
Apple Discontinues the Mac Pro
In a move that should suprise no one, Apple discontinued the Mac Pro today. From Chance Miller at 9to5 Mac: It’s the end of an era: Apple has confirmed to 9to5Mac that the Mac Pro is being discontinued. It has been removed from Apple’s website as of Thursday afternoon. The “buy” page on Apple’s website for the Mac Pro
https://www.macstories.net/linked/apple-discontinues-the-mac-pro/
2
7
3
reposted by
Majid Jabrayilov
John Haney ᯅ
about 1 month ago
Happy 26.4 release day, everyone! macOS, visionOS, iOS, watchOS, tvOS I assume Xcode 26.4 will be available soon too
0
2
1
Image Playground framework provides us a text-to-image functionality. The core of the framework is the ImageCreator type. The ImageCreator type supports a set of styles: animation, illustration and sketch. You can choose the one you need.
swiftwithmajid.com/2025/11/11/g...
about 1 month ago
0
1
0
Apple has announced WWDC 26. A week of technology, creativity, and community.
developer.apple.com/wwdc26/
loading . . .
WWDC26
Join the worldwide developer community online for a week of technology, creativity, and community.
https://developer.apple.com/wwdc26/
about 1 month ago
0
4
0
The badge view modifier is available only for iOS and macOS. You can use the badge view modifier to generate and display a badge for your view. Keep in mind that only lists, tabs and toolbar items can display badges at the moment.
swiftwithmajid.com/2021/11/10/d...
about 1 month ago
0
3
1
The StoreKitTest framework allows us to write tests for in-app product purchasing, refunding, and restoring features. You can cover almost every aspect of the in-app purchase with tests using the StoreKitTest framework.
swiftwithmajid.com/2024/01/09/s...
about 1 month ago
0
7
1
reposted by
Majid Jabrayilov
John Voorhees
about 1 month ago
Today is what I consider my "Indie Day" when I first released an app on the App Store - 11 years ago now. Happy Indie Day to everyone out there doing their own thing. It's not easy, but it's the best job ever. 🎈🎉
0
19
1
reposted by
Majid Jabrayilov
Paul Hudson
about 1 month ago
compacted() replaces the common compactMap { $0 } pattern, product() eliminates nested for-loops, and uniqued() removes duplicates from any sequence. Apple's Swift Algorithms package is full of small wins like these. Have a look:
www.hackingwithswift.com/articles/243...
loading . . .
Write better code with Swift Algorithms
Write faster, simpler, safer Swift code with this powerful open-source package.
https://www.hackingwithswift.com/articles/243/write-better-code-with-swift-algorithms
2
23
4
One of the benefits of the data-driven Navigation API is the programmatic navigation with deep-linking possibilities. SwiftUI maps values of the mutable collection into a view hierarchy and allows us to push and pop views into the NavigationStack programmatically.
swiftwithmajid.com/2022/06/21/m...
about 1 month ago
1
3
0
To manage app refresh tasks in SwiftUI, we can utilize the backgroundTask modifier, which can be attached to any scene. This modifier enables intelligent scheduling of background tasks.
swiftwithmajid.com/2022/07/06/b...
about 1 month ago
0
4
2
reposted by
Majid Jabrayilov
MacStories
about 1 month ago
In a Surprise Move, Apple Announces AirPods Max 2
https://www.macstories.net/news/in-a-surprise-move-apple-announces-airpods-max-2/
loading . . .
In a Surprise Move, Apple Announces AirPods Max 2
Apple kicked off the week with a bit of a surprise: the AirPods Max 2. The updated over-the-ear headphones feature the H2 chip, better adaptive noise cancellation, improved audio, and other improvements. According to director of Audio Product Marketing Eric Treski: With the incredible performance of H2, AirPods Max are upgraded with up to 1.5x
https://www.macstories.net/news/in-a-surprise-move-apple-announces-airpods-max-2/
0
4
2
The Observations type conforms to the AsyncSequence protocol, allowing us to use instances inside asynchronous for-loops. The closure that initializes the Observations instance implicitly observes all properties of observable instances.
swiftwithmajid.com/2025/07/30/s...
about 1 month ago
0
2
1
CloudKit lets you add cloud storage and sync to your iOS apps without running your own backend. Learn how to enable CloudKit, work with databases, save records, and query data in this beginner guide.
swiftwithmajid.com/2022/03/22/g...
about 2 months ago
0
5
0
I prefer to keep my feature’s navigation flow centralized. The Navigator pattern allows me to handle navigation safely. Implementing it is effortless with SwiftUI’s new data-driven Navigation API.
swiftwithmajid.com/2022/06/15/m...
about 2 months ago
0
8
1
Why is a good app architecture essential when using coding agents? Coding agents have limited context windows and cannot store everything in memory. A well-defined architecture with clear boundaries is necessary to constrain the capabilities of your coding agent.
swiftwithmajid.com/2023/07/11/u...
loading . . .
Unidirectional flow in Swift
This week I will talk about the state management approach I have used in my apps for years. We will cover building a predictable, testable, debuggable, and modular state management system in Swift.
https://swiftwithmajid.com/2023/07/11/unidirectional-flow-in-swift/
about 2 months ago
0
0
0
So, why do we pay the same LLM to write code, and pay again to find bugs? Why can’t the same LLM write bug-free code when it already knows what problems exist in code?
about 2 months ago
1
4
0
Action-based ViewModels create a clear contract: routing all mutations through a single method gives you centralized logging, easier testing, and a documented API of what your ViewModel actually does.
www.infoq.com/articles/kot...
loading . . .
Borrowing from Kotlin/Android to Architect Scalable iOS Apps in SwiftUI
Building iOS apps can feel like stitching together guidance from blog posts and Apple samples, which are rarely representative of how production architectures grow and survive. In contrast, the…
https://www.infoq.com/articles/kotlin-scalable-swiftui-patterns/
about 2 months ago
0
4
0
How do you model errors in Swift? I use three principles described in “A philosophy of software design” book written by John Ousterhout: 1. Define errors out of existence 2. Mask exception 3. Error aggregation
swiftwithmajid.com/2022/05/11/m...
loading . . .
Modeling errors in Swift
The new Swift Concurrency feature doesn’t only bring new opportunities for writing safer and more maintainable async code but also changes the way we handle errors. I didn’t use throw-catch keywords…
https://swiftwithmajid.com/2022/05/11/modeling-errors-in-swift/
about 2 months ago
0
4
0
SwiftUI provides the Layout protocol allowing us to build super-custom layouts by digging into the layout system without using GeometryReader. Layout protocol brings us the incredible power of building and reusing any layout you can imagine.
swiftwithmajid.com/2022/11/16/b...
about 2 months ago
0
8
1
The TipKit framework provides the
#Rule
macro, which allows us to define dynamic rules based on the app state. You can define many parameters and build complex rules using many of them. The rules property of the Tip protocol uses the RuleBuilder result builder.
swiftwithmajid.com/2024/05/15/d...
about 2 months ago
0
3
0
Modular app structure allows your coding agent easier to follow your separation of concerns. This structure simplifies navigation within the source code and optimizes token usage.
swiftwithmajid.com/2022/01/12/m...
about 2 months ago
1
2
1
The safeAreaInset view modifier is another way to manage the safe area of the view. The safeAreaInset view modifier allows you to shift the safe area of the view by placing another view inside the original safe area of the view.
swiftwithmajid.com/2021/11/03/m...
about 2 months ago
0
4
1
Xcode 26.3 is now available for download. Your agent can reason about your codebase, access documentation, run previews, and align implementation with design intent — all within Xcode. If you haven’t started using agentic coding yet, it’s time to get started.
swiftwithmajid.com/2026/02/10/a...
loading . . .
Agentic coding in Xcode
Apple has finally released Xcode 26.3, which now supports agentic coding. In this article, I’ll guide you through configuring Xcode 26.3 and utilizing the latest best practices when using agentic…
https://swiftwithmajid.com/2026/02/10/agentic-coding-in-xcode/
2 months ago
1
4
2
Cooperative cancellation means that Swift will never stop your task automatically, but it will provide you with information about the cancellation. It is totally up to you to decide how to handle this information.
swiftwithmajid.com/2025/02/11/t...
2 months ago
0
3
0
I’m developing an app that utilizes three distinct Large Language Models: 1. OpenAI API for image recognition. 2. Apple Foundation Models for on-device personalization and recommendations. 3. Image Playgrounds for on-device image generation based on user data.
swiftwithmajid.com/2025/08/19/b...
loading . . .
Building AI features using Foundation Models
Apple introduced the brand-new Foundational Models framework, providing type-safe APIs for using Apple Intelligence models in your apps. This week, we will learn how to use this new framework while…
https://swiftwithmajid.com/2025/08/19/building-ai-features-using-foundation-models/
2 months ago
2
6
2
SwiftUI has ContentUnavailableView type, allowing us to display empty, error states or any other state where content is unavailable in our apps. It allows us also display action buttons below the description.
swiftwithmajid.com/2023/10/31/m...
2 months ago
1
6
1
I’m continuing to develop AI-generated content within my applications, this time focusing on image generation. The Image Playground framework offers a text-to-image functionality, and the core component of this framework is the ImageCreator type.
swiftwithmajid.com/2025/11/11/g...
2 months ago
0
4
0
SwiftUI provides us the keyboardShortcut modifier that we can attach to any view in the view hierarchy and define a keyboard shortcut. Pressing the defined keyboard shortcut is the equivalent to direct interaction with the view to perform its primary action.
swiftwithmajid.com/2020/11/17/k...
2 months ago
0
5
2
TimelineView, a SwiftUI view type, updates its body according to a schedule. Unlike other SwiftUI views that update on data changes, TimelineView allows for a custom schedule to precisely update its content.
swiftwithmajid.com/2022/05/18/m...
2 months ago
0
9
1
Load more
feeds!
log in