Skip to content

Bring visionOS target up to date with 2.x (fix build after Liquid Glass changes) - #2529

Open
jdk-21 wants to merge 6 commits into
Dimillian:mainfrom
jdk-21:fix/visionos-liquid-glass
Open

jdk-21 wants to merge 6 commits into
Dimillian:mainfrom
jdk-21:fix/visionos-liquid-glass

Conversation

@jdk-21

@jdk-21 jdk-21 commented Oct 22, 2026

Copy link
Copy Markdown

I originally set out to add Look to Scroll support to the visionOS version of Ice Cubes. While working on it, I noticed that the visionOS target has fallen significantly behind the current 2.x release. Among other things, it no longer compiles since the Liquid Glass design changes.

This PR is meant to fix that, so we have a 2.x version that builds and works on visionOS again.

What this PR does

  • Fixes the visionOS build failures introduced by the Liquid Glass changes
  • Brings the visionOS target back in line with the current 2.x codebase
  • Raises deployment target to visionOS 26, which every Vision Pro supports. (Removes the need for many availability guards)
  • Link WishKit on visionOS
  • Fixes the system tab bar on visionOS

While working on this, I also found a few other places where the visionOS UI no longer matches the current iOS design. I’d like to keep this PR focused on getting the target compiling and functional again, so those differences will be addressed in follow-up PRs.

The app target already builds for visionOS 27 (Xcode default), but the
packages still declared visionOS 1. Checks like #available(iOS 26, *)
then treated APIs such as navigationTransition(.zoom), matchedTransitionSource
and FoundationModels as unavailable on visionOS, breaking the build.
glassEffect, GlassEffectContainer and the .glass/.glassProminent button
styles are unavailable on visionOS, and #available(iOS 26, *) does not
exclude visionOS at compile time. Use glassBackgroundEffect and
bordered button styles there instead, and add a GlassContainer wrapper
that falls back to plain content on visionOS.
ToolbarSpacer, scrollEdgeEffectStyle, sharedBackgroundVisibility and
toolbar matchedTransitionSource are unavailable on visionOS.
Restore the currentInstance environment value used by the visionOS
photo picker, and exclude bottomInset on visionOS where it is unused
and MediaPickerPanelView does not exist.
WishKit supports visionOS, but the framework was only linked for iOS,
so 'import WishKit' failed when building for visionOS.
Since 2.0, visionOS shared the iPad/Mac path: tabs inside a TabSection
with sidebarOnly placement, the sidebarAdaptable style and, on visionOS
27, a sidebar default placement. That replaced the visionOS tab bar
ornament with a sidebar. Render plain tabs on visionOS again, as in 1.11.
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