کارهای پرهزینه سمت رندر انجام ندید

محاسبات سنگین یا تحلیل روی دیتاها تو هر رندر انجام ندید.

useEffect(() => {
  const filteredProducts = useMemo(() => {
  const normalized = query.trim().toLowerCase();

  return products.filter(product =>
    product.name.toLowerCase().includes(normalized)
  );
}, [products, query]);

دلیل: تو موبایل، فیلتر کردن چندین‌باره لیست‌های بزرگ می‌تونه افت فریم و کندی برای کاربر داشته باشه.

نکته: useMemo برای بهینه‌سازی عملکرده، نه تضمین کننده صحت عملکرد. برای لیست‌های بسیار بزرگ، باید فیلترینگ سمت سرور باشد، استفاده از FlatList پیشنهاد میشه و حتما روی گوشی موبایل عملکرد لیست‌های بزرگ بررسی کنید.