Got an implementation typed out that I'm more or less happy with for subscribing to a list! Tomorrow night, let's dig into what unsubscribing might look like (I know I have notes somewhere 😛)… See you then!
🔜 Tomorrow’s stream: https://youtube.com/live/djKyNDPETKM
⏮️ Playlist so far: https://www.youtube.com/playlist?list=PLRxjf93xotuofCtaxtGOcWeuxVZYJyY-m
📲 Download Jiiiii: https://apps.apple.com/app/apple-store/id6472801548?pt=14724&ct=MastodonCCStreams&mt=8
#Jiiiii #DevStream #tvOS #visionOS #macOS #iOS #iPadOS #Anime #Swift #SwiftUI #Vapor #WebAuthn #BuildInPublic #TestFlight #PWA #WebPush
I'm making a seasonal anime guide app, in the open for all to experience and learn from.
Let's start checking how subscriptions are accessed to unblock creating new ones!
#Jiiiii #DevStream #tvOS #visionOS #macOS #iOS #iPadOS #Anime #SwiftLang #SwiftUI #Vapor #WebAuthn #BuildInPublic #TestFlight #PWA #WebPush
Come chill with me: https://youtube.com/live/djKyNDPETKM
Hmm. Looking to implement a simple debouncer in a #mac app (first mac, and Swift, app #swiftui #swift). I am currently on MacOS13... I know. A few things.
Apparently, using Combine and debounce is on the way out, so I should use a more modern approach. I *could* use `try? await Task.sleep(for: .seconds(1))` and handle cancelation, which seems easy and simple enough. At the moment, this seems a nice simple solution. Perhaps used in combination with `.task(id: searchText)`?
I don't *think* I can use `AsyncAlgorithms` in my ancient macOS.
Additionally, I want this logic in my ViewModel, now View. But I don't think I can use Observable in my old version of MacOS. Still haven't run this to ground. Would ObservableObject suffice? I'll look into it.
I really should get a newer mac.
Ваше iOS-приложение не закончено, если им не может пользоваться незрячий: Гайд по Accessibility
Как превратить ваше приложение в инклюзивный продукт, который используют ВСЕ - от слабовидящих до людей с когнитивными нарушениями. Плюс секретные фишки, о которых молчит документация Apple. Это руководство создано не для того, чтобы вы просто поставили галочку в Jira. Мы поговорим о том, как код может стать мостом или стеной для миллионов людей. Продолжим
https://habr.com/ru/articles/1002142/
#swift #swiftui #uikit #accessibility #voiceover #mobile_development #mobile_design #доступ #apple
Captions https://wesleydegroot.nl/blog/captions #Accessibility #SwiftUI
This is going to set my (arbitrary) timeline back a small bit but wow will the app be in a better spot come launch. I also feel I now have the time and space to slow down, take my time, and really think things through. It feels good.
#BuildInPublic #IndieDev #Swift #swiftui #security
All of this while being super secure, learning a bunch and having so much fun. Sometimes it’s not about what you end up shipping but the journey along the way. Couldn’t be more excited!
#BuildInPublic #IndieDev #Swift #swiftui #security
Little sideproject over the weekend:
A native #SwiftUI app to manage my selfhosted Komodo servers.
It’s not feature complete because Komodo has a HUGE API and I don’t want to port it all to swift. But it gets things done!
#BuildInPublic #selfhosted #iosdev

Inspiring Meet with 🍏 event today in Amsterdam about design and Liquid Glass in particular. Guidance from experts, great examples from leading developers, and sharing experiences.
#SwiftUI #AppleDeveloper #MeetWithApple

The following article shows how to use MapKit to create maps in SwiftUI apps:
https://www.createwithswift.com/creating-maps-in-swiftui-apps-with-mapkit/
Currently exploring localizable symbols introduced in Xcode 26 and I love it. However, one thing I don’t understand: why are some initializers marked 26+ while others aren’t? If String(localized:) can be used anyway, why is 26+ required? Can someone help me out?

Mark your calendars!!
I am giving a free 2-3 hour session on SwiftData on Feb 28 at 10:00 AM CST.
We will cover:
- SwiftData Architecture
- Relationships
- Testing
- CloudKit
Link: https://www.youtube.com/live/dO8BN8j9ryk?si=0H2kskNga2DniG1Y
