Chrome কাজ করছিল। Firefox ছিল খালি।

আমি একটি অদ্ভুত বাগ দেখতে পেলাম। আমি একই পেজ দুটি ব্রাউজারে পাশাপাশি খুললাম।

Chrome-এ সবকিছু ঠিকঠাক কাজ করছিল। আমি ছবি, বাটন এবং ডেটা দেখতে পাচ্ছিলাম। Firefox-এ আমি কিছুই দেখতে পাচ্ছিলাম না। আমি শুধু খালি কার্ড এবং "0 results found" লেখা একটি মেসেজ দেখতে পাচ্ছিলাম।

URL একই ছিল। Build একই ছিল। মেশিনও একই ছিল।

এর কারণ ছিল এমন একটি বাগ যা ডেভেলপমেন্টের সময় খুঁজে পাওয়া প্রায় অসম্ভব। ব্রাউজার আমার নিজস্ব API কলগুলো ব্লক করছিল। আমি শুধুমাত্র সেই ব্রাউজারে ডেভেলপমেন্ট করছিলাম যা এগুলো ব্লক করছিল না।

সমস্যাটি ছিল:

কোডটি ক্র্যাশ করেনি। কনসোলে কোনো লাল রঙের এরর (error) দেখায়নি। Fetch থেকে শুধু কিছুই রিটার্ন আসছিল না। ফলে আমার কোডটি নির্দেশ অনুযায়ী একটি ফলব্যাক "empty state" দেখিয়েছিল। একজন সাধারণ পর্যবেক্ষকের কাছে পেজটি ঠিকই মনে হচ্ছিল, শুধু এটি খালি দেখাচ্ছিল।

এই বাগটি দুটি কারণে অদৃশ্য ছিল:

আমি এটি কীভাবে ঠিক করলাম:

আমি রিকোয়েস্টটিকে ট্রাস্টেড (trusted) সাইডে নিয়ে আসার জন্য একটি রিভার্স প্রক্সি (reverse proxy) ব্যবহার করেছি।

পরিবর্তে: mysite.com -> xxxx.supabase.co (Third-party / Blocked)

আমি পরিবর্তন করে এটি করেছি: mysite.com -> mysite.com/sb-api (First-party / Trusted)

API-টিকে আমার নিজস্ব ডোমেইনের মাধ্যমে রাউট করার ফলে ব্রাউজার মনে করে যে রিকোয়েস্টটি সাইটেরই একটি অংশ। Firefox এখন আর এটিকে ট্র্যাকার হিসেবে দেখে না।

আপনি যদি এই পদ্ধতি ব্যবহার করেন তবে তিনটি বিষয় মনে রাখবেন:

শিক্ষা: "Chrome-এ কাজ করলে সবখানেই