26 คะแนน โดย GN⁺ 2025-06-16 | 16 ความคิดเห็น | แชร์ทาง WhatsApp
  • React ยังคงเป็น UI framework ที่ถูกใช้งานแพร่หลายที่สุด แต่ในช่วงไม่กี่ปีที่ผ่านมา ความสับสน การถกเถียง และความไม่ไว้วางใจในคอมมูนิตี้เพิ่มขึ้น โดยมีทั้ง การขาดการสื่อสาร ระหว่างทีมทางการกับนักพัฒนาภายนอก และการทำการตลาดที่ผิดพลาด ซึ่งยิ่งทำให้ความกังวลรุนแรงขึ้น
  • React 19 ออกเวอร์ชันเสถียรอย่างเป็นทางการแล้ว พร้อมฟีเจอร์ขนาดใหญ่ เช่น Server Components, ฮุก use แบบใหม่, การรวมฟอร์มเข้าไว้ด้วยกัน ฯลฯ แต่ นโยบาย "แนะนำให้ใช้ผ่าน framework เท่านั้น" และโครงสร้างที่ยึด Next.js เป็นศูนย์กลาง ทำให้ผู้ใช้จำนวนมากไม่พอใจ
  • มีทั้งความเข้าใจผิดและ FUD เช่น "ตอนนี้ React ใช้ได้อย่างถูกต้องแค่ใน Next.js" "อีกไม่นานจะเลิกซัพพอร์ตแบบ client-only" แต่ในความเป็นจริง ความสามารถในการเรนเดอร์ฝั่ง client จะไม่มีวันหายไป และฟีเจอร์อย่าง RSC หรือความสามารถฝั่งเซิร์ฟเวอร์ก็เป็นเพียงตัวเลือกเท่านั้น
  • นโยบายที่เน้น framework ของทีม React มีเป้าหมายเพื่อทำให้มาตรฐานด้านประสิทธิภาพ/โครงสร้างเป็นหนึ่งเดียวและปรับปรุงประสบการณ์ผู้ใช้ แต่ การให้ความสำคัญกับ SPA และสถาปัตยกรรมที่หลากหลายน้อยเกินไป รวมถึงเอกสารที่ไม่เป็นทางการและไม่เป็นมิตร กลับยิ่งเพิ่มความสับสนในคอมมูนิตี้
  • เพิ่งไม่นานมานี้เองที่ วิธีการหลากหลายอย่าง SPA บน Vite·Parcel ถูกเพิ่มเข้าไปในเอกสารทางการ แต่ก็ยังคงมี การอธิบาย Server Components (RSC) อย่างเป็นทางการไม่เพียงพอ และการสื่อสารที่ยังไม่ดีพอ

บทนำและเป้าหมาย

  • ณ ปี 2025 คอมมูนิตี้ React อยู่ในช่วงที่ซับซ้อน ซึ่งผสมปนเปกันทั้งความสำเร็จ ความไม่ไว้วางใจ และการถกเถียง
  • เป้าหมาย ของบทความนี้คือสรุปพัฒนาการของ React ทิศทางการพัฒนา และเบื้องหลังการตัดสินใจสำคัญต่างๆ พร้อมทั้ง คลี่คลาย FUD และความสับสน

ภูมิหลังของผู้เขียนและประวัติการมีส่วนร่วมกับคอมมูนิตี้

  • ไม่ได้เป็นสมาชิกทีม React แต่มีส่วนเกี่ยวข้องลึกซึ้งกับ ecosystem ของ React มาตั้งแต่ปี 2015
  • เป็นผู้ดูแลไลบรารีในตระกูล Redux โดยเฉพาะ Redux Toolkit และเป็นผู้มีบทบาทสำคัญในคอมมูนิตี้
  • มีส่วนร่วมในบทเรียนและบล็อก React/Redux จำนวนมาก รวมถึงการบรรยายและพอดแคสต์
  • ทำหน้าที่ผู้ดูแลและผู้ไกล่เกลี่ยในคอมมูนิตี้หลักอย่าง Reactiflux Discord และ subreddit /r/reactjs
  • มีประสบการณ์ร่วมงานกับทีม React (เช่น เป็น alpha tester ของฮุก useSyncExternalStore) และเข้าร่วมกลุ่มให้ฟีดแบ็กภายในหลายกลุ่ม
  • มีส่วนช่วยทางเทคนิคใน React DevTools, sourcemaps, Replay DevTools และอื่นๆ
  • ข้อชี้แจงเรื่องอคติและข้อจำกัด

    • ผู้เขียนยอมรับว่าอาจไม่ได้ถูกต้องเสมอไป และอาจมีคำอธิบายบางส่วนที่ไม่แม่นยำจากข้อจำกัดของข้อมูล ความเข้าใจผิด หรือกระบวนการสรุป
    • ดูแล Redux อยู่ และประสบการณ์การใช้ React ก็ เอนเอียงไปทางเครื่องมือภายในและรูปแบบ SPA เป็นหลัก
    • มีประสบการณ์งานจริงด้าน SSR, RSC, ทราฟฟิกขนาดใหญ่, i18n ฯลฯ ค่อนข้างจำกัด
    • คุ้นเคยกับประเด็นที่ถกเถียงกันอย่างลึกในคอมมูนิตี้ แต่ก็อาจห่างจากชีวิตประจำวันของนักพัฒนาแอปทั่วไปอยู่บ้าง
    • ทั้งประสบการณ์ส่วนตัวด้านบวกและด้านลบกับทีม React ล้วนมีผลต่อมุมมอง
    • พยายามถ่ายทอดข้อเท็จจริงอย่างซื่อสัตย์ที่สุดในการอธิบายบริบททางประวัติศาสตร์และเชิงโครงสร้าง

