Skip to content

feat: support macOS, tvOS and visionOS - #1968

Merged
mrousavy merged 3 commits into
v1from
mrousavy/v1-apple-platforms
Oct 23, 2026
Merged

mrousavy merged 3 commits into
v1from
mrousavy/v1-apple-platforms

Conversation

@mrousavy

@mrousavy mrousavy commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

First of six stacked PRs: #1968 (this one) → #1960 → #1969 → #1970 → #1971 → #1972.

Declare macOS 13, tvOS 16 and visionOS 1 next to iOS 16 in the react-native-nitro-modules and template manifests and podspecs. These are the same OS generation as the iOS minimum. SwiftPM builds a package for every platform, but without a declaration it uses its own minimums, such as macOS 10.13, which are too old for v1's Swift and C++. v0 supported the same platforms through its podspec.

StringUtils checked #available(iOS 26.0, macOS 26.0, *) before using utf8Span. On tvOS and visionOS the wildcard resolves to the deployment target, so those builds failed to compile. The check now names all four platforms.

React Native's prebuilt React frameworks only ship iOS and Mac Catalyst slices, so React Native apps on macOS, tvOS and visionOS still need the React Native fork for that platform. HybridViews stay behind canImport(UIKit) as in v0, so they are available on iOS, tvOS and visionOS.

CI keeps testing iOS only. Before trimming the test tooling from this PR, I checked locally with Hermes built for each platform: the standalone suite passed on macOS (24 passed, 1 skipped), and the test bundle built for the tvOS and visionOS simulators once the availability check was fixed.

@vercel

vercel Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
nitro-docs Ready Ready Preview Oct 23, 2026 11:17am UTC

Request Review

Comment thread docs/docs/getting-started/minimum-requirements.md Outdated
Comment thread docs/docs/getting-started/minimum-requirements.md Outdated
Declare macOS 13, tvOS 16 and visionOS 1 next to iOS 16 in the
react-native-nitro-modules and template manifests and podspecs, matching the
iOS minimum's OS generation. Without a declaration, SwiftPM uses its own
minimums, which are too old for v1's Swift and C++.

String conversion checked only iOS 26 and macOS 26 before using `utf8Span`, so
tvOS and visionOS failed to compile. The check now names all four platforms.

CI keeps testing iOS only.
@mrousavy
mrousavy force-pushed the mrousavy/v1-apple-platforms branch from 3c46620 to e077d0e Compare October 23, 2026 11:16
@mrousavy
mrousavy merged commit 30d5b11 into v1 Oct 23, 2026
18 checks passed

This branch was successfully deployed

1 active deployment
Preview — e077d0e9 Deployed Oct 23, 2026 by vercel[bot]
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