Ni-ship ko ang iOS app ng DIALØGUE ilang buwan na ang nakaraan bilang port ng web product. Tapos binuo ko ulit halos lahat ng iyon bilang native app.
Live na ito ngayon sa App Store — kung curious ka, sige, subukan mo. Ang natitira sa post na ito ay kung ano ang nagbago, at bakit.
Mukhang usapin lang ng salita ang difference hanggang sa hawakan mo ang dalawang version sa kamay mo. Ang una ay yung web app na pinaliit para magkasya sa phone: parehong tabs, parehong creation wizard, parehong dashboard. Nag-compile, nag-run, pumasa sa review ng Apple. Pero pakiramdam mo, website lang na nakasuot ng kostyum ng app.
Ang web app na pinaliit para sa phone ay web app pa rin. Hindi lang patong na pintura sa ibabaw ng web layout mo ang native — iba itong kontrata sa device. Iyong kontrata na iyon ang nilaktawan ko, at ang pagbuo ulit para igalang iyon ang nagbago sa tabs, sa audio, sa listening surface, sa offline behavior, at kung paano nagsi-start ang app. Ganito iyon talaga, screen per screen.
Dashboard pala yung port
Inakala ng unang version na ang trabaho ng app ay i-expose ang generator. Gumagawa ng AI podcasts ang DIALØGUE, kaya ganito ang naging isip: ilagay mo lahat ng web surface sa screen, tapos ka na.
Ang mapupunta sa iyo nun ay dashboard. Limang tab, isang multi-step wizard, panels para sa lahat. Walang nagbubukas ng podcast app para mag-operate ng dashboard. Binubuksan nila ito para gawing audio ang isang ideya, para makinig sa isang bagay na ginawa nila, o para simulan ulit ang isang show na napatakbo na nila dati. Pinrotektahan ng ported interface ang layout ng web app. Hindi nito pinrotektahan ang tatlong trabahong iyon.
Kaya ang rebuild ay nagsimula sa pinaka-unang bagay na nakikita mo.
Tatlong tab, kasi pinaparusahan ng phone ang tabs
Lima ang tab ng dating app pag-buksan: Library, Studio, Create, Credits, Profile. Iyan ang makukuha mo sa pag-port ng web app — bawat web surface, may karapatan sa isang tab.
Tatlo na lang ang tab ng binuo ulit na app: Listen, Create, You.
Dalawang tab ang hindi nakaligtas. Tumigil na maging destinasyon ang Credits — walang nagbubukas ng app para tumitig lang sa balance. Lumipat ito sa loob ng "You", at yung tanging sandali na talagang mahalaga — yung maubusan ka ng credit habang papagenerate ka na — ay nagpapalitaw na ngayon ng purchase sheet doon mismo. Tumigil na maging lugar ang Studio. Naging Series ito — isang naka-save na setup (hosts, tone, format, language, source pattern) na nakatira sa loob ng Create at lumalabas sa Listen bilang collection, sa halip na tab na nagkukunwaring control room. Naging mas simpleng "Listen" at "You" naman ang Library at Profile.
Sa desktop, libre ang dagdag na tab. Sa phone, buwis sa atensyon ang bawat tab. Binawasan ng rebuild ang buwis na iyon.
Audio sa paraang inaasahan ng iOS
Dito tumitigil na maging abstract ang "kontrata ang native".
Hindi naman audio-illiterate ang ported app. Lumalabas na ito sa lock screen na may play, pause, at skip, humihinto pag may tawag, at tumitigil pag hinugot mo ang headphones mo. Table stakes lang iyon, at nandoon naman.
Ang hindi nito kayang gawin ay kumilos na parang totoong audio app pag naka-lock na ang screen. Hindi mo ma-drag ang playhead mula sa lock screen. Walang cover art doon — text lang. Walang AirPlay button, walang sleep timer, at fixed sa labinlimang segundo ang skip kahit gusto mo o hindi.
Sinarado ng rebuild ang puwang na iyon kasama ang platform, hindi sa pag-iwas dito. May dynamic episode artwork na ngayon ang lock screen at scrubber na pwede mong i-drag sa kahit saang punto. May AirPlay, isang sleep timer na unti-unting hinihina ang volume sa halip na biglang putulin, at skip interval na pwede mong i-set mula sampu hanggang animnapung segundo — na siya namang gumagalaw sa mga lock-screen button, kasi dapat tugma ang system controls sa app. Idine-declare ng audio session ang sarili nito bilang spoken audio, kaya itine-treat ito ng OS na parang speech, hindi music.
Wala namang glamorous dito. Iyon mismo ang punto. Sa phone, ang audio na nag-i-ignore sa lock screen at AirPlay ay hindi "minimal". Sira ito sa mismong sandali kung kailan talaga nakikinig ang mga tao — habang naglalakad, nagmamaneho, nasa bulsa ang phone.
Isang transcript na ang AI podcast lang ang kayang bumuo
Heto ang parte na tunay na sa amin, hindi lang magandang iOS hygiene.
Habang tumutugtog ang isang episode, nagpapakita ang app ng synced transcript: nag-hi-highlight ang current line, naka-auto-scroll ang view para manatili itong nakasentro, at pwede mong i-tap ang kahit anong line para tumalon diretso sa sandaling iyon. Hindi talaga ito kayang gawin ng generic na podcast app, kasi hindi nito alam kung ano ang sinabi at kailan. Alam ng DIALØGUE — ito mismo ang nag-generate ng script, kaya alam na nito ang structure ng episode.
Ang honest na engineering detail ay tappable lang ang isang line kapag may exact per-segment timing ang audio. Pag approximate ang timing, lumalabas pa rin ang line, hindi lang ito seekable, at hindi nagkukunwari ang app na seekable. Ang parehong segment timing na iyon ang gumuguhit ng chapter ticks diretso sa scrubber, kaya kaya mong i-skim ang isang episode na parang audio pero may mapa ng ginawa ng system. Pinapakita pa ng transcript kung sinong host ang nagsabi ng aling line, kasi isinulat ang script bilang two-host dialogue.
Ito ang difference sa pagitan ng pagdikit ng transcript sa player at ng pag-treat sa generated script bilang source of truth para sa buong listening experience.
Dalawang bagay ang nagpapagana nun, at wala sa kanila ang lumalabas sa screen. Sini-stamp ng backend ang bawat segment ng start at end time nito at minamarkahan kung exact o estimated lang ang timing — kaya nahahayaan ng app na i-tap mo ang exactly-timed na line at tahimik na tumatanggi itong magpeke sa estimated na line. At naka-save sa server ang playback position mo, hindi lang sa device, kaya tuloy-tuloy ang "ituloy kung saan ka huminto" kahit sa web ka nag-umpisa ng episode at sa phone mo natapos.

Offline na kakayanin ang totoong commute
Kayang mag-download ng episodes ng app mula pa noong umpisa. Hindi ito bago, at gusto kong maging tama dito. Ang idinagdag ng rebuild ay resilience — ang difference sa pagitan ng download feature at offline na mapagkakatiwalaan mo.
Ang naputol na download ay nagre-resume na ngayon mula sa hininto nito sa halip na mag-umpisa ulit, kasi sinasave ng app ang resume data ng system per episode at nagsi-start ulit mula doon. May WiFi-only option na talagang nagbabawal ng cellular, kaya ang naka-queue na download ay naghihintay ng WiFi sa halip na tahimik na ubusin ang data plan mo. Tumatakbo ang downloads na hanggang tatlo lang sabay-sabay sa isang FIFO queue sa halip na umagaw sa network. May storage view para makita at maburá ang nasa device. At ang mga panandaliang fetch na nag-fail sa malabong connection ay nire-retry nang may backoff — tatlong attempt, kalahating segundo na lumalaki hanggang sa cap, hindi kailanman nire-retry ang cancellation ng user.
Madali ang mag-retry; ang mag-retry nang hindi nakikipag-away sa user na nag-cancel ang parteng nagpapasolid sa offline sa masamang subway connection, sa halip na umiikot lang ito.