ประวัติโดยย่อของ React

  • พัฒนาภายใน Facebook (ปัจจุบันคือ Meta) ในช่วงปี 2011~2012 และเปิดเป็นโอเพนซอร์สในปี 2013
  • จนถึงไม่นานมานี้ การพัฒนาหลักทั้งหมดถูกขับเคลื่อนโดยทีม React ของ Facebook/Meta
  • แนวคิดหลัก (component, props, state, data flow) ยังคงเดิม แต่การติดตั้งใช้งาน API และขอบเขตการประยุกต์ใช้ ได้ขยายและเปลี่ยนแปลงอย่างต่อเนื่อง
    • createClass → ES6 class → functional component (รองรับ Hooks)
    • ขยายไปยังหลายแพลตฟอร์ม เช่น มือถือผ่าน React Native, WebGL ผ่าน react-reconciler (react-three-fiber), CLI ผ่าน ink
    • ภายในมีการรีแฟกเตอร์ครั้งใหญ่สู่สถาปัตยกรรม "Fiber" (นวัตกรรมด้านประสิทธิภาพ/โครงสร้าง)
    • ในปี 2018 มีการนำ Hooks มาใช้เพื่อให้ functional component มี state/effect ได้
  • ใช้กลยุทธ์แบบ "ไลบรารี UI แบบมินิมัล (V ใน MVC)" โดยมอบหมายเรื่องสถาปัตยกรรม framework ชั้นบน build และ state management ให้คอมมูนิตี้
    • ผลคือเกิดไลบรารี third-party และเครื่องมือ build จำนวนมาก เช่น Redux/Mobx/Zustand (state), Styled-Components/Emotion/CSS Modules (style), React Query/Apollo/SWR(RTK Query) (data), Webpack/Vite/Parcel เป็นต้น
  • ความยืดหยุ่นคือข้อดี แต่ก็ทำให้ทุกโปรเจกต์ต้องเลือกไลบรารีที่จำเป็นเอง → นำมาซึ่งปัญหาความหลากหลายของ codebase ความเหนื่อยล้า และการขาดมาตรฐาน
  • เครื่องมือ build และ CRA

    • ในยุคแรก การตั้งค่าที่ซับซ้อนอย่าง Webpack/Babel เป็นสิ่งจำเป็น
    • Create React App (CRA): CLI ที่ใช้ Webpack+Babel ซ่อนความซับซ้อน และสร้างโปรเจกต์ได้ด้วยคำสั่งเดียว (ลักษณะ black box)
    • การดึงข้อมูลและ state management ยังต้องพึ่งพาเครื่องมือ 3rd-party แยกต่างหาก
    • ความสามารถด้าน SSR (server-side rendering) มีมาตั้งแต่แรก แต่ต้องลงมือทำเองทั้งหมด
    • ต่อมาจึงมี framework อย่าง Next.js (SSR/การทำ routing แบบ file system/data fetching), Gatsby (static site, GraphQL), Remix (server data loader) ปรากฏขึ้น
  • React Server Components (RSC) และการเปลี่ยนผ่านสู่ framework

    • ปลายปี 2020 มีการเปิดเผยต้นแบบของ React Server Components (RSC) ซึ่งเป็นการเปลี่ยนแปลงเชิงสถาปัตยกรรมที่ต้องการทำให้ async component และ server data fetching กลายเป็นมาตรฐานใน React
    • ระหว่างการพัฒนา มีสมาชิกบางส่วนของทีม React ย้ายไป Vercel และร่วมมือกับ Next.js เพื่อสร้าง App Router และ implementation แรกของ RSC
    • ช่วงปี 2020~2023 มีการยกเครื่องเอกสารทางการของ React (react.dev) ทั้งหมด พร้อมเสริมบทเรียนเชิงโต้ตอบและ API reference
  • การเปลี่ยนแปลงของแนวทางใช้งานที่แนะนำอย่างเป็นทางการ

    • ในอดีต เอกสารทางการแนะนำให้เริ่มด้วย SPA บน CRA และหากต้องการ SSR/static site ก็ชี้ทางเลือกอย่าง Next/Gatsby
    • เอกสารใหม่ (react.dev) แนะนำอย่างหนักให้ใช้ framework (รวม routing, data fetching, build) และพูดถึง Next.js เพียงรายเดียวในฐานะ implementation ของ RSC
    • CRA แทบหยุดได้รับการดูแลตั้งแต่ราวปี 2022 (ยังไม่ได้ประกาศ deprecated อย่างเป็นทางการในตอนนั้น แต่ค่อยๆ ถูกแทนที่ในคอมมูนิตี้)
    • ทั้งในเอกสารทางการและในคอมมูนิตี้มีความเห็นอย่าง "Next.js คือ React 18 ตัวจริง" จนยิ่งเน้น ความเชื่อมโยงอันแน่นแฟ้นกับ Next.js

ความสัมพันธ์ระหว่าง React กับบริษัทผู้ถือครอง (ผู้สนับสนุน)

  • Meta (Facebook)

    • React เป็นโปรเจกต์ที่ Facebook/Meta เป็นเจ้าของและขับเคลื่อนมาตั้งแต่ต้น
    • แม้จะเป็นโอเพนซอร์ส แต่การพัฒนาจริงถูกทำโดยทีม React ของ Meta เป็นหลัก การประชุมแกนหลักและ roadmap ก็ล้วนยึดภายในเป็นศูนย์กลาง
    • ฟีเจอร์ใหม่จะถูกตรวจสอบและทดสอบจริงในหลายทีมแอปภายใน Meta ก่อนเปิดสู่ภายนอก
    • ทีม React มีอิสระในการพัฒนาสูง และ เป็นผู้กำหนด roadmap และวิสัยทัศน์หลักด้วยตนเอง
    • ภายใน Meta จำเป็นต้องพิสูจน์ได้ว่าผลงานและโปรเจกต์ต่างๆ มีส่วนช่วยต่อธุรกิจอย่างไร
    • Meta ใช้โครงสร้างพื้นฐานเซิร์ฟเวอร์ของตนเอง รวมถึงเทคโนโลยีของตนอย่าง GraphQL และ Relay อย่างแข็งขัน และใช้ React ในลักษณะที่ต่างจากคอมมูนิตี้ในเรื่อง routing, state management ฯลฯ
    • ด้วยเหตุนี้ ภายใน Meta จึงใช้ไลบรารี 3rd-party ภายนอกค่อนข้างน้อย
  • Vercel, Next.js และ React

    • Vercel คือแพลตฟอร์มโฮสต์เว็บแอป และเป็นบริษัทผู้พัฒนา framework อย่าง Next.js
    • โมเดลธุรกิจคือผลักดันการแพร่หลายของ framework อย่าง Next → นำไปสู่การโฮสต์บนแพลตฟอร์ม Vercel
    • CEO (Guillermo Rauch) เชื่อมั่นและลงทุนในปรัชญาการเรนเดอร์ของ React อย่างลึกซึ้งมาตั้งแต่แรก
    • ในปี 2021 Sebastian Markbage หัวหน้าทีม React ย้ายจาก Meta ไป Vercel และมีบุคลากรสำคัญอย่าง Andrew Clark, Tom Occhino เข้าร่วม
    • สมาชิกที่ย้ายไป Vercel ลงมือสร้างฟีเจอร์แกนอย่าง React Server Components (RSC) และ Next.js App Router ทั้งฝั่ง React และ Next.js
    • วิศวกรของ Vercel ก็มีส่วนช่วยอย่างเป็นรูปธรรมใน React core และความสามารถด้าน server rendering
    • ณ ปี 2025 ทีม React ทำงานกระจายอยู่ทั้งใน Meta และ Vercel (Meta ยังเป็นแกนหลัก แต่ Vercel ก็มีส่วนกับ implementation สำคัญ) และยังมี external contributor อยู่บ้าง

