Majid Jabrayilov
@mecid.bsky.social
📤 1674
📥 587
📝 472
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
about 1 year ago
2
32
1
UIHostingConfiguration is a new type of UITableViewCell or UICollectionViewCell configuration allowing us to embed SwiftUI views into a cell, but still use the performant dequeuing capabilities of the UICollectionView.
swiftwithmajid.com/2025/03/04/s...
about 13 hours ago
0
6
1
reposted by
Majid Jabrayilov
Peter Friese
4 days ago
If you’re not yet using worktrees - you should! Marco Haber explains why they make it super easy to switch between branches without stashing:
www.marcohaber.dev/blog/git-wo...
Curated in this week's
#not-only-swift
loading . . .
Understanding Git Worktrees
A practical guide to Git worktrees: mental model, real scenarios, and why it matters for AI-powered workflows.
https://www.marcohaber.dev/blog/git-worktrees
1
4
2
Empty and error states are part of almost every app, yet they’re often an afterthought. I explore ContentUnavailableView in SwiftUI and show how it helps you design clearer, more expressive fallback states with less code.
swiftwithmajid.com/2023/10/31/m...
4 days ago
0
6
0
That’s shame. We have framework for tips, but we don’t have an easy way to capture a photo.
4 days ago
0
2
0
SwiftUI’s contentMargins modifier lets you inset only specific content like scrollable lists without affecting toolbars or scroll indicators — perfect for adapting layouts (e.g., centering content on iPad) while keeping UI elements where they belong.
swiftwithmajid.com/2024/04/23/c...
4 days ago
0
6
0
Nowadays, many frameworks Xcode provides us contain SwiftUI views, including the PhotosUI framework. The PhotosUI framework provides the PhotosPicker button, allowing us to offer photo-picking functionality in our apps quickly.
swiftwithmajid.com/2023/04/25/p...
6 days ago
0
8
1
reposted by
Majid Jabrayilov
MacStories
6 days ago
Apple Unveils Apple Creator Studio App Suite
https://www.macstories.net/news/apple-unveils-apple-creator-studio-app-suite/
loading . . .
Apple Unveils Apple Creator Studio App Suite
Today, Apple announced Apple Creator Studio, a suite of creativity apps for the Mac and iPad combined with premium content and features for productivity apps across the company???s platforms. This collection of apps, which includes the debut of Pixelmator Pro for iPad, offers tools for creative professionals, aspiring artists, students, and others working across a...
https://www.macstories.net/news/apple-unveils-apple-creator-studio-app-suite/
0
3
3
LazyVGrid and LazyHGrid are two new view types that SwiftUI gives us to build a super custom grid-based layout. Grids allow us to create very complex and great layouts by mixing different types of GridItems.
swiftwithmajid.com/2020/07/08/m...
7 days ago
0
1
0
SwiftUI’s alignmentGuide modifier lets us override standard alignments. We can align the bottom of Image and Text views in a horizontal stack. However, if an image has spacing inside a bitmap, it may not align well. Overriding an alignment guide will fix it.
swiftwithmajid.com/2020/03/11/a...
10 days ago
0
6
0
SwiftUI provides you with a type called NavigationPath, allowing us to store any hashable value and map them to the destination in the navigation stack. NavigationPath erases the type of pushed values and allows us to keep values of different types.
swiftwithmajid.com/2022/10/05/m...
11 days ago
1
7
0
We talked a lot about different design patterns, which help us maintain the codebase by solving various issues. But what about testing? What can we do to keep our UI tests in a maintainable and consistent state?
swiftwithmajid.com/2021/03/24/u...
13 days ago
0
5
0
All we need to play haptic feedback in a SwiftUI view is to attach the sensoryFeedback view modifier with two parameters. The first defines a feedback style, and the second is a trigger value.
swiftwithmajid.com/2023/10/10/s...
13 days ago
0
6
1
You should be careful about the order of the passed views in ViewThatFits. It uses the first view that fits the available space. It means that you should usually place your views from the biggest to the smallest.
swiftwithmajid.com/2022/07/26/v...
14 days ago
0
1
0
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...
19 days ago
0
2
0
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...
20 days ago
0
10
0
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...
loading . . .
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…
https://swiftwithmajid.com/2022/12/27/ios-development-trends-in-review/
22 days ago
1
7
0
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...
25 days ago
0
4
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...
26 days ago
0
1
0
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...
loading . . .
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.
https://swiftwithmajid.com/2025/10/15/introducing-jujutsu-vcs/
26 days ago
0
2
1
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...
28 days ago
0
3
1
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...
28 days ago
0
6
0
reposted by
Majid Jabrayilov
inkle
about 1 month ago
"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."
loading . . .
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
https://www.theguardian.com/games/2025/dec/19/the-20-best-video-games-of-2025
1
23
4
reposted by
Majid Jabrayilov
Simon B. Støvring
about 1 month ago
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
loading . . .
0
13
9
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...
about 1 month ago
0
2
0
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...
about 1 month ago
0
0
0
reposted by
Majid Jabrayilov
Antoine v.d. SwiftLee
about 1 month ago
loading . . .
SwiftUI Group Still(?) Considered Harmful
https://twocentstudios.com/2025/12/12/swiftui-group-still-considered-harmful/
0
2
1
reposted by
Majid Jabrayilov
Axel Le Pennec
about 1 month ago
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 👌🏻
add a skeleton here at some point
1
2
1
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...
about 1 month ago
0
2
0
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...
about 1 month ago
0
0
0
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...
about 1 month ago
0
5
0
reposted by
Majid Jabrayilov
John Haney ᯅ
about 1 month ago
Happy 26.2 release day, everyone! iOS, visionOS, macOS, watchOS, tvOS and Xcode are available now
0
6
1
reposted by
Majid Jabrayilov
Matteo
about 1 month ago
TIL “There can be a total of 1 refresh task and 10 processing tasks scheduled at any time.”
0
0
1
reposted by
Majid Jabrayilov
MacStories
about 1 month ago
Awake: A Considered, Effective Alarm for Chronic Snoozers
https://www.macstories.net/news/awake-a-considered-effective-alarm-for-chronic-snoozers/
loading . . .
Awake: A Considered, Effective Alarm for Chronic Snoozers
Waking up on time is a quintessential human problem. Over the years, we???ve come up with all kinds of solutions, from ringing analog clocks to flashing lights to motorized digital clocks that roll away from our bedsides as they chime, forcing us to get up and find them to turn them off. But what if...
https://www.macstories.net/news/awake-a-considered-effective-alarm-for-chronic-snoozers/
0
0
2
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...
about 1 month ago
0
2
0
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...
loading . . .
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…
https://swiftwithmajid.com/2025/12/09/monitoring-app-performance-with-metrickit/
about 1 month ago
0
2
0
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...
about 1 month ago
0
4
0
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...
loading . . .
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.
https://developer.apple.com/documentation/Xcode/measuring-your-app-s-power-use-with-power-profiler
about 2 months ago
0
3
0
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...
about 2 months ago
0
4
0
Regular profiling matters. Instruments provides everything we need to spot inefficiencies and keep SwiftUI apps running at peak performance, optimize view redraws, catch memory leaks, and keep performance snappy
swiftwithmajid.com/2021/01/20/p...
loading . . .
Profiling SwiftUI app using Instruments
Xcode comes with a bunch of tools you need to build, debug and release your apps. One of these tools is the Instruments app. The Instruments app is a great tool for profiling your iOS apps. It…
https://swiftwithmajid.com/2021/01/20/profiling-swiftui-app-using-instruments/
about 2 months ago
0
1
0
reposted by
Majid Jabrayilov
Mikaela Caron 🦄
about 2 months ago
I'm available to hire as an iOS dev! 👋 I'm open to remote, in-person, or hybrid. Either in the US or Europe. Looking for full time, something new and exciting I'm ready for a new adventure! Reposts appreciated and DM's are open
2
27
28
The biggest CardioBot deal of the year is here! This Black Friday, enjoy 50% OFF your annual subscription. Transform the way you track health, understand your body, and optimize performance. Don’t miss out — the offer is available for a short time only.
t.co/NXAVPBUCx3
about 2 months ago
0
2
0
SwiftUI provides a ContentTransition type that animates numeric text in your app. It understands how numbers change and provides a visual effect that changes only the needed part of the Text view representing a number.
swiftwithmajid.com/2022/08/02/c...
about 2 months ago
0
8
0
For a limited time, get full access to advanced health insights, recovery metrics, personalized trends, and powerful workout analysis — all for half the usual price.
t.co/NXAVPBUCx3
about 2 months ago
0
2
0
Swift Concurrency is a crucial part of my development stack. I use async/await and task groups extensively. SwiftUI Button doesn’t provide Swift Concurrency out of the box, but it’s flexible enough to support it.
swiftwithmajid.com/2024/03/26/b...
about 2 months ago
1
5
0
Black Friday is here! Unlock your healthiest year yet with 50% off the CardioBot annual subscription. Track smarter, recover better, and reach your goals for half the price.
apps.apple.com/redeem?ctx=o...
about 2 months ago
0
1
0
Swift Testing framework offers a fantastic feature called Parameterized Tests. This feature enables us to provide a set of parameters and validate our tests against them. You receive a report that displays which values pass the test and which ones fail.
swiftwithmajid.com/2024/11/12/i...
about 2 months ago
0
1
0
Swift Testing framework offers a fantastic feature called Parameterized Tests. This feature enables us to provide a set of parameters and validate our tests against them. You receive a report that displays which values pass the test and which ones fail.
swiftwithmajid.com/2024/11/12/i...
about 2 months ago
0
3
0
When executing a long-running task that takes minutes, we block a thread on the Cooperative Thread Pool. Running similar tasks can be a bottleneck, preventing other tasks from running. Swift concurrency provides a task yielding API for this case.
swiftwithmajid.com/2025/02/18/y...
about 2 months ago
0
1
0
Apple released a property wrapper called ScaledMetric. ScaledMetric allows you to scale a BinaryFloatingValue according to the dynamic type size category chosen by the user.
swiftwithmajid.com/2019/10/09/d...
about 2 months ago
0
3
1
Three error modeling 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/
2 months ago
0
1
0
Load more
feeds!
log in