
Lead iOS Engineer & Manager @adidas | Mentor @mentorcruise — From 🇧🇷 living in 🇳🇱 - opinions are my own
Amsterdam, The Netherlands
Joined January 2009
- Tweets10K
- Following627
- Followers482
- Likes2.3K
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 👇
github.com/bocato/swift-test…
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.
▶️ youtu.be/Rc-S9RnDuLI
#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 🙌🚀
Eduardo Bocato retweeted
“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 👉 2025.nsspain.com/schedule
Eduardo Bocato retweeted
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 swiftystack.com 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🫡
Eduardo Bocato retweeted
Massive improvements to UIKit are coming!
• Lightweight observation of models
• 2-way bindings for controls
• State-driven navigation
…and more!
Eduardo Bocato retweeted
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!
pointfree.co/blog/posts/141-…
Eduardo Bocato retweeted
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.
Replying to @pointfreeco
Seriously you guys are incredible! I have always this question, when community can do backport like this, why can’t @Apple do.. they are not considering developers pain seriously unlike android!
Eduardo Bocato retweeted
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!
👉 pointfree.co/episodes/ep281-…

ALT Screenshot of code showing how to derive bindings from a model and power a UITextField from the binding. Code reads as follows: // Create a model from which we can derive bindings. @UIBindable var model = ConnectToWiFiModel() // Initialize a text field with a binding to the model. // Changes to the model will automatically update the // field, and vice-versa. let passwordTextField = UITextField(text: $model.password)
Eduardo Bocato retweeted
Sounds like a fun event!
Domain modeling is going to be a really fun topic we discuss more soon on @pointfreeco. 🙂
Great time at adidas iOS apps ecosystem internal meetup in Amsterdam this week! I presented talks on app architecture, SwiftUI navigation & TCA from @pointfreeco, and domain modeling over three days, along with many others from my colleagues. Kudos to all! #iOS #adidas #amsterdam
I also had a fantastic time presenting our apps architecture for @CocoaHeadsNL ! @arafo93 and Georges shared how our approach with Tuist improves build times. Streamed by the CocoaHeads NL team. Check it out: youtube.com/live/6bkijIPMAfM…
#iOS #CocoaHeads #adidas #pointfreeco #tuist
Great time at adidas iOS apps ecosystem internal meetup in Amsterdam this week! I presented talks on app architecture, SwiftUI navigation & TCA from @pointfreeco, and domain modeling over three days, along with many others from my colleagues. Kudos to all! #iOS #adidas #amsterdam
Eduardo Bocato retweeted
Tonight we are hosted by @adidas in Amsterdam, great spot and crowd. Eduardo kicked off about modularisation. Thanks for hosting the meetup!
Eduardo Bocato retweeted
This Thursday we are hosting a live stream to discuss all things app architecture:
👉 pointfree.co/live
Whether you are TCA curious or a TCA skeptic, bring your questions and opinions, and let's have a roaring discussion!
The Q&A is open so submit your questions today!
Eduardo Bocato retweeted
Leveraging the momentum and buildup to the UEFA EURO 2024, blending a performance mega-moment with an adidas Originals twist, the EURO STYLE CUP '24 went live today in Europe on the adidas CONFIRMED app. This brings together the blokecore trend, the momentum behind our Terrace franchises and authentically lands the “sport to culture” messaging before and throughout the EURO 2024.
This crossover underscores the wider cultural relevance adidas has played in making the game progressively global, accessible, and inclusive.
16 of Europe's most influential fashion retailers compete head-to-head in a football jersey design competition.
Two groups: 8 German retailers (Home) vs 8 retailers from other European countries (Away) have designed unique football jerseys that represent the sound of their communities.
Explore the designs, get inspired, and vote for the winning jersey’s across 2 rounds (April 19 & 22).
The winning designs from Home and Away will be announced on April 23 and have their jerseys produced & sold on the adidas CONFIRMED app and at the retailer's stores.
Consumers will get the chance to participate in raffles to win a jersey, an exclusive trip to Berlin to visit the Home of adidas Football and attend the quarter-finals of the EURO 2024!
The 2 winning retailers will also play in a live football match at the Home of adidas Football in Berlin during the EURO 2024 to determine the champion of the Euro Style Cup '24!
Check it out on adidas CONFIRMED:
confirmed.onelink.me/mzYA/u1…
Eduardo Bocato retweeted
Android evolution from Android 1 to Android 14.
A thread 🧵
1. Android 1.0: Alpha (API 1)
Launch date: 23 September 2008





















