Skip to content

Migrate to Xcode 26 / iOS 26 with Liquid Glass theming#160

Open
meganuija wants to merge 11 commits intomainfrom
fix/xcode-26-migration
Open

Migrate to Xcode 26 / iOS 26 with Liquid Glass theming#160
meganuija wants to merge 11 commits intomainfrom
fix/xcode-26-migration

Conversation

@meganuija
Copy link
Copy Markdown
Collaborator

@meganuija meganuija commented Mar 11, 2026

Summary

  • Migrate project to build with Xcode 26 / iOS 26 SDK
  • Adopt Liquid Glass navigation bar and tab bar theming on both iPad and iPhone
  • Move the catalog entry point filter (All/eBooks/Audiobooks) into the navigation bar on iPad
  • Add top inset for the Magazines web view on iPad iOS 26
  • Replace deprecated UIApplication.shared.windows and other iOS 26 deprecations
  • Fix crash on missing tunnistus_start authentication link during token auth

Known issues

  • LCP Test certificate has expired; awaiting EDRLab production liblcp 4.3.0 rebuild (production LCP works fine with 4.1.0)

Test plan

  • Browse catalog on iPhone and iPad (iOS 26)
  • Verify Liquid Glass nav bar appearance on both devices
  • Verify opaque nav bar on iPhone, transparent on iPad
  • Check section headers scroll with content (not sticky)
  • Test Suomi.fi authentication flow on production
  • Borrow and open an EPUB on production (LCP prod certs work)
  • Verify Magazines tab renders correctly on iPad
  • Test Settings, My Books, and Favorites tab navigation

@meganuija meganuija requested a review from a team as a code owner March 11, 2026 16:37
- Remove dead Readium 1 C++ SDK references (readium-sdk, readium-shared-js
  submodules, RDServices.xcodeproj, libRDServices.a, libePub3-iOS.a) that
  conflict with Xcode 26 system headers due to libc++ macro redefinitions
- Remove ~50 stale Carthage framework/xcframework references for packages
  that migrated to SPM (Firebase, CryptoSwift, Fuzi, GCDWebServer, etc.)
- Remove dead AudioEngine.xcframework reference
- Fix PasskeyManager.swift: Data.bytes returns RawSpan in iOS 26 SDK
- Fix ToastService.swift: SwiftUICore is no longer a public module
@meganuija meganuija force-pushed the fix/xcode-26-migration branch from c2e95a3 to b7c7560 Compare March 11, 2026 16:48
- Skip opaque UINavigationBar/UITabBar appearance on iOS 26,
  let Liquid Glass handle it natively
- Set window background color to prevent black bleed-through
- Lock section header interface style to prevent Liquid Glass
  trait flipping during fast scroll
- Use automatic content inset adjustment on iOS 26
- Skip forced nav bar appearance in EPUB reader on iOS 26
- Present reader modally on iPad to avoid floating tab bar overlay
On iPad with iOS 26, the All/Audiobooks/eBooks segmented control is
placed directly in the navigation bar titleView to integrate with
Liquid Glass. The separate facet bar is no longer shown on iPad.

Section headers use grouped table style (non-sticky) with clear
background to avoid clashing with the Liquid Glass nav bar.

iPhone and older iOS versions are unchanged.
- Hide redundant title labels under the floating tab bar on iPad iOS 26
  (Browse Books, My Books, Favorites, Settings)
- Prevent catalog views from extending under the top bar so content
  does not show through the transparent area below the tab bar
- Use standard title for pushed sub-category views on iPad iOS 26
- Hide top scroll edge effect on grouped catalog table view
- Use grouped table style on iPad to disable sticky section headers
- Set default nav bar appearance for Browse Books on iOS 26
The Magazines tab is a WKWebView with its own navigation UI.
Add extra safe area inset so the web content clears the floating
tab bar instead of showing a redundant native nav bar.
- Remove isNetworkActivityIndicatorVisible (deprecated iOS 13, removed iOS 26)
- Guard barTintColor/barStyle/isTranslucent in reader views with
  #unavailable(iOS 26) to avoid Liquid Glass conflicts
Use connectedScenes-based window lookup on iOS 15+ with
fallback for older versions.
Replace force-unwrap with guard let to prevent crash when the
authentication document does not contain the expected link.
Logs the error and returns nil instead of crashing.
Replace force-unwrap with guard let to prevent crash when the
authentication document is missing the tunnistus_start link.
Previously the iOS 26 navigation and layout adjustments only applied
on iPad. This extends them to iPhone: opaque nav bar, grouped table
style with clear section headers, standard nav bar titles, and
disabled hide-bars-on-swipe. Also switches scheme to Debug config
and cleans up minor Xcode project warnings.
@meganuija meganuija changed the title Migrate to Xcode 26 / iOS 26 SDK Migrate to Xcode 26 / iOS 26 with Liquid Glass theming Mar 31, 2026
Wrap the UITableView.topEdgeEffect call in a compile-time SDK version
check so the project builds on both Xcode 16 (CI) and Xcode 26.
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.

2 participants