Skip to content
This repository was archived by the owner on Jul 23, 2026. It is now read-only.
This repository was archived by the owner on Jul 23, 2026. It is now read-only.

Lower minimum required iOS version #198

Description

@ixje

What problem does this solve?

A good percentage of users does not have nor wants iOS 26. When trying to install they'll get this

Image

Proposed solution

I'm not familiar with mobile app development, but Claude was kind enough to scan the code base and seems to think there are no APIs in use that require iOS 26.

Audit Result: iOS 26 is not required

The current deployment target of iOS 26.0 is far higher than needed. The code can safely target iOS 17.0.

What actually gates the minimum

┌─────────────────────────────────────────────────────────────┬────────┬───────────────────────────────────────────────────┐
│                         Constraint                          │  Min   │                       Scope                       │
│                                                             │  iOS   │                                                   │
├─────────────────────────────────────────────────────────────┼────────┼───────────────────────────────────────────────────┤
│ @Observable, @Bindable, @Environment(ObservableType.self)   │ 17.0   │ Used pervasively, no guards — this is the hard    │
│                                                             │        │ floor                                             │
├─────────────────────────────────────────────────────────────┼────────┼───────────────────────────────────────────────────┤
│ Two-argument .onChange(of:) { old, new in }                 │ 17.0   │ ~15+ files                                        │
├─────────────────────────────────────────────────────────────┼────────┼───────────────────────────────────────────────────┤
│ MapCameraPosition, MapPolyline, Map(position:)              │ 17.0   │ FitnessSummaryViews.swift                         │
├─────────────────────────────────────────────────────────────┼────────┼───────────────────────────────────────────────────┤
│ .contentTransition(.numericText(value:))                    │ 17.0   │ FitnessControlViews.swift                         │
├─────────────────────────────────────────────────────────────┼────────┼───────────────────────────────────────────────────┤
│ ActivityKit / Dynamic Island / Live Activities              │ 16.1   │ Subsumed by iOS 17                                │
├─────────────────────────────────────────────────────────────┼────────┼───────────────────────────────────────────────────┤
│ NavigationStack, .presentationDetents, .toolbar(.hidden,    │ 16.0   │ Subsumed by iOS 17                                │
│ for:)                                                       │        │                                                   │
└─────────────────────────────────────────────────────────────┴────────┴───────────────────────────────────────────────────┘

No iOS 26 APIs found

Zero usage of Liquid Glass, GlassEffect, new UITabBarController APIs, TabSection, HKStateOfMind, or any other iOS 26-exclusive symbol. The project was simply built against the latest SDK without any new API adoption.

What's already guarded

Two #available(iOS 16.0, *) checks in HealthKitFullImporter.swift (sleep stages + wrist temperature) — these are correct and remain valid at any target ≥ 16.

---
Recommendation: Lower IPHONEOS_DEPLOYMENT_TARGET from 26.0 to 17.0 in GooseSwift.xcodeproj/project.pbxproj. No code changes required — everything compiles cleanly at iOS 17. Want me to make that change?

Any chance the minimum version can be lowered to increase the audience that can install? fwiw; for me personally 18 is already enough. Thanks for considering.

WHOOP device (if relevant)

Not device-specific

Alternatives considered

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions