<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: old big</title>
    <description>The latest articles on DEV Community by old big (@old_big_06ee00ac2bb68f727).</description>
    <link>https://dev.to/old_big_06ee00ac2bb68f727</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3462691%2F7977edbb-f0ad-4558-ba71-648b8704f1fd.png</url>
      <title>DEV Community: old big</title>
      <link>https://dev.to/old_big_06ee00ac2bb68f727</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/old_big_06ee00ac2bb68f727"/>
    <language>en</language>
    <item>
      <title>I Built a Tool to Monetize Any App in 5 Minutes (And You Can Too)</title>
      <dc:creator>old big</dc:creator>
      <pubDate>Tue, 03 Mar 2026 00:14:28 +0000</pubDate>
      <link>https://dev.to/old_big_06ee00ac2bb68f727/i-built-a-tool-to-monetize-any-app-in-5-minutes-and-you-can-too-3bif</link>
      <guid>https://dev.to/old_big_06ee00ac2bb68f727/i-built-a-tool-to-monetize-any-app-in-5-minutes-and-you-can-too-3bif</guid>
      <description>&lt;p&gt;&lt;strong&gt;Body:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI economy is booming. Every developer is building apps with Cursor, v0, Devin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's the problem:&lt;/strong&gt; Building the app takes hours. Making money from it takes significantly longer.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Pain
&lt;/h2&gt;

&lt;p&gt;Every time a developer wants to monetize, they face:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set up Stripe → time-consuming, many pitfalls&lt;/li&gt;
&lt;li&gt;Build license key system → time-consuming and error-prone&lt;/li&gt;
&lt;li&gt;Handle subscriptions/refunds → time-consuming and error-prone&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's a lot of work just to accept payments!&lt;/p&gt;

&lt;h3&gt;
  
  
  The Enterprise Pain (NEW)
&lt;/h3&gt;

&lt;p&gt;But there's an even bigger pain for B2B developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise seat allocation&lt;/strong&gt;: Manually assigning licenses to 50+ employees → extremely time-consuming&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License tracking&lt;/strong&gt;: Which employee has which license? → error-prone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Employee turnover&lt;/strong&gt;: When someone leaves, manually revoke and reassign → error-prone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bulk operations&lt;/strong&gt;: Batch license assignments → highly error-prone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise refunds&lt;/strong&gt;: Complex approval workflows and proration calculations → mistakes lead to financial losses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This is the hidden killer of B2B monetization.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution: License Hub
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;License Hub&lt;/strong&gt; - a complete licensing and subscription management platform.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✅ One-click Stripe Connect
✅ Auto license key generation
✅ Team license management
✅ Enterprise self-service portal
✅ Sales analytics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5 minutes to integrate. Copy-paste code.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  How It Compares
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Gumroad&lt;/th&gt;
&lt;th&gt;LemonSqueezy&lt;/th&gt;
&lt;th&gt;Paddle&lt;/th&gt;
&lt;th&gt;Payhip&lt;/th&gt;
&lt;th&gt;Keygen.sh&lt;/th&gt;
&lt;th&gt;License Hub&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;5-min Integration&lt;/td&gt;
&lt;td&gt;❌ Embed links&lt;/td&gt;
&lt;td&gt;⚠️ Config&lt;/td&gt;
&lt;td&gt;⚠️ Config&lt;/td&gt;
&lt;td&gt;⚠️ Config&lt;/td&gt;
&lt;td&gt;⚠️ Dev&lt;/td&gt;
&lt;td&gt;✅ &lt;strong&gt;5 min&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;License System&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Full&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Full + Self-serve&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise Seats&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;⚠️ Complex&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;⚠️ Dev&lt;/td&gt;
&lt;td&gt;✅ &lt;strong&gt;Built-in&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Analytics&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Full&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Requires integration&lt;/td&gt;
&lt;td&gt;✅ &lt;strong&gt;Full Dashboard&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refund Handling&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Requires development&lt;/td&gt;
&lt;td&gt;✅ &lt;strong&gt;One-click&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pricing Model&lt;/td&gt;
&lt;td&gt;High fees&lt;/td&gt;
&lt;td&gt;Higher fees&lt;/td&gt;
&lt;td&gt;Higher fees&lt;/td&gt;
&lt;td&gt;Higher fees&lt;/td&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Pay when you earn&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Who is this for?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;VS Code extension/theme developers&lt;/li&gt;
&lt;li&gt;Browser extension developers&lt;/li&gt;
&lt;li&gt;Desktop app makers&lt;/li&gt;
&lt;li&gt;Web SaaS founders&lt;/li&gt;
&lt;li&gt;Anyone building with AI&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Code Example
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8onls7n4rymg7jr8iy8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8onls7n4rymg7jr8iy8.png" alt=" " width="800" height="646"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Validate a license key&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.licensehub.top/v1/licenses/validate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Authorization&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bearer YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;licenseKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;LH-XXXX-XXXX-XXXX&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;valid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxda9od2bfbu86mn4ywcm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxda9od2bfbu86mn4ywcm.png" alt=" " width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it. Your app now has paid features.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎁 Launch Special
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Submit your product before April 30, 2026:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Earn money → Permanent 30% discount on fees&lt;/li&gt;
&lt;li&gt;Don't earn → Pay nothing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Free to start. Only pay when you profit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👉 &lt;a href="https://licensehub.top" rel="noopener noreferrer"&gt;https://licensehub.top&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;📺 Watch Tutorial: &lt;a href="https://www.youtube.com/playlist?list=PLJUu5-mBG-Ki8nj-Sh3xpBGSFVNutlU4h" rel="noopener noreferrer"&gt;https://www.youtube.com/playlist?list=PLJUu5-mBG-Ki8nj-Sh3xpBGSFVNutlU4h&lt;/a&gt;&lt;/p&gt;




