Note: My English proficiency is limited, so I used GenAI (Kiro CLI) to help translate this post.
This is the story of how I went from zero iOS development experience to building and publishing an iPhone app on the App Store, all through conversations with Kiro CLI.
From requirements definition to passing App Store review, the actual hands-on work took about half a day (the review wait time was longer than the work itself).
What I Built
It's a multiple-choice quiz app called "AWS Security Quiz" focused on AWS security topics.
- Terminal-style UI (black background + green text)
- 8 categories, 48 questions (Japanese and English support — starting with v1.2.0, currently under review)
- Category-based weakness analysis
- Google AdMob banner ads
You can find it by searching "AWS Security Quiz" on the App Store.
Or download it directly from the link below:
Motivation
While building a CTF game environment using CTFd — the same platform we used at the JAWS-UG Kobe CTF event I recently organized — I thought, "Wouldn't it be great to have something more casual for learning security knowledge?"
Separate from scenario-based hands-on challenges like CTFs, I figured a quiz app that lets you quickly test foundational knowledge with multiple-choice questions could be useful for beginners and intermediate learners alike. That's what motivated me to build this.
Development Process
Requirements Definition (Conversation with Kiro CLI)
When I told Kiro CLI, "I want to build a quiz app about AWS. Let's start with requirements definition," it asked all the right questions — target users, platform, question format, design tone, and more.
All I provided were these key points:
- Target audience: Beginners to intermediate learners
- Question style: Knowledge-based multiple choice (4 options)
- Platform: iPhone
- Design: CTF-style hacker aesthetic (terminal-style black background + green text)
- Quiz data bundled with the app
- Around 30 questions
With just that information, Kiro CLI generated a requirements document and a technical design document.
It also suggested React Native (Expo) as the tech stack, which felt modern enough, so I went with it.
Implementation (5 Phases)
Kiro CLI broke the implementation into 5 phases:
- Phase 1: Project initialization, Expo Router, theme setup
- Phase 2: Quiz functionality (questions, answers, scoring, explanations, results)
- Phase 3: Creating 30 quiz questions
- Phase 4: Progress tracking and weakness analysis (AsyncStorage)
- Phase 5: UI polish (FiraCode font, typewriter animation)
At each phase, it ran TypeScript compilation checks and verified the Expo bundle, so I never got stuck in a "build won't compile" state for long.
Integrating AdMob
When I said "I want to add a Google AdMob banner ad at the bottom of the screen," it handled everything in one go — from installing react-native-google-mobile-ads to configuring app.json, including a mechanism to switch between test ads during development and real IDs in production.
However, launching the simulator with a placeholder AdMob App ID caused a crash. Kiro CLI read the crash log, identified GADApplicationVerifyPublisherInitializedCorrectly as the culprit, and resolved it by setting the actual App ID.
Testing in the Simulator
One environment issue I hit was the xcode-select configuration.
My setup was pointing to Command Line Tools, which meant the simulator wouldn't work. Kiro CLI flagged this and had me run sudo xcode-select -s /Applications/Xcode.app/Contents/Developer.
That got the simulator up and running.
App Store Review
I used EAS Build for a cloud build and submitted to App Store Connect via eas submit. The first submission got rejected twice due to AdMob-related issues:
- ATT (App Tracking Transparency) not implemented — the tracking permission dialog is required when using AdMob
- ATT dialog not appearing — calling it immediately at app launch sometimes prevents the dialog from showing (fixed by adding a 1-second delay)
For both issues, all I had to do was paste the rejection message into Kiro CLI, and it handled everything from identifying the cause to implementing the fix.
v1.1.0: English Language Support
After the initial release, I felt it would be nice to support English as well. When I mentioned this to Kiro CLI, it proposed and implemented the following:
- Proposal: Automatic language switching based on device language settings
- Proposal: Manual language toggle within the app
- Implemented with my approval: English translations for all 30 questions (prioritizing adherence to official AWS terminology, followed by natural-sounding American English)
The English question data was translated in parallel using the sub-agent feature, which made it impressively fast.
As a side note, in my day job I often have to file tickets in English or respond to AWS Support cases that come in English.
For those situations, I've built a translation agent with the instruction "prioritize official AWS terminology first, then ensure the English sounds natural to native American English speakers." During the sub-agent workflow, I could see it calling that agent and working autonomously.
v1.2.0: New Categories
When I mentioned wanting to add more questions, Kiro CLI presented candidate categories to add, and I picked 3:
- S3 Security
- Organizations & SCPs
- Logging & Monitoring
This brought the total to 48 questions with much richer content (starting with v1.2.0, currently under review).
Quality Control for Questions
All AI-generated questions undergo external review for technical accuracy.
Here are some examples of issues that were flagged:
- Outdated description of GuardDuty data sources (missing protection features added between 2022–2024)
- Insufficient mention of IAM Access Analyzer's Unused Access Analyzer feature
- Not reflecting CloudTrail Lake's new enrollment suspension (starting May 2026)
Since this kind of "staleness due to AWS evolving" is inevitable, the app displays a disclaimer stating that the information is current as of June 2026 and that AI was used in content creation.
Reflections
What Went Well
- Published an app with zero iOS development knowledge
- Thanks to the suggestion of React Native / Expo, I was able to build an iPhone app without learning Swift
- Reliable build verification at each phase
- I rarely got bogged down in troubleshooting because broken builds never persisted for long
- Fast turnaround on review rejections
- Just pasting the rejection reason was enough for Kiro CLI to identify the cause and implement a fix
- High-quality English translations (seemingly)
- The approach of "prioritize official AWS terminology, then ensure natural American English" produced solid results (I say "seemingly" because my own English skills aren't good enough to judge definitively)
Things to Watch Out For
- External SDKs like AdMob will crash on misconfiguration
- Placeholder IDs don't work, for example
- AI-generated questions must be reviewed by humans
- There will be technically outdated content and subtle inaccuracies
- App Store review cares about real device behavior
- Something that works in the simulator (especially the ATT dialog) may not work on an actual device
Conclusion
Even in a situation where you have an idea but no iOS development knowledge, you can get a functional app published on the App Store by working iteratively with an AI coding agent.
What matters most, I've found, is clearly communicating what you want to build and actually using what comes out — giving feedback like "this isn't right" or "I want it like this." We may be entering an era where the ability to make product decisions matters more than the ability to write code.
In other words, domain knowledge is becoming the key differentiator.
As for the app, I'll keep tinkering with it whenever inspiration strikes.
Until next time.

Top comments (0)