Last Episode 🔥
- Using the #require macro for Swift Testing
- Creating view transitions in SwiftUI
- Monarch: Minimal, Manageable, Migrations 🦋
- How to expedite an app review on the App Store
- Comprehensive Guide to Mastering KeyPath in Swift
- Quick Design Feedback on your App
- Mastering container views in SwiftUI. Sections.
2024
- Vapor and Swift Testing: Running tests in parallel
- Conditional SwiftUI Accessibility Labels
- Unexpected Lessons: How a Medical Diagnosis Improved My Engineering Skills
- Reinventing Core Data Development with SwiftData Principles
- Faster iOS Networking with Shared Dictionary Compression
- Slow incremental builds using xcodebuild
- Beware UserDefaults: a tale of hard to find bugs, and lost data
- The Going Indie Podcast with Antoine van der Lee
- Giving depth to your App Icons
- How to run Swift Data and Core Data operations in the background
- Beware UserDefaults: a tale of hard to find bugs, and lost data
- What Are 3 Truths About Becoming Successful IOS Tech Lead? ‣ Swift and Memes
- Using Binaries as Libraries
- SwiftUI vs. Storyboard: A Comprehensive Analysis for iOS Development
- Using the #expect macro for Swift Testing
- Optimizing for VoiceOver and Voice Control
- Discover 3 new features of Xcode 16
- Using the zoom navigation transition in SwiftUI
- How to build a Safari extension with SwiftUI
- Growing a blog about Swift to 140k visitors per month
- Mastering container views in SwiftUI
- Indie Development: Full Course now Available
- New Mac Utility: Amnesia
- Parsing Beyond JSON with swift-parsing
- Announcing Swift 6
- Getting started with SwiftPM Snippets
- Introduction to Communication Patterns in SwiftUI
- Tip-Toeing From Android Into iOS Development
- Using Traits to annotate and customize test behavior
- Xcode Folders & Groups
- Recreating Readable Content Guide Sizing in SwiftUI
- The Power of Custom ShapeStyle for SwiftUI Theming
- Exploring SwiftUI: Creating a Custom Slider Inspired By Camera Control
- Point-Free is Xcode 16 ready
- Custom TabView Animation
- Swift Testing: Validate your code using expressive APIs
- Swift Build Times and Module Verification
- From corporate to indie: How and when to make the transition
- Github contribution graph with Swift Charts
- SwiftData Expressions
- Bad practice creating a StateObject
- Create Custom Visual Effects with SwiftUI - WWDC24
- Tracking geometry changes in SwiftUI
- Hyper Advanced Link Techniques Using openURL
- Customizing the appearance of symbol images in SwiftUI
- MeshGradients in iOS 18 and Xcode 15
- Build Multilingual Ready Apps - WWDC24
- Exploring SwiftUI: Using onScrollPhaseChange for Scroll Changes in iOS 18
- Nested Grid Layout Anomaly: Analysis Approach and Resolution Strategies for SwiftUI Layout Issues
- Designing Apps: 5 Methods to improve your workflow
- How to use EditorConfig files in Xcode
- Humans write code, and humans make mistakes
- How to create custom reusable container views in SwiftUI
- Disabling Xcode Asset Symbol Generation
- Swift Craft Conference Videos
- What's New in SwiftUI - WWDC24
- App design: 5 benefits of using system components
- Xcode 16 tricks to create a new file from text
- Non-Sendable types are cool too you know
- Using the Translation framework for language-to-language translation
- Exploring OpenAI: Creating a Proxy with AIProxy for iOS and macOS Apps
- Swift Navigation: Powerful navigation tools for all Swift platforms
- Customizing windows in SwiftUI
- App design: 5 benefits of using system components
- Non-Sendable types are cool too you know
- Using the Translation framework for language-to-language translation
- Exploring OpenAI: Creating a Proxy with AIProxy for iOS and macOS Apps
- Swift Navigation: Powerful navigation tools for all Swift platforms
- Mastering ScrollView in SwiftUI. Scroll Visibility
- Displaying Data with Table
- Going Indie: From Side Project to Going Independent
- Unobtrusive and testable issue reporting
- Common Misconceptions About SwiftUI
- How to help someone get started with iOS engineering
- A Paywall Optimization Success Story
- SwiftData Indexes
- Book: macOS by Tutorials
- Memory consumption when loading UIImage from disk
- Developing an Infinite Four-Direction Scrollable Pager with SwiftUI
- The Reality of Swift 6
- Add Personality to Your App Through UX Writing - WWDC24
- Customizing the appearance of symbol images in SwiftUI
- Mastering Animatable and AnimatablePair in SwiftUI
- Mastering ScrollView in SwiftUI. Scroll Phases
- Inspect network traffic using the Xcode Simulator
- Mastering Animatable and AnimatablePair in SwiftUI
- Show and hide SwiftUI inspectors with an identifiable item
- Swifter and Swifty: Mastering the Swift Testing Framework
- Some tips & tricks with the new iOS 18 ScrollView API
- Mastering ScrollView in SwiftUI. Scroll Phases
- SwiftUI can be a bit... eager
- Inspect network traffic using the Xcode Simulator
- Mastering Animatable and AnimatablePair in SwiftUI
- Show and hide SwiftUI inspectors with an identifiable item
- Swifter and Swifty: Mastering the Swift Testing Framework
- Some tips & tricks with the new iOS 18 ScrollView API
- A Summary Of How To Pass Data To SwiftUI Environment
- Laying out views with ContainerRelativeFrame in SwiftUI
- Typed throws in Swift explained with code examples
- Xcode Explicitly Built Modules
- Exploring Translation: Using translationPresentation for Translation Popover
- Using multi-step animations in SwiftUI
- The Evolution of SwiftUI Scroll Control APIs and Highlights from WWDC 2024
- Mastering ScrollView in SwiftUI. Scroll Offset
- My Favorite SwiftUI Updates in iOS 18
- Async await in Swift explained with code examples
- Improvements to Swift in Visual Studio Code coming with Swift 6
- Swift Academy Podcast - Antoine's favorite development tool
- Reverse Engineering Photos' New Search UI
- Preparing your App Icon for dark and tinted appearance
- What is new in SwiftUI after WWDC 24
- Enhanced replace transition for SF Symbols in iOS 18
- Swift 6: Incrementally migrate your Xcode projects and packages
- Using iOS 18’s new TabView with a sidebar
- Enhanced replace transition for SF Symbols in iOS 18
- Here are 3 advanced tips in Swift
- Getting started with Swift Testing
- Zoom navigation transition in SwiftUI
- What is new in SwiftUI after WWDC 24
- @Previewable: Dynamic SwiftUI Previews Made Easy
- What's new in Swift 6.0?
- All new frameworks presented at WWDC24
- What is new in SwiftUI after WWDC 24
- iOS 18: Notable UIKit Additions
- Zoom navigation transition in SwiftUI
- Present a form sheet in SwiftUI
- Swift Package Manager framework creation in Xcode
- Bad practice: not using a ButtonStyle
- W.W.D.C. 2024: The Pregame Quiz
- Do NOT init State externally in SwiftUI
- Don't Double my money: on Swift Numeric types
- Designing a Declarative API
- Scenes types in a SwiftUI Mac app
- ChatGPT for Swift: Top 5 code generation prompts
- Replacing The Deprecated cornerRadius View Modifier In SwiftUI
- Introduction to RealityView
- Tricking iOS Into Animating App Icons
- Introduction to Swift Service Lifecycle
- How to build segmented circular progress views in SwiftUI with Swift Charts
- Programmatic navigation in SwiftUI with NavigationPath and navigationDestination
- Repository design pattern in Swift explained using code examples
- Fix Xcode losing references to downloaded Simulator runtimes
- Mastering the containerRelativeFrame Modifier in SwiftUI
- How to profile your app's performance and Main Thread usage with Instruments and os_signposts
- Top 5 Tools Every iOS Developer Should Have in Their Xcode Arsenal
- Pinning Swift Package Versions Predictable SPM Package Versions Across All Machines
- Discovering app features with TipKit. Basics.
- Repository design pattern in Swift explained using code examples
- Fix Xcode losing references to downloaded Simulator runtimes
- Mastering the containerRelativeFrame Modifier in SwiftUI
- Discovering app features with TipKit. Basics
- Top 5 Tools Every iOS Developer Should Have in Their Xcode Arsenal
- Pinning Swift Package Versions
- How to use custom fonts and images in a Swift Package
- Xcode Build Insights: Keep track of project compilation times
- Safely unwrap optional values in SwiftUI bindings
- Asking AI to Refactor Swift Code
- Recreating Flighty in SwiftUI
- Concurrency in Swift 6: SE-0418
- WWDC Index
- Content margins in SwiftUI
- Solve Missing API declaration using required reason (ITMS-91053)
- The ContentUnavailableView In SwiftUI
- My experience with the “Blinkist trial”: Big boost
- Subscribing to SwiftData changes outside SwiftUI
- Hot Reloading In SwiftUI
- SwiftUI Pie Charts
- Content margins in SwiftUI
- Bar Chart creation using Swift Charts
- Deep linking for local notifications in SwiftUI
- What’s the difference between any and Any?
- Actor reentrancy in Swift explained
- Creating Shapes from SVG in a SwiftUI app
- 5 Practical Ways to Quickly Overcome a Programming Obstacle
- Localize a SwiftUI app
- Bar Chart creation using Swift Charts
- Deep linking for local notifications in SwiftUI
- What’s the difference between any and Any?
- Actor reentrancy in Swift explained
- Creating Shapes from SVG in a SwiftUI app
- 5 Practical Ways to Quickly Overcome a Programming Obstacle
- How to do pagination in SwiftUI
- Statistical significance and its importance with app experiments
- What it's like attending WWDC in Cupertino
- TIL dynamic libraries are only partially loaded at launch in iOS
- Splitting Up a Monolith: From 1 to 25 Swift Packages
- Fetching OSLog Messages in Swift
- iOS Interview - Understanding Dynamic Dispatch and Static Dispatch in Swift
- Trigger value pattern in SwiftUI
- Identifiable protocol in SwiftUI explained with code examples
- Apple Developer Videos on YouTube
- Building async button in SwiftUI
- How to define a custom file header for a Swift Package
- Exploring ABI stability, @frozen, and library evolution mode
- Request and check local network permission on iOS and visionOS
- Where Swift Concurrency will run your function?
- Key press events detection in SwiftUI
- Generate and read analytics reports from the App Store Connect API
- Swift Isolation Intuition
- Recreating Apple's beautiful visionOS search bar
- Using a Swift macro to generate an EnvironmentKey
- Safe array subscription in Swift
- SwiftUI Tasks Blocking the MainActor
- The power of consistency in side projects
- How to run asynchronous code in Swift Playground correctly?
- Using @_silgen_name to forward declare functions in Swift and improve build times
- Be Careful When You Initialize a State Object
- SwiftUI Previews-based architecture
- SwiftUI Inverting A Boolean Binding
- How to build a draggable bottom sheet with a scroll view in SwiftUI
- Test-Driven Development (TDD) for bug fixes in Swift
- Swift 5.10 Released
- Be careful when using .onTapGesture()
- Apple Developer Academy Call for Application 2024-2025
- SwiftUI loading states with a twist; Solving a mutation puzzle
- SwiftUI Tasks Blocking the MainActor
- Tips to help introverts and quiet ones survive software development
- Third-party libraries acknowledgments using a Settings bundle
- The Role of CI on Mobile Development
- Swift 6.0 Release Process
- What are Tokens?
- Vision Pro Connectivity
- Modding Plugins back into Xcode
- How to delay an animation in SwiftUI
- Extensions in Swift: How and when to use them
- The power of inout parameters
- How to determine where tasks and async functions run in Swift?
- Let's talk about data race safety in Swift 6!
- Vision Accessibility on Apple Vision Pro
- Fundamentals of type-driven code
- Shipping a visionOS app for launch
- How to use @ScaledMetric in SwiftUI for Dynamic Type support
- The power of self-sufficient features
- Ensuring interface legibility and contrast in visionOS
- Fun Alignment Guide Tricks
- What if your feature was a Command Line Tool?
- Create an animated transition with Matched Geometry Effect in SwiftUI
- Extra Large Title text styles in visionOS
- App Preview Videos Capturing using the Xcode simulator
- Getting Started With App Intents
- How to make a completionHandler much safer
- Automating SwiftUI Accessibility Audits in Xcode 15
- Disabling Core Data CloudKit Logging
- Detailed WWDC summaries
- xScope
- Status bar overrides in the iOS Simulator
- Antoine van der Lee on Building and Leading Winning Teams
- Introducing SwiftUI on visionOS
- Debug for visionOS using Xcode simulator visualizations
- Bad practice: loading a large image on the main thread
- Pricing Indie Apps: The Perks of a Wallflower Rule
- BA: Swiftable 2023 - Videos are out!
- Introducing SwiftUI on visionOS
- Scroll transition effects in iOS 17
- ScrollView Bounce Behavior configuration in SwiftUI
- Implementing volumes in visionOS
- Why write visionOS apps?
- Concurrency-safe global variables to prevent data races
- Perception: A back-port of @Observable
- Concurrency-safe global variables to prevent data races
- Perception: A back-port of @Observable
- How to write Unit Tests for Code Performance
- Remove background from image in SwiftUI
- SwiftUI Button Styles And Shapes
- Managing Loading States in SwiftUI
- StoreKit testing in Swift
- @Observable Macro performance increase over ObservableObject
- AnyView’s impact on SwiftUI performance
- How to use Stable Diffusion models in a Swift app
- Encrypted Portals between Macs – built in Swift and Rust
- From bug report to bug fix: optimizing the Customer Support journey
- Awesome newsletters for iOS and Swift developers in 2024
- SwiftUI Binding Tips
- Swift Newsletters: How to stay up to date as an app developer
- Comparing Swift Compiler
- Bad practice: using "YYYY" to format a Date
- Using @Binding with @Environment(Object.self)
- SwiftData Fetching Pending Changes
- There is no right or wrong in software engineering
- Unxippity - fast Xcode unxipping, is open source
2023
- SwiftLee 2023: A Year in Review
- You don't need protocols
- 2, 6 & 7: Swift Tips by Vincent
- Logging SwiftUI Changes
- 30 tips to make you a better iOS developer
- What’s new in Swift 5.9?
- Container Pattern in SwiftUI
- Using campaign links to track impressions, downloads, and sales
- Enable upcoming Swift features in SPM
- Testing network calls using URLProtocol
- Trigger property observers from initializers in Swift
- SwiftData Deleting Data
- Don’t ship API keys!
- iOS Interview Questions-Part 3
- Unlocking SwiftUI’s Hidden Potential: Leveraging ViewModifiers
- How to use String Catalog to localize iOS apps automatically
- Code Completion Episode 141: That’s a Lot of App
- Announcing contingent pricing for subscriptions
- Swift: A Comprehensive Guide to Typecasting
- 3rd Anniversary Swift and Tips: 2023 Results
- Get started with Gemini AI on iOS with SwiftUI
- SFSafariViewController in SwiftUI: Open webpages in-app
- Using Strings as a View in SwiftUI
- AsyncAlgorithms 1.0
- Pow - iOS Effects Library going open-source
- SwiftUI geometryGroup() Guide: From Theory to Practice
- From viewWillAppear to viewIsAppearing - Perfecting Your iOS View Transitions
- Transforming Doubt into Drive: The Engineer’s Journey Through Imposter Syndrome
- Swift Evolution: Reading and learning from proposals
- Stretching an audio file using Swift
- Scoped animations in SwiftUI
- Observable Architecture Beta!
- Create an AsyncStream from withObservationTracking() function
- Finding a new job as a software engineer in 2023
- Pair Programming with AI
- Unit testing async/await Swift code
- Migrating a Core Data store to an App Group shared container
- Controlling Actors With Custom Executors
- How to migrate to a new schema with SwiftData in iOS
- SwiftUI SplitView Compact Column Control
- Introducing Inferno: Metal shaders for SwiftUI
- The alternative to SwiftUI's Spacer
- Debugging SwiftUI views: what caused that change?
- Swifty Stack - Redefining App Development
- Ensure Visual Accessibility: Glyphs, Icons and Shapes
- The First 100 Subscribers for Elite Hoops
- Swift Student Challenge
- Progress toward the Swift 6 language mode
- On-Crash Backtraces in Swift
- RocketSim 12.0: Builds Apps Faster
- printChanges vs logChanges
- Animatable Dual Axis Graph
- Hierarchical background styles in SwiftUI
- Calculating a Smooth Clock Hands Animation
- Custom Traits and SwiftUI
- Swift Measurement API
- Promotional offers: Increase App Revenue using discounts
- Using the ARKit coaching view in a SwiftUI AR application
- Bad practice: not using multiline strings
- Generating Random Numbers Elegantly in Swift
- PITFALL: Removing arranged subview in UIStackView
- Missing Xcode run test buttons
- Design Evolution: Offline Map Downloader
- User Defaults reading and writing in Swift
- Combine charts to create stunning designs with Swift Charts
- How (not) to monitor SwiftUI @State
- Tap Gesture vs Button
- Masking Third Party Dependencies
- Introduction to bash scripting for iOS developers
- Upstream Decisions
- Thread dispatching and Actors: understanding execution
- Designing for spatial computing: from iOS and iPadOS to visionOS
- How to Make Your App Look Like You've Hired a Designer
- Bad practice: not using Phantom Types
- Being a good citizen in the land of SwiftSyntax
- Find Ancestor Types
- Tips for post creation
- @preconcurrency: Incremental migration to concurrency checking
- SF Symbols 5
- Split your data easily and efficiently with .chunked()
- Using Core Data and Swift Data side by side
- Format to Multiple Lines
- Debugging Improvements in Swift 5.9
- Xcode 15.1 Beta Release Notes
- Picking your minimum iOS version to support
- MusicKit and App Clips
- How async/await works internally in Swift
- Swift Parameter Packs
- How to break multiple nested loops in Swift
- @Model for CoreData
- Taking your Strings Catalogs to the Next Level
- Value and Type parameter packs in Swift explained with examples
- How to create an App Clip for your app
- The curious case of ShareLink with plain text strings
- Typed throws is Swift
- UIKit View Lifecycle - viewIsAppearing
- XCBuildAnalyzer: SwiftUI application to analyze Xcode build system graph
- The Role of Emotional Intelligence in Engineering Management
- Style your TipKit Tips
- Dismiss keyboard when return is pressed in a multiline SwiftUI TextField
- iPhone 15 Screen Sizes
- Swift 5.9 Released
- A new tool for testing macros in Swift
- Learnings from Analyzing 20 Successful Mobile Paywalls
- App Intent driven development in Swift and SwiftUI
- Swift 6: Preparing your Xcode projects for the future
- Examples of animating SF symbols in SwiftUI
- iOS app setup for remote push notifications
- SSWG 2023 Annual Update
- How to check if you use a required reason API
- Discover localizedStandardCompare()
- Hands-on experience with the new Observable Macro
- Build performance analysis for speeding up Xcode builds
- Mastering StoreKit 2. ProductView and StoreView.
- Delightful SwiftUI image drag & drop for a macOS app
- AppKit vs SwiftUI: Stable vs Shiny
- SwiftData Background Tasks
- Mastering Thread Safety in Swift With One Runtime Trick
- Bad practice: using if instead of guard
- RocketSim 11.0: Builds Apps Faster
- Metallurgy: A collection of Metal Shaders
- Apple Vision Pro developer kit
- Objective-C Internals: Retain
- SwiftData Saving Changes
- SwiftUI onChange Deprecation
- Building Peak
- STACKTRACE
- Ranges in Swift explained with code examples
- File importing and exporting in SwiftUI
- Accessing Security Scoped Files
- Creating a Swift Package: Quick Start Gotchas
- #file behavior change in Swift 5.8
- Parallax header effect in SwiftUI using CoordinateSpace
- Uh oh, you picked the wrong UI architecture
- MainActor usage in Swift explained to dispatch to the main thread
- Foundation Package Preview Now Available
- Context SDK - Upsell at the right time
- Tips and tricks for exploring a new codebase
- Spinning Up a Feature Request Screen with Supabase
- Universal Links implementation on iOS
- Developer guide on App Clips for iOS
- Using Swift Reflection
- On Apple's Guidance for StateObject Initialization
- ImageRenderer in SwiftUI
- Speedrun Design: Heart Rate Zone View in SwiftUI
- Scheduling app releases with Xcode Cloud
- Skip typing your login credentials manually with Xcode breakpoints
- What I Learned Writing My Own CloudKit Syncing Library
- 3 mistakes to avoid with async / await
- Add Push Notifications & iOS Deep Linking in SwiftUI
- Mastering Canvas in SwiftUI
- dataFude for Simulator
- Optimizing your app for Network Reachability
- Double Protocol Conformance
- Drag and drop transferable data in SwiftUI
- When Matched Geometry Effect Doesn't Work
- 10 Things to do when starting a new job
- Sparkle - Handling updates outside the macOS App Store
- Deeplink URL handling in SwiftUI
- Generating
Hashable
andEquatable
for functions - Efficient Data Transfer in iOS Apps: Exploring HTTP Compression
- Collecting Xcode Cloud metrics using webhooks
- Sharing content in SwiftUI
- Learn How To Easily Create Deep Links in SwiftUI
- Bicycle & forces
- Unit testing async/await Swift code
- 3 mistakes to avoid with Optionals
- Performance: Faster or Fast?
- Welcoming Apple as a supporter of the Swift Package Index
- Network Extension Debugging on macOS
- Swift Community Awards
- Using Critical Alerts in iOS applications
- Reducing iOS app size using linker and why_load
- Group and sort Swift collections like a pro
- The What-If Architecture
- Activities and attachments in the XCTest framework
- Making macOS SwiftUI text views editable on click
- XCTCast
- How to change JSON keys by using Swift's CodingKey protocol
- Xcode Tip: filter to show modified files only
- Set text color in SwiftUI
- How the relative size modifier interacts with stack views
- 3 mistakes to avoid with Closures
- Removing Search Web from a context menu
- Performance testing in Swift using the XCTest framework
- Wrapping functions in structs
- GitHub webhooks Xcode Cloud
- Pixel Perfection
- Location Simulation in Xcode’s Simulator
- What's new in Swift 5.8
- How to make an interactive picker for a Swift command-line tool
- Keep your CoreData store small by vacuuming
- How to write you first Unit Test
- Overinspired?
- The operation couldn’t be completed: solving errors in Swift
- Swift Community Awards
- How to Create Configurable Widgets With Dynamic Options?
- SwiftUI Tables Quick Guide
- How to change Command + Click behavior in Xcode
- Accessibility: Try, then Listen
- Scaling Customer Support
- RocketSim 10.0: Builds Apps Faster
- Swift Evolution proposals in Alfred
- Building For Voice Control
- Keyframe animations in SwiftUI
- @backDeployed: Could SwiftUI be backward compatible?
- SwiftUI views versus modifiers
- Xcode Header Template for Swift Packages
- Equatable conformance in Swift explained with code examples
- Peer group benchmarks now available in App Analytics
- OAuth in SwiftUI
- Testing Is About Confidence
- What's new in Xcode 14.3 and iOS 16.4
- Fastlane Maintenance
- Inspiration for watchOS Complications
- View Composition using ViewModifiers in SwiftUI
- Pattern matching on error codes
- 5 Tips to creating a (good) pull request
- Copilot for Xcode
- Introducing Roadmap: Offer Public Feature Voting
- You don't need protocols
- Safely pinning SPM dependencies to exact versions
- The Swift Programming Language” book now published with DocC
- 4 Picker styles in SwiftUI Form
- Using User Defaults to store preferences in Swift
- UI Tests, but easier
- Using ASC API to trigger Xcode Cloud workflows
- SwiftUI Multi data-type chart
- The Power of SF Symbols
- Semantic Colors and Styles
- Cheating the System
- Different ways of writing extensions in Swift
- iOS Jailbreak Detection in 2023
- Tracking hover location in SwiftUI
- Adding a stretchable header to a SwiftUI ScrollView
- The evolution of Facebook’s iOS app architecture
- A guide for making apps accessible
- Code Replay for Xcode
- VSCode Swift v1.0.0
- Search with filters and scopes
- RocketSim in Review (French)
- Xcode Simulator Directories Exploration
- TikTok meets SwiftUI
- Detached Tasks in Swift explained with code examples
- Swift Senpai RocketSim Giveaway
- Just a Little Nicer
- A Swiftly Year in Review with Antoine van der Lee
- Business of Apps Videos
- Testing push notifications on the iOS simulator
- Disconnect your app from unit testing
- Container Pattern in SwiftUI
- Prevent your app's files from being included in iCloud Backup
- Do iOS Panel
- Task Groups in Swift explained with code examples
- Debouncing with Swift concurrency
- Make your app's files user-visible on the iPhone
- Text modifiers in SwiftUI
- SwiftUI Toolbar Title Menus
- Mastering charts in SwiftUI
- RocketSim 9.0: Enhance your iOS Simulator
- A new library to control dependencies
- Prevent copy & paste into other iOS apps
- Xcode Cloud scripts: Fastlane and Cocoapods
- The dumbest thing about imageLiteral
- Stress testing on iOS with xcmonkey
- Hacking with Swift Newsletter: January 2023
- How to become a more successful developer
- A minimal implementation of State and Binding with Swift
- iOS development trends in review
- Limit Swift Concurrency's cooperative pool
- Starting with Swift 5.8
- SwiftUI Tip: Always correct corner radius for subviews
- Preparing for a technical iOS job interview with questions and answers
2022
- SwiftLee 2022: A Year in Review
- Subscription Tutorial with StoreKit 2 and Swift
- Swift Stride Quick Guide
- Secret Measurement Feature in the New iPhone
- Testing Apps with an iPhone and the CarPlay Simulator
- So Long, Old Friend
- The Future of Foundation
- How to manage build
- Collecting GitHub Action
- Prototyping SwiftUI interfaces with OpenAI's ChatGPT
- Use defaultAppStorage
- OptionSet in Swift
- Swift mod operator (%)
- Swift Enum With Labeled Associated Values
- @dynamicCallable in Swift
- Test Your Command-Line Tool In Xcode
- Using complex gestures in a SwiftUI ScrollView
- Better SwiftUI navigation APIs
- How to Use some Generics?
- Allow XCTest to simulate location
- FormatStyle and TextField in SwiftUI
- What's new in Screen Time API
- Create custom catalogs at scale with ShazamKit
- Build device-to-device interactions with Network Framework
- Profile and optimize your game's memory
- Bring multiple windows to your SwiftUI app
- How I made my app 73% lighter
- Swift project in 2023
- Create Swift Package plugins
- Improve DNS security for apps and servers
- Explore media metadata publishing and playback interactions
- What's new in PDFKit
- Create accessible Single App Mode experiences
- Accelerate machine learning with Metal
- Scale compute workloads across Apple GPUs
- Explore the machine learning development experience
- Efficiency awaits: Background tasks in SwiftUI
- Use Xcode for server-side development
- Explore SMS message filters
- Discover Benchmarks in App Analytics
- Discover Managed Device Attestation
- What's new in WKWebView
- Power down: Improve battery consumption
- Explore the machine learning development experience
- Efficiency awaits: Background tasks in SwiftUI
- Use Xcode for server-side development
- Explore SMS message filters
- Discover Benchmarks in App Analytics
- Discover Managed Device Attestation
- Simplify C++ templates with concepts
- What's new in App Store Connect
- Evolve your Core Data schema
- Discover ARKit 6
- Design protocol interfaces in Swift
- Author fast and reliable tests for Xcode Cloud
- Implement proactive in-app purchase restore
- Writing for interfaces
- Discover PhotoKit change history
- Deep dive into Xcode Cloud for teams
- What's new in TextKit and text views
- Go bindless with Metal 3
- Display HDR video in EDR with AVFoundation and Metal
- Meet Swift Package plugins
- Explore Apple Business Essentials
- Design for Arabic
- Enhance your Sign in with Apple experience
- SwiftUI on iPad: Add toolbars, titles, and more
- What's new in StoreKit testing
- What's new in Vision
- Design for Collaboration with Messages
- Get it right (to left)
- Transform your geometry with Metal mesh shaders
- What’s new in HLS Interstitials
- Display EDR content with Core Image, Metal, and SwiftUI
- Go further with Complications in WidgetKit
- SwiftUI on iPad: Organize your interface
- Create Safari Web Inspector Extensions
- What's new in the Photos picker
- Design for Arabic
- Create camera extensions with Core Media IO
- Track down hangs with Xcode and on-device detection
- Explore navigation design for iOS
- What's new in web accessibility
- Improve app size and runtime performance
- The craft of SwiftUI API design: Progressive disclosure
- Create a great video playback experience
- Discover Sign in with Apple at Work & School
- Demystify parallelization in Xcode builds
- Reach new players with Game Center dashboard
- Use SwiftUI with UIKit
- Explore App Tracking Transparency
- Swift Charts: Raise the bar
- Support multiple users in tvOS apps
- What's new in MapKit
- Maximize your Metal ray tracing performance
- Debug Swift debugging with LLDB
- Reduce networking delays for a more responsive app
- Make a great SharePlay experience
- Link fast: Improve build and launch times
- What’s new in Safari Web Extensions
- Explore USD tools and rendering
- Adopt declarative device management
- Design an effective chart
- Add Shared with You to your app
- Embrace Swift generics
- Build a desktop-class iPad app
- What’s new in AVQT
- Use Xcode to develop a multiplatform app
- Create engaging content for Swift Playgrounds
- Display ads and interstitials in SharePlay
- Bring your iOS app to the Mac
- What's new with SKAdNetwork
- Meet ScreenCaptureKit
- Streamline local authorization flows
- Replace CAPTCHAs with Private Access Tokens
- Understand USD fundamentals
- What’s new in iPad app design
- Build a productivity app for Apple Watch
- Meet CKTool JS
- What's new in HealthKit
- Improve the discoverability of your Swift-DocC content
- What’s new in Wallet and Apple Pay
- Compose advanced models with Create ML Components
- Create your Privacy Nutrition Label
- What’s new in Endpoint Security
- Meet Apple Music API and MusicKit
- Target and optimize GPU binaries with Metal 3
- Eliminate data races using Swift Concurrency
- Integrate your custom collaboration app with Messages
- Meet the expanded San Francisco font family
- Compose custom layouts with SwiftUI
- Build global apps: Localization by example
- Meet Transferable
- What’s new in privacy
- Take ScreenCaptureKit to the next level
- Swift Regex: Beyond the basics
- What’s new in CloudKit Console
- Boost performance with MetalFX Upscaling
- Design app experiences with charts
- Optimize your use of Core Data and CloudKit
- Optimize your Core ML usage
- Meet distributed actors in Swift
- What's new in Swift-DocC
- Explore in-app purchase integration and migration
- Design App Shortcuts
- Meet Background Assets
- Explore EDR on iOS
- Load resources faster with Metal 3
- Plug-in and play: Add Apple frameworks to your Unity game projects
- What's new in Safari and WebKit
- Create parametric 3D room scans with RoomPlan
- Adopt Variable Color in SF Symbols
- Enhance collaboration experiences with Messages
- Add Live Text interaction to your app
- What's new with in-app purchase
- Create macOS or Linux virtual machines
- Meet passkeys
- Meet desktop-class iPad
- What’s new in notarization for Mac apps
- What's new in App Clips
- Deliver reliable streams with HLS Content Steering
- Get to know Developer Mode
- What's new in AppKit
- What's new in Create ML
- Create a more responsive media app
- What's new in Nearby Interaction
- Dive into App Intents
- Add accessibility to your Unity games
- Bring your world into augmented reality
- Meet WeatherKit
- Get to know Create ML Components
- Meet Swift Async Algorithms
- Bring Continuity Camera to your macOS app
- Capture machine-readable codes and text with VisionKit
- Qualities of great AR experiences
- What's new in SwiftUI
- Meet Web Push for Safari
- Adopt desktop-class editing interactions
- What's new in Xcode
- Discover Metal 3
- Get the most out of Xcode Cloud
- What's new in SharePlay
- Meet Focus filters
- Explore more content with MusicKit
- What's new in Swift
- Build your first app in Swift Playgrounds
- Enhance voice communication with Push to Talk
- Get more mileage out of your app with CarPlay
- What's new in UIKit
- The SwiftUI cookbook for navigation
- What's new in managing Apple devices
- Implement App Shortcuts with App Intents
- Get timely alerts from Bluetooth devices on watchOS
- Program Metal in C++ with metal-cpp
- Visualize and optimize Swift concurrency
- Complications and widgets: Reloaded
- Apple Design Awards
- Platforms State of the Union
- Hello Swift Charts
- Bring your driver to iPad with DriverKit
- Meet Swift Regex
- What's new in SF Symbols 4
- Meet Apple Maps Server APIs
- How to Start iOS Development Career
- OpenHaystack framework
- Catalyst by Tutorials
- Saving Data in iOS
- How to Make a Game Like Wordle in SwiftUI
- NSDateFormatter
- Swiftcord
- 116: “The evolution of SwiftUI” with special guest Chris Eidhof
- SwiftUI Series - Speedrun
- Creating your own file template in Xcode
- AttributedString Attribute Scopes
- Mastering TimelineView in SwiftUI
- What's A Best-in-Class macOS App Look Like?
- Apple Developer Academy
- The SwiftUI Series
- Calling Private APIs in iOS
- Swift package manager
- Piecemeal adoption of Swift 6
- Creating a property wrapper to persist Codable types
- When to remove your iOS app from the App Store
- WWDC22 special event submissions open
- Memory leaks prevention using an autoreleasepool in unit tests
- In-Out Parameters In Swift Functions
- Monospace Digits
- Measuring app performance in Swift
- How @MainActor works
- Acing the iOS Interview
- How to Start iOS Development Career - The 5 Steps Plan
- Using new Swift Async Algorithms package to close the gap on Combine
- iOS Accessibility in SwiftUI: Create Accessible Charts using Audio Graphs
- Core Image Tutorial: Getting Started
- Send Events from SwiftUI to UIKit and Vice Versa
- SwiftUI Supporting External Screens
- Clarifying criteria & new timing extension for App Store
- Linking a Swift package only in debug builds
- Practical Core Data
- Open Sourcing URLRouting and VaporRouting
- Mobile Systems Design
- The Golden Rules of
weak self
- APP ICON BOOK
- AttributedString’s Codable format and what it has to do with Unicode
- Two Ways to Unit Test Notification Center in Swift
- Sharing Core Data With CloudKit in SwiftUI
- UICollectionView with UIContentConfiguration for Cells Compositional List Layout and Diffable Datasourc
- Full Speed Indy Development with Dru Freeman – Podcast S12 E12
- Small developer assistance submission requests due by May 20
- iOS Scene Delegates and External Screens
- AsyncThrowingStream and AsyncStream explained with code examples
- Different methods to remove the last item from an array in Swift
- The difference between checked and unsafe continuations in Swift