Hey there! It’s been a while since my last article. I’ve been busy building my indie app, and during this time, app development has changed quite a bit with new AI tools and coding methods emerging. Today, I want to take you behind the scenes of my latest adventure: building a new feature for FlexiBackup […] The post How I Built a New Feature for FlexiBackup Using Cursor + Claude 3.7 Sonnet…
How It All Began Back in January 2023, I attended iOS Conf SG 2023, marking my first-ever iOS conference experience. The conference was amazing, but one particular moment stood out. It was when Paul said these 10 powerful words on a panel: Everyone has something to learn; everyone has something to teach. Paul Hudson, Hacking […] The post My Journey to the Stage of iOS Conf SG 2024 appeared first…
In the upcoming iOS 17 update, Apple once again expanded the use of widgets, making them available in more places, including the iPad lock screen and iPhone standby mode. However, this update brings a new concept called “container background” to the table, which might lead to some errors in your existing WidgetKit projects. You might […] The post Understanding Container Background for Widget in…
Without a doubt, Swift Concurrency has revolutionized the way we handle asynchronous code in Swift. One powerful component of it is AsyncStream, a specialized form of AsyncSequence that is well-suited to achieve callback- or delegate-like behavior using the async/await syntax. Prior to Swift Concurrency, developers had to rely on closures to trigger callbacks and inform […] The post How to Create…
⚠️ Information in this article is based on the Xcode 15 beta 1 release and may be subject to change. In this year WWDC (WWDC23), Apple surprised developers with an unexpected improvement to UIKit. The introduction of UIContentUnavailableConfiguration aimed to simplify the process of creating empty states for view controllers. According to Apple, UIContentUnavailableConfiguration is […] The post…
Xcode Time Profiler is a powerful performance analysis tool provided by Apple. It is specifically designed to help developers optimize the performance of their iOS, macOS, watchOS, and tvOS applications. If you open the Time Profiler for the first time, you might feel overwhelmed by its complex user interface and the extensive amount of data […] The post 5 Simple Steps to Find Slow Code Using…
This week, I worked on a feature that required integration with the PHPickerViewController. Everything went well until I noticed that some of the selected images failed to convert into UIImage in the picker(_:didFinishPicking:) delegate method. Upon investigation, I discovered that the issue arose because some of the images were in WebP format, and the way […] The post Handling WebP Images When…
With the release of iOS 15, Apple has introduced native markdown support to the SwiftUI Text view. This feature allows developers to easily create strings with hyperlinks that can open websites, send emails, or make phone calls. While this feature may be sufficient in most cases, there are situations where developers might want more control […] The post How to Define Custom URL Actions for SwiftUI…
Since the release of SwiftUI in 2019, Apple has been striving to enhance the interoperability between SwiftUI and UIKit. In iOS 16, Apple introduced UIHostingConfiguration, which is a powerful feature that enables developers to use SwiftUI views as UITableView or UICollectionView cells. Recently, I came across an article that showed me another use case for […] The post How to Use…
In my previous article, we talked about how we can protect our users’ privacy by redacting widget data. It’s a simple process, but unfortunately, there aren’t many options available when it comes to the redacted effect. In this article, I’ll show you how you can create your own unique redacted effect. This will enhance the […] The post How to Create Custom Redacted Effects on Widgets? appeared…