Kea: Production Ready React State Management

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • kea

    Batteries Included State Management for React

  • redux-toolkit

    The official, opinionated, batteries-included toolset for efficient Redux development

  • I haven't looked at Kea in a while, but I'll toss out some comparisons based on my knowledge of RTK and what I remember about Kea + looking at its docs.

    Kea's main selling point is that it lets you define self-contained chunks of Redux logic. Initially, this is similar to RTK's `createSlice`, in that you're writing a set of "case reducers" + action creators. However, it also build in Redux-Saga as a general-purpose side effects approach, and lets you write "listeners" that respond to dispatched actions.

    Where it particularly differs from RTK is in the amount of abstraction included. RTK tries to stay "visibly Redux" [0], and the abstractions are fairly thin - the focus is on simplifying the typical Redux code patterns, without hiding the fact that you're using Redux. Kea is much more heavily abstracted. It does use a number of Redux terms ("actions", "reducers", etc), but the code that you write looks noticeably different than a "typical" Redux app. Also, RTK focuses on thunks as the default async approach, rather than sagas [1]

    I believe Kea also has some mechanisms for combining together those "logic" chunks in various ways, including doing so dynamically at runtime, and it appears to have some "lifecycle"-type callbacks for handling when those chunks get mounted and unmounted.

    RTK Query [2] [3], on the other hand, is a purpose-built data-fetching abstraction, most similar to React Query and Apollo. Its only purpose is to fetch data from whatever URL endpoints you've defined, handle the loading state, update the cache with the results, and re-render whatever components care about that data.

    I haven't actually used Kea myself, but it does appear to have some meaningful thought and development put into it. I would still recommend RTK as the default approach for anyone wanting to use Redux (and of course I'm biased there), but Kea has some interesting approaches.

    [0] https://blog.isquaredsoftware.com/2019/10/redux-starter-kit-...

    [1] https://blog.isquaredsoftware.com/2020/02/blogged-answers-wh...

    [2] https://rtk-query-docs.netlify.app

    [3] https://github.com/reduxjs/redux-toolkit/releases/tag/v1.6.0...

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • rtk-query

    Discontinued Data fetching and caching addon for Redux Toolkit

  • I haven't looked at Kea in a while, but I'll toss out some comparisons based on my knowledge of RTK and what I remember about Kea + looking at its docs.

    Kea's main selling point is that it lets you define self-contained chunks of Redux logic. Initially, this is similar to RTK's `createSlice`, in that you're writing a set of "case reducers" + action creators. However, it also build in Redux-Saga as a general-purpose side effects approach, and lets you write "listeners" that respond to dispatched actions.

    Where it particularly differs from RTK is in the amount of abstraction included. RTK tries to stay "visibly Redux" [0], and the abstractions are fairly thin - the focus is on simplifying the typical Redux code patterns, without hiding the fact that you're using Redux. Kea is much more heavily abstracted. It does use a number of Redux terms ("actions", "reducers", etc), but the code that you write looks noticeably different than a "typical" Redux app. Also, RTK focuses on thunks as the default async approach, rather than sagas [1]

    I believe Kea also has some mechanisms for combining together those "logic" chunks in various ways, including doing so dynamically at runtime, and it appears to have some "lifecycle"-type callbacks for handling when those chunks get mounted and unmounted.

    RTK Query [2] [3], on the other hand, is a purpose-built data-fetching abstraction, most similar to React Query and Apollo. Its only purpose is to fetch data from whatever URL endpoints you've defined, handle the loading state, update the cache with the results, and re-render whatever components care about that data.

    I haven't actually used Kea myself, but it does appear to have some meaningful thought and development put into it. I would still recommend RTK as the default approach for anyone wanting to use Redux (and of course I'm biased there), but Kea has some interesting approaches.

    [0] https://blog.isquaredsoftware.com/2019/10/redux-starter-kit-...

    [1] https://blog.isquaredsoftware.com/2020/02/blogged-answers-wh...

    [2] https://rtk-query-docs.netlify.app

    [3] https://github.com/reduxjs/redux-toolkit/releases/tag/v1.6.0...

  • react-query

    Discontinued 🤖 Powerful asynchronous state management, server-state utilities and data fetching for TS/JS, React, Solid, Svelte and Vue. [Moved to: https://github.com/TanStack/query]

  • How does RTK query compare with react-query[1]. I replaced my redux stack with react-query and simple usestate/usecontext.

    [1]https://react-query.tanstack.com/

  • PostHog

    🦔 PostHog provides open-source product analytics, session recording, feature flagging and A/B testing that you can self-host.

  • I recall seeing kea throughout the PostHog codebase, if you'd like to see it in action.

    https://github.com/PostHog/posthog/search?q=kea&type=code

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts