Time-to-Interactive sa pag-develop ng mobile: ano ito, sukatan at pagsukat

May-akda: IT Sectr Nai-publish: 2026-03-31 Oras ng pagbabasa: 9 min

Ang Time-to-Interactive (TTI) ay isang sukatan ng pagganap na sumusukat sa oras mula sa simula ng pag-load ng pahina hanggang sa sandaling ang pangunahing nilalaman nito ay naging interaktibo. Sa mga mobile application, ang TTI ay itinuturing na isa sa mga pangunahing tagapagpahiwatig ng UX, dahil ang gumagamit ay hindi maaaring makipag-ugnayan sa interface hangga't hindi kumpleto ang pagsisimula ng UI. Ayon sa datos ng Google Web Dev, 2025, ang TTI ay dapat na mas mababa sa 3.8 segundo para sa magandang karanasan ng gumagamit sa mga mobile device.

Mga pangunahing punto

  • Time-to-Interactive — ang oras pagkatapos kung saan ang gumagamit ay maaaring makipag-ugnayan sa interface.
  • TTI ay sinusukat mula sa unang kahilingan hanggang sa sandaling ang pangunahing thread ay libre sa loob ng 5 segundo.
  • Para sa web, ang TTI ay kinakalkula batay sa First Contentful Paint at mahabang gawain.
  • Sa mga mobile app, ang TTI ay may kasamang pagsisimula ng SDK, pag-load ng mga configuration at pag-render ng UI.
  • Ang pag-optimize ng TTI ay nagpapabuti ng mga tagapagpahiwatig ng pakikipag-ugnayan at conversion ng 15–30%.

Ano ang Time-to-Interactive

Time-to-Interactive ay isang sukatan ng pagganap na nagtatala ng sandali kung kailan ang pahina o application ay handa na para sa buong pakikipag-ugnayan sa gumagamit. Sa konteksto ng web, ang TTI ay tinukoy bilang oras mula sa simula ng nabigasyon hanggang sa sandaling matugunan ang tatlong kondisyon: ang pahina ay nagpakita ng kapaki-pakinabang na nilalaman (First Contentful Paint), ang pangunahing thread ay libre nang hindi bababa sa 5 segundo at lahat ng tagapakinig ng kaganapan ay naitala. Sa mga mobile app, ang TTI ay ang oras mula sa paglunsad ng Activity hanggang sa kumpletong pagsisimula ng UI, kapag ang lahat ng estado ay na-load, ang mga animation ay na-configure at ang gumagamit ay maaaring mag-click sa anumang pindutan nang walang pagkaantala.

Ang sukatan ay lalong mahalaga para sa mga app kung saan ang unang pakikipag-ugnayan ay kritikal — mga screen ng pag-login, paghahanap, pag-order. Kung ang TTI ay lumampas sa 5 segundo, ang gumagamit ay nakikita ang app bilang “nagyelo” at maaaring isara ito. Ayon sa datos ng Google (Web Vitals Report, 2025), ang mga pahina na may TTI na mas mababa sa 3.8 segundo ay nagpapakita ng 24% na mas maraming conversion kaysa sa mga pahina na may TTI na higit sa 7 segundo. Ang pagkakaiba ay nararamdaman kahit sa 500 ms — ang mga pananaliksik ng Amazon ay nagpapakita ng 1% na pagkawala ng kita para sa bawat 100 ms ng pagkaantala.

Paano kinakalkula ang TTI

Ang algorithm para sa pagkalkula ng TTI ay tinukoy sa W3C specification at ipinatupad sa tool na Lighthouse. Ang pagkalkula ay nagsisimula sa First Contentful Paint (FCP) — ang sandali kung kailan na-render ng browser ang unang pixel ng nilalaman. Pagkatapos, ang algorithm ay naghahanap ng “window ng katahimikan” — isang agwat ng oras na 5 segundo kung saan walang mga gawain na mas mahaba sa 50 ms sa pangunahing thread. Ang TTI ay naitala sa huling gawain bago ang window na ito. Kung ang window ng katahimikan ay hindi natagpuan sa loob ng 15 segundo, ang TTI ay itinuturing na katumbas ng oras ng huling mahabang gawain. Ginagarantiyahan ng algorithm na ito na ang TTI ay sumasalamin sa tunay na kahandaan para sa pakikipag-ugnayan, hindi lamang sa sandali ng pag-render.

