Skip to content

Conversation

@AnthonyRonning
Copy link
Contributor

@AnthonyRonning AnthonyRonning commented Nov 21, 2025

Fixes #314

Apple App Store policies prohibit showing alternative app stores. This change conditionally hides Google Play content when running on iOS devices:

  • Homepage: Hide Google Play badge when running on iOS
  • Downloads page: Hide entire Android section when running on iOS

Uses existing isIOS() platform detection utility.


Generated with Claude Code

Summary by CodeRabbit

  • Enhancements
    • Added platform-aware content display: Android and Google Play download options are now hidden when using the app on iOS.

✏️ Tip: You can customize this high-level summary in your review settings.

Apple App Store policies prohibit showing alternative app stores.
This change conditionally hides Google Play content on iOS devices:

- Homepage: Hide Google Play badge when running on iOS
- Downloads page: Hide entire Android section when running on iOS

Uses existing isIOS() platform detection utility.

Fixes #314

Co-authored-by: Anthony <AnthonyRonning@users.noreply.github.com>
@coderabbitai
Copy link

coderabbitai bot commented Nov 21, 2025

Walkthrough

The pull request adds iOS platform checks to conditionally hide Google Play badge and Android download card on iOS, addressing Apple's build approval concerns by preventing Google-specific download UI from appearing in iOS tauri builds.

Changes

Cohort / File(s) Summary
Platform-aware Google Play badge
frontend/src/components/Marketing.tsx
Wraps Google Play link and image in conditional rendering that only displays when !isIOSPlatform, utilizing existing isIOS() helper to gate the badge on iOS builds.
Platform-aware Android download card
frontend/src/routes/downloads.tsx
Adds isIOSPlatform variable via isIOS() check and wraps Android download card in conditional to hide it on iOS ({!isIOSPlatform && ...}), preserving all internal content.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

  • Notes: Both changes follow the same repetitive pattern (isIOS() platform check with conditional rendering), requiring minimal logic verification
  • Minor formatting adjustments in adjacent code are cosmetic
  • Changes align directly with the linked issue requirement to gate Google downloads on iOS

Possibly related PRs

Poem

🐰 A rabbit hops through App Store gates,
Where Apple's rules dictate our fates—
"Hide Google Play!" the review cries,
So off it goes... on iOS skies! 🍎✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: conditionally hiding Google Play downloads on iOS Tauri builds.
Linked Issues check ✅ Passed The PR successfully implements the objective from issue #314 by using isIOS() checks to hide Google Play content on both homepage and downloads page.
Out of Scope Changes check ✅ Passed All changes in Marketing.tsx and downloads.tsx are directly related to hiding Google Play content on iOS, with no extraneous modifications.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch claude/issue-314-20251121-1856

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cac8f66 and ace2762.

📒 Files selected for processing (2)
  • frontend/src/components/Marketing.tsx (2 hunks)
  • frontend/src/routes/downloads.tsx (3 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (CLAUDE.md)

**/*.{ts,tsx,js,jsx}: Use 2-space indentation, double quotes, and a 100-character line limit for formatting
Use camelCase for variable and function names
Use try/catch with specific error types for error handling

Files:

  • frontend/src/routes/downloads.tsx
  • frontend/src/components/Marketing.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Use strict TypeScript typing and avoid any when possible

Files:

  • frontend/src/routes/downloads.tsx
  • frontend/src/components/Marketing.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: build-android
  • GitHub Check: build-ios
  • GitHub Check: build-linux
  • GitHub Check: build-macos (universal-apple-darwin)
  • GitHub Check: Cloudflare Pages
🔇 Additional comments (4)
frontend/src/components/Marketing.tsx (2)

350-363: LGTM!

The conditional rendering correctly hides the Google Play badge on iOS platforms while keeping it visible elsewhere. The implementation aligns with the PR objective to comply with Apple App Store policies.


8-8: isIOS() correctly detects Tauri iOS builds - no action required.

The isIOS() utility properly uses @tauri-apps/plugin-os (Tauri's official OS plugin) to detect the actual platform type, not browser user agents. When the app runs in a Tauri environment, it calls type() to get the platform and sets isIOS: platform === "ios", which correctly identifies iOS Tauri builds and meets Apple App Store requirements. The implementation includes proper initialization enforcement and error handling.

frontend/src/routes/downloads.tsx (2)

10-10: LGTM!

The platform detection setup is consistent with the implementation in Marketing.tsx, using the same isIOS() utility and calling it once at the component level.

Also applies to: 34-34


233-284: LGTM!

The conditional rendering correctly hides the entire Android download section on iOS platforms, including the Google Play badge, beta program links, and APK download. This comprehensive approach ensures full compliance with Apple App Store policies.

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


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

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Nov 21, 2025

Greptile Overview

Greptile Summary

Conditionally hides Google Play/Android content from iOS Tauri builds to comply with Apple App Store policies prohibiting references to alternative app stores.

Changes:

  • Homepage (Marketing.tsx): Wrapped Google Play badge in conditional rendering using !isIOSPlatform
  • Downloads page (downloads.tsx): Wrapped entire Android download section in conditional rendering using !isIOSPlatform

Implementation:

  • Uses existing isIOS() platform detection utility that's initialized at app startup via waitForPlatform() in main.tsx
  • Clean, minimal changes that preserve all existing functionality on non-iOS platforms
  • Grid layout (md:grid-cols-2) gracefully handles single iOS card display

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • Clean implementation using existing, well-tested platform detection utility. The changes are minimal, non-invasive, and only affect conditional rendering. The isIOS() function is properly initialized before app render, preventing timing issues. Grid layout gracefully handles the conditional display on iOS.
  • No files require special attention

Important Files Changed

File Analysis

Filename Score Overview
frontend/src/components/Marketing.tsx 5/5 Conditionally hides Google Play badge on iOS using existing isIOS() utility
frontend/src/routes/downloads.tsx 5/5 Hides entire Android section on iOS to comply with App Store policies

Sequence Diagram

sequenceDiagram
    participant User
    participant App as main.tsx
    participant Platform as platform.ts
    participant Marketing as Marketing.tsx
    participant Downloads as downloads.tsx

    User->>App: Launch app
    App->>Platform: waitForPlatform()
    Platform->>Platform: Detect Tauri environment
    Platform->>Platform: Get OS type (iOS/Android/etc)
    Platform-->>App: Platform initialized
    App->>App: Render React app
    
    alt iOS Platform
        App->>Marketing: Render Marketing component
        Marketing->>Platform: isIOS()
        Platform-->>Marketing: true
        Marketing->>Marketing: Hide Google Play badge
        Marketing-->>User: Show homepage (no Google Play)
        
        User->>Downloads: Navigate to /downloads
        Downloads->>Platform: isIOS()
        Platform-->>Downloads: true
        Downloads->>Downloads: Hide Android section
        Downloads-->>User: Show only iOS & Web options
    else Non-iOS Platform
        App->>Marketing: Render Marketing component
        Marketing->>Platform: isIOS()
        Platform-->>Marketing: false
        Marketing->>Marketing: Show Google Play badge
        Marketing-->>User: Show homepage (with Google Play)
        
        User->>Downloads: Navigate to /downloads
        Downloads->>Platform: isIOS()
        Platform-->>Downloads: false
        Downloads->>Downloads: Show Android section
        Downloads-->>User: Show iOS, Android & Web options
    end
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

@AnthonyRonning
Copy link
Contributor Author

@TestFlight build

@github-actions
Copy link
Contributor

🚀 TestFlight deployment triggered! Check the Actions tab for progress.

@github-actions
Copy link
Contributor

✅ TestFlight deployment completed successfully!

@AnthonyRonning AnthonyRonning merged commit 63d36e6 into master Nov 22, 2025
8 checks passed
@AnthonyRonning AnthonyRonning deleted the claude/issue-314-20251121-1856 branch November 22, 2025 18:12
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.

Don’t show google downloads on ios tauri builds

2 participants