Evolving SwitchBuddy: How hard can it be?

Turns out, dealing with release dates isn’t a walk in the park.

Published: Dec. 12, 2022
App Store

In this series's first post, I shared my SwitchBuddy plans - the main one to have a list of upcoming Nintendo Switch games for people to check out, follow, etc. I have so far been hard at work making this feature a reality.

Unlike the “News” section, which I added in the previous significant update, this has proven to be more work than I expected.

How hard can it be?

How hard can it be just to display a list of upcoming games? Turns out, it is not as easy as just fetching a JSON list. As I have mentioned, I am using my API as a “proxy” between the IGDB API and SwitchBuddy to have more control over the data format, caching and similar.

This part is mostly done, and I have my endpoint. The API part took me quite some time because, you see, there is not just a “release date” date for games. Games often have multiple release dates for countries or regions, which was the most significant complication. I needed my logic to take the country code that the app sends with the request, map it to the release date region (which can be either a country like Japan or a continent like Europe or worldwide) and then do somewhat advanced ORM queries to annotate my game objects with the correct date.

Another minor problem was that some dates are not precise. Meaning all that is currently known is that the game will come out sometime in December 2022 or in Q1 2023. And, of course, you can have the TBD dates.

Things were easier on the app side. The main struggle was to have convenient grouping based on the release dates. Here Calendar was of great help. Particularly this line:

Calendar.current.isDate(game.releaseDate, equalTo: currentDate, toGranularity: .month)

Which lets me to group games that come out in the same months for those that are few months away.

Current state

As things are now, there is a new “Games” tab in the app that lists almost 100 upcoming Switch games. The detail screen for each has a release date, cover, summary, screenshots, and videos - assuming these data are available from the IGDB.

I have also added a feature that lets users add particular game releases to their calendars - this took just a bit of time, thanks to my previous work with EventKit framework.

TestFlight soon! If you want to try this out - let me know, I hope to have the initial TestFlight out this week (December 12 - 18).

Challenges

My main challenge is to come up with the most suitable UI for the list of games, so it is a nice experience scrolling through it. And to have a way for users to “follow” particular’s game release date. Widgets are planned for later.

The other challenge is to figure out fair and working monetization. As I mentioned, I plan to switch to subscriptions because there are now server costs, and the app takes a lot more time to maintain. I don’t want to lock features entirely, so I need to come up with a way to partially restrict this “Games” feature to people without a subscription. Ideas include showing just some portion of the upcoming games or perhaps making the “follow” feature paid.

Stats

The daily and weekly active users stayed mostly flat in the last 30 days. But I am still getting at least 150 new downloads each day, and in November, SwitchBuddy almost broke 10K active users in a month. I don't know what to expect in December, but January will bring a lot of new folks who just got their first Switch.

SwitchBuddy weekly active users Telemetry Deck

Since Nintendo has sold so far almost 115 million Switch consoles, I think there is quite a room to grow 😄

Bluesky logo

Follow on Bluesky to not miss new posts

Filip Němeček profile photo

WRITTEN BY

Filip Němeček Mastodon

iOS blogger and developer with interest in Python/Django.

iOS blogger and developer with interest in Python/Django.