What is the easiest way to build ParallaxHeader in SwiftUI? There are a bunch of options to implement it, but the usage of visualEffect view modifier is the easiest one. swiftwithmajid.com/2023/11/07/v...
Majid Jabrayilov
@mecid.bsky.social
Swift Developer: iOS, watchOS, visionOS, tvOS, macOS. https://swiftwithmajid.com
🔥 New on the Kickstart blog: How to choose App Store keywords – a complete 7-step pipeline. A practical App Store keyword research pipeline using seed keywords, autocomplete, competitor analysis, and keyword difficulty scoring to build your keyword field. www.kickstart.tools/blog/how-to-...
How to choose App Store keywords: a complete 7-step pipeline
A practical App Store keyword research pipeline using seed keywords, autocomplete, competitor analysis, and keyword difficulty scoring to build your 100-character keyword field.
kickstart.tools
The @Entry macro allows us to create custom environment, transaction, container, and focused values. Instead of manually defining a key type and computed property, you declare a single stored property and Swift generates the rest at compile time. swiftwithmajid.com/2024/07/09/i...
Structural identity is the type of identity that SwiftUI uses to understand your views without an explicit identifier by using your layout description. It is crucial to understand how it works to build great and performant views with SwiftUI. swiftwithmajid.com/2021/12/09/s...
While using UIKit, we have access to the readableContentGuide layout guide. SwiftUI introduces the contentMargins view modifier, allowing us to shift a particular type of content in the view. swiftwithmajid.com/2024/04/23/c...
For HWS+ subscribers: If a SwiftUI shadow is applying to each subview individually rather than the whole view, .compositingGroup() is the one-liner fix. www.hackingwithswift.com/plus/learn-s...
Flattening rendering using compositing groups – Hacking with Swift+
Sometimes SwiftUI’s rendering system doesn’t quite behave the way you might want, but often you can fix things with a single modifier: compositingGroup(). Let’s dig into what it does…
hackingwithswift.com
Working on my #shipaton project. PlatePal - mindful eating app that helps people understand portion size and meal balance. No calories. No numbers. #buildinpublic
How to implement ParallaxHeader in SwiftUI? Easy-peasy, all we need is the onGeometryChange view modifier to track the header position in a scroll view and scale or offset the header. That's it. swiftwithmajid.com/2024/08/13/t...
Buttons in my apps start async tasks. But I don't need to cancel a task when the button disappears. That's why I use unstructured tasks. But I still need the ability to cancel the task manually. That's why I use the trigger pattern. swiftwithmajid.com/2024/03/26/b...
One thing I can't accept about coding agents is that I always write code better than they produce. How to deal with that?
🎨 𝑇ℎ𝑒 𝑝𝑜𝑤𝑒𝑟 𝑜𝑓 𝑝𝑟𝑒𝑣𝑖𝑒𝑤𝑠 𝑖𝑛 𝑋𝑐𝑜𝑑𝑒 by Majid Jabrayilov (@mecid.bsky.social) Previews keep getting better, and the newer pieces are more than convenience sugar. #iOSDev #Xcode swiftwithmajid.com/2024/11/26/t...
The power of previews in Xcode
Previews in Xcode become more powerful every year. Previews in Xcode are not about SwiftUI; you can use them even with UIKit. This week, we will talk about enhancing Previewable and PreviewModifier…
swiftwithmajid.com
Almost every interaction starting a task in our apps is a button. Most tasks should be non-blocking for other UI parts. SwiftUI Button doesn’t support Swift Concurrency, but it’s flexible enough to allow us to build a button type that does. swiftwithmajid.com/2024/03/26/b...
SwiftUI introduced new APIs, allowing us to recompose views. For example, we can extract child from the content view built with the @ViewBuilder closure and place them as we need. swiftwithmajid.com/2024/09/24/m...
SwiftUI’s alignmentGuide modifier allows us to override standard alignments. For instance, we can align the bottom of Image and Text views in a horizontal stack. This can cause issues when an image has spacing inside a bitmap, leading to misalignment. swiftwithmajid.com/2020/03/11/a...
Just a friendly reminder that I’m still on the lookout for native speakers of Portuguese-Brazilian, Chinese, and Japanese to help me review translations in my CardioBot app. If you’re interested, you can join the TestFlight beta and share your thoughts! testflight.apple.com/join/H82FVVt6
Most of my apps use local notifications to keep user engaged. Fortunately, SwiftUI provides the onOpenURL view modifier allowing us easily build deep linking even for local notifications. swiftwithmajid.com/2024/04/09/d...
Another great addition to Xcode Previews is the PreviewModifier protocol. The PreviewModifier type allows us to create reusable preview environments that we can share across multiple previews. swiftwithmajid.com/2024/11/26/t...
I'm working on CardioBot mascot. What do you think about it?
SwiftUI introduced the sensoryFeedback view modifier, allowing us to play haptic feedback on all Apple platforms. We control it using two parameters. The first defines a feedback style, and the second is a trigger value. swiftwithmajid.com/2023/10/10/s...
I’m still on the lookout for non-English native speakers to review CardioBot localization. If you’re interested, please join the TestFlight channel and share your honest thoughts! testflight.apple.com/join/H82FVVt6
Actor type automatically manages exclusive access to the data it protects. But what if we need multiple types protected with a mutually exclusive access? That’s why we have global actors. swiftwithmajid.com/2024/03/12/g...
How do you deal with resources in the modular architecture? Did you create a single Resources module and import it everywhere, or do you include only needed resources in every module? swiftwithmajid.com/2022/01/26/m...
LocalizedStringKey, a special struct provided by SwiftUI, conforms to ExpressibleByStringLiteral, allowing creation using a String. Text component overloads accept LocalizedStringKey, enabling transparent use of localization keys. swiftwithmajid.com/2019/10/16/l...
Swipe actions work outside of the List with the help of swipeActionsContainer view modifier. We can keep full control over layout, styling, and performance while still providing native swipe interactions where they make sense. swiftwithmajid.com/2026/06/16/s...
CardioBot is available in over 10 languages! If you’re not an English native speaker, we’d love for you to join the beta channel and share your thoughts. testflight.apple.com/join/H82FVVt6
All the glass effects inside the GlassEffectContainer can interact with each other and reflect the light. GlassEffectContainer not only improves the performance of rendering multiple glass effects but also allows us to morph in and out shapes of glasses. swiftwithmajid.com/2025/07/23/g...
A new Kickstart update is out now! It was already a fantastic tool to help indie devs succeed on the App Store, but the new update supercharges keyword searching, has smarter growth tips for existing apps, adds new advice from Apple on getting featured on the App Store, and more!
Unidirectional flow allows me to build highly modular, predictable, testable, previewable, and easily debuggable apps. I use this approach in all of my apps for years, and I'm very happy with the outcome. swiftwithmajid.com/2023/07/11/u...
Imagine you have two asynchronous tasks that you need to wait for simultaneously and process their results together. In such a situation, you can use async let statements. swiftwithmajid.com/2025/03/24/a...
SwiftUI introduced the special ToolbarOverflowMenu type, allowing you to create collapsed groups of items. It is collapsed by default on all platforms, and you will never guess which toolbar item collapsed or not. swiftwithmajid.com/2026/06/23/t...