Majid Jabrayilov
@mecid.bsky.social
š¤ 1657
š„ 587
š 431
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
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...
1 day 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 days ago
0
1
0
You can easily use the environment view modifier to set the particular environment value using the keypath that the Entry macro creates for you. The Entry macro works for the environment, transactions, container, and focused values.
swiftwithmajid.com/2024/07/09/i...
4 days ago
0
2
1
The Image Playground framework integrates Appleās generative image capabilities into Swift, simplifying the creation of visuals from text, drawings, or photos. With a few lines of code, you can generate styled images and integrate them into your appās experience.
swiftwithmajid.com/2025/11/11/g...
5 days ago
1
2
0
ImageCreator type has a static property called availableStyles, an array of supported styles. Verify the availability of the selected style and use only the available one, as not all styles may be available on your device.
swiftwithmajid.com/2025/11/11/g...
8 days ago
0
0
0
reposted by
Majid Jabrayilov
Chris Wu šŖ
9 days ago
Sometimes a huge backlog can help you.
gameinformer.com/2025/11/13/r...
loading . . .
Red Dead Redemption Is Coming To PS5, Xbox Series X/S, Switch 2, and Mobile Next Month With Free Upgrade Paths
It will also be available as part of Netflix games.
https://gameinformer.com/2025/11/13/red-dead-redemption-is-coming-to-ps5-xbox-series-xs-switch-2-and-mobile-next-month-with
0
0
1
The Image Playground framework brings Appleās generative image capabilities right into Swift, making it surprisingly simple to create visuals from text. The core of the framework is the ImageCreator type.
swiftwithmajid.com/2025/11/11/g...
9 days ago
0
3
0
You might be familiar with the Image Playground app on your Apple devices, which also has a Swift API. This week, weāll explore how to utilize the Image Playground framework to create image content within our apps.
swiftwithmajid.com/2025/11/11/g...
loading . . .
Generating images in Swift using Image Playground
Iām continuing to work on AI-generated content in my apps, and this time, weāll focus on image generation. You might be familiar with the Image Playground app on your Apple devices, which also has aā¦
https://swiftwithmajid.com/2025/11/11/generating-images-in-swift-using-image-playground/
10 days ago
0
2
0
SwiftUI provides the FocusState property wrapper that works on all Apple platforms and allows us to focus on a particular view or check if that view is already focused. The usage is effortless.
swiftwithmajid.com/2021/08/24/m...
11 days ago
0
2
0
Background Tasks framework allows you to schedule work intelligently in the background. We can handle background tasks using the SwiftUI app lifecycle.
swiftwithmajid.com/2022/07/06/b...
12 days ago
0
8
1
The SwiftUI framework introduced the onGeometryChange view modifier, which is backward compatible with iOS 16, macOS 13, tvOS 16, watchOS 9, and visionOS 1. It allows us to track geometry changes of any view in SwiftUI.
swiftwithmajid.com/2024/08/13/t...
15 days ago
0
5
0
reposted by
Majid Jabrayilov
Mario GuzmƔn
16 days ago
FUCK YEAH!!!
tapbots.com/phoenix/
loading . . .
Phoenix for Bluesky
A Bluesky client based on the award-winning Twitter app for iOS.
https://tapbots.com/phoenix/
1
9
2
reposted by
Majid Jabrayilov
Nil Coalescing
17 days ago
Explore SwiftUI APIs for customizing scroll behavior, including paging and view-aligned snapping, and learn what to watch out for to avoid unexpected results:
nilcoalescing.com/blog/ScrollV...
#SwiftUI
#iOSDev
loading . . .
ScrollView snapping in SwiftUI
Explore SwiftUI APIs for customizing scroll behavior, including paging and view-aligned snapping, and learn what to watch out for to avoid unexpected results.
https://nilcoalescing.com/blog/ScrollViewSnappingInSwiftUI/
0
7
2
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...
17 days ago
0
1
0
reposted by
Majid Jabrayilov
Natalia Panferova
17 days ago
I've published a new video! I shared some tips for implementing Dynamic Type support in SwiftUI apps, covering system and custom fonts, ScaledMetric API, and dynamicTypeSize environment value:
youtu.be/wflWj5l7wlk
#SwiftUI
#iOSDev
#Accessibility
loading . . .
Tips for Supporting Dynamic Type in SwiftUI Apps
YouTube video by Nil Coalescing
https://youtu.be/wflWj5l7wlk
1
10
5
reposted by
Majid Jabrayilov
Matt Corey
19 days ago
I can't believe it's November, and you know what that means - it's almost time for Indie App Sales! If you're an Indie Developer, submissions are officially open for our Black Friday Event! Please share! indieappsales.com #IndieAp
#IndieAppSales
loading . . .
Indie App Sales - Black Friday '25 Edition
Discover amazing apps from indie developers at exclusive discounts. Nov 28-Dec 3, 2025. From productivity tools to creative software, find hidden gems at unbeatable prices!
https://indieappsales.com
1
4
4
reposted by
Majid Jabrayilov
Federico Viticci
19 days ago
The 26.1 Apple OS updates are out! Here's our overview of what's new in iOS, iPadOS, and macOS 26.1:
www.macstories.net/news/apple-r...
loading . . .
Apple Releases 26.1 Updates to Its Operating Systems
Today, Apple released version 26.1 of its full family of OSes. Every platform received attention, including the proverbial ābug fixes and feature enhancements,ā but it was iOS 26.1 and iPadOS 26.1 tha...
https://www.macstories.net/news/apple-releases-26-1-updates-to-its-operating-systems/
0
15
4
Swift gives you everything you need to build a type-safe networking layer ā enums, phantom types, extensions, etc.
swiftwithmajid.com/2021/02/10/b...
19 days ago
0
3
0
I highly recommend this talk by Apple. While writing SwiftUI code is relatively easy, optimizing it has become increasingly challenging in recent times.
www.youtube.com/live/yXAQTIK...
loading . . .
Optimize your app's speed and efficiency | Meet with Apple
Join us online to learn how to elevate your app experience by maximizing performance and resolving inefficiencies. Whether youāre optimizing an existing app ...
https://www.youtube.com/live/yXAQTIKR8fk?si=Kq5Z5onMmHyhHTjY
22 days ago
0
7
0
reposted by
Majid Jabrayilov
Evan Stone
23 days ago
Here's the YouTube link for the Apple Developer event: Optimize your app's speed and efficiency | Meet with Apple
www.youtube.com/watch?v=yXAQ...
#AppleDeveloper
#iOSDev
#SwiftUI
loading . . .
Optimize your app's speed and efficiency | Meet with Apple
YouTube video by Apple Developer
https://www.youtube.com/watch?v=yXAQTIKR8fk
0
6
2
reposted by
Majid Jabrayilov
Axel Le Pennec
23 days ago
TIL the @.Observable macro doesn't trigger updates for equatable properties starting with iOS 26. But for prior releases, we have to manually check equality for the object properties to improve our app performances. Thank you for the tip Steven!
1
11
3
The Accelerate framework contains a collection of APIs for digital signal processing called vDSP. It provides tons of highly optimized functions for operations on large data collections.
swiftwithmajid.com/2025/05/13/o...
23 days ago
0
1
0
For modern apps targeting iOS 16 and above, I recommend building the core of the app using SwiftUI and incorporating UIKit in certain parts where SwiftUIās performance may not meet your expectations, like using compositional layout with collection views.
swiftwithmajid.com/2025/03/04/s...
loading . . .
SwiftUI Performance - How to use UIKit
Nowadays, Apple platform development has undergone significant changes. Previously, we believed that building the core of an app around UIKit and using SwiftUI for certain screens was a good idea.ā¦
https://swiftwithmajid.com/2025/03/04/swiftui-performance-how-to-use-uikit/
26 days ago
0
4
0
reposted by
Majid Jabrayilov
Steve Klabnik
30 days ago
"Why
#jj-vcs
is a step up from git"
www.danopcode.com/why-jujutsu-...
loading . . .
Why Jujutsu is a step up from Git
There's a new, hot version control system that replaces Git called Jujutsu (jj). I started to use Jujutsu a couple of months ago, during my summer vacation. I had read posts online from a lot of peopl...
https://www.danopcode.com/why-jujutsu-is-a-step-up-from-git/
5
54
6
reposted by
Majid Jabrayilov
baxter
29 days ago
I've been trying to use Jujutsu lately and I wanted to write about how I transitioned from my Git workflow. I hope you find it useful!
baxter.sh/adopting-juj...
#jj-vcs
loading . . .
Adopting Jujutsu
Iāve always loved the safety net that a VCS like Git provides, but Iāve never loved gitās user interface/experience, nor the mental model that Iāve tried to hold in my head while Iām using it. Jujutsu...
https://baxter.sh/adopting-jujutsu
0
4
2
Jujutsu VCS differs from Git in several ways, including the absence of a staging area and automatic rebases. The community has several popular workflows, and this week, Iāll discuss my daily workflow, called the edit workflow.
swiftwithmajid.com/2025/10/22/i...
loading . . .
Introducing Jujutsu VCS. Edit Workflow.
The absence of a staging area and automatic rebases makes our usage of Jujutsu VCS significantly different from what we used to do in Git. There are several popular workflows within the Jujutsu VCSā¦
https://swiftwithmajid.com/2025/10/22/introducing-jujutsu-vcs-edit-workflow/
about 1 month ago
0
2
1
reposted by
Majid Jabrayilov
Antoine v.d. SwiftLee 
about 1 month ago
Your SwiftUI views keep growing. You tidy up with extensions, but it still feels messy. How do you scale SwiftUI without chaos? Hereās how I approach clean, reusable architecture š
https://www.avanderlee.com/swiftui/swiftui-architecture-structure-views-for-reusability-and-clarity/
0
8
1
The ViewThatFits view is easy to use. You donāt need to measure space or calculate if a view fits. Simply create an instance and place children views. It automatically measures space and childrenās sizes and selects the first fitting view.
swiftwithmajid.com/2022/07/26/v...
about 1 month ago
0
4
0
Here is the solution. Thanks to
@natpanferova.bsky.social
add a skeleton here at some point
about 1 month ago
0
22
3
The Container view API in SwiftUI enables you to restructure views. I was attempting to construct a dashboard view that accepts a view hierarchy and redefines it within a grid using my custom logic.
swiftwithmajid.com/2024/10/01/m...
about 1 month ago
0
0
0
How to place toolbar buttons on the leading and trailing of the search bar?
about 1 month ago
0
0
1
reposted by
Majid Jabrayilov
Nil Coalescing
about 1 month ago
Buttons inside a SwiftUI List row can cause the entire row to become tappable and trigger multiple buttons at once, but applying a specific button style ensures each button works independently:
nilcoalescing.com/blog/Multipl...
#SwiftUI
#iOSDev
loading . . .
Multiple buttons in SwiftUI List rows
Buttons inside a List row can cause the entire row to become tappable and trigger multiple buttons at once, but applying a specific button style ensures each button works independently.
https://nilcoalescing.com/blog/MultipleButtonsInListRows/
1
16
4
reposted by
Majid Jabrayilov
Natalia Panferova
about 1 month ago
On iOS 26 we have a new `close` button role in SwiftUI to dismiss a view without losing the user's progress, unlike a cancel action. A convenient way to add a dismiss button for modals without the need to define a custom button label!
#SwiftUI
#iOSDev
1
32
6
reposted by
Majid Jabrayilov
Enid
about 1 month ago
SwiftUI Tip š” Use .toolbarTitleDisplayMode(.inlineLarge) to show a large navigation title while keeping it inline ā perfect for compact layouts. (iOS 17.0+) ā
learnandcodewithenid.com
0
7
1
reposted by
Majid Jabrayilov
AppleTLDR
about 1 month ago
So I did something super scary today š And published my first full length YouTube video. An in depth one month review of the
#iPhone17ProMax
vs the
#iPhoneAir
I had so much fun making it! If you feel like checking it out, I would really appreciate it!š§
youtu.be/b-Ze03wEzNw
loading . . .
iPhone Air vs iPhone 17 Pro Max Review ā The Paradox of Choice
YouTube video by AppleTLDR
https://youtu.be/b-Ze03wEzNw
2
3
2
In Jujutsu VCS, you work with mutable changes instead of commits. You can freely move between changes and edit them. Changes simplify history manipulation, making rebase, squash, and split everyday operations.
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/
about 1 month ago
1
1
0
reposted by
Majid Jabrayilov
Christian Selig
about 1 month ago
With the Vision Pro getting the dual headband now I just wish they'd fully commit and make a Vision Pro Hat
6
91
8
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/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/
about 1 month ago
0
2
0
Hero animations are great that's why SwiftUI introduced the matchedTransitionSource view modifier. It works like a magic and allows us to preserve the geometry between views in the navigation stack.
swiftwithmajid.com/2020/12/17/h...
about 1 month ago
0
4
0
reposted by
Majid Jabrayilov
Harshil
about 1 month ago
Slow Horses is the best show you're not watching
2
9
2
The visual effect is anything that can change the visual appearance of the view but doesnāt affect its layout. visualEffect view modifier allows us to attach a set of animatable visual effects by accessing layout information of the particular view.
swiftwithmajid.com/2023/11/07/v...
about 1 month ago
0
4
0
reposted by
Majid Jabrayilov
Matrix
about 2 months ago
I finally got the time to check out Jujutsu today, and I absolutely LOVE it. It's a very powerful tool. So many things that were difficult and/or tedious to do in Git are much, much easier to do. It really helps keep your project history clean and easy to understand.
github.com/jj-vcs/jj
loading . . .
GitHub - jj-vcs/jj: A Git-compatible VCS that is both simple and powerful
A Git-compatible VCS that is both simple and powerful - jj-vcs/jj
https://github.com/jj-vcs/jj
1
2
1
reposted by
Majid Jabrayilov
Aaron Christiansen
about 2 months ago
Having a play with Jujutsu VCS:
jj-vcs.github.io/jj/latest/
You can move back to a previous commit and edit it, and all the later commits rebase automatically⦠coming from Git, that feels MAGIC
1
2
1
Streaming transforms how we interact with Foundation Models, shifting from static responses to dynamic, real-time experiences. By leveraging the streamResponse API, we can progressively display model output as itās generated.
swiftwithmajid.com/2025/10/08/b...
about 1 month ago
0
3
0
Weāve already discussed the fundamental concepts of Foundation Models and their structured outputs. This week, weāll delve into the process of streaming the partial results generated by the model.
swiftwithmajid.com/2025/10/08/b...
loading . . .
Building AI features using Foundation Models. Streaming.
Weāve already discussed the fundamental concepts of Foundation Models and their structured outputs. This week, weāll delve into the process of streaming the partial results generated by the model.
https://swiftwithmajid.com/2025/10/08/building-ai-features-using-foundation-models-streaming/
about 1 month ago
0
1
0
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 touched properties of observable instances.
swiftwithmajid.com/2025/07/30/s...
about 2 months ago
0
3
0
Almost every feature Iām working on has a feature flag for enabling it in debug and TestFlight builds. Since I merge branches even when the feature isnāt fully implemented, I use feature flags to temporarily disable them.
swiftwithmajid.com/2025/09/16/f...
about 2 months ago
0
3
0
The bottom sheet API in SwiftUI is simple. Attach the presentationDetents view modifier to the sheetās content. You pass an array of available sizes, allowing users to resize the sheet by dragging.
swiftwithmajid.com/2022/07/19/b...
about 2 months ago
0
0
0
Assume you have a throwing function that might throw an error in a specific case and want to test that behavior. The expect macro allows you to verify the functionās throwing behavior and inspect the error to confirm itās the desired error case.
swiftwithmajid.com/2024/10/22/i...
about 2 months ago
0
0
0
There is a special NavigationStack initializer accepting a binding to a mutable collection. 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 2 months ago
0
1
0
Load more
feeds!
log in