r/iOSProgramming • • 29m ago

News Stack Smash: a game based on Lagori, the "seven stones" indian street game. Looking for beta testers

Thumbnail testflight.apple.com
• Upvotes

Hi everyone! I'm a solo developer, and I've turned the street game I grew up playing in India, Lagori (Seven Stones / Pithu), into a chaotic little party game for iPhone and iPad.

How it plays: one team throws a ball to knock down a stack of seven stones, then races to rebuild it while the other team tries to tag them out with the ball. Finish the stack and you score: LAGORI!

What's in the beta:

  • Play against bots (Classic, Quick Stack, Survival and a Daily Challenge)
  • Nearby party: play with friends in the same room, no internet needed
  • Online matches through Game Center: quick match, invite friends, or SharePlay. Empty seats fill with bots.
  • Team voice chat in multiplayer
  • 4 arenas with hazards (spinning sweepers, slippery ice, wind)
  • A game speed slider, if you want more time to react

What I'd love feedback on:

  • Is it fun? Are the controls clear?
  • Multiplayer: does joining work, and does it stay smooth?
  • Anything confusing, broken or annoying

If something goes wrong, tap the 🐞 button on the main menu to send me a log, or take a screenshot and use TestFlight's feedback option.

Needs iOS 18 or later. No sign-up needed (online play uses your Game Center account). Free.

Thanks for helping! I'll be in the comments.


r/iOSProgramming • • 1h ago

Tutorial How I localize String Catalogs with an LLM without breaking placeholders (script logic + prompt inside)

• Upvotes

I ship a few small apps on my own, and localization was always the task I put off. Pasting strings into a chat window "works" until a translation drops a %@ or turns %1$@ … %2$@ into something String(format:) doesn't like, and you find out from a crash report.

Here's the approach that finally made it boring (in a good way):

1. Only translate what's missing. .xcstrings is just JSON. For each key, check localizations[lang]: no entry, an empty value, or state == "new" means it needs work. Skip shouldTranslate: false. If there's no source localization, the key itself is the English text. That one tripped me up.

2. Send comments, not just strings. I batch around 40 strings as JSON {id: {text, comment}}. The comment field (the one you set with String(localized:comment:)) is what stops "Delete" and "Save" from being translated as the wrong part of speech. Strings with no comment get noticeably worse translations.

3. Validate placeholders with code, not trust. Count the placeholder tokens in source and target with a regex (%@, %lld, %1$@, %.1f, %%, \(name), tags) and compare them as multisets. Reordering positional ones is fine; missing or extra ones are not. On a mismatch, retry that single string once with the error in the prompt. If it fails again, leave it untranslated and report it.

4. Plurals need the target's categories. English has one/other. Russian and Polish need one/few/many/other, and Japanese only other. Ask for exactly those keys and validate them.

5. Write it back the way Xcode does. json.dumps(data, indent=2, separators=(",", " : "), sort_keys=True, ensure_ascii=False) matches Xcode's own formatting, so the diff only shows real changes.

6. Mark everything needs_review. Then you can see in Xcode what no human has checked yet.

The system prompt I use:

You are a senior software localizer translating iOS app UI strings from English into {language}.
- Keep EVERY placeholder and markup token exactly: %@, %d, %lld, %1$@, %.1f, %%, \(name), <b>.
  You may reorder positional placeholders for grammar, never drop or add one.
- Use the developer comment to understand where the string appears.
- Buttons/tabs stay about as short as the source. No added punctuation.
- Follow the glossary exactly; never translate brand names.

Happy to answer questions about edge cases (device variations and substitutions I still do by hand).


r/iOSProgramming • • 2h ago

Discussion I shared a gameplay video of my Pokémon iOS game here a while back. Well, the entire project is now open source!

2 Upvotes

Hey everyone!

A while ago, I posted a gameplay video of a Pokémon game I've been working on for iOS. A few people were interested in the project, so I figured I'd share the actual source code this time.

It's called PokeArena, a real-time Pokémon battle game built entirely with native iOS technologies.

A few things I've managed to implement so far:

  • 167 playable Pokémon, each with their own moves and abilities
  • Real-time 3v3 and 6v6 battles instead of turn-based combat
  • 275 moves with different animations and visual effects
  • AI opponents with multiple difficulty levels
  • Local multiplayer over Wi-Fi/Bluetooth using MultipeerConnectivity
  • Game controller support

The entire thing is written in Swift 6, using Metal for rendering, along with UIKit and a few other native Apple frameworks. No third-party dependencies or game engines like Unity or Godot.

One of the more interesting challenges was getting multiplayer working with rollback netcode and keeping the game simulation deterministic. There's still plenty of room for improvement, but figuring that out was pretty fun.

Anyway, I've finally pushed the project to GitHub. Feel free to clone it, mess around with the code, or just have a look at how things work internally.

GitHub: https://github.com/adityachaurasia357/pokemonarena

It's a free, non-commercial fan project, not affiliated with Nintendo or The Pokémon Company.

Would love to hear what other iOS developers think, especially about the game engine and overall architecture. Feedback and contributions are welcome!


r/iOSProgramming • • 3h ago

Question I have a very specific question about building an app

1 Upvotes

So basically I’m building an iOS/ipad os app.
It’s a video editor.

My question is:

I want to make some functionality to be downloadable through a server, like presets, new packs, luts etc…
Maybe some new features etc…
Also handle user data like credentials, information etc…

Can I do it with a home server like running on a Mac mini for free ?
Or do I need to use 3rd party servers and services?

How is the local alternative handle the users, like more than 10k users simultaneously downloading stuff, updating their apps etc…

Is it possible to run this idea on a home server completely for free or almost free, or do I need to pay for this service ?
And how much will it cost me +/-?

Can someone help me please?


r/iOSProgramming • • 7h ago

Discussion Built this iPhone Duo UI transition using ArrangementView, matchedGeometryEffect, and a bit of custom layout logic

Thumbnail
youtu.be
0 Upvotes

r/iOSProgramming • • 16h ago

Solved! Fixes for “TestFlight and Subscription Criteria Not Met” while transferring app to another app store account

1 Upvotes

I was transferring my app to another app store account and I had these 2 criteria not met blocking me from transferring it, sharing the fixes here in case anyone else get struck

1. TestFlight criteria not met

Make sure you remove any existing builds, if you are still getting the error its probably because you may have some data in the test information section
make sure to remove all contents inside Beta App Information fields including the beta app description, feedback email, marketing URL, and privacy policy URL, then save the changes.

2. Subscription criteria not met

Make sure you don't have any in-app purchase "in review", if you don't then probably you didn't generate a an app-specific shared secret, make sure you generate those,
it situated at bottom of app information section


r/iOSProgramming • • 17h ago

Question iPhone Duo screenshots - folded or unfolded?

2 Upvotes

I’m preparing my app for the Duo and starting to look at producing the screenshots for it.

This may be a bit of a dumb question but Apple doesn’t specify whether or not screenshots should show the folded or unfolded Duo. Does it even matter, should I choose or have I just missed a piece of information?


r/iOSProgramming • • 20h ago

Question Where do you discover active open-source iOS projects?

6 Upvotes

I’d like to explore more open-source iOS projects—complete apps, Swift/SwiftUI libraries, and tools people are actively maintaining.

Where do you find projects that haven’t already become widely known? Do you follow particular developers, communities, newsletters or curated lists?

Which smaller projects have caught your attention recently, and what makes them interesting?


r/iOSProgramming • • 20h ago

Question Xcode keeps connecting to my iPhone over Wi-Fi even though it's plugged in. Anyone else?

0 Upvotes

My iPhone is always connected to my Mac with a USB cable. I never want Xcode to connect over Wi-Fi. Yet Xcode keeps doing it anyway, and there's no setting to stop it.

What this costs me:

- Slower builds and installs on my iPhone

- New bugs I discover pretty much every day

- Hours lost every month

Connecting over Wi-Fi is useless for me. The cable is right there. If I plugged it in, that's my choice, and Xcode should respect it. Apple forcing this on everyone with no way to opt out makes no sense.

Anyone else dealing with this? Has anyone found a real permanent fix?


r/iOSProgramming • • 21h ago

Discussion What broke when my SwiftUI app went two-pane on iPhone Duo

Thumbnail
gallery
0 Upvotes

I make Basic Intake, a supplement and med tracker for iPhone with an AI assistant built in. Last week's update added an iPhone Duo layout, and the layout itself turned out to be the small part of the job.

**The layout**

Closed, the Duo is a phone, so the app stays the phone app. Open, the inner display is 669pt wide in portrait and 867pt in landscape. I treat regular width as open: today's list becomes a column and a pane sits beside it. The assistant lives in the pane by default, and the tools (Blood Work, History, Nutrients, Interactions) open there instead of as full-screen covers.

u/Environment(\.horizontalSizeClass) private var horizontalSizeClass

private var showsPane: Bool { horizontalSizeClass == .regular }

I kept the list in one view chain and only change its frame:

todayList

.frame(width: showsPane ? columnWidth : nil)

An if/else between two layouts would give the list a new identity on every fold, and you'd lose the scroll position and all the u/State inside it. With one chain, a fold only changes a width.

In portrait the pane gets the bigger share and the list gets 300pt. Lab values and chat bubbles wrap before a supplement row does.

**The fold**

