I sent a working prototype to a few trusted friends for feedback. This helped me refine many interactions. For example, I heard the Gestures screen wasn't very intuitive. Originally, each gesture had a small indicator to provide feedback to the user about the gesture's state but it was too subtle. So I combined the indicator with the touch target and made it much larger.
Of course, this introduced another problem: each gesture had a separate section and the larger indicator made it difficult to see all gestures at a glance. A list-style picker helped keep the interface clean while progressively disclosing the full range of options for improved discoverability.
Most components have related documentation which opens in a modal sheet but sometimes users just want the code itself. Users can select between developer and design documentation so it felt natural to simply add a snippets section to that segmented control. This kept the interface simple and gave users a single place to view additional details. But it also made snippets harder to access and — even more importantly — there was no way to tell if a component had a snippet without opening the sheet.
I explored many other concepts and decided to have separate buttons for documentation and snippets. This made the interface a little more visually complex but it was worth the substantial increase in usability.
After many iterations, I released Interactful to the App Store. After a few weeks, I looked at the data to help inform my future design and product decisions.
I discovered that snippets were the most popular feature in the app and Layouts was the most popular section. This surprised me. I thought documentation would be more popular but snippets outperformed it 4:1. Knowing what resonated with users helped me focus my time on improving the most valuable features.
I was never totally happy with the Layouts section but I decided to prioritize improvements based on the usage data. My initial version had a static bottom section for controls like grid axis and column count. These controls required significant vertical space which took away from the content.
I replaced it with a bottom sheet that surfaces the most important options and can be expanded to show additional controls or collapsed to provide maximum real estate for previewing the content. I used Interact's own Animation feature to experiment with different parameters to get the animation between states just right.
I just had one more problem. The bottom sheet extended across the full-width of the screen which was fine on small screens but was less-than-functional on larger screens like iPad.
To take advantage of larger screens, I replaced the bottom sheet with a floating panel that defers to the content. This version only two states — the default state shows all the controls and the collapsed state exposes only the most important ones — there's no need for an intermediate state.
I felt great about the app and I'd received some excellent feedback. Now I just needed to ensure that people understand everything the app had to offer. Thankfully, I knew which feature were most compelling from the analytics so I crafted a video to highlight those.
Average Rating
in Developer Tools
Monthly Active Users
Incredible resource, covering all of the components of SwiftUI with modifiers. Can’t believe Apple hasn’t bought and published this already
Provide a really quick and easy reference guide - awesome app. Amazing that this is free. It’s so good, I’d be happy to pay for it (not too much though! 😃).
Thanks for this amazing app. It’s really useful for beginners and advanced devs also for designing teams. Perfect!
This app contains everything I need for programming efficiently. I love the fact that the code it’s easy to find what you need, play with examples and then get the code, it’s easy and convenient. Great job!
Really useful practical guide that is well designed and implemented. I wish I had thought of it!
This will be very useful during development.
I believe I achieved my goals. I learned a ton about Swift and SwiftUI, but the most satisfying thing has been hearing from people who used Interactful to build their own apps. That's exactly what I'd hoped to accomplish by giving back to the community.
If I could do something differently, it would be knowing when to stop. Sometimes I would struggle for hours to implement something the way I'd designed it. Once I was completely exhausted and frustrated, I would rethink the design entirely and it often ended up better than the original! I'd like to get better at recognizing the right point to take step away for a moment and regroup.