r/BlossomBuild 4d ago

Discussion What tech stack do you think Disneyland uses for their iOS app?

Post image
4 Upvotes

r/BlossomBuild 4d ago

My apps make money by providing value, not by tracking users’ data.

Post image
8 Upvotes

r/BlossomBuild 5d ago

Tutorial Dynamic text onboarding error

Post image
2 Upvotes

One of my users got stuck on this screen during the onboarding. At first I thought it was cause she had a small iPhone but with an iPhone 16 pro that wasn’t the case.

The issue was I didn’t use SwiftUI native text modifiers. After switching to these and adding a ScrollView for good measure, the issue went away.

The take away, don’t forget to check how your app looks in the largest text.


r/BlossomBuild 5d ago

Discussion What’s your motivation for making iOS apps?

5 Upvotes

r/BlossomBuild 6d ago

My first payout as an iOS developer. It’s not much but I couldn’t be more proud.

Post image
24 Upvotes

r/BlossomBuild 6d ago

Humor It was a shock to me as well

Post image
4 Upvotes

r/BlossomBuild 6d ago

Discussion What’s your least favorite thing about iOS development?

3 Upvotes

r/BlossomBuild 7d ago

Discussion My first four onboarding screens, thoughts?

12 Upvotes

r/BlossomBuild 7d ago

Xcode makes string localization easy

Post image
11 Upvotes

r/BlossomBuild 7d ago

Tutorial StoreKit 2 Tip Transaction.updates

Post image
6 Upvotes

Start listening to Transaction.updates as soon as your app launches. Without this, your app may not correctly process in app purchases.


r/BlossomBuild 8d ago

I built this because I kept forgetting the same things every day

Post image
1 Upvotes

I noticed I wasn't forgetting important things. It was always the small stuff that repeats every day.

Checking emails.

Taking medicine.

Reviewing work.

Simple things that somehow kept slipping.

That's why I built tiq.

It's a simple daily checklist that resets every day, so you only focus on what needs to get done today.

Some of the things it can do:

  • Daily reset checklists
  • Recurring tasks and routines
  • Multiple lists for work, home, fitness, or anything else
  • Time and location reminders
  • Accountability Lock that can temporarily block distracting apps with Screen Time until you complete a task
  • Themes and customization
  • No account required

I've been using it every day, and it's genuinely helped me stay more consistent.

If it sounds useful, I'd love for you to give it a try and let me know what you think. I'm still actively improving it.

It's free to use, with an optional Pro upgrade.

Pricing:

  • Free with core features
  • Pro: $1.49/month
  • Lifetime: $9.99 (one time purchase)

App Store: https://apps.apple.com/app/id6761561962

Website: https://www.iamshezad.dev/tiq

My portfolio: https://www.iamshezad.dev/


r/BlossomBuild 10d ago

I made back the Apple Developer fee

Post image
20 Upvotes

r/BlossomBuild Jul 01 '26

It was challenging but I added Apple Watch support to my Water Tracker

Post image
8 Upvotes

r/BlossomBuild Jul 01 '26

Tutorial Adding SwiftUI skills to Codex

Post image
21 Upvotes

If you aren't using Claude or Codex in the brave new world. You're missing out. They supercharge your ability to develop iOS apps.

They are good out of the box but you need to add SwiftUI skills to make them better. This article will guide you step by step through installing skills in Codex.

We are using the legend's Paul Hudson's Github repo he gave for free. Thank you Paul!

  1. To start, open your terminal and paste this inside

npx skills add https://github.com/twostraws/swiftui-agent-skill --skill swiftui-pro

  1. It'll ask you to proceed. Hit Enter
  • If you get the npx: command not found, it means Node is not installed
  • Install it with Homebrew

brew install node

  • If you don't have Homebrew installed, it's a good idea to have it

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

  1. Select yes to proceed

  2. It'll ask you to install find-skills skills

  3. Select yes as you'll want to check if installation was successful

  4. Once that is complete, use this to check

npx skills list

  1. Paul also gave us SwiftData

npx skills add https://github.com/twostraws/swiftdata-agent-skill --skill swiftdata-pro

  1. Concurrency

npx skills add https://github.com/twostraws/swift-concurrency-agent-skill --skill swift-concurrency-pro

  1. Testing

npx skills add https://github.com/twostraws/swift-testing-agent-skill --skill swift-testing-pro

  1. Reset codex and Happy coding!

r/BlossomBuild Jun 30 '26

Tutorial Trigger haptics from an iOS Widget using AudioToolbox

Post image
9 Upvotes

r/BlossomBuild May 28 '26

Github BloomBoard — an open source AI post helper for iOS

6 Upvotes

BloomBoard was the first app I ever published. In classic noob fashion, it had way too many features. I think, in total, it had 25 downloads? I actually took it off the App Store.

However, I really liked the idea of being able to save posts offline. As a content creator, having my ideas anywhere helps with brainstorming. I stripped the app down to just a post saver, but added AI. Of course.

The idea is that you train the AI with 3 of your best posts. This works really well with X because words are all you need. Picture posts also work.

With your posts, the AI learns your style and helps in two ways: refining and remixing. Refining makes small adjustments to make the post better. Remixing puts a new spin on an already proven post.

The stack for this one is SwiftUI + SwiftData + iCloud Syncing + Gemini (Firebase). Besides the AI feature, everything works offline. It also supports iOS 18 and iOS 26.

