One data grid for JavaScript, React, Vue & Angular. Sorting, filtering, virtualization, pinning, and CSV export included. Early access $199 $349 → [Get it now]

How to use Zustand in React

Zustand is a minimal, hook-based state management library for React that provides global state without Redux’s actions, reducers, and providers — just a store and a hook. As the creator of CoreUI, I use Zustand when an application needs shared state across many components but the full Redux setup would be overkill. Zustand stores are plain JavaScript objects with state and actions defined together, and any component can subscribe to exactly the slice of state it needs. The setup is a single create() call — no Provider, no boilerplate.

Read More…

How to use Redux Toolkit in React

Redux Toolkit’s RTK Query is the most powerful data fetching and caching solution for Redux applications, automating loading states, error handling, and cache invalidation that you’d otherwise write by hand. As the creator of CoreUI, I use RTK Query in complex React dashboards where multiple components fetch the same data and need to stay synchronized without redundant API calls. Define your API once with createApi, and RTK Query generates typed hooks, manages caching, handles request deduplication, and automatically re-fetches stale data. This eliminates the need to write fetchUsers.pending, fetchUsers.fulfilled, and fetchUsers.rejected reducers for every endpoint.

Read More…

CoreUI PRO for React v5.24.1 - Maintenance Update

CoreUI PRO for React v5.24.1 - Maintenance Update

We are pleased to announce the release of CoreUI PRO for React v5.24.1. This maintenance release includes bug fixes and improvements while maintaining all functionality from v5.24.0, including the powerful Calendar component with custom cell rendering and quarter selection, plus Chip and Chip Input components.

Read More…

How to optimize large lists in React

Rendering thousands of DOM nodes in a React list causes severe performance degradation — slow initial render, janky scrolling, and high memory usage. As the creator of CoreUI, I’ve optimized data-heavy tables and lists in CoreUI dashboards that display thousands of rows, and virtualization is the single most impactful technique. The approach with react-window renders only the rows visible in the viewport, keeping the DOM node count constant regardless of data size. A list with 10,000 items renders the same ~20 DOM nodes as a list with 10 items when virtualized.

Read More…

How to fix stale closures in React hooks

Stale closures are one of the most confusing bugs in React hooks — a callback or useEffect captures a variable’s value at the time it was created, then the variable updates but the closure still uses the old value. As the creator of CoreUI, I’ve debugged dozens of stale closure bugs in complex React components and the fix always comes down to dependency arrays and refs. The problem occurs because JavaScript closures close over variables by reference at the time of creation, and React components close over state at each render. Understanding when to add dependencies to arrays and when to use a ref solves the vast majority of stale closure bugs.

Read More…

How to use Redux in React

Redux with Redux Toolkit is the standard solution for complex global state in React applications — when Context API becomes too verbose or performance-intensive, Redux provides predictable state updates with excellent DevTools support. As the creator of CoreUI, I use Redux Toolkit (RTK) in large-scale React dashboards where multiple features share state and async data fetching needs centralized management. Redux Toolkit eliminates the boilerplate of classic Redux — no separate action creators, no switch statements, just slices with immer-powered reducers. Start with the simplest state management that works; reach for Redux when you have genuinely complex cross-component state.

Read More…

How to use Apollo Client in React

Apollo Client is the most powerful GraphQL client for React, providing intelligent caching, optimistic updates, subscriptions, and error handling out of the box. As the creator of CoreUI, I use Apollo Client in data-intensive React dashboards where normalized caching significantly reduces redundant API calls and keeps the UI in sync across components. Beyond useQuery and useMutation, Apollo’s real power lies in its normalized cache — when any component fetches a user, every other component showing that user updates automatically. Understanding the cache is what separates basic Apollo usage from production-grade Apollo usage.

Read More…

How to use GraphQL in React

Using GraphQL in React lets you request exactly the data your components need — no over-fetching, no under-fetching — with a single flexible endpoint. As the creator of CoreUI, I’ve used GraphQL in production React dashboards where the ability to query multiple data sources in one request dramatically reduced load times compared to multiple REST calls. For simple use cases, GraphQL works with a plain fetch call. For production apps with caching, optimistic updates, and subscriptions, Apollo Client is the standard choice. Both approaches are covered here so you can choose what fits your project.

Read More…

How to use WebSockets in React

WebSockets enable real-time bidirectional communication between your React app and the server — perfect for chat applications, live dashboards, notifications, and collaborative features. As the creator of CoreUI, I’ve built real-time dashboards that display live data streams from WebSocket servers, and the key is encapsulating all WebSocket logic in a custom hook. The hook manages connection lifecycle, reconnection logic, and cleanup so your components stay simple. Without cleanup, WebSocket connections outlive the component and continue consuming resources.

Read More…

How to integrate PayPal in React

Integrating PayPal in React is straightforward with the official @paypal/react-paypal-js package, which renders PayPal’s smart payment buttons and handles the payment flow without requiring you to build custom UI. As the creator of CoreUI, I’ve implemented PayPal payments in several e-commerce applications alongside Stripe to maximize payment method coverage. The correct approach creates the PayPal order on your server to keep credentials secure, then confirms the capture server-side as well. Never process order creation or capture entirely on the frontend — always validate and confirm on your server.

Read More…
Subscribe to our newsletter
Get early information about new products, product updates and blog posts.