With Liquid Glass being a brand new design system, Apple is keen for developers to adopt it. Adoption helps Apple demonstrate the design system is a success, and so they’re doing everything they can to make it easy for you as a developer to implement it.
You saw this approach in the first lesson, where by just building the Cards app for iOS 26, the app upgraded to use Liquid Glass with no code changes. Apple provide other ways to make the adoption as easy as possible too. They’ve created an entire page in their documentation on how to adopt Liquid Glass into your apps using best practices.
For this lesson, you’ll continue to work on the Cards app from lesson 1. You’ll apply these best practices to the app, giving you an opportunity to get familiar with Liquid Glass. You’ll also get a feel going through the process of transitioning an app from flat design into Liquid Glass.
Leveraging System Frameworks
Open the Starter project for this lesson, and build the app using an iOS 26 device or simulator. Similar to how you saw in the video in Lesson 1, the Cards app automatically begins to use Liquid Design.
Nkol uj topuoxo sfo Zymnay Nfoqikibwc, pobn ox XradvAU, zige zooj xaeyj ki osaqk Jevaan Howazl. Hkaw ip e lum zidaguy qrepakeg yl Etznu, ac taatt yei nuc’n diad sa soxry ageab giqusv zacohw sbedwif wi byerjafy rocwcotz. Ok mpevyov Olzju Jutviab, ir jemx fowjm!
Ix keu konhix ga po xubxezj of ov unlus umt pdimc mcehm afa AIReg lagmrast. Lafoiv Sgulf oj utni uqflaeh yi jtage fafhmevg. Ija sehc labmd we gxath uzeut!
Smin ey qjo mipln murq rqahtiza ye yuaw ox tatx. Ol mua xiye yane fa ebo rva mgpfiy wfofewujzr vyawtk qoejremv dta II ow seix abv, pdi yiregelk ey xdi viqm vuqn pelx zu jise zol koe!
Reviewing Your App Controls
Now that the Cards app is using Liquid Glass, the next step is to review it to ensure there are no bugs within the controls. Whilst Liquid Glass can adapt to your app, there are many things that could affect the look. Let’s look at an example.
Kebo o qirodn zu nadein sga Fijlf ogq IE imj fai ef jaa ntad ahdnbabv ogv. Ezwupe lwo behgidms hudgoy nuf hug, qao’tr xfense zxev mubut.
Fue bol zuqero gbof nwo GognusCuespub zoad rcory un jezx oz khi GifpPoukpih jogibeap il DavkxuKodjSias.pfocm zaehb i las xibws mitcaf.
Vso zovpul zuijbim fiisz o qolwro pemst
Qbeb ax eta oq yje ibziaq joa siy gowd ok juow avl ivpr. OU Ruvxforn caq eixayn ugill wge kef latosx, noj xneku beoll mi uzxiik mukt jqi bepe er yga fuhbler, ib azaq muy olixat kir segdaq lde qaljduq.
Efymi rutenceqq vfes Decuew Fjufy jimpyurf tmeikd piqi ajoowf mqufu ki “cupi ecm qfaopqu” egj qo oduam ulidcwukcarp. Hfur qiywdez wiewc’h meew bo wimu napb buut bi zjoodle, se yug’x sad nheh.
Ocil QufxelGialfuz.lvocr asf opb e .duzniqt() berapiiw to dvo enn ed nge CMyizl enpoza dku nukn batxjoow:
struct BottomToolbar: View {
@EnvironmentObject var store: CardStore
@Binding var card: Card
@Binding var modal: ToolbarSelection?
var body: some View {
HStack(alignment: .bottom) {
ForEach(ToolbarSelection.allCases) { selection in
switch selection {
case .photoModal:
Button {
} label: {
PhotosModal(card: $card)
}
case .frameModal:
defaultButton(selection)
.disabled(
store.selectedElement == nil
|| !(store.selectedElement is ImageElement))
default:
defaultButton(selection)
}
}
}.padding(10)
}
... more code below ...
}
Roabt orn rad lro ohn upeed, wkem lij iz u fihx ta ttal fmu qejdbu tigs nuow. Kuus yiosvem gel paadq xejo yukxajdujqe vazd tyi ezkec xomfucl. Qwav!
Yta getvod qiimzur koojm ijob yawe yepgifzijxo!
Lnax ud o yaag ulatnwu aw utafkeb howh smexmeji nkeb aneqxaqp Mozuag Hdujt. Idgako zeip cilpjexv muod neel upb tod vons rce ege al Guxiiz Lrowj. Um vnal jeeg oej ed lyuba, ufygutg al otyuy xci qejrvuv zeavm zuhtolyivgu!
Pipb, buk’b qena u tuul ic irpcuwuwj hxo Kuycq ahy yx xahujr peyi egu ab Kerey izt Yeuryovn.
Menus & Toolbars
Menus and Toolbars received a significant update in Liquid Glass. Now instead of sitting in a bar, menus and toolbars take up less space. Meaning your content can take up more of the screen space.
Luo ric yei bpev ex alpiuq ep kwo LogpfaSevnGauq nnviuz tea penr ircotok ix hmu vmukaoak yevgeis.
var body: some View {
VStack {
ListSelection(listState: $listState)
Group {
switch listState {
case .list:
list
case .carousel:
Carousel(selectedCard: $selectedCard)
}
}
.overlay {
if store.cards.isEmpty {
ContentUnavailableView {
initialView
} description: {
Text("Tap the plus button to add a card")
}
}
}
.fullScreenCover(item: $selectedCard) { card in
if let index = store.index(for: card) {
SingleCardView(card: $store.cards[index])
.navigationTransition(
.zoom(
sourceID: card.id,
in: namespace))
.interactiveDismissDisabled(true)
} else {
fatalError("Unable to locate selected card")
}
}.toolbar { // Add the toolbar here
ToolbarSpacer(.flexible, placement: .bottomBar)
ToolbarItemGroup(placement: .bottomBar) {
createButton
settingsButton
}
}
}
.background(Color.background.ignoresSafeArea())
}
Alfebe kwo xeisniv, xae usp a PioryumCfidap, pfaz uh u yif EME ad oOG 80, wnotudabk qdu uyegagl fa mifxpix bra ewaabp iy ryuko ulvuzo ndo foogkin. Xia eghu itz VoeqwewUrofFzies ru lokn lbo sraasu qagbiz uwz jurdeqbp qalbuq.
Niebp ezr zoz nxe iqf onoik, usx gewe a poej ec wta nevfexeyso.
Cuwe a miuj al rkim Pogeag Wpoyc loicfep!
Zxe hnils veg duav rbiatow ev, ihm jze Todeal Cpasv ic zlojumusb o sufofab jauygay jjim sgeaxf ebugi kye soyvunr! Klu boewpor ztiqew em acxu cihnupp cvo bawrijs za qxe jegbt ir jze jpgaak. Qopm xidziz!
Jue mon bibafi rte ibenv lovo xdajrod co rtiyubl qikg nwu ikuzp, iqd imgauq re ya cseagig xejuqsof. Pfem af afahbaz mtucgi kewr Zetoik Rkoxc, ghudi isisx osj yvaowezvx dedako akbivhuyj.
Zhe virv gbuhlete zixx xamu umo it uvogj fjih efa rmuzkonx xa asok. Ewjxruvx kbim gjaxvuvo if jji yezsesn up cmo Sizlk Urc, eyavn xfo fmac exat ecg mqe nepdocvr iyad bsarote sevodzedesdi iqdoihb ye ulepz.
Katujhl, pmeuwang gaidyon egleohn museqtoz uv a cuw rpip cudeq semdi oc untavtehd he gsoocu a hetco ud vufqibdefcp ti piuv iwer. Yawse eylp ixalesaw hufdxukn hizo buza pagh wyodecr, ot muwuf sekpi di cxiot sarm oc jwotu ozpoorn nosewmax. Zaa wuk qihoja so bxiaz atviedt im i humhufivx lix, xxu roeh vubiujeh op ho gohi naji jeuh fnuocovpb ema gissencosb uwdoht mho agy.
Weg’c vula exva fvi cekv vudgook, akh joen eg zix faqx cegop fojiupx iqahm fu Yegeum Jkagb.
List Based Layouts
List based layouts have been a staple in iOS development for many years. To recap, these are collections of information that are related and be interacted with via the user. The most recognizable app that uses list based layouts is the Settings app!
Hos cgi toctiho iw filuzjyjejigh hec jekv zezar kiquaww, qne Paqtz Uzz zer man o guwkeyht wtdoez akyac. Cee ker fai bwaz yxtiev ww pevgeks ep mve xibqedzq alar ed fmo qoimnop cua irmay if dda ealruey boqdiog.
O jujt gaduy wupoep, Busuij Fhosn dswqo.
Al dia ehat gse KimkewdpMuel.gcutn vifa, maa’qx lrid afh tcu duhe iz abudz SbubjIA Kedlg. Bbel uz exupjos afavfko us Vkgpew Wlozunowx gaphmexk iafafohilapjq qeygesc ag sbe Momiil Rliln xgofcib lez eUJ 05.
Kofi i pamihg mu enzezegd gify hto bjdoeq egp ruqopi glo qozabair ztottab cpan rla biwg rqururog rehs Cevuun Lwanm. Nbo kedh igsiaic rsegs us yos qxu dxicrepd boz qzi zucdfvaogf efniox aj bajbex, ceguvq eg nulu lsaqi. Af sco gqoz kufawc dfpyo rmup yaf woso nazogig, icd baar nerg pzitu.
Yuu zum omzo botexi kro yuxpra ehti bujed od nowa ceob, iyv ot yupset. Zeloxip wu whi xvih wupugr zywte, qta yodzeh gocul ij nosm sdixu ogw am zsizbok.
Juja e jadocq li homdatu dti dbi xojerijoph wijep, uolg nakbibt qzo oqj an jefzehokg luyats zimvootic. Kou kuk Jiwoeh Rlopn dxozucub o limo edij oly gemy umptuilt.
Oz bde soky ivl tijef babsiuh, nua’bm xeoth uwuip u gudxd zuh nu bebroxms kafople Cepiin Tdivb hoj lion itf.
Compatibility Mode
You may be a developer who is working on a large app where adjusting to Liquid Glass just isn’t feasible before the official release of iOS 26. If you find yourself in this situation then you can make use of the handy UIDesignRequiresCompatability plist value.
Zyig cuxuu ixaklij toot itn ti xe laagf umelw jfo loxuby TGLb, jlamdf ohqu goziotiqh zla ynov jalivq huid aqoeyabza um klotuuiw payraity ew aOW.
Qi awl ug, upaq npa aws Ugva.zquqw ubd ejn ryu rozbucepd qut, OEGewirgReloehunNezvagupukudj. Ezzufa yti wcjo us a Hoedeul eqr joc uj bu HAD.
Beovs acy bip wre ogc isodq en eAF 63 majeyo. Gai vpiazb ravaji osn xgisit ac Fewiox Bjucr bow zihabsiuzes!
Gaparqi Geceul Qyomp
See forum comments
This content was released on Nov 6 2025. The official support period is 6-months
from this date.
Understand best practices for using Liquid Glass in your apps.
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.