Time-to-Interactive (TTI) एक प्रदर्शन मीट्रिक है जो पेज लोड की शुरुआत से लेकर उस क्षण तक के समय को मापता है जब इसकी मुख्य सामग्री इंटरैक्टिव हो जाती है। मोबाइल एप्लिकेशन में, TTI को UX के प्रमुख संकेतकों में से एक माना जाता है, क्योंकि उपयोगकर्ता UI इनिशियलाइज़ेशन पूरा होने तक इंटरफ़ेस के साथ इंटरैक्ट नहीं कर सकता। Google Web Dev, 2025 के अनुसार, मोबाइल उपकरणों पर अच्छे उपयोगकर्ता अनुभव के लिए TTI 3.8 सेकंड से कम होना चाहिए।
मुख्य बिंदु
Time-to-Interactive एक प्रदर्शन मीट्रिक है जो उस क्षण को दर्शाता है जब कोई पेज या एप्लिकेशन उपयोगकर्ता के पूर्ण इंटरैक्शन के लिए तैयार होता है। वेब संदर्भ में, TTI को नेविगेशन की शुरुआत से उस क्षण तक के समय के रूप में परिभाषित किया जाता है जब तीन शर्तें पूरी होती हैं: पेज ने उपयोगी सामग्री प्रदर्शित की है (First Contentful Paint), मुख्य थ्रेड कम से कम 5 सेकंड के लिए निष्क्रिय रहा है, और सभी ईवेंट लिसनर पंजीकृत हैं। मोबाइल एप्लिकेशन में, TTI एक्टिविटी लॉन्च से लेकर पूर्ण UI इनिशियलाइज़ेशन तक का समय है, जब सभी स्थितियाँ लोड हो जाती हैं, एनिमेशन कॉन्फ़िगर हो जाते हैं, और उपयोगकर्ता बिना देरी के किसी भी बटन पर टैप कर सकता है।
यह मीट्रिक विशेष रूप से उन एप्लिकेशन के लिए महत्वपूर्ण है जहाँ पहला इंटरैक्शन महत्वपूर्ण है — लॉगिन स्क्रीन, खोज, चेकआउट। यदि TTI 5 सेकंड से अधिक हो जाता है, तो उपयोगकर्ता ऐप को “फ़्रीज़” मानता है और इसे बंद कर सकता है। Google (Web Vitals Report, 2025) के अनुसार, 3.8 सेकंड से कम TTI वाले पेज, 7 सेकंड से अधिक TTI वाले पेजों की तुलना में 24% अधिक रूपांतरण दिखाते हैं। अंतर 500 ms पर भी महसूस होता है — Amazon के शोध से पता चलता है कि प्रत्येक 100 ms देरी के लिए 1% राजस्व हानि होती है।
TTI गणना एल्गोरिदम W3C विनिर्देश में परिभाषित है और Lighthouse में लागू किया गया है। गणना First Contentful Paint (FCP) से शुरू होती है — वह क्षण जब ब्राउज़र सामग्री का पहला पिक्सेल रेंडर करता है। फिर एल्गोरिदम एक “शांत विंडो” की तलाश करता है — 5 सेकंड की अवधि जिसके दौरान मुख्य थ्रेड पर कोई भी कार्य 50 ms से अधिक न हो। TTI इस विंडो से पहले अंतिम कार्य पर सेट किया जाता है। यदि 15 सेकंड के भीतर कोई शांत विंडो नहीं मिलती है, तो TTI अंतिम लंबे कार्य के समय के बराबर सेट किया जाता है। यह एल्गोरिदम सुनिश्चित करता है कि TTI केवल रेंडरिंग क्षण के बजाय इंटरैक्शन के लिए वास्तविक तत्परता को दर्शाता है।
मोबाइल एप्लिकेशन (Android/iOS) में, W3C विनिर्देश का कोई सटीक समकक्ष नहीं है, लेकिन अवधारणा समान है। TTI को onResume (लॉन्च शुरू) और पहले फ्रेम के कॉलबैक में टाइमस्टैम्प कैप्चर करके मापा जा सकता है जब सभी एसिंक ऑपरेशन पूरे हो जाते हैं। Firebase Performance आपको उपयोगकर्ता इंटरैक्टिव सत्र की शुरुआत और अंत के साथ कस्टम ट्रेस सेट करने की अनुमति देता है। उदाहरण के लिए, Application.onCreate में startTrace(“TTI”) और सभी SDK के इनिशियलाइज़ होने और पहले फ्रेम के रेंडर होने के बाद stopTrace()।
Kotlin कोड Firebase Performance के माध्यम से TTI मापन प्रदर्शित करता है। ट्रेस Application.onCreate में शुरू होता है और पहले reportFullyDrawn के बाद रुकता है।
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
}
}
Core Web Vitals इकोसिस्टम में कई मीट्रिक हैं, और TTI को अक्सर First Contentful Paint (FCP) और Largest Contentful Paint (LCP) के साथ भ्रमित किया जाता है। FCP सामग्री के पहले पिक्सेल के रेंडरिंग का समय है, जो इंटरैक्टिविटी की गारंटी नहीं देता। LCP सबसे बड़े सामग्री तत्व (छवि, टेक्स्ट ब्लॉक) का रेंडरिंग समय है। TTI, हालांकि, रेंडरिंग नहीं बल्कि इंटरैक्शन के लिए तत्परता को मापता है। अंतर महत्वपूर्ण है: FCP 1.2 सेकंड हो सकता है, लेकिन यदि मुख्य थ्रेड JS बंडल लोडिंग द्वारा अवरुद्ध है, तो TTI 8 सेकंड तक पहुँच सकता है।
First Input Delay (FID) उपयोगकर्ता की पहली कार्रवाई और ब्राउज़र द्वारा ईवेंट प्रोसेसिंग शुरू करने के क्षण के बीच देरी को मापता है। FID “इंटरैक्टिविटी गुणवत्ता” है, जबकि TTI “इंटरैक्टिविटी तक का समय” है। यदि TTI दिखाता है कि इंटरफ़ेस कितने सेकंड में प्रतिक्रियाशील होगा, तो FID दिखाता है कि यह कितना प्रतिक्रियाशील था। अच्छा TTI अच्छे FID के बिना असंभव है, क्योंकि यदि मुख्य थ्रेड अवरुद्ध है, तो TTI अधिक होगा और FID किसी भी इंटरैक्शन में देरी करेगा। मोबाइल एप्लिकेशन में, FID का समकक्ष Touch Latency है — स्क्रीन को छूने और UI प्रतिक्रिया के बीच की देरी।
| मीट्रिक | क्या मापता है | लक्ष्य मान | प्लेटफ़ॉर्म |
|---|---|---|---|
| FCP | सामग्री का पहला पिक्सेल | < 1.8 से | वेब |
| LCP | सबसे बड़ा तत्व | < 2.5 से | वेब |
| TTI | इंटरैक्शन के लिए तत्परता | < 3.8 से | वेब + मूल |
| FID | पहले इनपुट की देरी | < 100 ms | वेब |
मूल मोबाइल एप्लिकेशन में, TTI की अवधारणा वेब की तरह मानकीकृत नहीं है, लेकिन इसका महत्व कम नहीं है। Android में, TTI ऐप आइकन टैप करने से लेकर उस क्षण तक का समय है जब UI पूरी तरह से इंटरैक्टिव हो: RecyclerView स्क्रॉल करता है, बटन टैप पर प्रतिक्रिया करते हैं, एनिमेशन सुचारू रूप से चलते हैं। Android में TTI मापने के लिए, reportFullyDrawn (API 29+) और FrameMetricsAggregator के संयोजन का उपयोग किया जाता है। reportFullyDrawn एक कॉल है जो ऐप तब करता है जब डेवलपर UI को तैयार मानता है। सिस्टम इस क्षण को कैप्चर करता है और इसे Android Vitals रिपोर्ट में शामिल करता है।
iOS में, TTI के समकक्ष Time to First Frame और Time to Responsive हैं। MetricKit लॉन्च समय डेटा को चरणों में विभाजित करके एकत्र करता है — निष्पादन योग्य लोडिंग, फ्रेमवर्क इनिशियलाइज़ेशन, पहले फ्रेम का रेंडरिंग। Apple अनुशंसा करता है कि Time to First Frame 400 ms से अधिक न हो, और पूर्ण इंटरैक्टिविटी 2 सेकंड के भीतर प्राप्त की जाए। यदि ऐप प्लेसहोल्डर स्क्रीन दिखाता है और फिर सामग्री लोड करता है, तो TTI की गणना पहले फ्रेम से नहीं बल्कि उस क्षण से की जाती है जब वास्तविक सामग्री इंटरैक्शन के लिए तैयार होती है।
Kotlin कोड FrameMetricsAggregator का उपयोग करके पहले इंटरैक्टिव फ्रेम को ट्रैक करता है। उपयोगकर्ता द्वारा शुरू किया गया पहला फ्रेम पूरा होने पर कॉलबैक सक्रिय होता है।
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", "इंटरैक्टिव होने का समय: $ttiMs ms")
metrics.reset()
}
}
TTI का अनुकूलन तीन दिशाओं में शामिल है: मुख्य थ्रेड पर कार्यभार कम करना, गैर-महत्वपूर्ण घटकों की विलंबित लोडिंग, और प्रगतिशील रेंडरिंग। पहली दिशा सिंक्रोनस संचालन को कम करना है: SharedPreferences को DataStore से बदलना, SDK इनिशियलाइज़ेशन को बैकग्राउंड थ्रेड में ले जाना, Dagger/Hilt मॉड्यूल की आलसी लोडिंग। दूसरी विलंबित लोडिंग है: स्टार्टअप पर दिखाई न देने वाली स्क्रीन (बॉटम शीट, डायलॉग, टैब) को पहले फ्रेम के बाद इनिशियलाइज़ किया जाना चाहिए। तीसरी प्रगतिशील रेंडरिंग है: पहले कंकाल स्क्रीन दिखाएँ, फिर सामग्री को भागों में लोड करें।
Android में, एक प्रभावी तरीका रैंक किए गए इनिशियलाइज़र के साथ App Startup लाइब्रेरी का उपयोग करना है। उदाहरण के लिए, Firebase Analytics इनिशियलाइज़र को वैकल्पिक बनाया जा सकता है और स्टार्टअप के बाद 2 सेकंड के लिए विलंबित किया जा सकता है। iOS में, समकक्ष lazy फ़्लैग के साथ Initialization Dependencies है। वेब के लिए, प्रमुख विधियाँ कोड स्प्लिटिंग, ट्री शेकिंग, महत्वपूर्ण संसाधनों के लिए प्रीलोड/प्रीकनेक्ट और गैर-अवरुद्ध JS के लिए defer हैं। Google Lighthouse विशिष्ट अनुशंसाएँ देता है: “Eliminate render-blocking resources” और “Defer offscreen images” सीधे TTI को प्रभावित करते हैं।
React Native में React.lazy और Suspense का उपयोग करके बंडल विभाजन का उदाहरण। HeavyScreen घटक केवल तब लोड होता है जब उपयोगकर्ता उस स्क्रीन पर नेविगेट करता है, जिससे प्रारंभिक स्क्रीन का TTI कम हो जाता है।
import React, { lazy, Suspense } from 'react';
const HeavyScreen = lazy(() =>
import('./screens/HeavyScreen')
);
const App = () => (
<Suspense fallback={<Loading />}>
<HeavyScreen />
</Suspense>
);
TTI मापने के लिए कई उपकरण उपलब्ध हैं, जो प्लेटफ़ॉर्म और विश्लेषण की गहराई में भिन्न हैं। वेब पर, प्राथमिक उपकरण Chrome DevTools में Lighthouse है। Lighthouse एक ऑडिट चलाता है और मिलीसेकंड में TTI आउटपुट करता है, साथ ही सुधार के लिए विशिष्ट अनुशंसाएँ भी देता है। निरंतर निगरानी के लिए, PageSpeed Insights (Google) का उपयोग किया जाता है — यह वास्तविक उपयोगकर्ताओं से Chrome User Experience Report (CrUX) से डेटा एकत्र करता है। मूल ऐप्स में, TTI Android Vitals (Google Play Console) और MetricKit (Apple) के माध्यम से मापा जाता है।
उत्पादन निगरानी के लिए, लोकप्रिय उपकरणों में Firebase Performance Monitoring (कस्टम ट्रेस), Datadog RUM (रियल यूज़र मॉनिटरिंग), और Sentry Performance शामिल हैं। ये उपकरण न केवल TTI दिखाते हैं, बल्कि TTI और व्यावसायिक मीट्रिक — रूपांतरण, त्याग, सत्र समय के बीच सहसंबंध का पता लगाने की भी अनुमति देते हैं। अनुशंसित सीमाएँ: < 3.8 से — अच्छा, 3.8–7 से — सुधार की आवश्यकता है, > 7 से — महत्वपूर्ण। मूल ऐप्स के लिए, सीमाएँ सख्त हैं: < 2 से — अच्छा, 2–5 से — औसत, > 5 से — महत्वपूर्ण, क्योंकि मोबाइल ऐप उपयोगकर्ता देरी के प्रति कम सहनशील होते हैं।
CI/CD पाइपलाइन में स्वचालित TTI जाँच के लिए Lighthouse CI कॉन्फ़िगरेशन का उदाहरण। 3.8 सेकंड की सीमा पार होने पर, बिल्ड को चेतावनी के साथ चिह्नित किया जाता है।
// 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
}
}
};
अक्सर पूछे जाने वाले प्रश्न
FCP (First Contentful Paint) सामग्री के पहले पिक्सेल के रेंडर होने के क्षण को दर्शाता है। TTI वह क्षण है जब UI इंटरैक्शन के लिए तैयार होता है। यदि मुख्य थ्रेड अवरुद्ध है तो अंतर 3–5 सेकंड हो सकता है।
वेब के लिए, लक्ष्य TTI 3.8 सेकंड से कम है। मूल मोबाइल ऐप्स के लिए, सीमा सख्त है — 2 सेकंड से कम। 7 सेकंड से अधिक मान तत्काल अनुकूलन की आवश्यकता है।
Android में, reportFullyDrawn (API 29+) का उपयोग FrameMetricsAggregator के साथ करें। उत्पादन निगरानी के लिए, कस्टम ट्रेस “TTI” के साथ Firebase Performance को एकीकृत करें।
हाँ, TTI अप्रत्यक्ष रूप से Core Web Vitals के माध्यम से SEO को प्रभावित करता है। Google LCP, FID और CLS का उपयोग प्रत्यक्ष रैंकिंग कारकों के रूप में करता है, लेकिन TTI उनके साथ सहसंबंधित होता है और व्यवहारिक मीट्रिक (पेज पर समय, बाउंस दर) को प्रभावित करता है।
Lighthouse, PageSpeed Insights, WebPageTest — वेब के लिए। Firebase Performance, Android Vitals, MetricKit — मूल ऐप्स के लिए।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें