Beer Style Guidelines v2024.1 (iOS / iPadOS)

I know I said that I wasn’t planning on any major updates to Beer Style Guidelines. But here I am, releasing a major update to the app.

This is the first release since last August.

But this release is only for iOS and iPadOS. The current macOS version is still v2023.4. I am planning to make updates to the macOS version soon™.

What’s New?

The entire user interface has been rewritten. Previously, I was using UIKit for most of the UI. I had a smattering of SwiftUI. Now, it’s basically reversed. It’s mostly SwiftUI with a smattering of UIKit.

I started with a SwiftUI-only implementation. UIKit made a reappearance in a few places when I struggled for too long getting things working correctly.

One example is the pageable detail view. I fought with SwiftUI’s TabView (doc) with the .tabViewStyle(.page(...)) modifier for too long. I just couldn’t get it to behave like I was expecting. I finally gave up and went with a UIPageViewController (doc) and never looked back.

I also struggled getting my keyboard shortcuts working with SwiftUI’s ScrollView (doc). I have keyboard shortcuts to scroll to the top/bottom, up/down a few lines, up/down a page. With a ScrollView, you can scroll to items (with an id), but what I have is one large scrollable View without an id. I couldn’t figure out how to scroll to a specific location without an id. I know how to do this with a UIScrollView (doc). I wrapped the nested SwiftUI content in the UIScrollView and used the keyboard shortcuts the way I knew how.

I’m not saying these two issues are impossible to solve in SwiftUI. I was just getting frustrated with them and it was easier for me to drop back into UIKit to solve the issue. I hope to find a SwiftUI solution to these soon.

New Text Rendering Engine

Internally, the style guidelines use Markdown for the storing the guide contents. When a guide section is selected, the markdown is loaded and rendered for the user.

Previously, I was using Down as the markdown engine. It was working well enough, but I wanted something that processed tables more naturally. With Down, I could use HTML, but I wanted to use the GitHub table syntax.

I found MarkdownUI. That library allows for both markdown tables and parses directly to SwiftUI. So far it’s been really nice to work with.

Bug Fixes

I believe I’ve fixed a few bugs that existed in the old app. I probably introduced a number of new bugs with this update. I’ve made a lot of changes within the app and I’m sure there are bugs somewhere.

What’s Next?

I’ll probably take a short break from the app. I’ve been pretty focused on this for the last few months. I need a little break.

I am going to start working on an updated macOS version in the next week or two. A lot of it already works on macOS. Everything compiles and runs, but not all of the features are available on macOS. But I need to deal with some of the iOS-specific code I put in place.

The yearly version of the Brewers Association Style Guide usually come out around now. When it does come out, I’ll be busy getting that into the app.

OlderNewer