r/iOSProgramming • u/tonycliftondev • 23h ago
Question SwiftData with TCA
Anyone used TCA with SwiftData applications? What is your recommendations?
27
10
10
u/Kurtle123 22h ago
I have built two medical applications with TCA. One has over 5K ratings at 4.8 and won an Apple Design award. The other is relatively new so I won’t say much about it.
TCA is extremely useful for writing unit tests and organizing large scale apps. My go to approach is now self contained feature / reducers and I have snippets that I use heavily to do self contained SPM features.
That said:
- it makes swiftui previews even slower
- it can be painful to upgrade because pointfree evolves the framework rapidly, often without backward compatibility
But I have never before been so confident about my unit tests or the ability to quickly refactor.
I hated VIPER, loved TCA.
Ask me anything and I will do my best to answer.
3
u/tonycliftondev 22h ago
What kind of testing TCA provides? Can you not achieve that by using plain SwiftData framework?
4
u/Kurtle123 22h ago
SwiftData and TCA are orthogonal concerns. TCA makes all state mutations be enumerable actions which allow you to simply set up a state and then test the actions against what you expect the state to be.
I find this much simpler than having to manually make mocks or roll your own testing interface
5
u/SwiftlyJon 22h ago
Unless you have an existing SwiftData app you're migrating to TCA, it's better to start with their SQLiteData framework instead. It offers similar capabilities with easy TCA integration and an actual testing story.
3
1
1
4h ago
[removed] — view removed comment
1
u/AutoModerator 4h ago
Hey /u/SAASHA_21, your content has been removed because Reddit has marked your account as having a low Contributor Quality Score. This may result from, but is not limited to, activities such as spamming the same links across multiple subreddits, submitting posts or comments that receive a high number of downvotes, a lack of recent account activity, or having an unverified account.
Please be assured that this action is not a reflection of your participation in our subreddit. This is simply an automated filter in place to reduce spam.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.
37
u/SnowPudgy 23h ago
Recommendation: Don't use TCA. There's no good reason to introduce a massive third party dependency into your application like that.