</description>
      <category>ai</category>
      <category>monetization</category>
      <category>easy</category>
    </item>
    <item>
      <title>Stop Manually Editing Local Storage: I Built a Tool to Manage Tab State Like Git</title>
      <dc:creator>old big</dc:creator>
      <pubDate>Sat, 30 Aug 2025 11:50:51 +0000</pubDate>
      <link>https://dev.to/old_big_06ee00ac2bb68f727/stop-manually-editing-local-storage-i-built-a-tool-to-manage-tab-state-like-git-3c86</link>
      <guid>https://dev.to/old_big_06ee00ac2bb68f727/stop-manually-editing-local-storage-i-built-a-tool-to-manage-tab-state-like-git-3c86</guid>
      <description>&lt;h3&gt;
  
  
  The Problem: Our Browser State is a Mess
&lt;/h3&gt;

&lt;p&gt;As web developers, we live in the browser's DevTools, but managing application state is still a major pain point. If you're testing an app with different user roles (e.g., admin, editor, guest), you're stuck in a loop: log out, clear storage, log in, test, repeat. It's a workflow that feels stuck in the past.&lt;/p&gt;

&lt;p&gt;Manually editing &lt;code&gt;localStorage&lt;/code&gt; is clumsy, and there's no easy way to save and restore a complete browser state for a specific test case.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution: Treat Your Tab's Storage Like a Git Repo
&lt;/h3&gt;

&lt;p&gt;I wanted a better way. I wanted to be able to "commit" a storage state, give it a name, and "checkout" that state whenever I needed it. This idea led me to build &lt;strong&gt;Tab Storage Copier&lt;/strong&gt;, a browser extension that brings proper state management to your workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Game-Changing Feature: Profiles
&lt;/h3&gt;

&lt;p&gt;The heart of the extension is &lt;strong&gt;Profile Management&lt;/strong&gt;. This isn't just about copying and pasting; it's about true state control.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Save Profile &amp;amp; Version&lt;/strong&gt;: Got the app set up for an "Admin User"? Click "Save Profile," name it "Admin," and give it a version name like "v1 - Full Permissions." The extension snapshots everything: &lt;code&gt;localStorage&lt;/code&gt;, &lt;code&gt;sessionStorage&lt;/code&gt;, and all cookies.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Load Profile&lt;/strong&gt;: Need to test the admin view again? Just click "Load Profile," select "Admin v1," and your current tab's storage is instantly wiped and replaced with the snapshot. No more logging in.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Manage Profiles&lt;/strong&gt;: As you create more profiles and versions, a simple manager lets you delete what you no longer need, keeping your workspace tidy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  More Than Just Profiles
&lt;/h3&gt;

&lt;p&gt;While profiles are the main event, the extension also includes essential utilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Quick Clear Tool&lt;/strong&gt;: A big "Clear" button to nuke storage from the active tab. It has a smart confirmation dialog to prevent you from accidentally wiping the wrong thing.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Simple Storage Copy&lt;/strong&gt;: The original feature that started it all. Quickly copy storage from another tab when you don't need a full profile.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why This Changes Everything
&lt;/h3&gt;

&lt;p&gt;This tool has fundamentally changed how I test and debug. I can switch between a dozen different user states in the time it used to take me to log out and log back in once. It makes reproducing bugs and setting up demos incredibly efficient.&lt;/p&gt;

&lt;p&gt;If you've ever felt the frustration of managing browser state manually, I built this for you.&lt;/p&gt;

&lt;p&gt;You can install it from your favorite browser's store:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome: &lt;a href="https://chromewebstore.google.com/detail/tab-storage-copier/gnbnohblpgfdellglplgpnfjpokalgen?hl=en-US&amp;amp;utm_source=ext_sidebar" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/tab-storage-copier/gnbnohblpgfdellglplgpnfjpokalgen?hl=en-US&amp;amp;utm_source=ext_sidebar&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Edge: &lt;a href="https://microsoftedge.microsoft.com/addons/detail/tab-storage-copier/hfcopmhdfklplklpmpknbmaakjemeadc" rel="noopener noreferrer"&gt;https://microsoftedge.microsoft.com/addons/detail/tab-storage-copier/hfcopmhdfklplklpmpknbmaakjemeadc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Firefox: &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/tab-storage-copier/" rel="noopener noreferrer"&gt;https://addons.mozilla.org/en-US/firefox/addon/tab-storage-copier/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope it helps you reclaim some of your valuable development time. Let me know what you think!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>localstorage</category>
      <category>sessionstorage</category>
      <category>cookies</category>
    </item>
    <item>
      <title>🤯 Ditch Redux: Meet redux-lite — the Lightweight, Type-Safe, High-Performance, and Super Easy-to-Use/test State Manager</title>
      <dc:creator>old big</dc:creator>
      <pubDate>Sat, 30 Aug 2025 01:03:59 +0000</pubDate>
      <link>https://dev.to/old_big_06ee00ac2bb68f727/ditch-redux-meet-redux-lite-the-lightweight-type-safe-high-performance-and-super-2l2a</link>
      <guid>https://dev.to/old_big_06ee00ac2bb68f727/ditch-redux-meet-redux-lite-the-lightweight-type-safe-high-performance-and-super-2l2a</guid>
      <description>&lt;p&gt;Are you tired of the boilerplate and complexity of Redux? Do you want a state management solution that is fast, simple, and a joy to test?&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;&lt;a href="https://github.com/oldbig/redux-lite" rel="noopener noreferrer"&gt;@oldbig/redux-lite&lt;/a&gt;&lt;/strong&gt;, a new zero-dependency state management library for React that delivers high performance and an effortless developer experience.&lt;/p&gt;

&lt;p&gt;Redux DevTools Integration&lt;/p&gt;

&lt;p&gt;The Problem with "The Old Way"&lt;br&gt;
Traditional Redux is powerful, but it comes with a cost:&lt;/p&gt;

&lt;p&gt;Boilerplate: Writing actions, action creators, reducers, and selectors for every piece of state is tedious.&lt;br&gt;
Complexity: The learning curve can be steep, especially for newcomers.&lt;br&gt;
Bundle Size: Adding Redux and its ecosystem libraries can increase your app's size.&lt;br&gt;
The redux-lite Philosophy: Simplicity is Key&lt;br&gt;
redux-lite derives your entire state management setup from a single object. That's it.&lt;/p&gt;

&lt;p&gt;Here’s the magic.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Define Your Store
Create a single source of truth. Use the optional helper for state slices that might not be present initially.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/store.ts&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;initiate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;optional&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@oldbig/redux-lite&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;storeDefinition&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Guest&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;optional&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dark&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Initiate the Store
Call the initiate function once. It returns everything you need.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/store.ts (continued)&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ReduxLiteProvider&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useReduxLiteStore&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useSelector&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
 &lt;span class="nf"&gt;initiate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;storeDefinition&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Provide and Consume
Wrap your app in the ReduxLiteProvider and use the useReduxLiteStore hook to access state and dispatchers.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// MyComponent.tsx&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useReduxLiteStore&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./store&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;UserProfile&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;dispatchPartialUser&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useReduxLiteStore&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleLogin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;dispatchPartialUser&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h2&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Welcome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h2&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleLogin&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Log&lt;/span&gt; &lt;span class="nx"&gt;In&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice how dispatchPartialUser is automatically generated and fully type-safe? You get dispatchers for every top-level key in your store definition!&lt;/p&gt;

&lt;p&gt;Why It's Better&lt;br&gt;
Blazing Fast: With a tiny footprint and built-in deep equality checks, it's designed for top-tier performance, eliminating unnecessary re-renders automatically.&lt;br&gt;
Super Easy to Learn: The entire API can be mastered in minutes. You define one object, and you're done.&lt;br&gt;
Effortless to Test: Testing components is trivial. Your state is a simple object, so there's nothing complex to mock.&lt;br&gt;
Zero Boilerplate: Forget actions, reducers, and selectors.&lt;br&gt;
End-to-End Type Safety: Catch errors at compile time, not runtime.&lt;br&gt;
Ready to simplify your state management?&lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/oldbig/redux-lite" rel="noopener noreferrer"&gt;https://github.com/oldbig/redux-lite&lt;/a&gt;&lt;br&gt;
NPM Package: &lt;a href="https://www.npmjs.com/package/@oldbig/redux-lite" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@oldbig/redux-lite&lt;/a&gt;&lt;br&gt;
Live Demo: [Link to your deployed todo-list example]&lt;br&gt;
Give it a try and let me know what you think in the comments!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>redux</category>
      <category>lightweight</category>
    </item>
  </channel>
</rss>
