TanStack Table V9 بعد از دو سال منتشر شد
خلاصهٔ کاملتر
به نوشتهٔ کوین ون کات، بعد از بیش از دو سال کار روشنوخاموش، TanStack Table V9 بالاخره پایدار شد. مدل منطق جدول و رندر headless که باهاش آشنایین سر جاشه؛ تغییرها بیشتر تو معماری زیرِ اون مدل و قابلیتهاییه که این معماری ممکن کرده. نویسنده میگه معماری جدید اونقدر انعطاف داشت که تو دورهٔ بتا هم بشه سریع کتابخونه رو بزرگتر کرد.
سیستم واکنشپذیری همهٔ آداپتورها بازنویسی شده. state جدول روی TanStack Store نشسته، پس هر آداپتور میتونه هستهٔ فریمورکمستقل رو به مدل ریاکتیو خودش وصل کنه بهجای اینکه با فرضهای بهارثرسیده از ریاکت کلنجار بره. این برای فریمورکهای سیگنالمحور مهمتره، چون اتمهای جدول مستقیمتر به signal و ref و rune وصل میشن. الان ده آداپتور اختصاصی بهعلاوهٔ هستهٔ table-core وجود داره.
سود بزرگ بعدی حافظهست: بهجای ساختن دوبارهٔ متدها برای هر آبجکت، APIهای ردیف و ستون و سلول و هدر روی پروتوتایپ مشترک سوار شدن. تو بنچمارک خود تیم، V9 تا ۸۶٪ هیپ کمتری نگه میداره و حالت یک میلیون ردیف در هشت ستون از حدود ۲.۷۱ گیگابایت به حدود ۳۸۰ مگابایت رسیده. پردازش سمت کلاینت هم بازبینی شده: بهطور میانگین ۷۹٪ بهبود تو row model اصلی، ۵۲٪ تو گروهبندی و ۳۷٪ تو مرتبسازی.
فیچرها حالا صریح، ماژولار و tree-shakable ـن. جدولی که فقط مرتبسازی ثبت میکنه، لازم نیست کد فیلتر و صفحهبندی و گروهبندی رو هم بفرسته. با tableFeatures() میشه دقیقاً همون چیزی رو که لازمه اعلام کرد:
const features = tableFeatures({
rowPaginationFeature,
paginatedRowModel: createPaginatedRowModel(),
})
const table = useTable({ features, columns, data })هیچ فیچر دیگهای وارد باندل نمیشه مگه خودتون اضافهش کنین.
بقیهٔ تغییرها هم کم نیستن: تایپهلپرها بازنویسی شدن و متادیتای جدول و ستون و فیلتر رو میشه بهازای هر جدول تایپ کرد، tableOptions() و createTableHook() ساختن یه سیستم جدولِ یکدست برای کل محصول رو راحتتر میکنن، و فیچرهای تازهای مثل انتخاب سلولی با محدودهٔ مستطیلی و درگ، و Cell Spanning روی ردیف و ستون اضافه شدن. نویسنده میگه V9 یه انتشار بنیادیه و قرار نیست تا V10 چهار سال صبر کنیم.
نکات کلیدی:
- state روی TanStack Store، با اتم و سلکتور برای خوندن ریزدانه
- ده آداپتور فریمورک، از ریاکت و ویو و سالید تا Svelte 5، انگولار ۱۹، Lit، Alpine و Ember
- تا ۸۶٪ هیپ کمتر و ۱.۵ تا ۳.۹ برابر پردازش سریعتر ردیفها
- فیچرهای tree-shakable؛ حجم کل پکیج از ۱۴ به ۲۵ کیلوبایت رفته ولی جدول معمولی سبکتر درمیاد
- فیچرهای جدید: Cell Selection و Cell Spanning، بههمراه راهنمای مهاجرت برای هر فریمورک




