Skip to content

Fix macOS Sign in with Apple infinite-load (App Review 1.0.1 reject)#32

Merged
MatheusKindrazki merged 1 commit into
mainfrom
fix/macos-sign-in-with-apple
May 30, 2026
Merged

Fix macOS Sign in with Apple infinite-load (App Review 1.0.1 reject)#32
MatheusKindrazki merged 1 commit into
mainfrom
fix/macos-sign-in-with-apple

Conversation

@MatheusKindrazki
Copy link
Copy Markdown
Owner

@MatheusKindrazki MatheusKindrazki commented May 30, 2026

Context

App Review rejected version 1.0.1 on 2026-05-05 (submission ID 62f70d2b-3ce5-4965-892d-c1d184de19e0), tested on a MacBook Air (15-inch, M3, 2024), citing:

  • Guideline 2.1(a) — Performance, App Completeness: "Your application loaded indefinitely when we attempted to login using Sign in with Apple."
  • Guideline 2.1(b) — Information Needed: "We cannot locate the In-App Purchases ... within the app at this time."

Both rejections share a single root cause.

Root cause

On macOS, FastSharedApp.normalWindowContent instantiated LibraryView() directly, skipping the iOS auth gate. SignInView's Sign in with Apple button + result handlers were wrapped in #if os(iOS) with no #else, so the Mac build literally had no way to sign in. The reviewer hit the unauthenticated path, CloudKit sync attempted to start without a token, and the UI never recovered — manifesting as the infinite spinner. Since the reviewer never got past auth, they never saw the Pro IAPs either → 2.1(b).

Fix

File Change
FastSharedApp.swift macOS #if branch now uses RootView() (same auth gate as iOS). RootView.mainContent already has a macOS branch that renders the shared LibraryView surface, so window chrome (MacMainWindowBinder, hidden title) is preserved.
SignInView.swift Removed the #if os(iOS) guards around SignInWithAppleButton, handleAppleResult, and submitSignIn. Both SignInWithAppleButton and APIClient.signInWithApple are cross-platform.
apple/scripts/appstore-status.rb Read-only Spaceship diagnostic that pulls the live submission state (versions, builds, IAPs) from App Store Connect. Used to confirm the iOS+macOS edits are both stuck in REJECTED so we know to resubmit both.

Verification

xcodebuild -project FastShared.xcodeproj -scheme FastSharedApp \
  -destination 'platform=macOS,arch=arm64' -configuration Debug build
→ ** BUILD SUCCEEDED **

Confirmed current ASC state via apple/scripts/appstore-status.rb:

  • iOS 1.0.1 — REJECTED (build 199394062 attached)
  • macOS 1.0.1 — REJECTED (build 199392389 attached)
  • Latest available build (unattached): 199560339 from 2026-04-28

Next steps (post-merge)

  1. Confirm Paid Apps Agreement is active in ASC → Business (the rejection letter explicitly flagged this as a prerequisite for IAP review).
  2. Archive a new build for both platforms and upload.
  3. Reply in Resolution Center with the bug-fix summary + IAP location walkthrough.
  4. Re-submit with make appstore-sync && FASTSHARED_SUBMIT_FOR_REVIEW=YES make appstore-submit.

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • Bug Fixes

    • Corrigido problema no macOS onde o fluxo de autenticação era ignorado, causando travamento do aplicativo durante o carregamento.
  • New Features

    • Autenticação "Sign in with Apple" agora funciona consistentemente em todas as plataformas (iOS e macOS).

Review Change Stack

Apple Review rejected 1.0.1 on a MacBook Air M3 (submission ID
62f70d2b-3ce5-4965-892d-c1d184de19e0) under Guideline 2.1(a) — Sign in
with Apple 'loaded indefinitely' — and Guideline 2.1(b) because the
reviewer couldn't locate the Pro IAPs as a consequence.

