Simple Onboarding View

Apparently, even if SwiftUI 2.0 has powerful enough for production code, but sometimes they are still lacking documentation for a simple component like PagingView. As your information, there is now a native equivalent of UIPageViewController in SwiftUI 2.0 which is adding the .tabViewStyle modifier to TabView and pass PageTabViewStyle.


Factory Pattern

Factory pattern is one of the common patterns in a programming language. It is one of the creational design patterns that provide a high level of flexibility for your code. One of the interesting use cases that could make Factory pattern become a handy tool to use is Dependency Injection. Normally whenever we want to inject an interface as a dependency on an object, we could easily pass it through the initializer or set it from the property. See the example below


Illustration by Michael Abadi S.

The proxy pattern is one of the few underrated patterns that nobody really talks about in iOS. A proxy pattern is one of the structural design patterns that lets you provide a substitute or placeholder for another object. A proxy has total control and access to the original object, and let the proxy object do some magical stuff with the original object and restrict the access to it, however, the one who uses a proxy object, won’t have any knowledge behind the scene.

Proxy pattern normally being used outside of mobile development, when some request wants to map the request…


Combine, is a new framework introduced by Apple since SwiftUI 1.0 back then in 2019. The architecture behind the scene itself is adopting the system of FRP (Functional Reactive Programming) which takes computation as their main computation of process combine with the propagation of data through the stream of the function. In this tutorial, I would like to explain how Combine can make your job done quicker than ever compare with the conventional way of code. Multiple-use cases of Combine usage have been explored such as Networking and any asynchronous process, but there are few of them explaining how we…


After we have understood the basic concept of LLDB commands now it is taking time to understand the full GUI of Xcode debugging.

GUI — 1

Let see the picture above. Once you have put a breakpoint on any lines of code in your applications, you will see a similar screen as above.

  1. The top one is our code panel, which indicates where is our breakpoint located
  2. The bottom left panel is our quick look panel, we can see our current state of the object in either class or function level at the moment the code is being halted
  3. The bottom right panel


Have you ever wonder how to debug your entire code in the proper way? But sometimes we don’t know in-depth detail about how does it work behind the scene? In this multiple series of articles, I am trying to spread multiple articles into specific chunks of debugging part, start with the basic / foundation part of debugging in iOS. Normally we will have multiple topics covering all areas, start with LLDB debugging and end with Logging.

What is LLDB? LLDB stands for Low-level debugging which in iOS it will support multiple ways of debugging specifically only for iOS targeted application…


Me on iOS Thailand Conference #20 December

2020 has been passed, it’s been a thrilling ride for this year especially for uncertainties about COVID that limit us to move around especially traveling. Some people like me, who work abroad, far from family, may have some difficulties. However, it doesn’t need to be that desperate. Instead, there were so many good things that happened during this past 1 year. My productivity increase twice even more than before. There were multiple accomplishments that I took as proof that this year, as much as it sounds a hurtful year, we can always find and seek the opportunity to turn the…


Recently I got stumbled with a boring way to create an icon from SF Symbols. As you know that Apple introduces SF Symbols for a developer to reuse in their own application if needed. SF Symbols is a set of over 1,500 symbols that you can use in your app. Why SFSymbols are great for indie developers?

  1. It is free
  2. Optical alignment with text for all weights and sizes
  3. Support multicolor
  4. Support localization for RTL languages such as Arabic, Devanagari, and Hebrew

Normally we will do something like this for using the SFSymbols

UIImage(systemName: "gear") --> UIKit // or Image(systemName…


Do you know that we can actually simply share our breakpoints with our colleagues at work? Xcode provides us with the capability to share it. This share function is very handy if we want all colleagues to have a similar breakpoint. Some breakpoints that worth sharing are Exception breakpoint, Runtime breakpoint, and some Symbolic breakpoints. Let see how it works

  1. Go to your debug navigator panel on the left panel
  2. Add your breakpoint and choose any of it
  3. Right-click on it and choose to “Share” breakpoint


Once upon a time, while I was debugging my code, I found out an annoying warning comes up like below

[TableView] Warning once only: UITableView was told to layout its visible cells and other contents without being in the view hierarchy (the table view or one of its superviews has not been added to a window). This may cause bugs by forcing views inside the table view to load and perform layout without accurate information (e.g. table view bounds, trait collection, layout margins, safe area insets, etc), and will also cause unnecessary performance overhead due to extra layout passes. …

Michael Abadi S.

iOS Engineer at Agoda, Bangkok

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store