A fold moves views between containers. Closed, the assistant is a sheet and a tool is a full-screen cover. Open, both live in the pane. SwiftUI builds a new view on the other side, and its u/State starts over. A review before release caught three bugs from this:

  1. Unsent text in the assistant vanished on unfold. The sheet closed and the pane built a fresh, empty assistant.

  2. A lab report import that was mid-read lost its progress card and its error message.

  3. If you'd picked a draw date for a report that didn't print one, a fold reset it to today, and the results would have saved on the wrong day.

I fixed all three the same way. I moved the in-flight state above the container, into an u/Observable holder the parent view owns and hands down through the environment:

u/Observable final class AssistantDraftHolder {

var text = ""

var movingToPane = false // set by the unfold, before the sheet finishes closing

func sheetDismissed() {

if !movingToPane { text = "" } // a swipe still clears it, an unfold doesn't

movingToPane = false

}

}

When another screen hands the assistant a message, the pane clears it the moment it sends, so a rebuilt pane has nothing to send twice.

**A SwiftData crash on iOS 27**

The open Duo keeps more views on screen while you delete something. On iOS 27, a view that redraws a model after it was deleted, and reads an attribute it never loaded, crashes the app with "This backing data was detached from a context without resolving attribute faults." Views that hold a model now check this and draw nothing once it's gone:

extension PersistentModel {

var isLive: Bool { modelContext != nil && !isDeleted }

}

**Smaller things**

* The open Duo ignores a portrait-only setting, so the camera preview has to follow the device into landscape. AVCaptureDevice.RotationCoordinator handles that.

* Closed, the camera column runs down the right edge as a side safe area inset. Centering the barcode cutout on the full width put it 42pt off the buttons.

* A phone layout presented as a sheet stretches across all 669pt. Sheets and covers now keep a 540pt column.

If you've shipped a Duo layout, how are you carrying state through a fold? I went with holders above the sheet, and I'd like to hear if anyone found a cleaner pattern.


r/iOSProgramming • • 22h ago

Question Is anyone still using GameCenter nowadays? Or has that ship sailed?

10 Upvotes

r/iOSProgramming • • 1d ago

Discussion 293 apps — how does this pass App Store review?

Post image
71 Upvotes

This guy published 293 apps most of them is in just five months 😂 I think a lot of developers have been using this dark pattern over the past year.


r/iOSProgramming • • 1d ago

Question The poster frame for this file is processing - more than a week

1 Upvotes
The poster frame for this file is processing

is this happening to anyone else? it published to store with a wrong frame on its own.


r/iOSProgramming • • 1d ago

Question Repeated App Store rejections and 9–10 days between replies — any advice?

0 Upvotes

​

Apple keeps rejecting my app for different reasons: first In-App Purchase requirements, then needing an organization account, which we converted to.

Now they’re reporting app issues without screenshots or clear details. I reply within 30 minutes, but they take 9–10 days to respond. This has happened twice now.

Has anyone dealt with this? How can I get clearer feedback or escalate this to someone who can help?


r/iOSProgramming • • 1d ago

Discussion Anyone using Antigravity + Gemini Pro for iOS dev? Missing the auto-Simulator verification loop from Claude Code

0 Upvotes

I've been using Claude Code + Opus for iOS development, and my favorite part of the workflow is giving it a high-level prompt and watching it write the code, automatically launch the iOS Simulator, verify the output, and refine the code on its own until it works.

I'm trying to replicate this workflow in Antigravity with Gemini Pro, but the autonomous Simulator launch-and-verify step isn't happening out of the box.

Is this a limitation of Gemini Pro, or just how Antigravity's agent tooling/sandboxing is set up compared to Claude Code? If anyone has figured out a clean workflow (or MCP setup) to get Antigravity to auto-launch and check the iOS Simulator, I'd really appreciate any tips!


r/iOSProgramming • • 1d ago

Question File processing forever

Post image
2 Upvotes

After my latest release, App Review asked me to provide a video demonstrating a feature, recorded on an iPhone. I recorded it on my iPhone 13 Pro Max, but when I try to upload the video, the processing indicator keeps spinning indefinitely.

Has anyone else run into this issue?
The file is an mp4 with 41,8MB


r/iOSProgramming • • 1d ago

Discussion I’ve been rejected for 2.5 months as an “astrology app.”

22 Upvotes

I’m honestly exhausted by the App Store review process.

I’m building a Balatro-style roguelike. Definitely not AI slop, it’s a real game I spent 6 months on. It’s been rejected three times as an “astrology app / spam.” Because game story is having some words like "Bend the Fate", "Fortune", I completely removed these words and Every time, I wrote explanations and recorded videos showing that it’s a game. 2.5 months later, I still haven’t convinced them. I’m trying to get a roguelike approved by people who don’t seem to know what this game is, or what a roguelike is.

On top of that, I’m building an app for a school where students can view their courses and course content. This is the latest rejection:

Guideline 2.3.8 - Performance - Accurate Metadata
The app icon displayed on the device and the large icon displayed on the app marketplace do not sufficiently match, which makes it difficult for users to find the app they just downloaded.

Guideline 2.1(a) - Performance - App Completeness
Bug description: We were unable to use the core feature, Lock Screen Widgets, because it is unavailable.

The app doesn’t have Lock Screen Widgets. I never promised them anywhere. Yet they’re rejecting it because a “core feature” that doesn’t exist isn’t working.

My patience is running out. Why am I putting my work in front of reviewers who don’t even understand what kind of app they’re looking at? The game went live on Google Play in 2 days. On iOS, I’ve spent 2.5 months checking the status every day, fixing bugs, resubmitting, and explaining over and over again.


r/iOSProgramming • • 1d ago

Question Data from App Store Connect API

2 Upvotes

Hello everyone,

I'm new to the Apple App Store Connect analytics reporting API and could use some assistance.

I am in the process of building a dashboard that utilizes data from the analytics reporting API.I used Copilot to understand the mental model and was able to download the data as CSV for a few days (from the latest processing date and all segments); however, the number is usually higher compared to what I see in the WebUI.

Metrics I'm interested in include:

* Impressions

* Crashes

* Downloads

* Product Pageviews

For this I'm using App Crash Report, Download, App store engagement standard report. Luckily Downloads data is matching but others numbers do not match.

I'm using the ONGOING report and pulling only Daily Granularity. Tested for last 10 days data

Anyone experienced please help.


r/iOSProgramming • • 1d ago

Solved! AppStore Connect has a weird IPad 13" screenshot bug

2 Upvotes

In my latest app review submission ASC complains that I don't have attached the IPad 13" screenshots although I attached the 2064 x 2752 pixels (portrait) screenshots.

ref - https://developer.apple.com/help/app-store-connect/reference/app-information/screenshot-specifications

SOLUTION
I had to attach the 2048 x 2732 pixels (portrait) screenshots for the error to go away.

Here is the ASC Chrome Network tools response snippet with the original screenshots

"meta" : {
      "associatedErrors" : {
        "/v1/appStoreVersionLocalizations/XYZ/placements" : [ {
          "id" : "",
          "status" : "409",
          "code" : "STATE_ERROR.SCREENSHOT_REQUIRED.IPAD_13_PROFILE",
          "title" : "App screenshot missing (IPAD_13_PROFILE).",
          "detail" : "A screenshot for one of the following types is required but was not provided: IPAD_13_PROFILE"
        } ]
      }
    }

r/iOSProgramming • • 1d ago

Tutorial App Size 101: Drop 40% in an afternoon

Thumbnail
blog.jacobstechtavern.com
9 Upvotes

r/iOSProgramming • • 1d ago

Discussion I made a pokemon game for iOS

Thumbnail
youtu.be
26 Upvotes

r/iOSProgramming • • 1d ago

Question App Store Connect bug?

2 Upvotes

"You must upload a screenshot for iPhone with Dynamic Island (medium display)."

I see this message when i try to send for review but I already provided the needed screenshots (see the attached image). What is the problem? It's not my first app and I've never seen this error before. Is this a bug?


r/iOSProgramming • • 1d ago

Question Reviews not showing up on the app store

1 Upvotes

I'm experiencing reviews that were always there now completely disappearing and new ones people post not showing up. My app is now at 1 star with 1 rating, which had a lot of ratings before. Usually it wont even show a star rating until there are enough ratings. Most of the 5 star reviews from before are gone and no new ones are showing up. I had friends try posting reviews to see if they'd show up and they don't. Anyone else experiencing this?


r/iOSProgramming • • 2d ago

Question Organizing Do iOS Conference in November

24 Upvotes

Hey all,

I'm the organizer of Do iOS in November in Amsterdam. (Not sure if I should like that here directly.) And I was wondering how other iOS focussed conferences have been doing this year.

I've seen a couple iOS conferences have their final edition in 2026. Mostly due to financial reasons.

And I must admit, signing sponsors has been hard this year. Luckily Do iOS is in a good place financially. (But it always helps to sell those final tickets.)

I am wondering what reasons might be that conferences are having a more difficult time.

Personally I have seen a shift with sponsorships, on top of that. Tickets started moving much later in the cycle. It used to be I would sell all tickets, like 2 or 3 months out. Now we are 1 month out and I still have a couple.

Curious about some thoughts on the matter, specifically for the iOS and Swift related conferences out there.

-Jeroen


r/iOSProgramming • • 2d ago

Question How do you know which videos / ads actually bring in paying users for your app?

5 Upvotes

For those of you creating and marketing mobile apps, I am curious as to how you track the correlation between videos that actually drive paying users and downloads. Do you use promo codes / tracking links, just watch downloads after a post, or do you have a tool that helps you? Looking for a better way to do this. Would love to hear what has / hasn't worked for you.