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-এ, FrameMetricsAggregator-এর সাথে reportFullyDrawn (API 29+) ব্যবহার করুন। প্রোডাকশন মনিটরিংয়ের জন্য, কাস্টম ট্রেস “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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন