Skip to content

[DO NOT MERGE] feat(mobile): add Liquid Glass to translucent overlays - #129

Closed
GSTJ wants to merge 20 commits into
mainfrom
GSTJ/liquid-glass
Closed

[DO NOT MERGE] feat(mobile): add Liquid Glass to translucent overlays#129
GSTJ wants to merge 20 commits into
mainfrom
GSTJ/liquid-glass

Conversation

@GSTJ

@GSTJ GSTJ commented Aug 2, 2026

Copy link
Copy Markdown
Owner

Summary

Reopens #78 with the same diff, merged without review and reverted in #124. Holding it here for proper review before it merges.

GSTJ added 20 commits July 8, 2026 16:30
Migrate the (tabs) layout to expo-router's Native Tabs on iOS, so the
tab bar is OS-rendered: Liquid Glass on iOS 26, standard UIKit tab bar
on iOS 18 and below, automatically (no flag). Android keeps the
existing JS Tabs -- Native Tabs there render as a plain Material 3
bottom nav and would cost the fine-grained theme.spacing/safe-area
insets and the gradient brand icons the app renders today (Native
Tabs icons only accept SF Symbols/xcasset/drawable/material glyphs/
static image sources, not arbitrary SVG element trees), a straight
downgrade with nothing gained since Liquid Glass is iOS 26-only.

Tab order, testIDs (via unstable_nativeProps.tabBarItemTestID),
localized labels, and the underlying screens are all preserved.
Labels stay hidden on iOS to match the current icon-only look, with
tabBarItemAccessibilityLabel wired separately so VoiceOver still gets
a real name.

Also add GlassView (expo-glass-effect) to two overlay surfaces, each
gated on isLiquidGlassAvailable() with a non-glass fallback:
- the match action bar pill buttons (swipe screen)
- the distance chip on the swipe card, replacing the iOS blur/Android
  flat TransparentAndroidDarkBlurView with real Liquid Glass on
  iOS 26+ and the exact same fallback everywhere else

Bump app.config.ts to 1.5.0 for the native change.
…e on iOS

- shared useTabBarHeight/useTabBarOverlap hooks: safe BottomTabBarHeightContext
  read with a UITabBar (49pt + bottom inset) fallback under iOS Native Tabs
- MatchActionBar and Messages list now clear the translucent bar; Android JS
  tabs unchanged (overlap resolves to 0)
- Profile reuses the shared hook instead of its inline fallback
- native tab bar follows the in-app theme via experimental_userInterfaceStyle
  (UIKit traits ignore Appearance.setColorScheme, so dark mode showed light glass)
…f lifting the buttons

The card deck (and its floating action bar, back at its original
spacing[6] offset) now ends above the translucent bar via a bottom inset
on the swipe content region, restoring the pre-native-tabs proportions:
photo, name, description and distance chip all fully visible. Android JS
tabs unchanged (overlap is 0).
# Conflicts:
#	apps/mobile/package.json
#	pnpm-lock.yaml
@GSTJ

GSTJ commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

This is still an experimental pile of fixes and reverts, so I'm not shipping it.

@GSTJ GSTJ closed this Aug 3, 2026
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