Root cause: on macOS the WindowGroup instantiated LibraryView() directly,
skipping the iOS auth gate. SignInView's Sign in with Apple button + its
result handlers were wrapped in #if os(iOS) with no else branch, so the
Mac build literally had no way to log in. Reviewer hit the unauth path,
CloudKit sync attempted to start without a token, and the UI never
recovered.

The fix routes macOS through RootView (same auth gate as iOS) — RootView's
mainContent already has a macOS branch rendering the shared LibraryView
surface, so window chrome (MacMainWindowBinder, hidden title) is
preserved. The iOS guards around SignInWithAppleButton/handleAppleResult/
submitSignIn are removed; both APIs are cross-platform and APIClient's
signInWithApple has no platform restrictions. Build verified:
xcodebuild -scheme FastSharedApp -destination 'platform=macOS,arch=arm64'
→ BUILD SUCCEEDED.

Also adds apple/scripts/appstore-status.rb — a read-only Spaceship script
that queries the real submission state (versions, builds, IAPs) from App
Store Connect so future rejections can be diagnosed without screen-
sharing the ASC dashboard.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 30, 2026

Caution

Review failed

Pull request was closed or merged during review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 18f900f7-5200-4493-a9dd-0cf53b754ded

📥 Commits

Reviewing files that changed from the base of the PR and between e9ad633 and 9cc8deb.

📒 Files selected for processing (3)
  • apple/FastSharedApp/FastSharedApp.swift
  • apple/FastSharedApp/Scenes/SignInView.swift
  • apple/scripts/appstore-status.rb

Walkthrough

O PR contém duas mudanças independentes: (1) unificação do fluxo de autenticação no macOS para garantir que passa por RootView e SignInView em vez de pular direto para LibraryView, com expansão de "Sign in with Apple" para cross-platform; (2) adição de novo script de diagnóstico em Ruby para consultar status de submissões, builds, In-App Purchases e assinaturas no App Store Connect.

Changes

Unificação de autenticação macOS

Layer / File(s) Summary
Seleção de root view no macOS
apple/FastSharedApp/FastSharedApp.swift
macOS renderiza RootView() em vez de LibraryView() em normalWindowContent, forçando o mesmo fluxo de onboarding/autenticação que iOS e evitando comportamento "loaded indefinitely" do caminho anterior.
Suporte cross-platform a "Sign in with Apple"
apple/FastSharedApp/Scenes/SignInView.swift
Guardas #if os(iOS) removidas do botão "Sign in with Apple" e handlers handleAppleResult/submitSignIn, tornando a autenticação Apple disponível em macOS. Mudança motivada por rejeição anterior no App Review por falta deste fluxo no macOS.

Script de diagnóstico App Store Connect

Layer / File(s) Summary
Autenticação e localização do app
apple/scripts/appstore-status.rb
Script carrega variáveis de ambiente (credenciais e bundle ID), cria token App Store Connect via spaceship e inicializa sessão autenticada para consultas.
Status de versões e builds
apple/scripts/appstore-status.rb
Consulta e imprime versões em modo "Edit" e "Live" por plataforma (iOS/macOS), inclui metadados de build acoplada, lista histórico recente de versões, e enumera últimas 5 builds com estado de processamento e atributos como expiração.
In-app purchases e subscriptions
apple/scripts/appstore-status.rb
Enumera In-App Purchases com tratamento de compatibilidade spaceship, lista grupos de subscriptions e assinaturas exibindo product_id, estado e período; cada seção captura exceções para resiliência.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 No macOS, autenticação flui como iOS agora,
Maçã assina sem fronteira, barreira derrubada,
Script de diagnóstico App Store em Ruby voa—
Status de builds e produtos, tudo revelado! ✨📱

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed O título descreve com precisão a principal mudança: corrigir o carregamento infinito do Sign in with Apple no macOS causado pela rejeição do App Review 1.0.1.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/macos-sign-in-with-apple

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@MatheusKindrazki MatheusKindrazki merged commit 96e6c91 into main May 30, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant