iOS 26 Liquid Glass effects – backported to iOS 13+
Theseus gives you translucent UI components with blur, refraction, glare, and spring animations – the iOS 26 look, backported to iOS 13+. Same ship, rebuilt plank by plank for older waters.
Why?
Because some of us watched Apple unveil Liquid Glass at WWDC 2025 and quietly wondered if they could drop support for iOS 13. This is for everyone still supporting devices from 2015.
TabBar |
Slider |
Switch |
Glass View |
What you get
- The iOS 26 Liquid Glass look, running on devices from 2019
- Metal GPU rendering (with a sensible fallback for ancient hardware)
- Three drop-in components: TabBar, Slider, Switch, GlassView
- Accessibility support out of the box
- Automatic device adaptation – it won't melt an iPhone 8
- Spring-based morphing animations
Add to your Package.swift:
dependencies: [
.package(url: "https://github.com/valzevul/Theseus.git", from: "1.0.0")
]Or in Xcode: File → Add Package Dependencies... → paste the repository URL.
| Requirement | Version |
|---|---|
| iOS | 13.0+ |
| Swift | 5.9+ |
| Metal | Optional (fallback available) |
import Theseus
let glassView = TheseusView()
glassView.shape.cornerRadius = 20
glassView.sourceView = backgroundView
view.addSubview(glassView) |
|
SwiftUI
Theseus is a UIKit-based library. For SwiftUI, use UIViewRepresentable wrappers with the Coordinator pattern for proper two-way binding.
Complete, working wrappers are provided in:
TheseusDemoSwiftUI/TheseusDemoSwiftUI/Helpers/TheseusViewRepresentable.swift
Includes:
TheseusViewRepresentable– Core glass lensTheseusTabBarRepresentable– Tab bar with selection bindingTheseusSwitchRepresentable– Toggle with@Binding isOnTheseusSliderRepresentable– Slider with@Binding value
| Requirement | Version |
|---|---|
| Library | iOS 13+ |
| SwiftUI demo | iOS 15+ |
Three controls, powered by TheseusView.
The glass capsule floats over your selected tab.
The knob stretches into a glass capsule while you drag, or snaps to positions if you need a stepper.
let slider = TheseusSlider()
slider.minimumValue = 0
slider.maximumValue = 100
slider.setValue(50)
// For discrete positions (like a stepper)
slider.positionsCount = 5
slider.markPositions = true |
|
A toggle that morphs as you flick or drag it.
|
let toggle = TheseusSwitch()
toggle.isOn = true
toggle.onTintColor = .systemGreen
toggle.offTintColor = .systemGray4
toggle.onValueChanged = { isOn in
print("Switch: \(isOn ? "ON" : "OFF")")
} |
The core building block. A fully customisable glass lens – use it to build your own components or as a standalone translucent overlay.
TheseusView supports:
- Blur – Gaussian blur with configurable radius
- Refraction – Edge distortion with chromatic dispersion
- Edge effects – Fresnel rim glow and specular highlights
- Morphing – Spring-based shape animations
var config = TheseusConfiguration()
config.blur.radius = 20
config.shape.cornerRadius = 16
config.opacity = 0.9
config.theme.tintColor = UIColor.systemBlue.withAlphaComponent(0.1)
let glassView = TheseusView(configuration: config)Advanced Configuration
// Refraction (glass distortion)
config.refraction.edgeWidth = 22.0
config.refraction.intensity = 1.45
config.refraction.dispersion = 4.0
// Edge effects (fresnel / highlights)
config.edgeEffects.rimRange = 45.0
config.edgeEffects.rimGlow = 1.0
config.edgeEffects.rimHardness = 12.0
// Glare (light reflection)
config.edgeEffects.glareRange = 450.0
config.edgeEffects.glareIntensity = 1.0
config.edgeEffects.lightAngle = .pi * 0.3
config.edgeEffects.glareFocus = 0.75
// Morphing animation
config.morph.tension = 0.18
config.morph.friction = 0.88
config.morph.smoothing = 0.45See TheseusConfiguration.swift for all available options.
Theseus automatically detects device capabilities and adjusts rendering:
| Tier | RAM / Cores | Example Devices | Rendering |
|---|---|---|---|
| Tier 3 | ≥6GB, ≥6 cores | iPhone 12+ | Full Metal + true refraction |
| Tier 2 | ≥4GB, ≥6 cores | iPhone 8–11 | Metal, selective refraction |
| Tier 1 | ≥3GB | Older iPhones | Metal, cheap approximation |
| Tier 0 | <3GB | Very old devices | UIVisualEffectView fallback |
|
Override for Testinglet settings = TheseusSettings.shared
settings.tierOverride = .tier0
settings.refractionPolicyOverride = .cheapApprox
settings.resetToDefaults() |
Theseus respects system settings automatically.
| Setting | Behaviour |
|---|---|
| Reduce Transparency | Solid backgrounds instead of blur |
| Reduce Motion | Disables spring morphing animations |
| Low Power Mode | Downgrades effects, reduces frame rate |
Pause rendering when views are hidden to save GPU cycles:
glassView.pauseRendering()
glassView.resumeRendering()| Demo | Path | Description |
|---|---|---|
| UIKit | TheseusDemo/ |
All components with settings panel |
| SwiftUI | TheseusDemoSwiftUI/ |
Complete wrappers (iOS 15+) |
If you ship Theseus, I'd love a mention in About → Credits.