รูปแบบการใช้งาน React

  • สถาปัตยกรรมมาตรฐาน

    • ตัว React เองรองรับ ได้ทั้ง SPA, SSR, SSG, hybrid และอีกหลายรูปแบบ
      • SPA: เรนเดอร์ต้นไม้ React ทั้งหมดฝั่ง client ลงบน HTML ว่าง
      • SSR: สร้าง HTML แบบไดนามิกที่ฝั่งเซิร์ฟเวอร์ตามแต่ละ request
      • SSG: สร้าง static HTML ล่วงหน้าตั้งแต่ขั้น build
      • ใช้ร่วมกับภาษาและ framework อื่นได้หลายแบบ เช่น Python/Django, Ruby/Rails, PHP/WordPress
    • ตั้งแต่ราวปี 2015 เป็นต้นมา รูปแบบ SPA (client rendering) เป็นมาตรฐาน แต่ก็มี trade-off เช่น ความเร็วโหลดแรก ขนาด JS bundle และความต่างจากพฤติกรรม native ของเบราว์เซอร์
    • เดิมการดึงข้อมูลต้องเขียน logic เองใน Redux เป็นต้น ก่อนจะค่อยๆ ง่ายขึ้นด้วยฮุก/ไลบรารีเฉพาะอย่าง React Query/Apollo/SWR/RTK Query
    • framework อย่าง Next.js และ Remix ช่วย ทำให้ SSR, SSG, file system routing เป็นมาตรฐาน และจัดโครงสร้าง data fetching จนขยายขอบเขตการใช้ React ได้กว้างขึ้น
    • มีแนวโน้มขยับไปสู่สถาปัตยกรรมที่อิง SSR มากขึ้น (server rendering, prefetch, code splitting ฯลฯ)
    • ทีม React พยายามหลีกเลี่ยงปรากฏการณ์ "data fetching waterfall" และแนะนำแพตเทิร์นปรับปรุงประสิทธิภาพ เช่น prefetch ตาม route
  • สถานะการใช้งานเครื่องมือ build และ framework

    • เครื่องมือ/framework หลัก:
      • Next.js (SSR/SSG/RSC/SPA)
      • Remix / React-Router v7 (SSR/SSG/SPA)
      • Vite (SPA, เครื่องมือ build, รองรับ framework plugin หลากหลาย)
      • Create React App (SPA)
    • Vite เริ่มต้นจาก ecosystem ของ Vue แต่รองรับหลายอย่างรวมถึง React และ Svelte → มี official plugin ของ React และกลายเป็นมาตรฐานของเครื่องมือ build สำหรับ framework
    • Remix/React-Router เองก็เพิ่งย้ายไปใช้โครงสร้างรองรับ SSR/SSG บน Vite เช่นกัน
    • สรุปสถิติการดาวน์โหลด:
      • Next.js มีอัตราการใช้งานสูงที่สุดแบบทิ้งห่าง
      • React plugin ของ Vite เติบโตอย่างรวดเร็ว และถูกใช้งานมากเป็นอันดับสอง
      • CRA (react-scripts) ลดลงตั้งแต่ปี 2023 แต่ยังมีการใช้งานอยู่มาก
      • Remix มีกระแสปากต่อปากดี แต่ขนาดรวมยังจำกัด ส่วน React Router ก็ยังเปลี่ยนผ่านไปสู่ framework mode ได้ค่อนข้างช้า
      • Gatsby มีการใช้งานน้อยกว่า Next/Vite/CRA มาก และช่วงหลังยังถูก Astro (static site แบบหลาย framework) แซงไปแล้ว
      • Astro ไม่ได้โฟกัส React โดยเฉพาะ แต่มีขนาดใกล้เคียง Remix
      • เมื่อรวมการใช้งาน Vite+CRA เข้าด้วยกันก็พอๆ กับ Next → ความต้องการรูปแบบ SPA ก็ยังสูงอยู่

ภายในของ React Server Components (RSC) และความสัมพันธ์กับ framework

  • ที่มาของการพัฒนา RSC และความร่วมมือกับ Vercel

    • โครงสร้างพื้นฐานภายในของ Meta มีสถาปัตยกรรมเซิร์ฟเวอร์ของตัวเองอยู่แล้ว จึงมีข้อจำกัดในการพัฒนาและทดสอบ RSC (React Server Components)
    • RSC เป็นการออกแบบเชิงอนาคตที่ทีม React เป็นผู้ผลักดันโดยตรง ไม่ได้เริ่มจากคำสั่งหรือความต้องการของ Meta หรือ Vercel แต่เกิดจากวิสัยทัศน์อิสระของทีม React เอง
    • ทีม React เป็นฝ่ายเสนอวิสัยทัศน์ RSC ให้ Vercel และ Vercel ก็เข้ามาเป็นสนามทดลองและผู้สนับสนุนการพัฒนา
    • สมาชิก core ของ React อย่าง Sebastian Markbage และ Andrew Clark ย้ายจาก Meta ไป Vercel และทีม Next.js ก็สร้าง App Router (กรณีใช้งาน RSC จริงรายแรก) ขึ้นมา
    • ในกระบวนการนี้ Next.js ถูกออกแบบและพัฒนาใหม่เกือบตั้งแต่ต้น
    • framework อื่นอย่าง Shopify (Hydrogen), Remix ฯลฯ เคยพยายามทดสอบและร่วมมือในช่วงแรก แต่ยังไม่เกิดการมีส่วนร่วมอย่างจริงจัง
    • ผลลัพธ์คือมีเพียง Next.js App Router ที่กลายเป็น implementation ของ RSC ระดับ production จริง ส่วน framework อื่น (React Router, Parcel, Waku ฯลฯ) ยังอยู่ระหว่างการรวมเข้าระบบ และการใช้งานในวงกว้างยังถูก Next ครองอยู่
  • โครงสร้างการรวม RSC เข้ากับ framework/bundler

    • มีคำถามอยู่มากว่า "ทำไม RSC ถึงต้องพึ่ง framework หรือ bundler ด้วย?"
    • SSR แบบเดิม (renderToString, renderToPipeableStream) รันได้แทบทุกที่ แต่ RSC ซับซ้อนกว่าในเชิงโครงสร้างมาก
      • ต้องตีความ directive อย่าง 'use client', 'use server' ภายในโค้ด
      • ต้องแยก client/server component และลงทะเบียนให้อัตโนมัติ
      • จำเป็นต้องผสานกับ bundler ที่วิเคราะห์และคอมไพล์ module graph ทั้งหมดอย่างใกล้ชิด เช่น Webpack, Vite
    • React core มีให้เฉพาะ logic หลักของ RSC และ data serialization API ส่วน การทำงานจริง, routing, การเรียก endpoint ฯลฯ เป็นหน้าที่ของ framework
    • แต่ละ framework ก็ใช้ RSC ด้วยสถาปัตยกรรมและ implementation ที่ต่างกัน
      • Next.js App Router ใช้กฎของตัวเองสำหรับ layout และ routing
      • Parcel, Waku, React Router ฯลฯ ก็กำลังออกแบบแนวทางของตัวเอง
    • สรุป:
      • RSC เป็นความสามารถแบบ hybrid ที่ฝังอยู่ใน React core แต่การใช้งานจริงจำเป็นต้องมีการผสานจาก bundler/framework เสมอ
      • จะใช้จุดแข็งของ RSC ได้จริงก็ต่อเมื่อ framework รองรับ

ความกังวลและความสับสนในคอมมูนิตี้

  • 1. ความกังวลว่า "Vercel เข้ายึด React แล้ว"

    • เมื่อ Vercel จ้างสมาชิกสำคัญของทีม React และ Next.js ถูกเน้นในเอกสาร/ตัวอย่าง จึงเกิดข้อสงสัยว่า "Vercel เป็นผู้นำการพัฒนา React"
    • ความจริงคือ ทีม React เป็นผู้นำทั้งวิสัยทัศน์ของ RSC และโครงสร้างของ Next App Router ส่วน Vercel ทำหน้าที่เป็นผู้สนับสนุนและสนามทดลอง
    • แทนที่จะบอกว่า Vercel "ยึด" React ไป จึงใกล้เคียงกว่าที่จะบอกว่า สมาชิกบางส่วนของทีม React ย้ายไป Vercel เพื่อทำวิสัยทัศน์นั้นให้เป็นจริง
  • 2. ความเข้าใจผิดว่า "ตอนนี้ React ใช้งานได้แค่บน Next เท่านั้น"

    • เพราะมีการย้ำว่า Next.js เป็น implementation ของ RSC ระดับ production เพียงรายเดียว จึงทำให้เกิดความเข้าใจผิดนี้
    • ในเอกสารทางการของ React ก็ยังกล่าวถึง framework อื่นๆ และการใช้งานแบบไม่มี framework อยู่
    • Next เป็นเพียง framework ที่สร้างบน React เท่านั้น React ยังใช้งานเดี่ยวๆ หรือกับเครื่องมืออื่นได้เหมือนเดิม
  • 3. ความกังวลว่า "React อาจหายไปจากแอปฝั่ง client"

    • เมื่อมีการเน้นฟีเจอร์ฝั่งเซิร์ฟเวอร์ (RSC, SSR ฯลฯ) จึงมีเสียงกังวลว่าอาจเลิกซัพพอร์ต SPA ฝั่ง client
    • ความสามารถในการเรนเดอร์ฝั่ง client ของ React จะไม่มีวันหายไป
      • codebase ขนาดใหญ่ เช่น ของ Meta เอง ก็ยังใช้รูปแบบฝั่ง client จำนวนมาก
      • ทีม React จริงจังมากกับเรื่อง compatibility และการรองรับ migration
  • 4. "ทำไม React ถึงบังคับให้ใช้ framework?"

    • ทีม React แนะนำ framework เป็นค่าเริ่มต้น เพราะมองเห็นข้อดีด้าน productivity และ performance จากการรวม data fetching, routing, SSR เข้าด้วยกัน
    • จุดยืนคือ "การตั้งค่าเอง (custom SPA) ไม่มีประสิทธิภาพในระยะยาว และ framework คือมาตรฐานของอุตสาหกรรม"
    • แต่ ในความเป็นจริงยังมีรูปแบบการใช้งานที่หลากหลายอยู่มาก และคำแนะนำนี้ก็กลายเป็นการเหมารวมมากเกินไป
      • SPA ยังมีเหตุผลที่ใช้ได้จริง เช่น ลดกำแพงสำหรับผู้เริ่มต้น บริษัทที่มีข้อจำกัดด้านการโฮสต์เซิร์ฟเวอร์ และความเรียบง่ายของการโฮสต์ SPA
    • การอธิบายแนวทางแบบ "ไม่ใช้ framework" ในเอกสารทางการถูกลดบทบาทเป็นเรื่องรอง จึงทำให้คอมมูนิตี้รู้สึกถูกกันออกไป
  • 5. ข้อจำกัดของเอกสารทางการและประเด็นถกเถียงเรื่องการปรับปรุง

    • CRA (react-scripts) ถูก deprecated อย่างเป็นทางการ และการพูดถึงเครื่องมือทดแทนอย่าง Vite ก็ล่าช้า จนยิ่งเพิ่มความสับสน
    • แนวทางแบบ "ไม่ใช้ framework" อย่าง SPA ก็ได้รับการยอมรับและเพิ่มคู่มืออย่างเป็นทางการแล้ว (เอกสารล่าสุดปี 2025)
    • ทั้งคอมมูนิตี้และผู้คนใน ecosystem (เช่น Evan You) ต่างตั้งคำถามถึงความล่าช้าในการพูดถึงเครื่องมือ build สำคัญอย่าง Vite อย่างเป็นทางการ
    • เอกสารรุ่นล่าสุดที่ได้รับการปรับปรุงแล้ว ตอนนี้แนะนำทั้ง SPA, Vite/Parcel/RSPack และมีคู่มือเลือก router กับ data fetching ให้ด้วย
  • 6. เอกสารทางการและคำอธิบายของ RSC ยังไม่เพียงพอ

    • เมื่อเทียบกับข้อมูลจากภายนอกอย่าง Next.js หรือ Vercel แล้ว เอกสารทางการของ React ยังอธิบายและปูพื้นแนวคิดของ RSC น้อยเกินไป
    • มีข้อมูลแบบกระจัดกระจายเฉพาะใน API Reference แต่ยังขาดคู่มือภาพรวม แนวคิด และวิธีนำไปใช้
    • แม้คอมมูนิตี้และบุคคลสำคัญ (เช่น Dan Abramov) จะพยายามอธิบายเสริมอย่างแข็งขัน แต่การขาดการทำให้เป็นทางการก็ยังสร้างความสับสนอย่างต่อเนื่อง
    • มีการเรียกร้องให้เพิ่มส่วนเอกสารเรื่องแนวคิด สถาปัตยกรรม กรณีใช้งานจริง และ FAQ ของ RSC