Sa mga mobile app (Android/iOS) walang eksaktong katulad ng W3C specification, ngunit pareho ang konsepto. Ang TTI ay maaaring masukat sa pamamagitan ng pagtatala ng timestamp sa onResume (simula ng paglunsad) at sa callback ng unang frame kapag ang lahat ng asynchronous na operasyon ay natapos na. Ang Firebase Performance library ay nagbibigay-daan sa pagtukoy ng custom na trace na may simula at pagtatapos ng interactive na session ng gumagamit. Halimbawa, startTrace(”tti”) sa Application.onCreate at stopTrace() pagkatapos makumpleto ang pagsisimula ng lahat ng SDK at pag-render ng unang frame.

Halimbawa ng custom na trace para sa TTI

Ang code sa Kotlin ay nagpapakita ng pagsukat ng TTI sa pamamagitan ng Firebase Performance. Ang trace ay nagsisimula sa Application.onCreate at humihinto pagkatapos ng unang reportFullyDrawn.

kotlin
class App : Application() {

    private var ttiTrace: Trace? = null

    override fun onCreate() {
        super.onCreate()
        ttiTrace = Firebase.performance
            .newTrace("tti")
        ttiTrace?.start()
    }

    fun stopTtiTrace() {
        ttiTrace?.stop()
        ttiTrace = null
    }
}

TTI, FCP, LCP at FID: mga pagkakaiba

Sa ecosystem ng Core Web Vitals mayroong ilang mga sukatan at ang TTI ay madalas na napagkakamalang First Contentful Paint (FCP) at Largest Contentful Paint (LCP). Ang FCP ay ang oras ng pag-render ng unang pixel ng nilalaman, na hindi ginagarantiyahan ang interaktibidad. Ang LCP ay ang oras ng pag-render ng pinakamalaking elemento ng nilalaman (imahe, bloke ng teksto). Ang TTI naman ay sumusukat hindi sa pag-render, kundi sa kahandaan para sa pakikipag-ugnayan. Ang pagkakaiba ay kritikal: ang FCP ay maaaring 1.2 segundo, ngunit kung ang pangunahing thread ay hinarang ng pag-load ng JS bundle, ang TTI ay maaaring umabot ng 8 segundo.

First Input Delay (FID) ay sumusukat sa pagkaantala sa pagitan ng unang aksyon ng gumagamit at sandali kung kailan nagsimulang iproseso ng browser ang kaganapan. Ang FID ay ang “kalidad ng interaktibidad”, habang ang TTI ay ang “oras hanggang sa interaktibidad”. Kung ipinapakita ng TTI kung ilang segundo ang interface ay naging responsive, ipinapakita ng FID kung gaano ito naging responsive. Ang magandang TTI na walang magandang FID ay imposible, dahil kung ang pangunahing thread ay hinarang, ang TTI ay magiging mataas at ang FID — bawat pakikipag-ugnayan ay maaantala. Sa mga mobile app, ang katulad ng FID ay Touch Latency — ang pagkaantala sa pagitan ng pagpindot sa screen at reaksyon ng UI.

SukatanAno ang sinusukatHalaga ng targetPlatform
FCPUnang pixel ng nilalaman< 1.8 sWeb
LCPPinakamalaking elemento< 2.5 sWeb
TTIKahandaan para sa pakikipag-ugnayan< 3.8 sWeb + native
FIDPagkaantala ng unang input< 100 msWeb

TTI sa mga mobile app

Sa mga native mobile app, ang konsepto ng TTI ay hindi gaanong naka-standardize tulad ng sa web, ngunit ang kahalagahan nito ay hindi mas mababa. Sa Android, ang TTI ay ang oras mula sa pag-click sa icon ng app hanggang sa sandali kung kailan ang UI ay ganap na interaktibo: ang RecyclerView ay nag-scroll, ang mga pindutan ay tumutugon sa pagpindot, ang mga animation ay gumagana nang walang sagabal. Para sa pagsukat ng TTI sa Android, ginagamit ang kumbinasyon ng reportFullyDrawn (API 29+) at FrameMetricsAggregator. Ang reportFullyDrawn ay isang tawag na ginagawa ng app sa sandali kung kailan itinuturing ng developer na handa na ang UI. Itinatala ng system ang sandaling ito at isinasama ito sa ulat ng Android Vitals.

