Skip to content

Instantly share code, notes, and snippets.

View nbhasin2's full-sized avatar

Nishant Bhasin nbhasin2

View GitHub Profile
@nbhasin2
nbhasin2 / gist:373c962a7569c2d3a0cc237476894ec1
Last active February 3, 2025 22:37
SwiftUI in Firefox iOS

SwiftUI in Firefox iOS

Decision Tree for SwiftUI vs. UIKit

The following decision tree should be used to determine whether to use SwiftUI or UIKit for new and existing components:
SwiftUI Decision Tree

Existing Implementations (SwiftUI)

The following list shows components that are implemented using SwiftUI and some that have future potential for SwiftUI conversion.

| Component | Type |

@nbhasin2
nbhasin2 / temp_exp.json
Last active January 8, 2024 20:57
temp_exp.json
{
"data": [
{
"appId": "org.mozilla.ios.Firefox",
"appName": "firefox_ios",
"application": "org.mozilla.ios.Firefox",
"arguments": {},
"branches": [
{
"feature": {
@nbhasin2
nbhasin2 / cc_temp.json
Last active January 8, 2024 20:53
cc_temp
{
"data": [
{
"appId": "org.mozilla.ios.Firefox",
"appName": "firefox_ios",
"application": "org.mozilla.ios.Firefox",
"arguments": {},
"branches": [
{
"feature": {
@nbhasin2
nbhasin2 / NavHandlerExample.swift
Last active April 3, 2023 01:44
NavHandlerExample
var body: some View {
NavHandler {
List(cars) { car in
NavigationLink(car.rawValue) {
CarDetailView(car: car)
}
}
}
}
struct NavHandler<Content>: View where Content: View {
@ViewBuilder var content: () -> Content
var body: some View {
if #available(iOS 16, *) {
NavigationStack(root: content)
} else {
NavigationView(content: content)
}
}
@nbhasin2
nbhasin2 / CarTypeView.swift
Last active April 3, 2023 02:27
NavigationStack & NavigationView: CarDetailView and CarType Example
struct CarTypeView: View {
let carType: CarType
var body: some View {
VStack {
Text("Car type: \(carType.rawValue)")
}
.navigationTitle("\(carType.rawValue)")
}
}
@nbhasin2
nbhasin2 / CarDetailView.swift
Last active April 3, 2023 01:13
NavigationStack & NavigationView: CarDetailView and CarType Example
struct CarDetailView: View {
let car: Car
var body: some View {
VStack {
Text("Car name: \(car.rawValue)")
}
.navigationTitle("\(car.rawValue)")
}
}
@nbhasin2
nbhasin2 / NavStackContentView.swift
Created April 3, 2023 00:19
NavigationStack: NavStackContentView Example
struct NavStackContentView: View {
let cars: [Car]
let viewType: ViewType = .navigationStack
var body: some View {
NavigationStack {
List(cars) { car in
NavigationLink(car.rawValue) {
CarDetailView(car: car)
}
@nbhasin2
nbhasin2 / NavStackValueBasedContentView.swift
Created April 3, 2023 00:17
NavigationStack: NavStackValueBasedContentView Example
struct NavStackValueBasedContentView: View {
let carTypes: [CarType]
let cars: [Car]
let viewType: ViewType = .navigationStackValueBasedView
var body: some View {
NavigationStack {
List {
Section("Car Type") {
ForEach(carTypes) { carType in
@nbhasin2
nbhasin2 / NavStackDestinationContentView.swift
Created April 3, 2023 00:17
NavigationStack: NavStackDestinationContentView Example
struct NavStackDestinationContentView: View {
let cars: [Car]
let viewType: ViewType = .navigationStackDestination
var body: some View {
NavigationStack {
List(cars) { car in
NavigationLink(car.rawValue, value: car)
}
.navigationBarTitleDisplayMode(.inline)