Concurrent Rendering in React: Enhancing User Experience

Understanding and implementing React's Concurrent Mode to improve application responsiveness.

0 likes
9 views

Rule Content

{
  "title": "Concurrent Rendering in React: Enhancing User Experience",
  "description": "Understanding and implementing React's Concurrent Mode to improve application responsiveness.",
  "category": "React Cursor Rules",
  "rules": [
    {
      "id": "react-concurrent-mode-enable",
      "description": "Enable Concurrent Mode by using React's `createRoot` API to enhance rendering performance.",
      "severity": "error",
      "pattern": "ReactDOM\\.render\\(",
      "replacement": "const root = ReactDOM.createRoot(document.getElementById('root')); root.render("
    },
    {
      "id": "react-suspense-usage",
      "description": "Use React's `Suspense` component to handle asynchronous operations and display fallback content during data fetching.",
      "severity": "warning",
      "pattern": "<Suspense\\s+fallback=",
      "replacement": "<Suspense fallback={<LoadingSpinner />}>"
    },
    {
      "id": "react-startTransition-usage",
      "description": "Utilize the `startTransition` API to mark non-urgent state updates, ensuring that urgent updates remain responsive.",
      "severity": "warning",
      "pattern": "setState\\(",
      "replacement": "startTransition(() => { setState("
    },
    {
      "id": "react-useDeferredValue-usage",
      "description": "Implement the `useDeferredValue` hook to defer rendering of non-urgent updates, maintaining UI responsiveness.",
      "severity": "warning",
      "pattern": "const\\s+deferredValue\\s*=\\s*useDeferredValue\\(",
      "replacement": "const deferredValue = useDeferredValue(value)"
    },
    {
      "id": "react-useTransition-usage",
      "description": "Use the `useTransition` hook to manage state transitions and provide feedback during non-urgent updates.",
      "severity": "warning",
      "pattern": "const\\s+\\[isPending,\\s*startTransition\\]\\s*=\\s*useTransition\\(\\);",
      "replacement": "const [isPending, startTransition] = useTransition();"
    }
  ]
}