Sa iOS, ang katulad ng TTI ay ang mga sukatan na Time to First Frame at Time to Responsive. Ang MetricKit ay nangongolekta ng datos ng oras ng paglunsad na hinati sa mga yugto — pag-load ng executable file, pagsisimula ng mga framework, pag-render ng unang frame. Inirerekomenda ng Apple na ang Time to First Frame ay hindi lalampas sa 400 ms at ang buong interaktibidad ay makamit sa loob ng 2 segundo. Kung ang app ay nagpapakita ng placeholder screen at pagkatapos ay nag-load ng nilalaman, ang TTI ay kinakalkula hindi batay sa unang frame, kundi batay sa sandali kung kailan ang aktwal na nilalaman ay handa para sa pakikipag-ugnayan.

Pagsukat ng TTI sa Android sa pamamagitan ng FrameMetrics

Ang code sa Kotlin ay sumusubaybay sa unang interaktibong frame gamit ang FrameMetricsAggregator. Ang callback ay naa-activate pagkatapos makumpleto ang unang frame na sinimulan ng gumagamit.

kotlin
class TtiTracker(private val activity: Activity) {

    private val metrics = FrameMetricsAggregator()
    private var startTime = 0L

    fun onStart() {
        startTime = System.nanoTime()
        metrics.add(activity.window)
    }

    fun onFirstFrame() {
        val ttiMs = (System.nanoTime() - startTime) / 1_000_000
        Log.d("TTI", "Oras hanggang sa interaktibidad: $ttiMs ms")
        metrics.reset()
    }
}

Mga paraan ng pag-optimize ng TTI

Ang pag-optimize ng TTI ay may kasamang tatlong direksyon: pagbawas ng dami ng trabaho sa pangunahing thread, pagkaantala ng pag-load ng mga hindi kritikal na bahagi, at progresibong pag-render. Ang unang direksyon — pag-minimize ng mga synchronous na operasyon: pagpapalit ng SharedPreferences ng DataStore, paglipat ng pagsisimula ng SDK sa background thread, lazy loading ng Dagger/Hilt modules. Ang pangalawa — pagkaantala ng pag-load: mga screen na hindi nakikita sa pagsisimula (bottom sheets, dialog, tab) ay dapat na simulan pagkatapos ng unang frame. Ang pangatlo — progresibong pag-render: unang magpakita ng skeleton screen, pagkatapos ay unti-unting mag-load ng nilalaman.

Sa Android, ang epektibong paraan ay ang paggamit ng App Startup library na may pagraranggo ng mga initializer. Halimbawa, ang initializer ng Firebase Analytics ay maaaring gawing opsyonal at ang pagpapatupad nito ay maaaring maantala ng 2 segundo pagkatapos ng pagsisimula. Sa iOS, ang katulad ay Initialization Dependencies na may bandila na lazy. Para sa web, ang mga pangunahing pamamaraan ay code splitting (paghahati ng bundle), tree shaking (pag-alis ng patay na code), preload/preconnect para sa mga kritikal na mapagkukunan at defer para sa hindi humaharang na JS. Ang Google Lighthouse ay nagbibigay ng mga tiyak na rekomendasyon: “Eliminate render-blocking resources” at “Defer offscreen images” ay direktang nakakaapekto sa TTI.

Code splitting sa React Native

Halimbawa ng paghahati ng bundle sa React Native gamit ang React.lazy at Suspense. Ang component na HeavyScreen ay naglo-load lamang kapag ang gumagamit ay nag-navigate sa screen na ito, na nagpapababa ng TTI ng paunang screen.

js
import React, { lazy, Suspense } from 'react';

const HeavyScreen = lazy(() =>
    import('./screens/HeavyScreen')
);

const App = () => (
    <Suspense fallback={<Loading />}>
        <HeavyScreen />
    </Suspense>
);

Mga kasangkapan sa pagsukat ng TTI

Para sa pagsukat ng TTI mayroong ilang mga kasangkapan na nagkakaiba ayon sa platform at lalim ng pagsusuri. Sa web, ang pangunahing kasangkapan ay Lighthouse sa Chrome DevTools. Ang Lighthouse ay nagpapatakbo ng pag-audit at nagpapakita ng TTI sa millisecond, pati na rin nagbibigay ng mga tiyak na rekomendasyon para sa pagpapabuti. Para sa patuloy na pagsubaybay, ginagamit ang PageSpeed Insights (Google) — nangongolekta ito ng datos mula sa Chrome User Experience Report (CrUX) mula sa mga totoong gumagamit. Sa mga native app, ang TTI ay sinusukat sa pamamagitan ng Android Vitals (Google Play Console) at MetricKit (Apple).

