Slide 1

Slide 1 text

Big Little Wins Zamzam Farzamipooya Engineering Manager @ Veo @zamzampooya try! Swift Tokyo 2024

Slide 2

Slide 2 text

Veo in NHK https://www.youtube.com/watch?v=ZhakTKORsRA

Slide 3

Slide 3 text

In iOS development, as in the Matrix, there's no spoon - it’s not the code that bends, it's only yourself, as you learn and adapt to new challenges and possibilities. -Matrix, sort of

Slide 4

Slide 4 text

How Many Are… Using UIKit on a daily basis? Using SwiftUI on a daily basis? Supporting iOS 13,14 or below? Supporting iOS 15, 16 and above? Supporting only iOS 17?✨

Slide 5

Slide 5 text

What You Can All Use Regardless of iOS version Xcode

Slide 6

Slide 6 text

Enhanced Code Editing Auto Completion based on name of the f ile Method options preview with a right-arrow click Smart modi f ier prediction based on usage history Code completion for images and color assets

Slide 7

Slide 7 text

Bookmark Marking places in your code To-Do list Saving search queries

Slide 8

Slide 8 text

Source Control Navigator Review changes Stage/Unstage/Discard Change Code

Slide 9

Slide 9 text

Testing Updated test navigator Running tests are 45% faster 🚀

Slide 10

Slide 10 text

Documentation A real time preview of your documentation👀 A real time saver when working with DocC ⏰

Slide 11

Slide 11 text

Debug Consol Console fully support OSLog Filtering on log data Jump to Source option 🤩

Slide 12

Slide 12 text

Xcode Cloud Adding test notes right in Xcode

Slide 13

Slide 13 text

App Icon In Xcode 15, you only need a 1024 * 1024 png image for your App Icon!

Slide 14

Slide 14 text

What Are The Game Changers This Year? Macros Observation SwiftData

Slide 15

Slide 15 text

Macros #Preview @Observable It is part of the Swift packages and the SDK #Predicate @Model You can also create you own Macros 💙

Slide 16

Slide 16 text

Life Before Observation

Slide 17

Slide 17 text

Life After Observation @ObservationIgnored var isReady = false

Slide 18

Slide 18 text

With @Observable Macro No more Combine instead Observation No more @Published class SomeViewModel: ObservableObject To @Observable class SomeViewModel No more @StateObject, @ObservedObject, and @EnvironmentObject now just use => @State, @Bindable or @Environment or nothing at all! Increases the performance of SwiftUI views https://www.avanderlee.com/swiftui/observable-macro-performance-increase-observableobject/

Slide 19

Slide 19 text

SwiftData “SwiftData makes it easy to persist data using declarative code. You can query and f ilter data using regular Swift code. And it’s designed to integrate seamlessly with SwiftUI.” -Apple

Slide 20

Slide 20 text

Enhanced Animations .phaseAnimator De f ine multiple stages of animation by using an array. The animation loops between these stages. Trigger the animation Customize the timing for each animation stage

Slide 21

Slide 21 text

Enhanced Animations PhaseAnimator With PhaseAnimator you can have multiple views move between phases together

Slide 22

Slide 22 text

Enhanced Animations withAnimation() https://github.com/twostraws/Vortex

Slide 23

Slide 23 text

.onChange(of:initial:_:) Old & New Value “Access both the old and new values of a value that changes when processing the completion closure of the onChange(of:initial:_:) view modi f ier”

Slide 24

Slide 24 text

.visualEffect() “Visual E ff ects change the visual appearance of a view without changing its ancestors or descendents”

Slide 25

Slide 25 text

ScrollView “Positions this view within an invisible frame with a size relative to the nearest container.” .containerRelativeFrame(_:alignment:)

Slide 26

Slide 26 text

ScrollView .scrollTargetLayout(isEnabled:) “Con f igures the outermost layout as a scroll target layout.”

Slide 27

Slide 27 text

ScrollView .scrollPosition(id:) “Associates a binding to be updated when a scroll view within this view scrolls.”

Slide 28

Slide 28 text

ScrollView .scrollTransition() “Applies the given transition, animating between the phases of the transition as this view appears and disappears within the visible region of the containing scroll view, or other container speci f ied using the coordinateSpace parameter.”

Slide 29

Slide 29 text

ScrollView .safeAreaPadding(): “Adds the provided insets into the safe area of this view.” .contentMargins(_:): “Con f igures the content margin for a provided placement.”

Slide 30

Slide 30 text

TipKit “Display tips that help people discover features in your app”

Slide 31

Slide 31 text

ContentUnavailableView There is a built in ContentUnavailableView.search

Slide 32

Slide 32 text

SF Symbols Animation .symbolE ff ect() Effect: Appear, Disappear, Bounce, Scale, Pulse, Variable Color, and Replace Options: Repeating, NonRepeating, Repeat(Int?) Value: The value to monitor for changes, the animation is triggered each time the value changes

Slide 33

Slide 33 text

Deprecated Modi f iers foregroundColor(_:) -> Use foregroundStyle(_:) instead colorScheme(_:) -> Use preferredColorScheme(_:) instead listRowPlatterColor(_:)-> Use listItemTint(_:) instead navigationBarTitle(_:) -> Use navigationTitle(_:) instead https://developer.apple.com/documentation/swiftui/view-deprecated accessibility(label:)-> Use accessibilityLabel(_:) instead

Slide 34

Slide 34 text

Shortcuts ✨ ⌘+⇧+A => You can access ALL of Xcode menu option - New Shortcut 🤩 ⌘+0 => Toggle Navigator ⌘+⌥+0 =>Toggle Inspectors ⌘+⇧+F =>Global Search ⌘+⇧+O => Open Quickly

Slide 35

Slide 35 text

ありがとう ございます @zamzampooya #WomenLifeFreedom