{"id":1371,"date":"2025-02-06T00:00:00","date_gmt":"2025-02-05T23:00:00","guid":{"rendered":"https:\/\/demo.sidekick.be\/itenium\/reduxjs-toolkit\/"},"modified":"2025-11-28T13:31:41","modified_gmt":"2025-11-28T12:31:41","slug":"reduxjs-toolkit","status":"publish","type":"post","link":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/","title":{"rendered":"ReduxJS\/Toolkit"},"content":{"rendered":"<h1 id=\"immer\">Immer<\/h1>\n<p><a href=\"https:\/\/github.com\/immerjs\/immer\" class=\"github\"><img decoding=\"async\" src=\"https:\/\/img.shields.io\/github\/stars\/immerjs\/immer.svg?style=social&amp;label=Star\" \/><\/a><a href=\"https:\/\/github.com\/immerjs\/immer\">immerjs\/immer<\/a>: Create the next immutable state by mutating the current one<\/p>\n<p>Before we actually start with ReduxJS\/Toolkit (RTK), let\u2019s take a step back.<\/p>\n<p>The application I was migrating was using <a href=\"https:\/\/github.com\/immutable-js\/immutable-js\"><code>ImmutableJS<\/code><\/a> because you know, you want all store state to be immutable, your reducers pure, and it was all the rage back then. For me though, the cure turned out to be worse than the disease. You could no longer just do <code>state.someProp<\/code>, you had to do <code>state.get('someProp')<\/code>.<\/p>\n<p>I rather just <code>...spread<\/code> all the way instead.<\/p>\n<p>Immer is the solution the ReduxJS\/Toolkit has adopted and I love how it allows you to write reducers while (almost) not having to think about immutability anymore!<\/p>\n<p><a href=\"\/blog\/javascript\/reduxjs-toolkit-immer\/\">Part 2: Immer<\/a><\/p>\n<h1 id=\"createslice-and-configurestore\">createSlice and configureStore<\/h1>\n<p>Okay, now that we\u2019re Immer experts, let\u2019s look at the two most important exports of the Toolkit: <code>createSlice<\/code> and <code>configureStore<\/code>.<\/p>\n<ul>\n<li><code>createSlice<\/code>: each top level object of your state is typically a slice<\/li>\n<li><code>configureStore<\/code>: abstracts away the pain that was <code>createStore<\/code><\/li>\n<\/ul>\n<p><a href=\"\/blog\/javascript\/reduxjs-toolkit-createslice\/\">Part 3: createSlice and configureStore<\/a><\/p>\n<h1 id=\"createasyncthunk\">createAsyncThunk<\/h1>\n<p>On top of the included redux-thunk package, <code>createAsyncThunk<\/code> is the helper function for all your API call needs.<\/p>\n<p>Coming from \u201clegacy Redux\u201d, this is the last basic piece of ReduxJS\/Toolkit!<\/p>\n<p><a href=\"\/blog\/javascript\/reduxjs-toolkit-createasyncthunk\/\">Part 4: createAsyncThunk<\/a><\/p>\n<h1 id=\"typescript\">TypeScript<\/h1>\n<p>Keeping everything entirely type-safe.<\/p>\n<p><a href=\"\/blog\/javascript\/reduxjs-toolkit-typescript\/\">Part 5: TypeScript<\/a><\/p>\n<h1 id=\"reselect\">Reselect<\/h1>\n<p>More batteries included. You basically only need this when running into <a href=\"\/blog\/javascript\/react-component-profiling\/\">performance issues<\/a> which is like, almost never (if you thought things through). Because JavaScript is just so damn fast these days.<\/p>\n<p>Still, it\u2019s a good idea to just use selectors from the get-go, that way, you will still not be running into re-rendering performance issues after the addition of 6 years of production data.<\/p>\n<p><a href=\"\/blog\/javascript\/reduxjs-toolkit-createselector\/\">Part 6: createSelector<\/a><\/p>\n<h1 id=\"rtk-query\">RTK Query<\/h1>\n<p>A much <strong>higher level of abstraction<\/strong>.<br \/> Okay, we\u2019re getting to the meat of ReduxJS\/Toolkit now. Yes, only now.<\/p>\n<p>When migrating from classes, plain JavaScript, and all that other stuff that was hot back in the medieval ages, you may want to do the whole Immer, slices and asyncThunks stuff; but RTK Query might just be a tad too much in what probably already is a whole re-write.<\/p>\n<p>There is pretty much an easy 1 to 1 conversion path there. When you want to go to all the way and also adopt RTK Query, you\u2019ll have to change (<del>a bit<\/del>) more.<\/p>\n<p>Will it be worth it in the end? Yes. Will it hurt? Also yes.<br \/> So maybe something you want to use for your next NEW React app \ud83d\ude09<\/p>\n<p><!-- TODO: fix this link!! --><!-- [Part 7: createApi](% post_url npm\/reduxjs-toolkit\/2025-02-19-reduxjs-toolkit-createApi %) --><\/p>\n<p>Part 7: createApi (under construction!)<\/p>\n<h1 id=\"not-covered\">Not Covered<\/h1>\n<p>Parts of this series that will probably not be written.<\/p>\n<h2 id=\"other-features\">Other Features<\/h2>\n<p>Since I already spent way too much time on this \ud83d\ude00<\/p>\n<p><strong>Listener Middleware<\/strong>:<\/p>\n<p><a href=\"https:\/\/redux-toolkit.js.org\/api\/createListenerMiddleware\">Listener middleware<\/a><\/p>\n<ul>\n<li><a href=\"https:\/\/redux.js.org\/usage\/side-effects-approaches#why-listeners-for-reactive-logic\">Why Listeners for Reactive Logic<\/a><\/li>\n<\/ul>\n<p><strong>EntityAdapters<\/strong>:<\/p>\n<p>The <a href=\"https:\/\/redux-toolkit.js.org\/api\/createEntityAdapter\">EntityAdapters<\/a> are in fact quite handy. There is an example in <code>moreSlice<\/code> in the accompanying code. If you are doing basic CRUD, this can significantly reduce the boilerplate EVEN MORE.<\/p>\n<pre><code class=\"language-ts\">import { createEntityAdapter, createSlice } from '@reduxjs\/toolkit';\n\nconst usersAdapter = createEntityAdapter({\n  \/\/ In case \"id\" is not the name of the id property\n  selectId: (user: User) =&gt; user.name,\n  \/\/ Sorter for the \"All IDs\" array\n  sortComparer: (a, b) =&gt; a.name.localeCompare(b.name),\n});\n\nexport const usersSlice = createSlice({\n  initialState: usersAdapter.getInitialState(),\n  \/\/ initialState: {\n  \/\/   ids: Id[],\n  \/\/   entities: Record&lt;Id, T&gt;,\n  \/\/ }\n  reducers: {\n    addUser: usersAdapter.addOne,\n    addUsers: usersAdapter.addMany,\n    updateUser: usersAdapter.updateOne,\n    removeUser: usersAdapter.removeOne,\n    \/\/ ... and many more fns ready for use\n  }\n});\n<\/code><\/pre>\n<p><strong>autoBatchEnhancer<\/strong>:<\/p>\n<p><a href=\"https:\/\/redux-toolkit.js.org\/api\/autoBatchEnhancer\">autoBatchEnhancer<\/a> is the built-in (and automatically registered) mechanic to delay low-priority actions.<\/p>\n<h2 id=\"best-practices\">Best Practices<\/h2>\n<p>A blog post that has been sitting on my todo list for the longest time is \u201c<em>Redux: The Good, The Bad and The Boilerplate<\/em>\u201d.<\/p>\n<p>ReduxJS\/Toolkit proves that you don\u2019t need the horror that is your typical NGRX implementation. Your average enterprise backend developer has to do something in the frontend and after the initial pants pissing you end up with a custom selector for EVERYTHING topped with an Effect where the failure action doesn\u2019t do anything (or could be replaced with a single global interceptor) sprinkled with a few Redux no-nos on top.<\/p>\n<p>Yes, I\u2019m quite frustrated by this boilerplate\u00b2\u00b2.<\/p>\n<p>Aside from the rant, that blog post would be something that explains basic Redux followed by what is basically the Redux <a href=\"https:\/\/redux.js.org\/style-guide\/\">Style Guide<\/a>.<\/p>\n<h1>Also in this series<\/h1>\n<ul>\n<li>This Part: ReduxJS\/Toolkit<\/li>\n<li>Part 2: <a href=\"\/javascript\/reduxjs-toolkit-immer\/\">ReduxJS\/Toolkit: Immer<\/a><\/li>\n<li>Part 3: <a href=\"\/javascript\/reduxjs-toolkit-createslice\/\">ReduxJS\/Toolkit: createSlice and configureStore<\/a><\/li>\n<li>Part 4: <a href=\"\/javascript\/reduxjs-toolkit-createasyncthunk\/\">ReduxJS\/Toolkit: createAsyncThunk<\/a><\/li>\n<li>Part 5: <a href=\"\/javascript\/reduxjs-toolkit-typescript\/\">ReduxJS\/Toolkit: TypeScript<\/a><\/li>\n<li>Part 6: <a href=\"\/javascript\/reduxjs-toolkit-createselector\/\">ReduxJS\/Toolkit: createSelector<\/a><\/li>\n<\/ul>\n<h1>Extras<\/h1>\n<p><b>Stuff that came into being during the making of this post<\/b><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/itenium-be\/reduxjs-toolkit\">The &#8216;Mythical Zoos&#8217; example code and the talk pptx<\/a><\/li>\n<\/ul>\n<h1> Package Versions <i class=\"fa fa-info-circle\" style=\"float: right; color: cornflowerblue; font-size: 28px\" title=\"Package versions used for this post and in the accompanying code on Github\"><\/i><\/h1>\n<div><a href=\"https:\/\/github.com\/reduxjs\/redux-toolkit\" class=\"github\"><img decoding=\"async\" src=\"https:\/\/img.shields.io\/github\/stars\/reduxjs\/redux-toolkit.svg?style=social&#038;label=Star\" \/><\/a><a href=\"https:\/\/github.com\/reduxjs\/redux-toolkit\">reduxjs\/redux-toolkit<\/a>: v2.5.0 <\/div>\n<div><a href=\"https:\/\/github.com\/reduxjs\/redux\" class=\"github\"><img decoding=\"async\" src=\"https:\/\/img.shields.io\/github\/stars\/reduxjs\/redux.svg?style=social&#038;label=Star\" \/><\/a><a href=\"https:\/\/github.com\/reduxjs\/redux\">reduxjs\/redux<\/a>: v5.0.1 <\/div>\n<div><a href=\"https:\/\/github.com\/reduxjs\/react-redux\" class=\"github\"><img decoding=\"async\" src=\"https:\/\/img.shields.io\/github\/stars\/reduxjs\/react-redux.svg?style=social&#038;label=Star\" \/><\/a><a href=\"https:\/\/github.com\/reduxjs\/react-redux\">reduxjs\/react-redux<\/a>: v9.2.0 <\/div>\n","protected":false},"excerpt":{"rendered":"<p><a href=\"https:\/\/github.com\/reduxjs\/redux-toolkit\" class=\"github\"><img decoding=\"async\" src=\"https:\/\/img.shields.io\/github\/stars\/reduxjs\/redux-toolkit.svg?style=social&amp;label=Star\" \/><\/a><a href=\"https:\/\/github.com\/reduxjs\/redux-toolkit\">reduxjs\/redux-toolkit<\/a>: The official, opinionated, batteries-included toolset for efficient Redux development<\/p>\n<p class=\"notice--info\">This first post is context and can basically be ignored.<br \/> The remainder of the series are no-nonsense pretty detailed explanations on how to start using ReduxJS\/Toolkit, assuming you\u2019re basically already a \u201clegacy\u201d Redux expert but don\u2019t want to read the gazillion pages that is the <a href=\"https:\/\/redux.js.org\/introduction\/getting-started\">default documentation<\/a>.<\/p>\n<p>We\u2019re 2025 and you start a new app with old, trusted and deprecated <code>create-react-app<\/code>, only to find out that using Redux is also, deprecated.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/itenium-be.github.io\/blog-posts-new\/assets\/blog-images\/reduxjs-toolkit-createStore-deprecated.png\" alt=\"Redux createStore deprecation\" title=\"Redux createStore deprecation\" class=\"img-responsive hide-from-excerpt\" \/><\/p>\n<p>During previous migrations I took a long hard look at the <a href=\"https:\/\/redux-toolkit.js.org\/\">ReduxJS\/Toolkit documentation<\/a> and I was like\u2026 Aint nobody got time for that!<\/p>\n<p>For the last migration, I decided to give it go and well, I can already say with conviction, it is worth the time learning. Reduced boilerplate, batteries included and while the full documentation is still daunting, you can take it step by step.<\/p>\n","protected":false},"author":1,"featured_media":1971,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[3],"tags":[22,6,10],"class_list":["post-1371","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-react","tag-tutorial","tag-war-story"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ReduxJS\/Toolkit - Itenium<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ReduxJS\/Toolkit - Itenium\" \/>\n<meta property=\"og:description\" content=\"reduxjs\/redux-toolkit: The official, opinionated, batteries-included toolset for efficient Redux developmentThis first post is context and can basically be ignored. The remainder of the series are no-nonsense pretty detailed explanations on how to start using ReduxJS\/Toolkit, assuming you\u2019re basically already a \u201clegacy\u201d Redux expert but don\u2019t want to read the gazillion pages that is the default documentation.We\u2019re 2025 and you start a new app with old, trusted and deprecated create-react-app, only to find out that using Redux is also, deprecated.During previous migrations I took a long hard look at the ReduxJS\/Toolkit documentation and I was like\u2026 Aint nobody got time for that!For the last migration, I decided to give it go and well, I can already say with conviction, it is worth the time learning. Reduced boilerplate, batteries included and while the full documentation is still daunting, you can take it step by step.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/\" \/>\n<meta property=\"og:site_name\" content=\"Itenium\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-05T23:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-28T12:31:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/reduxjs-toolkit.png\" \/>\n\t<meta property=\"og:image:width\" content=\"360\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Usdevelop\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Usdevelop\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/\",\"url\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/\",\"name\":\"ReduxJS\/Toolkit - Itenium\",\"isPartOf\":{\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/reduxjs-toolkit.png\",\"datePublished\":\"2025-02-05T23:00:00+00:00\",\"dateModified\":\"2025-11-28T12:31:41+00:00\",\"author\":{\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/6ab401ce01e858184ee4a8667fe0f022\"},\"breadcrumb\":{\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/#primaryimage\",\"url\":\"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/reduxjs-toolkit.png\",\"contentUrl\":\"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/reduxjs-toolkit.png\",\"width\":360,\"height\":300,\"caption\":\"A powerful glowing central hub surrounded by multiple orbiting data streams, symbolizing a single source of truth in application state management. The design is sleek, with futuristic UI elements and a sci-fi aesthetic\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/demo.sidekick.be\/itenium\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ReduxJS\/Toolkit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/#website\",\"url\":\"https:\/\/demo.sidekick.be\/itenium\/\",\"name\":\"Itenium\",\"description\":\"We build software. We build careers.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/demo.sidekick.be\/itenium\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/6ab401ce01e858184ee4a8667fe0f022\",\"name\":\"Usdevelop\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cc8cf9b9e9d5bbe7e8d247907cc9ac8457bbfa2854b52eaddf6529adfe88ceab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cc8cf9b9e9d5bbe7e8d247907cc9ac8457bbfa2854b52eaddf6529adfe88ceab?s=96&d=mm&r=g\",\"caption\":\"Usdevelop\"},\"sameAs\":[\"https:\/\/demo.sidekick.be\/itenium\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ReduxJS\/Toolkit - Itenium","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"ReduxJS\/Toolkit - Itenium","og_description":"reduxjs\/redux-toolkit: The official, opinionated, batteries-included toolset for efficient Redux developmentThis first post is context and can basically be ignored. The remainder of the series are no-nonsense pretty detailed explanations on how to start using ReduxJS\/Toolkit, assuming you\u2019re basically already a \u201clegacy\u201d Redux expert but don\u2019t want to read the gazillion pages that is the default documentation.We\u2019re 2025 and you start a new app with old, trusted and deprecated create-react-app, only to find out that using Redux is also, deprecated.During previous migrations I took a long hard look at the ReduxJS\/Toolkit documentation and I was like\u2026 Aint nobody got time for that!For the last migration, I decided to give it go and well, I can already say with conviction, it is worth the time learning. Reduced boilerplate, batteries included and while the full documentation is still daunting, you can take it step by step.","og_url":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/","og_site_name":"Itenium","article_published_time":"2025-02-05T23:00:00+00:00","article_modified_time":"2025-11-28T12:31:41+00:00","og_image":[{"width":360,"height":300,"url":"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/reduxjs-toolkit.png","type":"image\/png"}],"author":"Usdevelop","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Usdevelop","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/","url":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/","name":"ReduxJS\/Toolkit - Itenium","isPartOf":{"@id":"https:\/\/demo.sidekick.be\/itenium\/#website"},"primaryImageOfPage":{"@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/#primaryimage"},"image":{"@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/#primaryimage"},"thumbnailUrl":"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/reduxjs-toolkit.png","datePublished":"2025-02-05T23:00:00+00:00","dateModified":"2025-11-28T12:31:41+00:00","author":{"@id":"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/6ab401ce01e858184ee4a8667fe0f022"},"breadcrumb":{"@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/#primaryimage","url":"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/reduxjs-toolkit.png","contentUrl":"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/reduxjs-toolkit.png","width":360,"height":300,"caption":"A powerful glowing central hub surrounded by multiple orbiting data streams, symbolizing a single source of truth in application state management. The design is sleek, with futuristic UI elements and a sci-fi aesthetic"},{"@type":"BreadcrumbList","@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/reduxjs-toolkit\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/demo.sidekick.be\/itenium\/"},{"@type":"ListItem","position":2,"name":"ReduxJS\/Toolkit"}]},{"@type":"WebSite","@id":"https:\/\/demo.sidekick.be\/itenium\/#website","url":"https:\/\/demo.sidekick.be\/itenium\/","name":"Itenium","description":"We build software. We build careers.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/demo.sidekick.be\/itenium\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/6ab401ce01e858184ee4a8667fe0f022","name":"Usdevelop","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cc8cf9b9e9d5bbe7e8d247907cc9ac8457bbfa2854b52eaddf6529adfe88ceab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cc8cf9b9e9d5bbe7e8d247907cc9ac8457bbfa2854b52eaddf6529adfe88ceab?s=96&d=mm&r=g","caption":"Usdevelop"},"sameAs":["https:\/\/demo.sidekick.be\/itenium"]}]}},"_links":{"self":[{"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/posts\/1371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/comments?post=1371"}],"version-history":[{"count":3,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/posts\/1371\/revisions"}],"predecessor-version":[{"id":2254,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/posts\/1371\/revisions\/2254"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/media\/1971"}],"wp:attachment":[{"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/media?parent=1371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/categories?post=1371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/tags?post=1371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}