Para sa pagsubaybay sa produksyon, ang Firebase Performance Monitoring (custom traces), Datadog RUM (Real User Monitoring) at Sentry Performance ay popular. Ang mga kasangkapang ito ay hindi lamang nagpapakita ng TTI, kundi nagbibigay-daan din sa pagsubaybay ng ugnayan sa pagitan ng TTI at mga sukatan ng negosyo — conversion, churn, tagal ng session. Inirerekomenda na magtakda ng mga halaga ng threshold: < 3.8 s — mabuti, 3.8–7 s — nangangailangan ng pagpapabuti, > 7 s — kritikal. Para sa mga native app, ang mga threshold ay mas mahigpit: < 2 s — mabuti, 2–5 s — katamtaman, > 5 s — kritikal, dahil ang mga gumagamit ng mobile app ay hindi gaanong mapagparaya sa mga pagkaantala.

Configuration ng Lighthouse CI

Halimbawa ng configuration ng Lighthouse CI para sa awtomatikong pagsusuri ng TTI sa pipeline ng CI/CD. Kapag lumampas sa threshold na 3.8 segundo, ang build ay minarkahan ng babala.

js
// lighthouserc.js
module.exports = {
    ci: {
        assert: {
            assertions: {
                'interactive': ['warn', {
                    maxNumericValue: 3800
                }],
                'first-contentful-paint': ['error', {
                    maxNumericValue: 1800
                }]
            }
        },
        collect: {
            startServerCommand: 'npm start',
            url: ['http://localhost:3000'],
            numberOfRuns: 3
        }
    }
};

Mga madalas na itanong

Ano ang pagkakaiba ng TTI at FCP?

FCP (First Contentful Paint) ay nagtatala ng sandali ng pag-render ng unang pixel ng nilalaman. TTI — ang sandali kung kailan ang UI ay handa para sa pakikipag-ugnayan. Sa pagitan ng mga ito ay maaaring may 3–5 segundong pagkakaiba kung ang pangunahing thread ay hinarang.

Anong TTI ang itinuturing na mabuti?

Para sa web, ang target na halaga ng TTI ay mas mababa sa 3.8 segundo. Para sa mga native mobile app, ang threshold ay mas mahigpit — mas mababa sa 2 segundo. Ang mga halaga sa itaas ng 7 segundo ay nangangailangan ng agarang pag-optimize.

Paano sukatin ang TTI sa Android?

Sa Android, gamitin ang reportFullyDrawn (API 29+) kasama ng FrameMetricsAggregator. Para sa pagsubaybay sa produksyon, ikonekta ang Firebase Performance na may custom na trace ”tti”.

Nakakaapekto ba ang TTI sa SEO?

Oo, ang TTI ay hindi direktang nakakaapekto sa SEO sa pamamagitan ng Core Web Vitals. Ginagamit ng Google ang LCP, FID at CLS bilang direktang mga factor ng pagraranggo, ngunit ang TTI ay may ugnayan sa kanila at nakakaapekto sa mga sukatan ng pag-uugali (oras sa pahina, bounce rate).

Anong mga kasangkapan ang awtomatikong sumusukat ng TTI?

Lighthouse, PageSpeed Insights, WebPageTest — para sa web. Firebase Performance, Android Vitals, MetricKit — para sa mga native app.

Buod

  • Time-to-Interactive — sukatan ng kahandaan ng UI para sa pakikipag-ugnayan sa gumagamit.
  • Ang TTI ay kinakalkula batay sa FCP at paghahanap ng 5-segundong window na walang mahabang gawain sa pangunahing thread.
  • Target na halaga ng TTI — mas mababa sa 3.8 segundo para sa web at mas mababa sa 2 segundo para sa mga native app.
  • Mga pangunahing paraan ng pag-optimize — code splitting, pagkaantala ng pag-load ng SDK, lazy initialization.
  • Lighthouse at Firebase Performance — mga pangunahing kasangkapan para sa pagsukat at pagsubaybay.
  • Ang mataas na TTI ay direktang nauugnay sa pagkawala ng mga gumagamit at pagbaba ng conversion.
  • Ang progresibong pag-render at mga skeleton screen ay nagbabawas ng naramdamang TTI, kahit na ang aktwal na oras ay hindi nagbago.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din