Hope you had a great week of #WWDC23! ๐
As a yearly tradition, I wrote a #SessionSummary tweet with my key takeaways for 23 selected sessions covered on @WWDCNotes.
Get a sense of each session & find ones that pique your interest!
And don't forget to share! ๐
Thread ๐งต๐งต๐งต๐
What's new in Xcode 15:
๐ Smart code completion
๐ Image/Color Symbols
๐ฌ Auto-extraction of Strings
๐๏ธ String catalog + visual editor
โก Quick Actions โงโA
๐ Bookmark line/query
โ๏ธ Editable Git staging
๐งช Test report redesign
๐ OSLog in console
More: wwdcnotes.com/notes/wwdc23/1โฆ
Whatโs new in Swift:
๐ if/else & switch expressions -> concise code
๐ฆ Param Packs overcome API overload limits
๐ ๏ธ Macros eliminate boilerplate
โก Foundation rewrite -> more performance
๐ C++ interop, like ObjC
๐ญ Actor executors for custom sync
More: wwdcnotes.com/notes/wwdc23/1โฆ
What's new in SwiftUI:
๐ Spacial: Model3D, RealityView, ImmersiveSpace
๐ฒ Button/Toggle in Widgets
๐
Widget Timeline Previews
๐บ๏ธ Better MapKit
๐ Pie & Donut Charts
๐ฐ StoreKit views
๐๏ธโ๐จ๏ธ @observable macro
๐ Inspectors
๐ฌ Advanced animations
More: wwdcnotes.com/notes/wwdc23/1โฆ
Meet SwiftData:
๐ฆ @model macro for class
๐ @Attribute(.unique) for fields
๐ @Relationship for inverses/deletion
โ @transient to exclude
๐ @environment(.modelContext) context
๐ #Predicate & FetchDescriptor in code
๐ @query(sort:order:) in view
More: wwdcnotes.com/notes/wwdc23/1โฆ
Migrate to SwiftData:
๐ค SwiftData & Core Data can co-exist
๐ ๏ธ Core Data can create SwiftData code
๐พ SwiftData has implicit save
๐ Migrate @FetchRequest to @query
๐ Incremental adoption: 2 stacks talking to 1 store
๐ Changes complex on this mode
More: wwdcnotes.com/notes/wwdc23/1โฆ
Model your schema with SwiftData:
๐บ๏ธ Use @model to create schema
๐ @Attribute(originalName:) to map across versions
๐ @Relationship has originalName, too
๐ Define VersionedSchema enum, put models inside
๐
Order versions with SchemaMigrationPlan
More: wwdcnotes.com/notes/wwdc23/1โฆ
Meet StoreKit for SwiftUI:
๐๏ธ Store/Product/Subscription views
๐งฉ Encapsulate logic: load/purchase/L10nโฆ
๐จ Customizable style & background
๐ Start/Completion, purchase task modifiers
๐ Buttons: .redeemCode, .restorePurchase, .signIn, .policiesโฆ
More: wwdcnotes.com/notes/wwdc23/1โฆ
Discover Observation in SwiftUI:
๐ญ @observable is a macro for automating property observation
๐ Can be overridden manually in specific cases if required
๐ New projects should use @observable
โจ Simplifies models and views
โก Performance boost
More: wwdcnotes.com/notes/wwdc23/1โฆ
Inspectors in SwiftUI: Discover the details:
๐ New .inspector(isPresented:) modifier
โน๏ธ Shows details of selected content
๐ Familiar to users from Apple apps
๐ Customize width & presented state
๐ง Flexible toolbar placement (in/out content/nav)
More: wwdcnotes.com/notes/wwdc23/1โฆ
Explore pie charts and interactivity in Swift Charts:
๐ฅง SectorMark(angle:) to create pie chart
๐ฉ Set innerRadius for Donut chart
๐ Put text inside donut using .chartBackground
๐ฏ New APIs for selection (supports range) & scrolling (both axes)
More: wwdcnotes.com/notes/wwdc23/1โฆ
Make features discoverable with TipKit:
๐ Create a tip by conforming a type to Tip protocol
๐ Requires title & message
๐ผ๏ธ Optionally asset & actions providable
โ๏ธ Eligibility based on parameters or events
๐ง Lots of configuration & testing options
More: wwdcnotes.com/notes/wwdc23/1โฆ
Debug with structured logging:
๐ OSLog integration
๐ซ Don't use print โ only for CLIs
๐ Use logger.debug|info|notice|error instead
๐จ Nice console output with colors & filterable metadata
๐ Right-click: "Jump to Source" & "Hide Similar items"
More: wwdcnotes.com/notes/wwdc23/1โฆ
Create rich documentation with Swift-DocC:
๐ External type extension support
๐ Live preview in Xcode
๐ @row & @column for flexible layouts
๐บ๏ธ @TabNavigator e.g. for locales/platforms
๐ @metadata support
๐จ Theming via JSON file
โจ๏ธ Supports โงโO
More: wwdcnotes.com/notes/wwdc23/1โฆ
Design for spatial user interfaces:
๐ผ๏ธ 3-layer App Icon
๐ฒ Avoid opaque window
๐จ Use darker/lighter materials
๐๏ธ Don't color text, color backgrounds
๐ Tap target 60x60pt, button gap 16pt, list gap 4pt
๐ Navigation -> TabView, Actions -> Ornaments
More: wwdcnotes.com/notes/wwdc23/1โฆ
Meet SwiftUI for spatial computing:
๐ Buttons get hover & tooltip
๐ TabView expands
๐ Full Space: 3D Full Screen
๐ No light/dark mode, glass & vibrancy
๐ฒ Volume: .windowStyle(.volumetric)
๐ฎ Model3D: 3D AsyncImage
๐ RealityView for RealityKit
More: wwdcnotes.com/notes/wwdc23/1โฆ
Elevate your windowed app for spatial computing:
๐บ Simulator: cursor = eye tracking
๐ Content scales dynamically -> use vectors
๐ Semantic foreground styles & fill colors
๐ Place custom views into plain style Buttons
๐ Use TabView (not sidebar)
More: wwdcnotes.com/notes/wwdc23/1โฆ
Get started with privacy manifests:
๐ 3rd-party SDKs document privacy practices
๐ Privacy report helps fill labels
๐ Add domains to manifest: system blocks until tracking allowed
๐
Privacy-impacting SDKs list in fall, devs will get email
More: wwdcnotes.com/notes/wwdc23/1โฆ
Whatโs new in SF Symbols 5:
๐จ Configurable animation presets (e.g. bounce, scale)
๐ Variable color presets (e.g. cumulative, iterative)
โ๏ธ Custom symbols: use "erase layers" for better animation
๐๐ฎ 700 new symbols, majority about cars/gaming
More: wwdcnotes.com/notes/wwdc23/1โฆ
Bring widgets to new places:
๐ฅ๏ธ New locations: Desktop, iPad Lock, iPhone StandBy, Watch
๐ Content margins replace safe area
๐จ Use .containerBackground for removable backgrounds
๐ Visual changes in "vibrant rendering mode" -> react with env var
More: wwdcnotes.com/notes/wwdc23/1โฆ
Bring widgets to life:
๐ฌ Animate with .animation, .transition, .contentTransition
โจ Interactive using Button/Toggle
๐ Actions exposed to widget via AppIntents
๐ Triggering perform() reloads widget UI
๐ Pass properties to intent using @parameter
More: wwdcnotes.com/notes/wwdc23/1โฆ
Discover String Catalogs:
๐ Supersedes .strings(dict) files
๐ Strings automatically extracted, code source of truth
๐ Use LocalizedStringResource to represent / pass around
๐ข Pluralization supported
โ๏ธ Back to .string(dict) on build for compat.
More: wwdcnotes.com/notes/wwdc23/1โฆ
Meet Swift OpenAPI Generator:
๐ฆ Package plugin generates types, client, & server code
โ๏ธ Config & spec via YAML
๐ Handles requesting/parsing & more internally
๐ Mocking built-in for easy testing / previews
๐ Makes "Spec-Driven Development" easy
More: wwdcnotes.com/notes/wwdc23/1โฆ
Meet Push Notifications Console:
๐ Web-based tool
๐ฉ Send, inspect, validate
โ๏ธ Compose notifications with types & payload
๐ Analyze why a notification was not received
๐ Includes JWT token generator & validator
๐ฑ Even a device token validator
More: wwdcnotes.com/notes/wwdc23/1โฆ
If you found this thread useful, try out my @RemafoX_App!
A Mac app written in #SwiftUI to improve workflows in #Xcode.
Free features:
- Sort Selection
- Multi-line Code
- One-line Code
- Machine-translate via Google/Microsoft/DeepL/Yandex
Get started:๐
Share this Scrolly Tale with your friends.
A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.