Sharing swift-testing-agent-skill: testing patterns shaped by my experience on real codebases.
Fixtures, test doubles, FIRST in practice, test naming & structure, migrating to swift-testing, and more.
Work in progress. Feedback welcome 👇
https://t.co/a9dz0EhduP
My NSSpain talk is now publicly available 🎥
“Modular at Scale: How We Structured 250+ Modules Across the adidas App Ecosystem”
This session reflects years of iteration, sharing lessons from evolving modularization at scale.
▶️ https://t.co/fBjmyMTf2Z
#iOS#NSSpain
First international talk at #nssspain2025 ✅
Went in extremely nervous, but the amazing organization, my awesome team’s support, and the chats that followed got me inspired to try more conferences and keep getting better at it 🙌🚀
“Modular at Scale: How We Structured 250+ Modules Across the adidas Apps Ecosystem” by @dubocato
Using modules to address team and architecture problems, focus on interface stability and architecture health, aims to improve team collaboration and reduce tech debt. #NSSpain2025
I’m going to speak at #nsspain2025 🎉
My first in-person international conference talk. Super nervous, but even more excited! 😅
I’ll share how we are scaling the adidas app ecosystem with modularization + evolutionary architecture principles.
See you in Logroño 🍷
Your #nsspain2025 adventure is about to begin… 🗺️
The schedule is live! 🎉
Talks, workshops, community vibes, and maybe a cheeky rioja or two 😉🍷
Check it out 👉 https://t.co/3PRRAq1s4p
The simplest advice I can give to teams building a new product (that they want to be able to maintain for years) is to start with modularising it from the get-go, not AFTER it grows.
Modularising has lots of benefits:
- Explicit public/private interface which makes it clearer what the feature creator intentions were
- Forces you to think about data modeling
- Improves build times
- Allows preview apps for quicker iteration cycle
- Faster and isolated test suites
If you use SPM for project organization as I show in https://t.co/MrPTYDPiOM then adding new modules is trivial and a matter of literally a minute of your time, the benefits are crazy...
I've been untangling a bunch of client projects from monolithic codebases into modularised ones and it's a lot more work to do it later in the lifecycle than just start it from the get go, so do yourself a favor and always modularise🫡
We’ve recently seen a lot of articles, Youtube videos and reddit threads about TCA and it’s great there has been so much interest!
But also there has been some outdated information out there, so we’d like to clear the air with a fresh FAQ!
https://t.co/bxLKNyr2Wi
The Observation framework could have supported iOS 13+, but the decision to make it iOS 17+ was because SwiftUI could not back port support for observation. And so people would think they can use @Observable when targeting older platforms, but in reality their app would just be broken.
We work around this issue by providing a 'WithPerceptionTracking' helper view that must wrap all SwiftUI views. Of course Apple could have done the same, but it's not the “Apple way”, for better or worse. So, people who are willing to incur the cost of 'WithPerceptionTracking' in order to use the newest tools can use our back port.
However! What is interesting with our most recent research is that the Observation framework has some amazing use cases for UIKit, and it's all purely additive! There's no need for things like 'WithPerceptionTracking' that we need in SwiftUI.
So, if Apple had gone ahead and made Observation available on older platforms then people would have been able to use our modern UIKit tools without using our back port at all.
UIControls (e.g. text fields, sliders, etc.) in UIKit can be difficult to work with because they have their own “source of truth.”
What if we could bind our model to controls just like we do in SwiftUI, but we use UIBinding and @UIBindable instead!
👉 https://t.co/tqH35NgCL8