Learning: Search and filter performance optimization achieved a measurable ~165x speedup (reduction from ~550ms to ~3.3ms per iteration for a 5,000 item dataset) by pre-indexing derived properties (_searchStr, _isNew, _formattedDate) instead of calculating them inline during high-frequency render/filter loops. Pre-calculating this array mutation before UI renders provides a substantial leap in render/filter iteration performance.
Action: When filtering list data (like PDFs) using pre-calculated search fields (e.g., _searchStr), always use a truthiness guard (e.g., if (!pdf._searchStr) return false;) before calling string methods like .includes() to prevent crashes on unindexed or malformed items. Additionally, avoid bloating local caches like localStorage by pre-calculating the derived properties after persisting original data state to the cache.