TanStack ได้ประกาศยุติการใช้ React Server Components (RSC) ในไลบรารีของตนอย่างเป็นทางการ โดยระบุว่าความซับซ้อนที่เพิ่มขึ้น ความยืดหยุ่นที่ลดลง ประสิทธิภาพที่เพิ่มขึ้นเพียงเล็กน้อย และความเร็วในการพัฒนาที่ช้าลงเป็นปัจจัยสำคัญ การเคลื่อนไหวครั้งนี้มีความสำคัญต่อทุกคนที่สร้างเครื่องมือบนพื้นฐานของ React เนื่องจากไลบรารีของ TanStack ได้รับการยอมรับอย่างแพร่หลายและมักจะเป็นตัวกำหนดมาตรฐานในการใช้งานจริงสำหรับระบบนิเวศนี้

ทำไม RSC ถึงดูน่าดึงดูด

React Server Components ถูกนำเสนอในฐานะวิธีการย้ายงานการดึงข้อมูล (data-fetching) และการเรนเดอร์ (rendering) ที่หนักหน่วงไปไว้ที่ฝั่งเซิร์ฟเวอร์ โดยให้คำมั่นว่าจะช่วยให้ขนาด bundle ของฝั่ง client เล็กลงและโหลดหน้าเว็บได้เร็วขึ้น ทีมงาน TanStack ได้ทดลองใช้วิธีนี้ด้วยความหวังว่าจะช่วยปรับปรุงประสบการณ์ผู้ใช้ของไลบรารี data-grid และ query ของพวกเขา

สิ่งที่ทำให้พวกเขาถอยห่าง

  • ความซับซ้อน – การดีบั๊ก (debugging) โค้ด RSC บังคับให้ต้องใช้โมเดลทางความคิด (mental model) ที่แยกต่างหาก ทีมงานต้องใช้เวลาไปกับการไล่ตรวจสอบปัญหาการเรนเดอร์ฝั่งเซิร์ฟเวอร์ (server-side rendering) มากเกินกว่าที่พวกเขาสามารถรับได้
  • ความยืดหยุ่น – ไลบรารีจากบุคคลที่สาม (third-party libraries) จำนวนมากถูกออกแบบมาเพื่อทำงานในสภาพแวดล้อมฝั่ง client เท่านั้น การที่ RSC ทำงานเฉพาะบนเซิร์ฟเวอร์ทำให้การรวมเข้าด้วยกันเป็นเรื่องยาก หากไม่มีการเขียนโค้ดใหม่หรือสร้างตัวเชื่อม (shimming) สำหรับ dependency เหล่านั้น
  • ประสิทธิภาพ – การปรับปรุงความเร็วที่วัดได้นั้นมีเพียงเล็กน้อย ภาระงาน (overhead) ในการจัดการขอบเขตระหว่างเซิร์ฟเวอร์และ client นั้นมีมากกว่าผลประโยชน์ที่ได้รับเพียงเล็กน้อยในสถานการณ์การใช้งานจริงส่วนใหญ่
  • ความเร็วในการพัฒนา (Velocity) – รูปแบบที่เน้นเฉพาะฝั่ง client ที่เรียบง่ายกว่า ช่วยให้ทีมสามารถปล่อยอัปเดตได้เร็วขึ้น เมื่อใช้ RSC ทุกการเปลี่ยนแปลงจำเป็นต้องมีการตรวจสอบทั้งบนเซิร์ฟเวอร์และ client ซึ่งทำให้รอบการปล่อยซอฟต์แวร์ช้าลง

ผลกระทบในวงกว้าง

หากชุดเครื่องมือชั้นนำอย่าง TanStack ถอยห่างจาก RSC โปรเจกต์อื่นๆ ก็อาจจะกลับมาทบทวนกระแสความนิยมนี้ การตัดสินใจครั้งนี้ชี้ให้เห็นถึงการแลกเปลี่ยน (trade-off): ฟีเจอร์ที่ล้ำสมัยอาจนำมาซึ่งต้นทุนที่ซ่อนอยู่ซึ่งส่งผลเสียต่อประสิทธิภาพการทำงานของนักพัฒนาและการบำรุงรักษาในระยะยาว บริษัทที่ให้ความสำคัญกับการพัฒนาที่รวดเร็วและการรองรับไลบรารีที่หลากหลายอาจดำเนินรอยตามเช่นกัน

มุมมองที่ต่างออกไป

นักพัฒนาบางส่วนยังคงเห็นคุณค่าของ RSC สำหรับกรณีการใช้งานเฉพาะด้าน โดยเฉพาะในจุดที่การประมวลผลข้อมูลฝั่งเซิร์ฟเวอร์สามารถลดขนาด payload ได้อย่างมหาศาล แนวทางนี้อาจมีการพัฒนาต่อไป และเครื่องมือในอนาคตอาจเข้ามาแก้ปัญหาที่ TanStack พบเจอ สำหรับตอนนี้ ความคิดเห็นส่วนใหญ่ยังคงมีความเห็นที่แตกออกเป็นสองฝ่าย

สิ่งที่ต้องจับตามองต่อไป

  • การอัปเดตเครื่องมือ – การปรับปรุงด้านการดีบั๊กและการสนับสนุนการรวมระบบ (integration) อาจช่วยลดอุปสรรคด้านความซับซ้อนลงได้
  • เสียงตอบรับจากชุมชน – เมื่อมีทีมต่างๆ แบ่งปันข้อมูลประสิทธิภาพมากขึ้น สมการระหว่างต้นทุนและผลประโยชน์อาจเปลี่ยนแปลงไป
  • รูปแบบทางเลือกอื่นๆ – เทคนิคการเรนเดอร์เซิร์ฟเวอร์แบบเพิ่มระดับ (incremental server rendering) หรือแนวทางแบบไฮบริด (hybrid approaches) อาจเป็นทางออกสายกลาง

บทสรุป: การถอยห่างจาก React Server Components ของ TanStack เตือนให้เราระลึกว่าของใหม่ไม่ได้ดีกว่าเสมอไป นักพัฒนาควรชั่งน้ำหนักต้นทุนที่แท้จริงต่อกระบวนการทำงานของตนเทียบกับผลประโยชน์ที่ได้รับ ก่อนที่จะนำรูปแบบใหม่ๆ มาใช้งาน

ที่มา: https://tanstack.com/blog/we-stopped-using-rsc-on-tanstack-com