6 คะแนน โดย GN⁺ 2025-09-28 | 5 ความคิดเห็น | แชร์ทาง WhatsApp
  • Auth.js (ชื่อเดิม: NextAuth.js) ตอนนี้ได้รับการดูแลและบำรุงรักษาโดย ทีม Better Auth แล้ว
  • Auth.js เป็น ไลบรารีโอเพนซอร์สด้านการยืนยันตัวตน ที่มีการใช้งานแพร่หลายที่สุดในระบบนิเวศ JavaScript และถูกใช้โดยเว็บไซต์ชื่อดังจำนวนมาก
  • ก่อนหน้านี้ การสร้างระบบยืนยันตัวตนและการจัดการเซสชันด้วยตนเองเป็นเรื่องยาก และยังมีความไม่สะดวกจากการต้องพัฒนาส่วนพื้นฐานเดิมซ้ำ ๆ ในทุกโปรเจกต์
  • เมื่อ ทีม Better Auth มองเห็นข้อจำกัดของ Auth.js และมีวิสัยทัศน์ร่วมกันต่ออนาคต ทั้งสองโปรเจกต์จึงวางแผนรวมกันเพื่อพัฒนาระบบนิเวศให้ก้าวหน้ายิ่งขึ้น
  • ผู้ใช้เดิมยังคงได้รับการบำรุงรักษาต่อไป เช่น security patches ส่วนโปรเจกต์ใหม่แนะนำให้ใช้ Better Auth

บทนำและประกาศ

  • Auth.js (เดิมรู้จักกันในชื่อ NextAuth.js) ตอนนี้ได้รับการดูแลอย่างเป็นทางการโดย ทีม Better Auth
  • Auth.js เป็นหนึ่งใน ไลบรารีโอเพนซอร์สด้านการยืนยันตัวตน ที่เป็นที่รู้จักมากที่สุดในระบบนิเวศ JavaScript และถูกใช้งานอยู่แล้วในหลายบริการ เช่น ChatGPT, Google Labs, Cal.com เป็นต้น

บทบาทเดิมและข้อจำกัดของ Auth.js

  • ก่อนจะถูกรวมเข้ากับ Better Auth นั้น Auth.js ช่วยให้นักพัฒนาสามารถมีฟีเจอร์ยืนยันตัวตนได้โดยไม่ต้องเสียเวลานานกับการผสาน OAuth หรือ การจัดการเซสชัน
  • อย่างไรก็ตาม เมื่อเว็บแอปพลิเคชันมีความซับซ้อนขึ้นและความต้องการด้านการยืนยันตัวตนมีความหลากหลายมากขึ้น ข้อจำกัดต่าง ๆ เช่น การพัฒนาฟังก์ชันพื้นฐานซ้ำ ๆ หรือการขาดความสามารถในการขยายระบบก็เริ่มเด่นชัดขึ้น
  • ทีมเดิมเองก็ตระหนักถึงประเด็นเหล่านี้ แต่ด้วยหลายเหตุผลจึงยังไม่สามารถดำเนินการปรับปรุงเชิงโครงสร้างได้

เบื้องหลังการรวมกับ Better Auth

  • เป้าหมายของ Better Auth คือการเสริมความเป็นเจ้าของระบบยืนยันตัวตนในบริการหลากหลายประเภท และวิสัยทัศน์นี้ก็ใกล้เคียงกับทีม Auth.js เช่นกัน
  • หลังการหารือภายใน จึงตระหนักได้ว่าการรวมทั้งสองโปรเจกต์เป็นทางเลือกที่ดีที่สุด
  • ปัจจุบัน Auth.js มีความสำคัญต่อแอปพลิเคชัน บริษัท และนักพัฒนาจำนวนมาก จึงให้คำมั่นว่าจะดูแลต่อเนื่องทั้ง security patches และการตอบสนองต่อปัญหาเร่งด่วน

