react18-batching-patterns

โดย github

ให้รูปแบบที่แม่นยำสำหรับการวินิจฉัยและแก้ไขปัญหาการรวมกลุ่มอัตโนมัติที่ถดถอยในคอมโพเนนต์คลาสของ React 18 ใช้ทักษะนี้เมื่อใดก็ตามที่คอมโพเนนต์คลาสมี…

npx skills add https://github.com/github/awesome-copilot --skill react18-batching-patterns

React 18 Automatic Batching Patterns

Reference for diagnosing and fixing the most dangerous silent breaking change in React 18 for class-component codebases.

The Core Change

Location of setStateReact 17React 18
React event handlerBatchedBatched (same)
setTimeoutImmediate re-renderBatched
Promise .then() / .catch()Immediate re-renderBatched
async/awaitImmediate re-renderBatched
Native addEventListener callbackImmediate re-renderBatched

Batched means: all setState calls within that execution context flush together in a single re-render at the end. No intermediate renders occur.

Quick Diagnosis

Read every async class method. Ask: does any code after an await read this.state to make a decision?

Code reads this.state after await?
  YES → Category A (silent state-read bug)
  NO, but intermediate render must be visible to user?
    YES → Category C (flushSync needed)
    NO → Category B (refactor, no flushSync)

For the full pattern for each category, read:

  • references/batching-categories.md - Category A, B, C with full before/after code
  • references/flushSync-guide.md - when to use flushSync, when NOT to, import syntax

The flushSync Rule

Use flushSync sparingly. It forces a synchronous re-render, bypassing React 18's concurrent scheduler. Overusing it negates the performance benefits of React 18.

Only use flushSync when:

  • The user must see an intermediate UI state before an async operation begins
  • A spinner/loading state must render before a fetch starts
  • Sequential UI steps have distinct visible states (progress wizard, multi-step flow)

In most cases, the fix is a refactor - restructuring the code to not read this.state after await. Read references/batching-categories.md for the correct approach per category.

Skills เพิ่มเติมจาก github

console-rendering
github
คำแนะนำสำหรับการใช้ระบบเรนเดอร์คอนโซลที่ใช้ struct tag ใน Go
official
github-pr-query
github
สอบถาม Pull Request บน GitHub อย่างมีประสิทธิภาพ พร้อมรองรับการกรองด้วยอาร์กิวเมนต์ jq
official
jqschema
github
ยูทิลิตี้ค้นพบสคีมา JSON ที่แยกข้อมูลโครงสร้างและประเภทจากข้อมูล JSON
official
gh-agent-session
github
ส่วนขยายเซสชันเอเจนต์ CLI ของ GitHub
official
gh-agent-task
github
ส่วนขยายงานตัวแทน GitHub CLI
official
github-copilot-agent-tips-and-tricks
github
เคล็ดลับและเทคนิคสำหรับการทำงานกับ Pull Requests ของ GitHub Copilot Agent
official
rust-coding-skill
github
Use this skill whenever editing `*.rs` files in the `rust/` SDK in order to write idiomatic, efficient, well-structured Rust code
official
ai-ready
github
ทำให้ repo ใดๆ พร้อมสำหรับ AI — วิเคราะห์โค้ดเบสของคุณและสร้าง AGENTS.md, copilot-instructions.md, ขั้นตอนการทำงาน CI, เทมเพลต issue และอื่นๆ ขุดรีวิว PR ของคุณ…
official