สรุปประเด็นกังวลสำคัญ

  • ความเข้าใจผิดว่าการเน้น framework และฟีเจอร์ฝั่งเซิร์ฟเวอร์เกิดขึ้น "เพื่อผลประโยชน์ของ Vercel" ได้หยั่งรากในคอมมูนิตี้ แต่ความจริงไม่ได้เป็นเช่นนั้น
    • อย่างไรก็ตาม การสื่อสารของทีม React และถ้อยคำในเอกสารทางการก็มีส่วนทำให้เกิดความเข้าใจผิด
  • ความสามารถในการเรนเดอร์ฝั่ง client ของ React จะยังคงอยู่ต่อไป ฟีเจอร์ฝั่งเซิร์ฟเวอร์ (RSC/SSR ฯลฯ) เป็นเพียง ตัวเลือก และแนวทางเดิมอย่าง SPA ก็ยังใช้ต่อได้
  • ความกังวลและความสับสนในคอมมูนิตี้เกิดจาก การสื่อสารที่ไม่เพียงพอของทีม React และกิจกรรมด้านความสัมพันธ์กับนักพัฒนา (DevRel) ที่อ่อนแรง ด้วย
    • จำเป็นต้องมีการแสดงจุดยืนอย่างเป็นทางการ การคลายความเข้าใจผิด และการยอมรับพร้อมชี้ทางต่อรูปแบบที่หลากหลาย
  • คำแนะนำให้ "ใช้ framework" เริ่มต้นจากเจตนาดี แต่ก็ถูกวิจารณ์ว่าทำออกมาอย่างแข็งทื่อเกินไป และทำให้รูปแบบการใช้งานที่หลากหลายถูกทอดทิ้ง
  • หลังปี 2025 เอกสารทางการได้รับการปรับปรุงจนยอมรับและเพิ่มคู่มือสำหรับ SPA/แนวทาง build แบบกำหนดเองแล้ว แต่ก็ใช้เวลานานมากกว่าจะสะท้อนฟีดแบ็กจากคอมมูนิตี้
  • เอกสารทางการยังจำเป็นต้องเสริมเนื้อหาหลักเรื่องแนวคิดและ trade-off ของ RSC (React Server Components)
    • เพื่อช่วยให้คอมมูนิตี้เข้าใจได้ถูกต้องและลดข้อถกเถียงที่ไม่จำเป็น