คำแนะนำและกลยุทธ์การพัฒนาระบบนิเวศ

  • โปรเจกต์ที่ใช้งาน Auth.js (NextAuth.js) อยู่แล้วสามารถใช้งานต่อได้โดยไม่มีปัญหา
  • สำหรับโปรเจกต์ใหม่ หากไม่ได้ต้องการฟีเจอร์เฉพาะบางอย่าง (โดยเฉพาะ การจัดการ stateless session โดยไม่ใช้ฐานข้อมูล) แนะนำให้ใช้ Better Auth
  • ฟีเจอร์เหล่านี้ก็มีแผนจะถูกเพิ่มเข้าไปในโรดแมปของ Better Auth ด้วยเช่นกัน โดยแทนที่จะพัฒนาซ้ำซ้อน ระบบนิเวศจะถูกรวมเป็นหนึ่งเดียวเพื่อมุ่งไปในทิศทางที่ก้าวหน้ากว่าเดิม

การย้ายระบบและคำขอบคุณต่อชุมชน

  • สำหรับทีมที่กำลังพิจารณาการย้ายระบบ จะมีการจัดเตรียม คู่มือ ให้ และมีแผนจะเพิ่มเอกสารและข้อมูลเพิ่มเติมในเร็ว ๆ นี้
  • ขอขอบคุณอย่างจริงใจต่อชุมชนและผู้มีส่วนร่วมหลักที่ช่วยพัฒนา Auth.js มาจนถึงวันนี้ (โดยเฉพาะ Balázs, Thang Vu, Nico Domino, Lluis Agusti, Falco Winkler)
  • ย้ำว่า จุดเริ่มต้นของ Better Auth มาจาก Auth.js และการรวมกันของทั้งสองโปรเจกต์จะช่วยให้ระบบนิเวศด้านการยืนยันตัวตนก้าวไปได้ไกลยิ่งขึ้น
  • เป้าหมายหลักยังคงเดิมคือ “ความเป็นเจ้าของการยืนยันตัวตนเป็นของนักพัฒนาเอง”

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

 
shakespeares 2025-10-05

ฝั่ง Next.js เปลี่ยนแปลงหนักมากจนรู้สึกเหนื่อยล้าพอสมควร..

 
ahwjdekf 2025-09-28

ถ้าไม่เสถียรขนาดนี้ แทนที่จะใช้มันไปเลย ผมว่าควรใช้พวกอย่าง clerk ไปก่อน แล้วถ้าผู้ใช้เริ่มเยอะขึ้น ค่อยกลับมาคิดเรื่องระบบยืนยันตัวตนกันแบบจริงจังตอนนั้นน่าจะดีกว่า

 
ahwjdekf 2025-09-28

เมื่อไม่นานมานี้ผมเพิ่งลองทำอะไรบางอย่างด้วย auth.js ไปเอง แต่แป๊บเดียวก็มีอะไรเปลี่ยนอีกแล้ว ฝั่งเว็บนี่ชวนให้ลำบากใจและเหนื่อยมากจริง ๆ

