메뉴
HN
Hacker News 24일 전

애플의 시대착오적 앱스토어 규칙과 AI 코딩의 충돌

IMP
8/10
핵심 요약

애플이 AI 코드 생성 앱에 대해 앱 내에서 외부 코드를 실행하거나 기능을 변경할 수 없다는 기존 앱스토어 규정(2.5.2항)을 내세워 업데이트를 차단하고 있다. 검토 시점의 정적인 소프트웨어를 전제로 하는 기존 규정이, 런타임에 AI 모델을 통해 동적으로 변화하는 새로운 패러다임의 소프트웨어와 충돌하는 현상이다. 이는 단순한 애플의 규제 문제를 넘어, 현대의 모든 소프트웨어 배포 및 버전 관리 시스템이 '출시된 소프트웨어는 고정되어 있다'는 근본적인 전제 위에 세워져 있음을 보여준다.

번역된 본문

래퍼(Wrapper)와 코드: 애플의 바이브 코딩(vibe coding) 단속이 고정되지 않는 소프트웨어와 어떻게 충돌하는가 Iris, 2026년 5월 5일

1 공유

1월 이후, Replit의 iOS 앱은 동일한 버전에 머물러 있다. 순위는 계속 하락하고 있다. 애플의 무료 개발자 도구 카테고리에서 1위에서 2위로, 그리고 3위로 밀려났다. 3월, The Information은 현재 상황이 어떻게 진행되고 있는지 보도했다. 애플은 Replit과 Vibecode를 포함한 여러 AI 코딩 앱의 업데이트를 차단했다. 인용된 규칙은 앱스토어 심사 지침 2.5.2항이었다. 앱은 번들 내에 자체적으로 포함되어야 하며, "기능이나 특성을 도입하거나 변경하는 코드를 실행"해서는 안 된다는 내용이다. 이 규칙은 수년간 존재해 왔다. 즉, 지금 적용되고 있는 소프트웨어 카테고리보다 그 역사가 더 오래된 규칙이다.

구독하기

보도에 따르면, 애플은 Replit이 iOS 클라이언트 내에서 생성된 앱을 미리 보는 기능을 중단하고 대신 사파리(Safari)에서 열도록 한다면 Replit의 업데이트를 승인할 준비가 되어 있었다. 해결책은 "코드 생성을 중단하라"는 것이 아니었다. 그것은 "심사받은 앱 내부에 생성된 결과물을 보여주지 마라"는 것이었다. 일주일 후, 애플의 단속은 한층 더 강화되었다. 3월 26일, 애플은 동일한 규칙을 들며 'Anything'이라는 앱을 앱스토어에서 완전히 퇴출시켰다. Anything의 공동 창립자인 Dhruv Amin은 애플의 피드백에 응하여 네 가지 다른 기술적 수정 버전을 제출하며 지난 3개월 동안 규정을 준수하기 위해 노력했다. 마지막 시도는 애플이 Replit에 제안했던 것과 정확히 일치했다. 즉, 생성된 앱 미리보기를 인앱 웹뷰 대신 외부 웹 브라우저를 통해 라우팅하는 것이었다. 그럼에도 불구하고 애플은 업데이트를 거부하고 기존 버전을 삭제해 버렸다.

몇 달이 지났지만, 이 교착 상태는 여전히 해결되지 않고 있다. 이 규칙이 실제로 어떤 역할을 하는지 이해하려면, 애플의 입장을 최대한 호의적으로 받아들이는 것이 도움이 된다. 앱스토어의 전제는 제출 시 심사된 결과물이 사용자의 기기에서 실행되는 결과물과 동일하다는 것이다. Replit이 내장된 웹뷰 내에서 생성된 앱을 표시할 때, 심사받은 Replit 바이너리는 사실상 무수히 많은 심사받지 않은 앱을 포함하게 된다. 래퍼(포장지)는 심사받았지만, 그 안의 콘텐츠는 그렇지 않다. 애플의 관점에서 볼 때, 심사는 아무것도 심사하지 않은 것이나 다름없다.

앱스토어가 존재해 온 기간 동안 애플은 인터프리터, 다운로드 가능한 코드, 브라우저 안의 브라우저, 그리고 JavaScript에 크게 의존하는 앱들에 대해 복잡한 규칙을 적용해 왔다. 매번 런타임이 유연해졌고, 플랫폼 소유자는 새로운 선을 그었다. 선은 움직였지만, 그 이면에 있는 전제는 변하지 않았다. 즉, 소프트웨어란 충분히 오래 멈춰 서서 검사할 수 있는 것이라는 믿음이다.

숨겨진 의도라는 질문 아래에는 진정한 인식론적 문제가 존재한다. 애플의 심사관들은 모델에 의해 런타임에 동작이 결정되는 소프트웨어를 평가할 방법이 없다. 기존의 심사 프로세스는 들여다볼 대상조차 없다. 래퍼는 심사할 수 있다. 하지만 심사관이 결코 보지 못한 프롬프트를 사용자가 입력한 후, 새벽 3시에 사용자의 휴대폰에서 그 래퍼가 하는 일은 심사할 수 없다. 심사 가능한 결과물과 실행되는 결과물은 더 이상 같은 종류의 것이 아니다.

이는 심사만의 문제가 아니다. 현대 소프트웨어 배포 스택의 거의 모든 계층이 동일한 전제 위에 구축되었다. 버전 번호는 명확한 계보를 가진 하나의 표준화된 결과물이 있다고 가정한다. 릴리스 노트는 '릴리스'가 있다고 가정한다. "최신 버전을 사용 중인가요?"라는 질문은 '최신 버전'이 존재한다고 가정한다. 버그 리포트는 두 사용자가 동일한 소프트웨어를 보고 있다고 가정한다. 문서는 스크린샷이 일치할 것이라고 가정한다. 재현 가능성은 여러분이 지켜보는 동안 바이너리가 변하지 않는다고 가정한다. 스택의 모든 것은 일단 출시된 소프트웨어는 고정되어 있다는 가정에 기반하고 있다. 앱스토어, 패키지 관리자, 버전 관리, CI/CD 파이프라인, 지원 도구, JIRA 티켓, Stack Overflow 답변, 그리고 "우리는 버전 Y에 X를 출시했습니다"라는 모든 문법이 그러하다.

적응형 소프트웨어(Adaptive software)는 고정되어 있지 않다. 각 사용자의 버전은 다른 사용자의 버전으로부터 즉시, 혹은 몇 주에 걸쳐 서서히 틀어진다. 그 소프트웨어가 더 이상 존재하지 않기 때문에 버그를 재현할 수 없다. 버전 자체가 없기 때문에 "최신 버전"도 존재하지 않는다. 두 사용자는 기능에 대해 의견을 나눌 수 없는데, 왜냐하면

원문 보기
원문 보기 (영어)
The Wrapper and the Code How Apple's vibe coding crackdown collides with software that doesn't hold still Iris May 05, 2026 1 Share Since January, Replit’s iOS app has been stuck on the same version. The rankings show it slipping. First to second, then to third in Apple’s free developer tools category. In March, The Information reported what was happening. Apple had blocked updates to several AI coding apps, including Replit and Vibecode. The cited rule was App Store Review Guideline 2.5.2: apps must be self-contained in their bundles and may not “execute code which introduces or changes features or functionality.” The rule has existed for years. It predates the category of software it is now being applied to. Subscribe According to the report, Apple was close to approving Replit’s updates if the company stopped previewing generated apps inside its iOS client and opened them in Safari instead. The fix wasn’t “stop generating code.” It was “stop showing the generated thing inside the reviewed thing.” A week later, Apple’s enforcement escalated. On March 26, the company pulled an app called Anything from the App Store entirely, citing the same rule. Anything’s co-founder Dhruv Amin had spent the previous three months trying to comply, submitting four different technical rewrites in response to Apple’s feedback. The final attempt did exactly what Apple had reportedly suggested to Replit: route generated app previews through an external web browser instead of an in-app web view. Apple rejected the update and removed the existing version anyway. Several months in, the standoff has not been resolved. To understand what the rule is doing, it helps to take Apple’s position at its most charitable. The App Store’s premise is that the artifact reviewed at submission is the artifact that runs on the user’s device. When Replit displays a generated app inside an embedded web view, the reviewed Replit binary effectively contains an unbounded number of unreviewed apps. The wrapper got reviewed. The contents did not. From Apple’s perspective, the review didn’t review anything. Apple has had complicated rules around interpreters, downloadable code, browsers within browsers, and JavaScript-heavy apps for as long as the App Store has existed. Each round, the runtime got more flexible, and platform owners drew a new line. The lines moved. The premise behind them did not: software is a thing you can hold still long enough to inspect. Underneath the question of motive, there is a real epistemological problem. Apple’s reviewers don’t have a method for evaluating software whose behavior is determined at runtime by a model. The existing review process has nothing to look at. The wrapper is reviewable. What the wrapper does at three in the morning on a user’s phone, after a user types a prompt no reviewer ever saw, is not. The reviewable artifact and the running artifact are not the same kind of thing. It is not just reviews. Almost every layer of the modern software-distribution stack was built on the same premise. Version numbers assume one canonical artifact with a defined lineage. Release notes assume there is a release. “Are you on the latest version?” assumes there is a latest. Bug reports assume two users see the same software. Documentation assumes the screenshots will match. Reproducibility assumes the binary doesn’t move while you’re looking at it. Everything in the stack rests on the assumption that software, once shipped, holds still. App stores, package managers, versioning, CI/CD pipelines, support tooling, JIRA tickets, Stack Overflow answers, the entire grammar of “we shipped X in version Y”. Adaptive software doesn’t hold still. Each user’s version drifts from every other user’s, sometimes immediately, sometimes over weeks. A bug isn’t reproducible because the software that produced it isn’t there anymore. There is no “latest version” because there is no version. Two users on the same product can’t compare notes about a feature, because the feature was generated for one of them and not the other. The App Store’s premise was always going to expire. Software that holds still is a temporary condition, not a property. It held still for forty years because the tools to make it adaptive didn’t exist yet. They exist now. The App Store enforces the assumption most strictly, and as a result Apple is being forced to ask the question first: what does review mean when the artifact and the runtime aren’t the same thing? The rest of the stack will soon be forced to ask it next. Each part of the stack assumes something about software that’s about to stop being true. The infrastructure built around the old assumption — review queues, version numbers, package registries — was never going to survive software that no longer holds still. While Apple was telling Replit to stop showing its generated apps in-app, OpenAI was building a platform whose entire premise is that apps generate themselves in-app. In October 2025, OpenAI introduced the Apps SDK at DevDay. A few months later, the company opened public submissions and launched an app directory inside ChatGPT. By early 2026, the directory hosted Spotify, Zillow, Canva, Coursera, Booking.com, Expedia, Adobe Photoshop, Gmail, Microsoft Teams, Stripe — and Replit. The same Replit. Eight hundred million people use ChatGPT every week. There is a tools menu, a directory, a submission process, and a review queue. Essentially, an app store. But the unit is different. ChatGPT apps aren’t binaries. They are MCP servers paired with web UI components that the model can render inline in a conversation. The model decides which app to surface based on conversational context. OpenAI’s own example: if you mention buying a house, the model can pull up Zillow inside the chat. The user didn’t navigate to Zillow. The model summoned it. Discovery shifts from search to inference. The user doesn’t browse a directory and pick an app; the model picks one and the user accepts or doesn’t. The app does not have a fixed UI. It has capabilities and components, composed turn by turn against whatever the user is trying to do. The protocol underneath all this is the Model Context Protocol, originally developed at Anthropic and now adopted across the industry. Both ChatGPT’s apps and Claude’s connectors run on it. What’s worth noticing is the ladder. The App Store distributes binaries, the lowest rung. The ChatGPT directory distributes capabilities: MCP servers and components, one rung up. The next rung, which doesn’t exist anywhere at scale, is distribution by intent: the user expresses a need, the runtime composes a fulfillment, and what travels between developer and user is closer to a constraint set than a program. Each rung up makes the underlying software more adaptive and the distribution model less compatible with the App Store. It is tempting to read the contrast between Apple and OpenAI as openness defeating control, but the framing is wrong. OpenAI still gatekeeps. There is a review process. There is a directory. Apps that don’t meet quality and safety standards don’t get in. The Agentic Commerce Protocol, OpenAI’s payments layer, is in beta with Stripe; some version of a take-rate is coming. The platform incentives port over from one generation of distribution to the next. The 30% may not survive in its current form, but the gatekeeper-with-rents structure will find a new shape. What’s actually different is the kind of software the new model can hold. The App Store can hold software that doesn’t change. The ChatGPT directory can hold software that does. We believe the second category is where everything is going, because adaptive software is what software becomes once the tools to build it exist. The platforms that survive will be the ones that can hold software in motion. The platforms that don’t will be remembered the way we remember CD-ROMs: a coherent technology that solved a real problem inside an assumption that didn’t last. The contradiction