Instant, kasi parang sira pag may spinner
Sa phone, pakiramdam ang latency, hindi numero. Ang spinner sa cold launch ay parang sumasabing "sira ang app na ito", kahit walang mali.
Nire-redownload ng ported app ang bawat cover image sa bawat cold launch, kaya nagbubukas ang library bilang pader ng mga spinner. Nagdagdag ang rebuild ng shared memory-and-disk cache para sa cover art — nakaligtas sa relaunch ang disk layer, pinapanatiling smooth ang scrolling ng memory layer, at ginagamit ulit ng lock screen ang parehong cache para sa artwork nito. Dati, naghihintay ng network round trip ang pag-reopen ng episode; ngayon naka-cache per episode ang segments at transcript at agad na nagre-render, tapos tahimik na nagre-refresh sa background. Inalis ko rin ang every-half-second playback tick sa list rows para tumigil ang timer sa pagpilit sa buong library na mag-redraw.
Hindi ito feature na ma-screenshot mo. Ito yung agwat sa pagitan ng app at ng website.
Pini-ping ka nito pag handa na ang episode
Minuto ang inaabot ng pag-generate ng podcast, hindi segundo — may research, outline, script, tapos audio. Pinapanood ka ng ported app sa progress bar habang buong oras. Hindi ganoon ang native app.
Sa permission mo, nagpapadala ito ng push notification sa mismong sandaling handa na ang episode mo, kaya pwede mong i-lock ang phone, gumawa ng ibang bagay, at bumalik pag nag-buzz ito. Naka-store sa server-side ang device token, ang notification job lang ang makakabasa nito, at pwede mong patayin ang lahat ng iyon sa settings. Maliit na piraso lang ito ng plumbing — isang table, isang worker, ang push service ng Apple — pero binabago nito ang felt shape ng product mula sa "maghintay ka sa screen na ito" tungo sa "sasabihin ko sa iyo pag tapos na".
Pwedeng magsimula ang workflow mula sa labas ng app
Hindi lang nabubuhay sa loob ng sariling window ang native app. Nagdagdag ang rebuild ng Siri at Shortcuts support sa pamamagitan ng App Intents, kaya gumagana ang "create a podcast", "resume listening", at "open my podcasts" bilang sinasalitang phrases, sa Shortcuts app, at sa Spotlight — walang kailangang special entitlements. Ang desisyon kung ano ang dapat gawin ng "resume" (ituloy ang current episode, o buksan ang library kung walang naka-load) ay isang maliit na pure function na kaya kong i-unit-test nang mag-isa, na siyang klase ng bagay na pumipigil sa Siri behavior na mag-drift.
May restrained ding tatlong-pahinang welcome sa first run — create, voices, listen anywhere — ipinapakita minsan lang, at deep links para ang na-tap na link ay magbukas ng tamang screen sa halip na ihulog ka sa home tab. Maliliit na bagay. Iyon ang difference sa pagitan ng app na nakaupo lang sa phone at ng app na pag-aari ng phone.
Isang salita kung saan ako tumigil: wala pang home-screen widgets, walang Live Activities, at wala pang CarPlay — kailangan ng bawat isa ng sariling extension o ng entitlement na ibinibigay ng Apple, at pinili kong i-ship muna ang core ng pakikinig. Direksyon ang "native" dito, hindi tapos nang checklist.
Ang aral na dala ko mula dito
Kung nagpo-port ka ng isang bagay sa bagong platform, ang nakakatuksong gawin ay patakbuhin ito doon at sabihing tapos na. Tatakbo nga. Pero magiging parang hiram din ang pakiramdam.
Kontrata sa device ang native: igalang ang lock screen, ang pagbabago ng audio route, ang realidad ng offline, ang system surfaces na ginagamit na ng mga tao. Iginagalang ng port ang lumang layout mo. Iginagalang ng native app ang conventions ng platform, kahit ibig sabihin nun ay magbura ng tabs at muling magsulat ng mga screen na na-ship mo na.
Wala akong dramatic na install o retention numbers na maipagmamalaki — live ang current version sa App Store, at iyon ang honest na estado nito. Hindi kailanman ang totoong test kung mukhang native ang screenshots. Kundi kung may taong gagawa ng episode, makikinig dito habang naglalakad na naka-lock ang phone, at babalik para gumawa ng isa pa.
Kung nag-bu-build ka para sa mobile, curious ako kung saan mo iginuguhit ang linya: kailan sapat na ang "tumatakbo ito sa phone", at kailan ka pinipilit ng kontrata ng platform na bumuo ulit?
Mga Madalas Itanong
Ano ang nagbago sa rebuild ng iOS app ng DIALØGUE?
Lumipat ang app mula sa port ng web product tungo sa native na rebuild. Bumaba ang information architecture mula limang tab tungo sa tatlo (Listen, Create, You). Nagkaroon ang listening experience ng synced tap-to-seek transcript, chapter markers, lock-screen scrubbing at artwork, AirPlay, sleep timer, at configurable na skip intervals. Naging matibay ang offline downloads, nagke-cache ang app ng cover art at segments para sa instant na pakiramdam, hinahayaan ng Siri/Shortcuts na magsimula ang core actions mula sa labas ng app, at may push notification na nagsasabi pag handa na ang episode.
Bakit naging tatlo ang limang tab?
Kasi pinaparusahan ng phone ang bawat dagdag na tab. Hindi lugar na gustong puntahan ng kahit sino ang Credits, kaya tinupi ito sa "You" kasama ang purchase sheet na lumalabas pag talagang naubusan ka ng credit. Naging Series ang Studio — isang naka-save na setup sa loob ng Create sa halip na sariling tab. Naging mas simpleng "Listen" at "You" ang Library at Profile.
Anong native iOS features ang idinagdag ng rebuild?
Lock-screen scrubbing at dynamic artwork, AirPlay, sleep timer na may volume fade, configurable na skip intervals (10–60s) na gumagalaw din sa lock-screen controls, chapter ticks sa scrubber, synced tap-to-seek transcript, matibay na offline downloads (resume, WiFi-only, storage management, naka-cap na queue), shared na cover-art at segment caches para sa instant rendering, Siri/Shortcuts intents, "episode ready" push notifications, server-side playback position na tuloy-tuloy sa web at phone, deep links, at first-run onboarding.
Gumagana ba ang synced transcript para sa kahit anong episode?
Tappable para mag-seek ang isang transcript line kapag may exact per-segment timing lang ang audio. Pag approximate ang timing, lumalabas pa rin ang line pero hindi seekable, at hindi nagkukunwari ang app. Posible ang transcript kasi ang DIALØGUE mismo ang nag-generate ng script, kaya alam nito ang structure at kung sino ang nagsabi ng ano.
Ano ang difference ng Studio at Series?
Nagpapahiwatig ang Studio ng control room na puno ng knobs. Naka-save na setup lang ang Series — hosts, tone, format, language, at source pattern — na nagpapahintulot sa iyong simulan ang susunod na episode nang hindi kinukonfigura ulit ang lahat. Preset ito sa loob ng Create, hindi standalone na tab.
Paano ito naiiba sa audio overviews ng NotebookLM?
Tunay na kapaki-pakinabang, at libre, ang NotebookLM para gawing mabilis na audio overview ang mga source mo. Sinusubukan ng DIALØGUE na maging buong native listening product sa ibabaw ng generation: outline at script review bago ang anumang audio, voice selection, synced tap-to-seek transcript, chapters, lock-screen at AirPlay controls, offline downloads, Siri, at Series para sa paulit-ulit na shows. Ang honest na difference ay hindi gaanong "sino ang mas magaling mag-generate ng audio" kundi mas malamang "ano ang nangyayari sa episode pagkatapos itong umiral".
Nagdagdag ba ang rebuild ng offline listening?
May offline downloads na noon pa. Ginawa itong matibay ng rebuild: nagre-resume ang naputol na downloads sa halip na mag-restart, may WiFi-only option at storage view, tumatakbo ang downloads na hanggang tatlo lang sabay-sabay, at nire-retry nang may backoff ang panandaliang network failures nang hindi nakikipag-away sa user na nag-cancel.
Iyon lang muna mula sa akin.
Maraming salamat, Chandler
