Sign in

Felipe Espinoza

@craftingswift.dev
82 followers 59 following 134 posts

iOS and macOS developer. 🇨🇱🇳🇴. Youtuber (youtube.com/@craftingswift). Hobby designer, photographer and illustrator.

PostsRepliesMedia
Felipe Espinoza @craftingswift.dev · 14/09/2026
🎬 The next part of my SwiftData + CloudKit series is out! This time, I cover the common issues you may have after deploying your app to the App Store when want to make changes. #appledeveloper #iOS #swiftdata #cloudkit
youtube.com
SwiftData + CloudKit: Don't Break Syncing with V2
This is part 2 of my SwiftData series. In this one, we will take a look on how to version SwiftData models, and how that translate to CloudKit. I will show and solve one of the most common issues…
100
Felipe Espinoza @craftingswift.dev · 31/08/2026
This is the first video of my new series, covering all practical aspects of the SwiftData + CloudKit combination. This one is about basics + when they are a good fit #swiftdata #cloudkit #appledeveloper www.youtube.com/watch?v=fpKB...
youtube.com
SwiftData + CloudKit: When You Should (and Shouldn't) Use It
This is the first part of a new series covering SwiftData + CloudKit in real wolrd apps. This first video is all about the basics of how SwiftData + CloudKit work, giving you the right mental model…
131
Felipe Espinoza @craftingswift.dev · 11/06/2026
Everything but the code is an amazing book, which is on sale until tomorrow. It's a great time to get it, if you wanna know why is so cool, you can check my video about it link to the sale: www.hackingwithswift.com/offers youtu.be/DdSEMSlh2ko
youtu.be
Why I Recommend This Book to Every iOS Developer
YouTube video by Crafting Swift
000
Felipe Espinoza @craftingswift.dev · 05/06/2026
With WWDC26 coming and a lot of sessions to watch, I will keep track of them in Notion again. It has been great to manage my learning. It can help you as well youtu.be/tEAS5rUfMLE?... #wwdc #wwdc26 #developer #iOS
youtu.be
Keeping track of WWDC Sessions with Notion
In this video I go through how I organize my queue and watch history of WWDC sessions using notion. I share how I take notes and summarize the sessions too with Freeform. The script I created to…
010
Felipe Espinoza @craftingswift.dev · 03/06/2026
Today I talk about @twostraws.bsky.social's book: "Everything but the Code" It's a really impactful book for iOS developers. It just happen to be 50% of right now I think it's simply a MUST for iOS devs #bookRecommendation #iOS #appleDevelopment youtu.be/DdSEMSlh2ko
youtu.be
Why I Recommend This Book to Every iOS Developer
Today I want to share one of the most impacting books I've read for iOS develoment: Everything But The Code by Paul Hudson. It's a book that teaches you from an Apple Developers perspective about…
121
Felipe Espinoza @craftingswift.dev · 28/04/2026
Today I share a small tip to use SwiftTesting: `CustomTestStringConvertible`. It’s a neat protocol to improve the output of your parameterized tests. craftingswift.dev/articles/imp... #swiftTesting #quickTip
craftingswift.dev
Improve SwiftTesting Parameterized Tests with `CustomTestStringConvertible`
A small protocol conformance helps improve your test output.
120
Reposted by Felipe Espinoza
Snapp iOS Weekly @snappiosweekly.bsky.social · 28/04/2026
🧩 𝐷𝑒𝑓𝑎𝑢𝑙𝑡𝑠 𝑎𝑛𝑑 𝑜𝑣𝑒𝑟𝑟𝑖𝑑𝑒𝑠 𝑓𝑜𝑟 𝐹𝑎𝑐𝑡𝑜𝑟𝑦 𝑐𝑜𝑛𝑡𝑒𝑥𝑡𝑠 𝑤𝑖𝑡ℎ 𝐹𝑎𝑐𝑡𝑜𝑟𝑦𝐾𝑖𝑡 by Felipe Espinoza (@fespinozacast.bsky.social) FactoryKit's global state can silently bypass test overrides. Use .𝑜𝑛𝑐𝑒() and 𝐴𝑢𝑡𝑜𝑅𝑒𝑔𝑖𝑠𝑡𝑒𝑟𝑖𝑛𝑔 to make mocks resolve correctly every time. #Swift #SwiftUI craftingswift.dev/articles/def...
craftingswift.dev
Defaults and overrides for Factory contexts with FactoryKit
The tale of a surprising behavior I found while using FactoryKit.
011
Reposted by Felipe Espinoza
Snapp iOS Weekly @snappiosweekly.bsky.social · 24/04/2026
📢 𝗜𝘀𝘀𝘂𝗲 𝟴𝟵 𝗶𝘀 𝗼𝘂𝘁! Highlights: 🤖 𝑁𝑒𝑡𝑤𝑜𝑟𝑘 𝑂𝑝𝑡𝑖𝑚𝑖𝑧𝑎𝑡𝑖𝑜𝑛 𝑣𝑖𝑎 𝐴𝐼 𝐴𝑔𝑒𝑛𝑡𝑠 📷 𝑂𝐶𝑅 𝑤𝑖𝑡ℎ 𝑉𝑖𝑠𝑖𝑜𝑛 🧩 𝐹𝑎𝑐𝑡𝑜𝑟𝑦𝐾𝑖𝑡 𝐷𝑒𝑓𝑎𝑢𝑙𝑡𝑠 & 𝑂𝑣𝑒𝑟𝑟𝑖𝑑𝑒𝑠 📜 𝑆𝑐𝑟𝑜𝑙𝑙𝑉𝑖𝑒𝑤 𝑃𝑒𝑟𝑓𝑜𝑟𝑚𝑎𝑛𝑐𝑒 🌐 𝑆𝑡𝑎𝑡𝑖𝑐 𝑆𝑖𝑡𝑒 𝐵𝑢𝑖𝑙𝑑𝑒𝑟 𝑖𝑛 𝑆𝑤𝑖𝑓𝑡𝑈𝐼 ⚙️ 𝑚𝑎𝑐𝑂𝑆 𝑆𝑦𝑠𝑡𝑒𝑚-𝑊𝑖𝑑𝑒 𝑆𝑒𝑟𝑣𝑖𝑐𝑒𝑠 🔍 𝑀𝑒𝑚𝑜𝑟𝑦 𝐿𝑒𝑎𝑘𝑠 ♿ 𝐴𝑐𝑐𝑒𝑠𝑠𝑖𝑏𝑖𝑙𝑖𝑡𝑦 𝑁𝑢𝑡𝑟𝑖𝑡𝑖𝑜𝑛 𝐿𝑎𝑏𝑒𝑙𝑠 #iOSDev #Swift
ios-newsletter.snappmobile.io
iOS Newsletter Issue 89
Hi folks,
233
Felipe Espinoza @craftingswift.dev · 21/04/2026
✍️ new blog post! I wrote my experience understanding the internals of FactoryKit, a dependency injection library for SwiftUI craftingswift.dev/articles/def... #iOS #development #dependencyInjection
craftingswift.dev
Defaults and overrides for Factory contexts with FactoryKit
The tale of a surprising behavior I found while using FactoryKit.
040
Felipe Espinoza @craftingswift.dev · 20/04/2026
I am working in two CFP for swift / iOS conferences. Let me know if you can give me honest feedback in my CFP and I will send them to you. Thanks!
110
Felipe Espinoza @craftingswift.dev · 15/04/2026
⏲️ Version 1.2.0 of Chronia is out on the Mac App Store! This release introduces the following improvements: - Rename or Delete Tags - Drag & Drop Tags to reorder them - Inspector re-design - Export a task as a markdown summary ...
100
Felipe Espinoza @craftingswift.dev · 15/04/2026
@twostraws.bsky.social I would love a physical copy of "Everything but the code"! Hopefully you can make it happen
000
Felipe Espinoza @craftingswift.dev · 14/04/2026
🎬 New video: Design and Develop Live Activities for iOS 26 (Remastered) I originally published this in 2024 and it was quite popular, but the audio? Not so much 😅 So I went back, cleaned it up, and updated the content. www.youtube.com/watch?v=E63k...
youtube.com
110
Felipe Espinoza @craftingswift.dev · 07/04/2026
A new blog post is out, this time is about how to migrate view model observations from `ObservableObject` to `@Observable` I show three different alternatives and their tradeoffs craftingswift.dev/articles/mig... #ios #swiftui
craftingswift.dev
Migrating to @Observable. Combine Observations outside SwiftUI
Exploring options of migrating combine observations on view models when dealing with @Observable objects.
031
Felipe Espinoza @craftingswift.dev · 31/03/2026
Implementing Apple Wallet Passes are not that easy to do. In new video I will break down the process to build them, to sign them, debug and also cover NFC passes. It's a practical, end-to-end guide based on real experience www.youtube.com/watch?v=7no0...
youtube.com
PassKit Explained: Build Your First Apple Wallet Pass
Build Apple Wallet passes from scratch with PassKit 🚀 In this video, I walk through the full process: pass structure, signing, debugging, and how to integrate passes into your iOS app. I also cover…
100
Reposted by Felipe Espinoza
Nil Coalescing @nilcoalescing.com · 26/03/2026
“The SwiftUI Way” is a new book by @natpanferova.bsky.social written for SwiftUI developers who want to develop a deeper intuition for working with the framework, recognize potentially harmful anti-patterns, and build more maintainable and performant SwiftUI apps: nilcoalescing.com/blog/TheSwif...
nilcoalescing.com
The SwiftUI Way: patterns and anti-patterns for production apps
'The SwiftUI Way' is a new book by Natalia Panferova that shows experienced SwiftUI developers how to align with the framework's internal expectations.
0167
Felipe Espinoza @craftingswift.dev · 17/03/2026
My first blog post after quite a while: Syncing iOS and Android Tracking Events. Where I explain how we have a single source of truth at work for tracking events, so we can evaluate features across the apps. craftingswift.dev/articles/syn... #iOS #analytics #iOSdev
craftingswift.dev
Syncing iOS and Android Tracking Events
How to ensure your analytics events are equivalent across platforms, so you can evaluate features across the iOS and Android versions of your apps.
000
Felipe Espinoza @craftingswift.dev · 16/03/2026
Dependency Injection is a common problem to solve in SwiftUI app. In this video I explore different approaches with their pros and cons to solve common situations where Dependency Injection is needed. www.youtube.com/watch?v=RlJW... #swiftui #dependencyinjection #iosarchitecture
youtube.com
Advanced Dependency Injection for SwiftUI Apps - Part 1
Dependencies are an unavoidable aspect of app development. We want to control them and Dependency Injection is the most common technique to do that. In this video we explore different ways to achieve…
011
Felipe Espinoza @craftingswift.dev · 08/03/2026
In many ways I feel "I'm behind" when it comes to AI development. Building apps with AI and crafting apps feel like opposites approach to app development. Now, I've been starting learning more about AI and trying it out and **one use case I like very much: prototyping and building personal apps.**
100
Felipe Espinoza @craftingswift.dev · 05/03/2026
It's been a while in my head, but now it's finally out! craftingswift.dev This will be my portfolio website + blog The site is currently being built, but I will share more content besides only using video form. #developer #apple #iOS #macOS #youtuber
craftingswift.dev
Felipe Espinoza | CraftingSwift
Portfolio of Felipe Espinoza (CraftingSwift), including YouTube content and the Chronia app.
010
Felipe Espinoza @craftingswift.dev · 04/03/2026
📣 Chronia 1.1 is out! In this release, I’ve added the ability to pause and resume work sessions. You can also create and add tags to your sessions, which will help you map your process and identify areas for optimization in your projects. Check it out! apps.apple.com/app/chronia-... #macOS
000
Felipe Espinoza @craftingswift.dev · 24/02/2026
I'm surprised this is not a native control on macOS, but for the new Tag feature of Chronia, I wanted to quickly filter/select a tag for a work session, then if the tag is not found, offer to create it in the same UI. #macOS #ui #ux
110
Felipe Espinoza @craftingswift.dev · 22/02/2026
In my latest video: Recreating Slack’s iOS Navigation Bar in SwiftUI. I was testing a new feature coming to soon to Chronia. Tags. Simple, but allows me to summarize the work on my videos to get a better breakdown of the work I put on a video #macOS #app #timeTracking
100
Felipe Espinoza @craftingswift.dev · 17/02/2026
📣 New video out! This time, I replicate the navigation bar styling in Slack for iOS using only SwiftUI APIs. I break down the problem and solve it step by step. The code is in the video description. Check it out! www.youtube.com/watch?v=I7lU... #swift #swiftui #navigationbar #ios26
youtube.com
Recreate the slack navigation bar on iOS 26
In this video, I break down the Slack navigation bar styling and rebuild the effect step by step in pure SwiftUI — no UIKit, no private APIs, no custom nav bar implementation. You’ll learn: - How to…
010
Felipe Espinoza @craftingswift.dev · 11/02/2026
It's been many years since I set aside time to tweak my terminal. I keep using zsh / tmux / neovim and my dot files have been the same for quite a while. What are the newest popular tools used for this? #cli #developer
110
Felipe Espinoza @craftingswift.dev · 03/02/2026
Using @Observable is great, but it has one small caveat. The initializer of the @Observable objects will be called multiple times, even with @State @nilcoalescing.com's excellent article covers that topic in more detail. #iOS #swiftUi nilcoalescing.com/blog/Initial...
nilcoalescing.com
Initializing @Observable classes within the SwiftUI hierarchy
Learn the recommended ways to initialize and store @Observable classes in SwiftUI views, and see what can go wrong when observable state is managed incorrectly.
0104
Felipe Espinoza @craftingswift.dev · 02/02/2026
I try to always be productive on my side projects, YouTube and my apps. For that my approach is to work each day a bit. I use my Mac App Chronia to keep tract of that work and see how it builds up in time. These are the things I worked on last week. #sideprojects #productivity #timetracking
000
Felipe Espinoza @craftingswift.dev · 31/01/2026
I recently watched 🚀 Antoine van der Lee 's talk about going indie at SwiftLeeds Good work habits, using different hats and persistence are great traits for any developer, check it out! #developer #carrer #indie www.youtube.com/watch?v=Teas...
youtube.com
From Side Project to Going Indie - Antoine van der Lee | SwiftLeeds 2024
Journey to Indie Development: Lessons from Success and Failure by Antoine van der Lee In this inspiring talk, Antoine shares his journey and lessons learned from transitioning a side project to a…
010
Felipe Espinoza @craftingswift.dev · 30/01/2026
One of the most frustrating things of iOS development are compilation times for big projects. Previews take forever to update, recompiling the app for the simulator too. #spm #ios
110
Felipe Espinoza @craftingswift.dev · 30/01/2026
@danijelavrzan.com hi, when it comes to CFP for conferences, how much weights the fact that you ask for plane tickets and hotel, vs saying that your company pays for them? I've seen that question in a bunch of CFP. I'm not sure how much of an impact is for getting selected into a conference
000
Felipe Espinoza @craftingswift.dev · 26/01/2026
I just finished the book “Everything but the code” by Paul Hudson and it’s a MUST read for iOS developers. It has tons of great advice about selling apps on the App Store, but explains very well how building products is not just about the code itself. twostraws.gumroad.com/l/everything...
151
Felipe Espinoza @craftingswift.dev · 24/01/2026
🎥 Designing and Developing Widgets on iOS looks simple, but it's not quite like that. In my video I share the challenges and solutions for a widget for a side project. www.youtube.com/watch?v=511O... #SwiftUI #WidgetKit #iOSDev #UIDesign #AppleDev
youtube.com
iOS Widget UI Design and Implementation in SwiftUI
Designing and Developing Widgets on iOS with WidgetKit is not trivial. In this video I give some tips on how to think in terms of the limited space and techniques that I learn developing a widget…
020
Felipe Espinoza @craftingswift.dev · 21/01/2026
Today I learned about a git command I missed many times. ``` $ git merge-base commitA commitB ``` It will find the most recent common ancestor between those two commits.
100
Felipe Espinoza @craftingswift.dev · 19/01/2026
I made a time-tracking app for myself and ended up shipping it. Chronia is simple, private, and subscription-free. Intro price: $2.99 (normally $9.99) until the end of the month. apps.apple.com/no/app/chron...
000
Felipe Espinoza @craftingswift.dev · 16/01/2026
I have an app I originally built for myself to track habits. It uses SwiftData + CloudKit, and I’m still fairly new to both. Something that really surprised me: after CloudKit syncing was already working in TestFlight (production environment),
200
Felipe Espinoza @craftingswift.dev · 13/01/2026
One of the hardest parts of making technical videos isn’t the code or the editing — it’s turning an idea into a clear story. In my latest video I will share my process on how I go about exactly that www.youtube.com/watch?v=Zx7I...
youtube.com
From Idea to Upload: My Coding Tutorial Process
One of the biggest challenges when making videos for my youtube channel has been: take a concept and make a story for a video. How can I make my code/slides/script feel like a single story? instead…
010
Felipe Espinoza @craftingswift.dev · 13/01/2026
Recently, we experience a weird issue in the SATS app. Some users reported that they didn't see the navigation elements, just a "more" button that did nothing when pressed.
100
Felipe Espinoza @craftingswift.dev · 16/12/2025
In this video I explain how Push Notifications work. I give an overview of the topic and then show step-by-step how to implement them on your iOS app. Check it out! www.youtube.com/watch?v=k_gH... #ios #swift #remotenotifications #pushnotifications #ios26
youtube.com
How Remote Push Notifications Work on iOS
YouTube video by Crafting Swift
000
Felipe Espinoza @craftingswift.dev · 07/12/2025
@twostraws.bsky.social your book “everything but the code” is amazing!! I just started and already gives so much value. Love it! When I am done I will probably make a video about it. Insta recommendation. Great job!
000
Felipe Espinoza @craftingswift.dev · 06/11/2025
Now, here is the full list of my favorite talks from #pragmaconference from @avanderlee.com @eidhof.nl @polpielladev.bsky.social and many others www.youtube.com/playlist?lis...
000
Felipe Espinoza @craftingswift.dev · 06/11/2025
It was great to be at #pragmaconf last week in Bologna. There were some really great talks. Now they are on YouTube! www.youtube.com/playlist?lis... My favorite talks: - Swift 6.2 is here — It’s time to migrate to Strict Concurrency - Building on Foundation Model
youtube.com
#Pragma Conference 2025 - YouTube
October 30-31 2025, Bologna (Italy)
000
Felipe Espinoza @craftingswift.dev · 05/11/2025
I made a video where I explore fundamental concepts for swift concurrency, like isolation domains, Sendable, etc. Understanding these concepts helps a lot when it comes to migrating to swift 6.2 and to choose the right tool for the job when solving compiler errors www.youtube.com/watch?v=tgtc...
youtube.com
Mastering the concurrency concepts for Swift 6.2
YouTube video by Crafting Swift
020
Felipe Espinoza @craftingswift.dev · 03/09/2025
Yesterday I encountered a small unexpected behavior when doing `self.count = count` where count is an optional state property. I would have expected to be a compiler error, but instead it was a weird behavior. Luckily Sarunw had a great post about it sarunw.com/posts/state-... #swift #swiftUI
000
Felipe Espinoza @craftingswift.dev · 07/08/2025
TIL: closures are reference types in Swift, then they don't behave well with `@Entry` and `EnvironmentValues`. The way then is to wrap them in structs, like how SwiftUI's `DismissAction` works. mjtsai.com/blog/2022/08...
mjtsai.com
Michael Tsai - Blog - Slow SwiftUI Closure Actions
031
Felipe Espinoza @craftingswift.dev · 07/08/2025
A coworker recommended me to turn on spelling on Xcode. OMG, the code is so much nicer without typos, and is way easier to spot them :D
000
Felipe Espinoza @craftingswift.dev · 01/08/2025
Next on my reading to learn list are: - On Writing Well - Writing to Learn: How to Write - and Think - Clearly About Any Subject at All amzn.to/46x5UBH and amzn.to/4l7WZuc
amzn.to
Writing to Learn: How to Write - and Think - Clearly About Any Subject at All
Writing to Learn: How to Write - and Think - Clearly About Any Subject at All - Kindle edition by Zinsser, William. Download it once and read it on your Kindle device, PC, phones or tablets. Use features like bookmarks, note taking and highlighting while reading Writing to Learn: How to Write - and Think - Clearly About Any Subject at All.
000
Felipe Espinoza @craftingswift.dev · 01/08/2025
I am a fan of Ali Abdaal's work in general. I particularly liked this video about audio books. Paraphrasing "A blog post or a YouTube takes a week to make... a book can take years". So you get way more valuable content of all the effort that took to write the book www.youtube.com/watch?v=WVaV...
youtube.com
My ONE Piece of Advice for Someone in Their 20s
YouTube video by Ali Abdaal
000
Felipe Espinoza @craftingswift.dev · 01/08/2025
.@dimillian.app I was struggling with `Text` and `AttributedString` with paragraph styles, your post helped! and sadly is till valid now dimillian.medium.com/swiftui-attr...
dimillian.medium.com
SwiftUI AttributedString is not there yet
You should use it, but also be aware of some of its limitations
000
Felipe Espinoza @craftingswift.dev · 01/08/2025
@charliemchapman.com I think in Framous, the restore purchase button is not working (at least for me), FYI
000
Felipe Espinoza @craftingswift.dev · 10/06/2025
New video! I discuss how we run hackathons at my day job and share tips for organizing one at your company This is quite relevant with WWDC 2025, as Hackathons are a great arena to try out new Apple APIs www.youtube.com/watch?v=sELq...
youtube.com
Why you should be doing hackathons at work
YouTube video by Crafting Swift
000