แล้วผมก็เคยลองส่ง PR เพราะเจอว่ามีทั้งเอกสารและตัวอย่างที่ผิด แต่กลับปิดไปแบบเหมือนไม่มีปัญหาอะไร เลยงงมากเหมือนกัน ดูเหมือนภายในทีมตอนนั้นน่าจะอยู่ในสภาพที่บริหารจัดการกันไม่ค่อยลงตัว

 
GN⁺ 2025-09-28
ความคิดเห็นจาก Hacker News
  • Better Auth ระดมทุนได้ 5 ล้านดอลลาร์ ทำให้รู้สึกน่าเสียดายที่โปรเจกต์ฟรีล้วน ๆ ถูกดูดเข้าไปอยู่ในกิจการเชิงพาณิชย์

    • สถานการณ์ของ Auth.js และ NextAuth.js ไม่ได้ดูสุขภาพดีนัก การพัฒนา NextAuth.js v5 เริ่มตั้งแต่เดือนพฤษภาคม 2023 แต่ก็ยังคงอยู่ในสถานะเบต้า เปลี่ยนชื่อเป็น Auth.js ในเดือนสิงหาคม 2023 และออก v5.0.0-beta.0 ในเดือนตุลาคม ส่วน Balázs Orbán ผู้มีส่วนร่วมหลักได้ออกจากทีมในเดือนมกราคม 2025 สุดท้ายจนถึงตอนนี้ก็ยังค้างอยู่ในเบต้าโดยไม่มีรุ่นเสถียร
      ดู ลำดับการเปลี่ยนแปลง, การสนทนา, ประวัติการเปลี่ยนชื่อ, การออกเบต้า, ประวัติคอมมิต, ประกาศบน X (Twitter)
    • เข้าใจความกังวลแบบนี้ แต่ผมกลับไม่คิดว่า Auth.js เป็น "ของฟรีจริง ๆ" เสียทีเดียว เพราะได้รับการสนับสนุนจากหลายบริษัทอยู่แล้ว (ถึงขั้นที่ Clerk ลงโฆษณาไว้ในเว็บไซต์เอกสาร) ส่วน Better Auth เริ่มต้นจากโปรเจกต์โอเพนซอร์สที่ไม่ได้มีเป้าหมายเชิงพาณิชย์ แต่เมื่ออยากให้บริษัทต่าง ๆ เป็นเจ้าของระบบยืนยันตัวตนได้ง่ายขึ้น การขยายไปสู่เชิงพาณิชย์ก็เกิดขึ้นอย่างเป็นธรรมชาติ เหตุผลที่รับช่วง Auth.js ต่อก็เพราะทีมเดิมตัดสินใจถอยออกจากโปรเจกต์ เพื่อไม่ให้มันถูกปล่อยทิ้งไว้ เพราะก่อนหน้านี้ก็มีกรณีอย่าง Lucia ที่โอเพนซอร์สด้าน auth สูญเสียความน่าเชื่อถือไปแล้ว และอยากหลีกเลี่ยงไม่ให้เกิดสถานการณ์ที่ถูกปล่อยร้างจนความเชื่อมั่นพังทลาย
    • Auth.js ฟรีทั้งหมดก็จริง แต่ในทางปฏิบัติเหมือนถูกปล่อยทิ้งแล้ว
    • ผมทำงานที่ FusionAuth และเคยสนับสนุน NextAuth มาก่อน ผู้คนต้องหาเลี้ยงชีพ และ NextAuth เองก็เป็นโปรเจกต์ที่ได้รับการหนุนหลังเชิงพาณิชย์จากสปอนเซอร์เหมือนกัน จริง ๆ ผมไม่รู้ชัดว่ามีเงินจากการสนับสนุนมากแค่ไหน แต่คิดว่าควรดูความเห็นต่าง ๆ ที่พูดถึงอิทธิพลของ Clerk และ Vercel ต่อโปรเจกต์ไว้ด้วย ผมเขียนเรื่องความยากของโมเดลธุรกิจโอเพนซอร์สไว้ละเอียดกว่านี้ในบล็อกส่วนตัว
    • อย่างน้อยในกรณีนี้ เงินทุนที่ระดมได้ก็ดูเหมือนจะนำไปใช้พัฒนาโซลูชัน SaaS ด้านการยืนยันตัวตนในอนาคตที่มีฐานมาจากโปรเจกต์โอเพนซอร์ส
  • ได้ยินมาว่า Auth.js ถูกใช้งานจริงใน ChatGPT, Google Labs, Cal.com ฯลฯ แต่ผมไม่เคยเห็นว่า OpenAI ย้ายระบบยืนยันตัวตนออกจาก Auth0 เลย เลยสงสัยว่าเกิดอะไรขึ้นหรือเปล่า

    • ไม่ได้รู้ข้อมูลวงในอะไรเป็นพิเศษ แต่จากประสบการณ์ของผม เคยพยายามย้ายไปใช้ Auth0 แล้วผลลัพธ์ไม่ค่อยดี ถ้าหลุดจากมาตรฐานไปนิดเดียว การรองรับจะตกลงมาก และถึงแม้มันจะทำงานได้ปกติก็ยังไม่ค่อยน่าประทับใจเท่าไร ถึงอย่างนั้นถ้าจำเป็นต้องเอาระบบ auth ไปฝากไว้กับ SaaS ภายนอก Auth0 ก็อาจยังเป็นตัวเลือกที่ดีกว่าเจ้าอื่น
    • อาจพอเดากรณีจริงของ OpenAI ได้บางส่วนจาก เคสสตัดดี้ทางการของ Ory
    • กำลังชั่งใจระหว่าง AWS Cognito กับ Auth0 อยู่ เลยอยากฟังประสบการณ์จากหลาย ๆ คนว่าระหว่าง Cognito กับ Auth0 ใช้อันไหนแล้วรู้สึกดีกว่ากันจริง
    • ดูเหมือน OpenAI จะย้าย SSO/SAML ไปที่ WorkOS และใช้โอเพนซอร์สที่ฟอร์กมาเองสำหรับการยืนยันตัวตนของผู้ใช้ทั่วไป
    • Ory เองก็อ้างว่าระบบของตนถูกใช้ที่ OpenAI เหมือนกัน เพราะงั้นน่าจะเป็นไปได้ว่า OpenAI สร้างโซลูชันขึ้นมาโดยผสมบริการของ Ory เข้ากับ Better Auth เป็นต้น
  • เฟรมเวิร์กนี้ทำให้การจัดการเรื่อง auth ง่ายจนแทบไม่ต้องคิดอะไรเลย ตั้งค่าก็ง่าย และวิธีใช้งานก็สอดคล้องกันในแต่ละเฟรมเวิร์ก ก็ดีใจที่ข้อดีแบบนี้น่าจะยังคงอยู่ต่อไป

  • ตอนมีคนถามว่า Better Auth ‘ดีกว่า auth.js ไหม?’ ผมแวบแรกก็คิดว่า "ก็ดีกว่า auth.js แหละ" แล้วสุดท้ายมันก็กลายเป็นแบบนั้นจริง ๆ

  • อยากให้ในภาษา Go มีโซลูชัน auth ที่ใช้ง่ายแบบนี้บ้าง

    • ผมกำลังทำโซลูชันเองที่รองรับทั้ง Go, JS และ Rust (ใช้ server-side WASM) และมีแผนจะรองรับ Python ต่อไป แม้จะยังไม่สมบูรณ์หรือฟีเจอร์ครบเท่า BetterAuth/OpenAuth แต่ในแง่ประสบการณ์นักพัฒนา (DX) ตอนต้องเพิ่ม auth ให้โปรเจกต์ถือว่าน่าพอใจมาก
      decent-auth GitHub
    • เห็นด้วยแบบสุด ๆ ผมก็รู้ว่า golang ไม่ได้ไม่มีโซลูชัน auth เลย (อย่างเช่น FusionAuth) แต่สิ่งที่น่าจะอยากได้กันจริง ๆ คือไลบรารีที่ใช้ง่ายระดับเฟรมเวิร์กและฝังเข้ากับแอปโดยตรง แบบ devise ของ Rails หรือโมเดลผู้ใช้ของ Django ใน เธรด reddit ของหัวข้อนี้ก็มีการแนะนำทางเลือกหลายตัวไว้เหมือนกัน
    • authelia/authelia GitHub ก็น่าลอง
    • ory/kratos GitHub ก็มีแววเหมือนกัน
  • ผมเคยใช้ทั้งสองตัวแล้ว และโดยส่วนตัวก็พอใจทั้งคู่ ดีใจที่สองโปรเจกต์นี้ได้มาร่วมมือกัน

    • แต่ในความเป็นจริง มันก็แค่ Better Auth ทำเหมือนว่าจะดูแล Auth.js ต่อ แล้วค่อย ๆ พาคนไป Better Auth เท่านั้นเอง
  • ตอนนี้กำลังใช้ Clerk อยู่และดูโอเคดี จะมีข่าวลืออะไรก็ช่าง แต่ผมอยากโฟกัสกับการพัฒนาก่อน

    • ผมยังไม่เคยลอง Clerk แต่ถ้าการจ่ายเงินช่วยให้การพัฒนาง่ายขึ้นจริง ก็น่าจะเหมาะกับบางโปรเจกต์นะ อ้างอิงไว้ด้วยว่า Better Auth ใช้เวลาไม่ถึงชั่วโมงในการตั้งค่าเสร็จแม้แต่กับรีโปแบบ bare-bones ของผม
  • ในฐานะนักพัฒนา ผมรู้สึกว่า Better Auth ดีกว่าเฉย ๆ เพราะมันพาความเรียบง่ายไปสุดทาง

  • ข่าวนี้ทำให้รู้สึกน่าเสียดาย เพราะมันดูเหมือนว่าการพัฒนาต่อของ Auth.js จะหยุดลงโดยพฤตินัย ผมชอบที่ Auth.js ใช้งานเป็นฟังก์ชันเรียบง่ายและเอาไปใช้หลังบ้านของ GraphQL API ได้ลงตัว แต่ Better Auth มีชนิดข้อมูลที่ต่างกันไปตามแต่ละปลั๊กอิน จนทั่วไปเกินไปคล้าย TypeScript any อีกทั้งความรับผิดชอบเรื่องการออกแบบสคีมาฐานข้อมูลและการทำ migration ก็ถูกโยนไปให้ผู้พัฒนาปลั๊กอินด้วย สำหรับไลบรารี auth ผมว่ามันมากเกินไปและไม่ชอบโครงสร้างแบบนี้ ถึงจะทำ adapter เองได้ แต่แม้แต่อินเทอร์เฟซของมันก็ยังทั่วไปเกินไปจนต้องไปทำตัวรันคิวรีแบบ SQL-like ตามอำเภอใจเอง ทำให้เสียอำนาจควบคุมสคีมาโดยตรงไป ส่วน migration ก็รับมาเป็นแค่สตริงของโค้ดแล้ว eval เลย ทำให้ควบคุมด้านความปลอดภัยได้ยาก
    ก่อนหน้านี้ผมพยายามไม่อคติกับ Better Auth แม้บรรยากาศรอบตัวจะดูโฟกัสที่ความเป็นนักพัฒนาที่เรียนรู้ด้วยตัวเองหรือยังอายุน้อย มากกว่าความแปลกใหม่ทางเทคนิค แต่ดูเหมือนความกังวลแบบนี้ก็ไม่ใช่ว่าจะผิดเสียทีเดียว ถึงอย่างนั้นมันก็ยังดีกว่าการที่ Auth.js ถูกปล่อยทิ้ง และก็สะท้อนให้เห็นว่าสถานะของไลบรารี auth โอเพนซอร์สใน ecosystem ของ JS นั้นน่าเสียดายแค่ไหน
    ดู ตัวอย่างการทำ adapter, บทความ TechCrunch ที่แนะนำตัวนักพัฒนา

      1. เราจะปิด Auth.js อย่างสมบูรณ์ก็ต่อเมื่อมั่นใจว่าผู้ใช้เดิมสามารถย้ายไป Better Auth ได้โดยไม่มีปัญหาเท่านั้น (ซึ่งหมายความว่ายังอีกไกล) ดังนั้นจึงมีโอกาสสูงว่าจะไม่เกิดสถานการณ์ที่ทุกคนถูกบังคับให้ย้าย
      2. ความสามารถเพิ่มเติมผ่านปลั๊กอินเป็นสิ่งที่ NextAuth ไม่มี ถ้าใช้แค่ core library ก็ยังได้ฟีเจอร์เกือบทั้งหมดของ NextAuth และปลั๊กอินส่วนใหญ่เราก็เป็นคนทำเอง หากต้องการก็เขียนปลั๊กอินเองได้ หรือคัดลอก/แก้ไข หรือจะใช้เฉพาะปลั๊กอินที่เราจัดให้ก็ได้ เราจัดการ DB ให้ได้ คุณจึงเป็นเจ้าของระบบ auth ได้โดยไม่ต้องเขียนลอจิกเอง
      3. Auth.js อยู่ในสภาพไม่ค่อยเคลื่อนไหวมานานแล้ว การยุติแบบฉับพลันจะทำลายความเชื่อมั่นใน ecosystem ของโอเพนซอร์สด้าน auth อย่างหนัก เราจึงนำมันเข้ามาไว้กับ Better Auth เพื่อป้องกันไม่ให้เกิดแบบนั้น โดยตระหนักถึงปัญหาความเชื่อมั่นที่เคยเกิดขึ้นตอน Lucia Auth มาแล้ว
  • หลังประกาศ Better Auth ได้เพียง 3 ชั่วโมง ก็ลบประกาศที่เกี่ยวกับ Vercel ออกจาก GitHub commit แล้ว