🚀 Exciting News for iOS Developers! 🚀

Gois
5 min readFeb 9, 2024

--

I’m thrilled to introduce DebugSwift, a powerful toolkit designed to elevate your Swift-based application debugging experience. 🛠️

Let’s revolutionize Swift debugging together! 🚀 Feel free to explore DebugSwift and share your feedback.

DebugSwift is a comprehensive toolkit designed to simplify and enhance the debugging process for Swift-based applications. Whether you’re troubleshooting issues or optimizing performance, DebugSwift provides a set of powerful features to make your debugging experience more efficient.

Network Logs

- All Response/Request Logs: Capture and review detailed logs of all network requests and responses.

Performance

- CPU, Memory, FPS: Monitor and analyze CPU usage, memory consumption, and frames per second in real-time.

Interface

  • Grid: Overlay a grid on the interface to assist with layout alignment.
  • Slow Animations: Slow down animations for better visualization and debugging.
  • Showing Touches: Highlight touch events for easier interaction tracking.
  • Colorized View with Borders: Apply colorization and borders to views for improved visibility.

Resources

- Keychain: Inspect and manage data stored in the keychain.
- User Defaults: View and modify user defaults for testing different application states.
- Files: Access and analyze files stored by the application.

App Settings

  • Crash Reports: Access detailed crash reports for analysis and debugging.
  • Change Location: Simulate different locations for testing location-based features.
  • Console: Monitor and interact with the application’s console logs.
  • Version: View the current application version.
  • Build: Identify the application’s build number.
  • Bundle Name: Retrieve the application’s bundle name.
  • Bundle ID: Display the unique bundle identifier for the application.
  • Device Infos: Access information about the device running the application.
  • Custom Info: Add custom information for quick access during debugging.
  • Custom Actions: Add actions information for quick access during debugging.
  • Custom View Controller: Add your owns UIViewControllers for access during debugging.

Getting Started

CocoaPods

Add the following line to your Podfile:

pod 'DebugSwift', :git => 'https://github.com/DebugSwift/DebugSwift.git', :branch => 'main'

Then, run:

pod install

Swift Package Manager (SPM)

Add the following dependency to your Package.swift file:

.package(url: "https://github.com/DebugSwift/DebugSwift.git", from: "main")

Then, add DebugSwift to your target’s dependencies.

Usage

func application(
_: UIApplication,
didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
DebugSwift.setup()
DebugSwift.show()
return true
}

Show or hide with shake.


extension UIWindow {
open override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
super.motionEnded(motion, with: event)

if motion == .motionShake {
DebugSwift.toggle()
}
}
}

Customization

Network Configuration

If you want to ignore specific URLs, use the following code:

DebugSwift.Network.ignoredURLs = [“https://reqres.in/api/users/23"]

If you want to capture only a specific URL, use the following code:

DebugSwift.Network.onlyURLs = [“https://reqres.in/api/users/23"]

Adjust the URLs in the arrays according to your needs.

App Custom Data

Usage

DebugSwift.App.customInfo = {
[
.init(
title: “Info 1”,
infos: [
.init(title: “title 1”, subtitle: “title 2”)
]
)
]
}

Results

App Custom Action

Usage


DebugSwift.App.customAction = {
[
.init(
title: “Action 1”,
actions: [
.init(title: “action 1”) { [weak self] in // Important if use self
print(“Action 1”)
}
]
)
]
}

Results

App Custom ViewControllers in Tab Bar

DebugSwift.App.customControllers = {
let controller1 = UITableViewController()
controller1.title = "Custom TableVC 1"
let controller2 = UITableViewController()
controller2.title = "Custom TableVC 2"

return [controller1, controller2]
}

Hide Some Features

If you prefer to selectively disable certain features, DebugSwift can now deactivate unnecessary functionalities. This can assist you in development across various environments.

Usage

func application(
_: UIApplication,
didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
DebugSwift.setup(hideFeatures: [.resources,.performance,.interface,.app]) // Example usage for hide resources, performance, interface & app
DebugSwift.show()
return true
}

Change Appearance

Dynamic Theme: Easily Change the Interface Appearance from Dark to Light, Customize According to Your Needs.

Usage

func application(
_: UIApplication,
didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
DebugSwift.theme(appearance: .light)
DebugSwift.setup()
DebugSwift.show()
return true
}

Results

Enhanced Hierarchy Tree for Deeper Application Insights (Beta)

Harness the Power of Visual Information within the iOS Hierarchy Tree to Uncover Intricate Layouts and Element Relationships in Your Application.

How to Use

Simply press and hold the circle button to reveal the Snapshot and Hierarchy for a comprehensive overview.

Results

Explore Additional Details

Enhance your understanding by pressing and holding on a specific view to reveal information such as:
- Class
- Subviews
- Background Color
- Specific attributes based on the type (e.g., UILabel: Text, Font, and TextColor).

Results

Contributors

Our contributors have made this project possible. Thank you!

https://github.com/DebugSwift/DebugSwift/graphs/contributors

Contributing

Contributions are welcome! If you have suggestions, improvements, or bug fixes, please submit a pull request. Let’s make DebugSwift even more powerful together!

License

DebugSwift is licensed under the MIT License — see the file for details.

References

- [InAppViewDebugger](https://github.com/indragiek/InAppViewDebugger)
- [CocoaDebug](https://github.com/CocoaDebug/CocoaDebug)
- [DBDebugToolkit](https://github.com/dbukowski/DBDebugToolkit)

Happy coding! 👩‍💻👨‍💻 #iOSDev #Swift #Debugging #DeveloperTools#OpenSource #iOS

--

--

Gois

 iOS Developer | Student | Researcher | Innovation Enthusiast.