Majid Jabrayilov
banner
mecid.bsky.social
Majid Jabrayilov
@mecid.bsky.social
Swift Developer: iOS, watchOS, visionOS, tvOS, macOS.
https://swiftwithmajid.com
Pinned
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
Home
Majid’s blog about Swift development
swiftwithmajid.com
The Image Playground framework brings Apple’s generative image capabilities right into Swift, making it surprisingly simple to create visuals from text, drawings, or even existing photos.
swiftwithmajid.com/2025/11/11/g...
December 31, 2025 at 11:35 AM
The task view modifier enables us to observe equatable data and execute the task whenever the data changes. By combining fields into an equatable struct, we can maintain a single task modifier that effectively cancels the task whenever any field changes.
swiftwithmajid.com/2022/06/28/t...
December 30, 2025 at 11:40 AM
2025 has come to an end, and it is a perfect time for retrospective analysis. Today I want to review trends in iOS development over the past year that I notice while building my own apps or consulting others.
swiftwithmajid.com/2022/12/27/i...
iOS development trends in review
2022 has come to an end, and it is a perfect time for retrospective analysis. Today I want to review trends in iOS development over the past year that I notice while building my own apps or…
swiftwithmajid.com
December 29, 2025 at 10:00 AM
The Swift Charts framework allows us to observe selection on a single value and a range of values. We can use chartXSelection and chartYSelection with the binding of ClosedRange type to allow range selection.
swiftwithmajid.com/2023/07/18/m...
December 26, 2025 at 9:06 AM
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...
December 25, 2025 at 10:09 AM
I've switched to Jujutsu VCS almost 6 months ago and never regret. JJ reimagines version control, making history manipulation effortless. It’s fully compatible with Git but offers a more flexible, fluid workflow.
swiftwithmajid.com/2025/10/15/i...
Introducing Jujutsu VCS
I’ve decided to share my experience with Jujutsu VCS — not a martial art, but a Git‑compatible version control system. I’ve switched to it for all my projects and have a lot to say.
swiftwithmajid.com
December 24, 2025 at 3:07 PM
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...
December 23, 2025 at 10:15 AM
Glass should reflect other glass elements around. To achieve that, you should still use the glassEffect view modifier, but also wrap the group of views with the GlassEffectContainer.
swiftwithmajid.com/2025/07/23/g...
December 22, 2025 at 12:37 PM
Reposted by Majid Jabrayilov
"An attempted-murder mystery set in an a 1920s all-girls private school reveals itself to also be an eviscerating takedown of British class politics. Witty and beautifully drawn... it has the feel of a really excellent graphic novel."
The 20 best video games of 2025
A family classic reborn in a wide open world, a satirical adventure through teenage life and a mystery puzzler for the ages – our critics on the year’s best fun
www.theguardian.com
December 19, 2025 at 11:26 AM
Reposted by Majid Jabrayilov
The weekend before Christmas Eve is here. What better time to decorate your Mac with festive lights and falling snow? 🎄❄️

Get Festivitas for Mac (and iPhone) 👇

festivitas.app
December 19, 2025 at 2:42 PM
Task cancellation doesn’t happen automatically. You have to be a responsible citizen and check if the task has been canceled to avoid doing extra work between the steps of an asynchronous task.
swiftwithmajid.com/2025/02/11/t...
December 19, 2025 at 12:40 PM
CardioBot now generates short articles about your day, explaining your activity, recovery, and key health metrics using your daily snapshot. Everything is processed entirely on your device, so your health data never leaves your phone — private, secure, and fast.
apps.apple.com/us/app/cardi...
December 19, 2025 at 11:09 AM
Reposted by Majid Jabrayilov
SwiftUI Group Still(?) Considered Harmful
twocentstudios.com
December 18, 2025 at 2:07 PM
Reposted by Majid Jabrayilov
TLDR about performances with Xcode Previews ⬇️

When you update:

- an “inline” value: 🚀
- a stored property: 🐌
- a computed property: 🚀

So if you centralize your design constants at the top of a View for example, computed variables are the way to go 👌🏻
Confirmed by Apple 🫡
December 18, 2025 at 6:36 PM
The bottom sheet API in SwiftUI is straightforward to use. All you need to do is to attach the presentationDetents view modifier to the content of the sheet view modifier.
swiftwithmajid.com/2022/07/19/b...
December 18, 2025 at 10:37 AM
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...
December 16, 2025 at 10:31 AM
My app has an increase in background terminations by the system. To address the issue and optimize the app, I decided to investigate the cause of these terminations. MetricKit proved to be a valuable tool in providing detailed information about these terminations.
swiftwithmajid.com/2025/12/09/m...
December 15, 2025 at 9:37 AM
Reposted by Majid Jabrayilov
Happy  26.2 release day, everyone!

iOS, visionOS, macOS, watchOS, tvOS and Xcode are available now
December 12, 2025 at 8:05 PM
Reposted by Majid Jabrayilov
TIL “There can be a total of 1 refresh task and 10 processing tasks scheduled at any time.”
December 13, 2025 at 6:50 PM
To monitor app performance, we need to gather performance data using MetricKit and export it for analysis. The most straightforward way to achieve this is by using an analytics API.
swiftwithmajid.com/2025/12/09/m...
December 11, 2025 at 8:46 AM
MetricKit fills a critical gap left by Xcode Organizer by giving us system-level insight into how an app behaves in real-world conditions. Apple introduced the MetricKit framework, enabling us to collect diagnostics and build a performance dashboard.
swiftwithmajid.com/2025/12/09/m...
Monitoring app performance with MetricKit
Xcode Organizer provides access to essential performance metrics such as crashes, energy impact, hangs, launch time, memory consumption, and app terminations. However, it lacks sufficient information…
swiftwithmajid.com
December 10, 2025 at 9:00 AM
Hover effects aren’t exclusive to visionOS. They’re used on tvOS for user interactions with remote controls and on macOS with mice or trackpads. Custom hover effects can be created by conforming to the CustomHoverEffect protocol.
swiftwithmajid.com/2024/09/03/c...
December 8, 2025 at 12:22 PM
Did you know that you can gather power-consumption data of your app from a device and then analyze it in Instruments?
developer.apple.com/documentatio...
Measuring your app’s power use with Power Profiler | Apple Developer Documentation
Profile your app’s power impact whether or not your device is connected to Xcode.
developer.apple.com
December 5, 2025 at 11:55 AM
Almost every project I work on has at least three build configurations: Debug, TestFlight, and App Store. You can hide incomplete features behind flags, test them safely in Debug and TestFlight builds, and enable them only when you’re confident they’re ready.
swiftwithmajid.com/2025/09/16/f...
December 4, 2025 at 9:38 AM