Please note the app icon above is not suitable for submission to the App Store due to Apple's copyright license on SF Symbols and Emoji.
Apple Frameworks is an informational app designed to provide software developers building applications on Apple platforms with the discovery of Apple's range of SDKs and hopefully, inspire developers with new project ideas for their next app.
At its core, the app is mostly informational. Each framework comes with a detail page with a brief overview of its framework, along with a button that direct users to the framework's official page on Apple's website to learn more about the technical aspects of the framework and instructons for adoption.
- MVVM App Architectural Design Pattern
- iOS 15+ button system w/ SF Symbols
- A dual layout option; Users can switch between a Grid or List layout
- SwiftUI native
Link
for navigation to external URL (NoSFSafariViewController
)
Reasoning to adopt SwiftUI's native Link view
Since the release of iOS 14, developers are able to make use of SwiftUI's native Link
view for implementing URL link redirection, such as tapping on a button in their app and automatically switching over to Safari to open the link. However, it's important to note that the behaviour of how Safari opens the URL link between UIKit's SFSafariViewController
and SwiftUI's native Link
are different.
With UIKit's SFSafariViewController
, Safari will open the URL link by displaying an in-app browser without leaving the app itself. In most cases, if you want users to briefly access a website without leaving your app, for example redirecting them to a page where they need login into their account with option to use a third-party authentication provider like Google, then this is mostly fine. However, if you intent to displaying an exact replica of a Safari browser along with all its functionality like the app itself, this is actually discouraged.
According to Apple's recommendation in the iOS Human Interface Guidelines:
Avoid using a web view to build a web browser. Using a web view to let people briefly access a website without leaving the context of your app is fine, but Safari is the primary way people browse the web. Attempting to replicate the functionality of Safari in your app is unnecessary and discouraged.
There isn't a lot of explanation as to why Apple doesn't recommend the above practices, but here are the reasons why I decided to make the switch to using SwiftUI's native Link
:
- With the upcoming release of iOS 16, I decided this switch make sense as all apps deployment should at least support two versions lower than the latest public release version. This brings us to iOS 14 being the version that's backwards-compatible and
Link
is available with SwiftUI apps deployed from version iOS 14+. Although this reasoning is a moot point since the deployment target is set to iOS 15+, keep in mind that one of the core purpose of this project is to simulate an iOS app development in a professional environment, such as developing a public-facing/ commerical app for a company.
- As the nature of this app being informational, using SwiftUI's
Link
in this context is more suited to the purpose of this app, as opening the URL link of the framework homepage in the Safari app itself allow users to make use of the full functionality of the Safari browser, such as bookmarking the framework's homepage, diving deeper into the framework's documentation, keeping multiple framework browser tabs opened, etc. All these are not possible with the previous UIKit integration ofSFSafariViewController
.
In-app screenshots in light and dark mode.
To run this project locally, you will require a Mac/Macbook with Xcode installed. Simply clone or dowload a zip file of this project from GitHub and run it by opening AppleFrameworks.xcodeproj
.
If you hit any problems with cloning/downloading or running the app, please let me know.