บทส่งท้าย

  • เนื้อหานี้ตอบคำถามหลากหลายเกี่ยวกับการที่ React พัฒนามาอย่างไร ถูกพัฒนาภายใต้อิทธิพลและเป้าหมายแบบใด และรูปแบบการใช้งานใน ecosystem ปัจจุบันตั้งหลักอยู่แบบไหน
  • ผู้เขียนพยายามคลี่คลายความสับสนหรือ FUD (ความกลัว·ความไม่แน่นอน·ความสงสัย) ที่เกิดขึ้นต่อทิศทางและความเปลี่ยนแปลงของทีม React
    • แม้จะไม่เห็นด้วยกับทิศทางทางเทคนิค หรือไม่รู้สึกว่าจำเป็นต้องใช้ RSC/framework ขนาดใหญ่ ก็ยังพูดได้ว่า เจตนาและทิศทางของทีม React มีเหตุผลรองรับเพียงพอ
  • นโยบายของทีม React มีที่มาจากเจตนาดีในการทำให้มาตรฐานด้านประสิทธิภาพเป็นหนึ่งเดียวและปรับปรุง UX ของคอมมูนิตี้ แต่ การสื่อสารและเอกสารที่ไม่เป็นมิตรกลับเพิ่มความสับสนโดยไม่จำเป็น
  • ความจำเป็นในการ เคารพความหลากหลายของรูปแบบการใช้งานจริง ทั้ง SPA, framework และเครื่องมือ build แบบต่างๆ รวมถึงการปรับปรุงเอกสารทางการ จึงยิ่งมีมากขึ้น
  • ต่อจากนี้ การปรับปรุงเอกสารให้สะท้อนฟีดแบ็กของคอมมูนิตี้ การรองรับสถาปัตยกรรมที่หลากหลาย และการสื่อสารอย่างเปิดกว้าง จะเป็นกุญแจสำคัญต่อการเติบโตอย่างแข็งแรงของ React

16 ความคิดเห็น

 
ahwjdekf 2025-06-19

react ให้ความรู้สึกเหมือนเป็นไลบรารีที่ยังไม่เสร็จสมบูรณ์และเหมือนมีอะไรขาด ๆ เกิน ๆ ... ยกตัวอย่างเช่น พอไปดูสิ่งที่เขียนยาวเหยียดอยู่ในเอกสารทางการของ useEffect ก็ได้แต่รู้สึกอึ้ง... สร้างโพรงกระต่ายไว้เต็มไปหมดแบบนี้ แล้วกลับมีท่าทีว่าให้ใช้งานมันให้ดี ๆ นี่คืออะไรกัน... รู้สึกบ่อยมากว่าเป็นการแก้ปัญหาเฉพาะหน้าแบบไม่ค่อยได้คิดอะไรลึกซึ้งนัก

 
ahwjdekf 2025-10-23

พอเห็น AWS เกิดเหตุขัดข้องขึ้นมาก็คิดเลยว่า... ก็อย่างที่คิดจริง ๆ

 
geek12356 2025-06-18

ถ้าเสนอแนวทางปรับปรุงไม่ได้ คุณก็เป็นแค่จูเนียร์

 
woonki 2025-06-17

React Native ก็มีบรรยากาศคล้ายกัน ถ้า React คือ Next.js ฝั่ง React Native ก็คือ Expo เอกสารทางการเองก็แนะนำให้ใช้เฟรมเวิร์ก Expo และวิธีแบบ cli เดิมตอนนี้ก็หาได้ยากแล้ว

 
preserde 2025-06-16

จริงๆ แล้วประเด็นการพัฒนาเว็บฝั่งฟรอนต์เอนด์ที่นี่มีโพสต์ขึ้นมาค่อนข้างน้อยนะ... ถึงอย่างนั้นช่วงหลังก็รู้สึกว่า Next.js ถูกพูดถึงบ่อยเกินไปจนดูไม่ค่อยปกติ
ให้ความรู้สึกประมาณว่า มีปัญหาแค่ Server Component อย่างเดียว นอกนั้นโอเคหมด~

 
ahwjdekf 2025-06-16

ฝั่ง js fe ช่วยล้างระบบนิเวศให้พังยับแล้วรีเซ็ตใหม่สักรอบทีเถอะ แล้วก็อยากให้ทำเฟรมเวิร์กที่รวมพวกการจัดการสถานะอะไรแบบนี้ไว้ให้หมดด้วย ตัวเลือกที่มากเกินไป? นั่นไม่ใช่อิสรภาพหรอก เป็นแค่ความไม่รับผิดชอบเท่านั้น

 
passerby 2025-06-16

การที่เฟรมเวิร์กใช้งานสะดวก กับการที่ React เองเลิกใช้ CRA นั้นดูเหมือนจะเป็นคนละประเด็นกันไปเลย ตอนเห็นเอกสาร React ที่เปลี่ยนไปแล้วจู่ๆ ก็ให้ติดตั้ง Next เลย ผมก็รู้สึกแปลกๆ เหมือนกัน สรุปว่าไม่ได้มีแค่ผมที่รู้สึกแบบนั้น

 
dohyun682 2025-06-16