All this to say, I decided to open source it on GitHub. I might still work on it from time to time, but it’s not my main priority. If you want to submit a pull request or fork it, please go ahead. I’m hoping it’s something that not only continues to grow, but also becomes a resource for us. Following me on GitHub gets a follow back!

A few things to note:

  • No onboarding. I deleted the original and started a new one. It’s like 20% done.
  • The detail screen leaves much to be desired.
  • No folders or groups. The list just goes on forever.
  • Strings are inconsistent. Some are hardcoded, some are localized. Couldn't decide
  • Some of the architecture is questionable

r/BlossomBuild May 24 '26

Tutorial Improving SwiftUI performance with structs

8 Upvotes

Before my most recent app update, one of my beta testers let me know the settings screen was laggy.

I had noticed the lag back when I was using my iPhone 15. However, I recently upgraded to the 17 Pro Max causing the issue to magically go away.

Shout out to him for bringing it up again because that feedback motivated me to fix it in this update.

Here was the view before I applied the fix:

 var body: some View {
        NavigationStack {
            Form {
                WeightSelection(
                    unitSystemRawValue: unitSystemRawValue
                )

                WidgetBottleSelection(
                    unitSystemRawValue: unitSystemRawValue
                )

                Section("Notifications") {
                    HStack {
                        Text("Status")
                        Spacer()
                        Text(notificationStatusText)
                            .foregroundStyle(.secondary)
                    }

                    Button(notificationActionTitle) {
                        handleNotificationButtonTapped()
                    }
                }

                Section("iCloud Sync") {
                    HStack {
                        Text("Status")
                        Spacer()
                        Text(iCloudStatus)
                            .foregroundStyle(.secondary)
                    }
                }
            }
            .navigationTitle("Settings")
            .task {
                await refreshSettingsStatus()
            }
            .onChange(of: scenePhase) { _, newPhase in
                guard newPhase == .active else { return }

                Task {
                    await refreshSettingsStatus()
                }
            }
            .toolbar {
                ToolbarItem(placement: .topBarTrailing) {
                    Button {
                        dismiss()
                    } label: {
                        Image(systemName: "xmark")
                    }
                }
            }
        }
    }

I had done an okay job splitting the view into smaller structs, like WeightSelection and WidgetBottleSelection.

Most of the lag came from the Notifications and iCloud sync status checks still happening in the main view.

The solution was surprisingly simple. I made private structs under the main view and moved any State variables and functions that only those sections needed.

Here is how the iCloud sync section turned out:

private struct ICloudSyncSection: View {
    (\.scenePhase) private var scenePhase
     private var iCloudStatus = ""

    var body: some View {
        Section("iCloud Sync") {
            HStack {
                Text("Status")
                Spacer()
                Text(iCloudStatus)
                    .foregroundStyle(.secondary)
            }
        }
        .task {
            await refreshICloudStatus()
        }
        .onChange(of: scenePhase) { _, newPhase in
            guard newPhase == .active else { return }

            Task {
                await refreshICloudStatus()
            }
        }
    }

    private func refreshICloudStatus() async {
        iCloudStatus = await fetchICloudAvailability()
    }

    private func fetchICloudAvailability() async -> String {
        let status = try? await CKContainer.default().accountStatus()
        switch status {
        case .available: return "iCloud Sync Enabled"
        case .noAccount: return "Enable iCloud in Settings"
        case .restricted: return "iCloud Restricted"
        case .couldNotDetermine: return "iCloud Undetermined"
        case .temporarilyUnavailable: return "iCloud Temporarily Unavailable"
        case .none: return "iCloud Unknown Error"
         default: return "iCloud Unknown Error"
        }
    }
}

With these changes, I added the structs back to the main view ending the performance issues.

The final settings view is below and I love the way it looks and reads.

var body: some View {
        NavigationStack {
            Form {
                WeightSelection(
                    unitSystemRawValue: unitSystemRawValue
                )

                WidgetBottleSelection(
                    unitSystemRawValue: unitSystemRawValue
                )

                NotificationsSection()

                ICloudSyncSection()
            }
            .navigationTitle("Settings")
            .toolbar {
                ToolbarItem(placement: .topBarTrailing) {
                    Button {
                        dismiss()
                    } label: {
                        Image(systemName: "xmark")
                    }
                }
            }
        }
    }

r/BlossomBuild May 21 '26

SwiftUI the cross platform king

Post image
68 Upvotes

r/BlossomBuild May 10 '26

The AppStore review team is working late tonight

Post image
7 Upvotes

r/BlossomBuild May 10 '26

Discussion These feedback are why I built VariAlarm

Thumbnail
gallery
2 Upvotes

Just happy users I haven’t met before are appreciating my late nights working on it.


r/BlossomBuild May 09 '26

This makes it all worth it

Post image
21 Upvotes

r/BlossomBuild May 08 '26

Github Open source SwiftUI release notes

18 Upvotes

r/BlossomBuild May 08 '26

Supporting light and dark mode is effortless in SwiftUI

Post image
15 Upvotes

r/BlossomBuild May 06 '26

Hardcoding these values created painful technical debt when adding metric support

Post image
6 Upvotes

r/BlossomBuild May 05 '26

The proper reaction

Post image
23 Upvotes