ฉันนึกว่า Vercel กับทีมพัฒนา React แยกกัน แต่จริงๆ แล้วมีความเกี่ยวข้องกันลึกซึ้งกว่าที่คิด

 
quilt8703 2025-06-16

ผมกำลังทำต้นแบบเกมที่ต้องใช้ React แค่สำหรับการโต้ตอบของ UI การคำนวณ state ภายใน และการแสดง state เท่านั้น เมื่อเทียบกับช่วงไม่กี่ปีก่อนที่ create-react-app กำลังจะถูกถอดออกจากเอกสารทางการหรือไม่ก็ไม่แน่ใจ ผมรู้สึกว่าช่วงหลังการดูเอกสารทางการเพื่อตั้งค่านั้นยุ่งยากขึ้นเล็กน้อย น่าจะมีบทความที่ผมเขียนไว้ตอนนั้นซึ่งเกี่ยวข้องอยู่บ้างนะครับ

 
click 2025-06-16

ดูเหมือนว่าตัวข้อเท็จจริงที่ว่า RSC ถูกพัฒนามาตั้งแต่แรกบนพื้นฐานของ Next.js เองก็ไม่ได้ต่างไปจากเดิมนะครับ
ถ้าเอาเรื่องที่ Next.js ยิ่งนานยิ่งมีอาการสะดุดเมื่อใช้นอกเหนือจากสภาพแวดล้อมของ Vercel มาประกอบกันด้วย
ถึงจะไม่รู้ว่าคนในทีม React คิดกันอย่างไร แต่สุดท้ายมันก็กลายเป็นตรรกะประมาณว่า RSC คืออนาคต! แต่ถ้าจะรัน RSC ก็แนะนำให้ใช้ Next.js แล้ว Next.js ก็ควรใช้บน Vercel แบบนี้ ซึ่งถ้าจะถามว่านี่ไม่เกี่ยวกับผลประโยชน์ของ Vercel เลยเหรอ ก็อืม...
ต่อให้ยืนยันว่าเป็นความเข้าใจผิดแค่ไหน สุดท้ายผู้คนก็เลี่ยงไม่ได้ที่จะรู้สึกว่า Vercel กำลังกลืน React ไปแล้ว และก็ไม่ได้ตอบสนองอย่างรวดเร็วเพื่อคลายความเข้าใจผิดนี้ด้วยไม่ใช่หรือ?

 
spp00 2025-06-17

ตอนนี้แม้แต่เว็บไซต์ทางการของ React ก็ไม่ได้รันอยู่บนเซิร์ฟเวอร์ฝั่ง Meta แต่รันอยู่บน Vercel แทน

 
moderna 2025-06-16

เห็นด้วยครับ

 
click 2025-06-16

ทั้งที่ svelte ซึ่ง Vercel ลงทุนเหมือนกันก็มีขนาดเล็กกว่าเลยไม่แน่ใจว่าเป็นเพราะแบบนั้นหรือเปล่า แต่ผม/ฉันกลับรู้สึกว่าไม่ค่อยมีกรณีที่เกิด vendor lock-in แบบนี้ เลยอยากรู้เหมือนกันว่าความแตกต่างอยู่ตรงไหน

 
spp00 2025-06-17

Svelte เป็นเพียงโปรเจกต์ที่ Vercel ให้การสนับสนุน ไม่ใช่โปรเจกต์ที่ Vercel เป็นผู้นำโดยตรง ตรงกันข้ามกับ Next ที่ Vercel เป็นผู้นำอย่างชัดเจน

แม้แต่ในกรณีของ GitHub repository เอง Next ก็อยู่ภายใต้องค์กรของ Vercel แต่ Svelte ไม่ได้เป็นแบบนั้น

และในส่วนข้อความลิขสิทธิ์ที่ footer ของเว็บไซต์ทางการของ Next.js ก็มีชื่อ Vercel อยู่ แต่ของ Svelte ไม่มี

 
click 2025-06-17

ที่ Vercel จ้าง Rich Harris ก็คงมีลักษณะเป็นการสนับสนุนสินะ

 
spp00 2025-06-17

https://vercel.com/blog/vercel-welcomes-rich-harris-creator-of-svelte ใช่ครับ นี่เป็นการจ้างงานที่มีลักษณะเป็นการสนับสนุนอย่างมาก พูดง่ายๆ คือจ่ายเงินเดือนเพื่อให้เขาทุ่มเทให้กับการพัฒนา Svelte ได้แบบเต็มเวลา ทาง Vercel เองก็ย้ำชัดว่า Svelte ยังคงเป็นโปรเจกต์อิสระอยู่เหมือนเดิม