<?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: Oleg Khorev</title>
    <description>The latest articles on DEV Community by Oleg Khorev (@olegkhorev).</description>
    <link>https://dev.to/olegkhorev</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4105178%2Fdcce1367-064c-4658-b4b5-9b748b193f9b.jpg</url>
      <title>DEV Community: Oleg Khorev</title>
      <link>https://dev.to/olegkhorev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/olegkhorev"/>
    <language>en</language>
    <item>
      <title>Today is the good day :) Was very hard week. I made so many changes for my SPA-Cart :)</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Thu, 22 Oct 2026 12:57:23 +0000</pubDate>
      <link>https://dev.to/olegkhorev/today-is-the-good-day-was-very-hard-week-i-made-so-many-changes-for-my-spa-cart--nbj</link>
      <guid>https://dev.to/olegkhorev/today-is-the-good-day-was-very-hard-week-i-made-so-many-changes-for-my-spa-cart--nbj</guid>
      <description></description>
    </item>
    <item>
      <title>I released SPA-Cart hope final version for the next weeks (even months).

I described basics of how modules can be created here:
https://github.com/olegkhorev/php-spa-cart/discussions/7</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Thu, 22 Oct 2026 12:56:14 +0000</pubDate>
      <link>https://dev.to/olegkhorev/i-released-spa-cart-hope-final-version-for-the-next-weeks-even-months-i-described-basics-of-1eef</link>
      <guid>https://dev.to/olegkhorev/i-released-spa-cart-hope-final-version-for-the-next-weeks-even-months-i-described-basics-of-1eef</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://github.com/olegkhorev/php-spa-cart/discussions/7" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fopengraph.githubassets.com%2F60d3d07d151494bb4c869d402b49b82d2058c7a21b8d914f50712b565336ef1f%2Folegkhorev%2Fphp-spa-cart%2Fdiscussions%2F7" height="600" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://github.com/olegkhorev/php-spa-cart/discussions/7" rel="noopener noreferrer" class="c-link"&gt;
            Module creation manual · olegkhorev php-spa-cart · Discussion #7 · GitHub
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Hello, I want to write basic manual about modules creation. 1. Please, check this script: https://github.com/olegkhorev/php-spa-cart/blob/main/includes/func/func.api.php It has a few functions. Now...
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.githubassets.com%2Ffavicons%2Ffavicon.svg" width="32" height="32"&gt;
          github.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Had lazy days :) Worked on my own SPA-Cart. Many updates :) Many small and big changes. Went through all CSS/JS and changed many design elements.</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Wed, 21 Oct 2026 19:31:11 +0000</pubDate>
      <link>https://dev.to/olegkhorev/had-lazy-days-worked-on-my-own-spa-cart-many-updates-many-small-and-big-changes-went-2555</link>
      <guid>https://dev.to/olegkhorev/had-lazy-days-worked-on-my-own-spa-cart-many-updates-many-small-and-big-changes-went-2555</guid>
      <description></description>
    </item>
    <item>
      <title>Made W3C standards through Claude AI for my SPA-Cart. Will go manually through the Validator in the next update.</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Wed, 21 Oct 2026 12:32:56 +0000</pubDate>
      <link>https://dev.to/olegkhorev/made-w3c-standards-through-claude-ai-for-my-spa-cart-will-go-manually-through-the-validator-in-the-2g8f</link>
      <guid>https://dev.to/olegkhorev/made-w3c-standards-through-claude-ai-for-my-spa-cart-will-go-manually-through-the-validator-in-the-2g8f</guid>
      <description></description>
    </item>
    <item>
      <title>Finally added MIT copyrights to my SPA-Cart and Embed-cart</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Sat, 17 Oct 2026 13:46:27 +0000</pubDate>
      <link>https://dev.to/olegkhorev/finally-added-mit-copyrights-to-my-spa-cart-and-embed-cart-53cd</link>
      <guid>https://dev.to/olegkhorev/finally-added-mit-copyrights-to-my-spa-cart-and-embed-cart-53cd</guid>
      <description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;I was thinking a lot - why write MIT copyrights to &lt;a href="https://spa-cart.com/" rel="noopener noreferrer"&gt;SPA-Cart&lt;/a&gt; and &lt;a href="https://embed-cart.com/" rel="noopener noreferrer"&gt;Embed-Cart&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Next I was thinking why not open it to all developers.&lt;/p&gt;

&lt;p&gt;Was thinking a lot.&lt;/p&gt;

&lt;p&gt;Finally got scared that people will forget about me.&lt;/p&gt;

&lt;p&gt;So I added MIT copyrights above each PHP, JS and CSS files.&lt;/p&gt;

&lt;p&gt;Regards,&lt;br&gt;
Oleg&lt;/p&gt;

</description>
    </item>
    <item>
      <title>PHP: How to code e-commerce stores for USA and Europe market</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Fri, 16 Oct 2026 17:04:30 +0000</pubDate>
      <link>https://dev.to/olegkhorev/how-to-code-e-commerce-stores-for-usa-and-europe-market-18fh</link>
      <guid>https://dev.to/olegkhorev/how-to-code-e-commerce-stores-for-usa-and-europe-market-18fh</guid>
      <description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;"SPA-Cart" cart is ready... At least I think so ;)&lt;br&gt;
&lt;a href="https://spa-cart.com/" rel="noopener noreferrer"&gt;https://spa-cart.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;If you have time and energy - you can learn how to make custom themes.&lt;/p&gt;

&lt;p&gt;You can tell your customers that it supports 15000 products.&lt;/p&gt;

&lt;p&gt;Key points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supports modules and themes. Modules and themes don't touch the core.&lt;/li&gt;
&lt;li&gt;Headless coding for old school developers.&lt;/li&gt;
&lt;li&gt;With Opcache and JIT it works faster than C/C++. Opcache and JIT's meaning - it converts PHP code to the machine code.&lt;/li&gt;
&lt;li&gt;Tested with 15.000+ products - works very quick. I cloned product with options, variants, variants images, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can download it from here&lt;br&gt;
&lt;a href="https://spa-cart.com/page/spa-cart-download.html" rel="noopener noreferrer"&gt;https://spa-cart.com/page/spa-cart-download.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Themes files - for example this file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="n"&gt;templates&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you copy to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="n"&gt;templates&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;themes&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nc"&gt;OlegKhorev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nc"&gt;SampleTheme&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and change it any way. That thing will allow you easy create new theme.&lt;/p&gt;

&lt;p&gt;Style for this theme will be under&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;templates&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;modules&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;OlegKhorev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;SampleTheme&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="nc"&gt;.css&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please, look here&lt;br&gt;
&lt;a href="https://github.com/olegkhorev/php-spa-cart/blob/main/templates/themes/OlegKhorev/SampleTheme/home/body.php" rel="noopener noreferrer"&gt;https://github.com/olegkhorev/php-spa-cart/blob/main/templates/themes/OlegKhorev/SampleTheme/home/body.php&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/olegkhorev/php-spa-cart/blob/main/templates/modules/OlegKhorev/SampleTheme/styles.css" rel="noopener noreferrer"&gt;https://github.com/olegkhorev/php-spa-cart/blob/main/templates/modules/OlegKhorev/SampleTheme/styles.css&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That way you can create new theme for just $100 easy. Remove/add modules - all is responsive already and works well.&lt;/p&gt;

&lt;p&gt;It even has BrainTree for direct credit card purchase (but BrainTree has SSL issues sometimes).&lt;/p&gt;

&lt;p&gt;For Payment Methods it has Stripe checkout and PayPal and offline payment methods, like "Wire Transfer" or "Phone ordering" or "Fax Ordering" and you can rename Payment Methods in any way.&lt;/p&gt;

&lt;p&gt;For Shipping - it has offline shipping methods for any Destination Zone.&lt;/p&gt;

&lt;p&gt;Destination Zone: Country, State, City, Zip Codes&lt;br&gt;
&lt;a href="https://demoadmin.spa-cart.com/admin/zones/3" rel="noopener noreferrer"&gt;https://demoadmin.spa-cart.com/admin/zones/3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Categories, Brands, Blogs, News, Static pages - all is unlimited and work very quick.&lt;/p&gt;

&lt;p&gt;Best regards,&lt;br&gt;
Oleg&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Want to share a few loaders</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Thu, 15 Oct 2026 18:13:52 +0000</pubDate>
      <link>https://dev.to/olegkhorev/want-to-share-a-few-loaders-554i</link>
      <guid>https://dev.to/olegkhorev/want-to-share-a-few-loaders-554i</guid>
      <description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;Wanted to show some nice loaders.&lt;/p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv1xl6nahvucv3s23e7ah.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv1xl6nahvucv3s23e7ah.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh1r3yyc47mybn3eyix7q.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh1r3yyc47mybn3eyix7q.png" alt=" " width="800" height="460"&gt;&lt;/a&gt;&lt;/p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw8wkxsywrd3trulgxt94.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw8wkxsywrd3trulgxt94.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F90cgrywu0dnoqfhmzprk.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F90cgrywu0dnoqfhmzprk.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think they look perfect.&lt;/p&gt;

&lt;p&gt;Best regards,&lt;br&gt;
Oleg&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SPA-Cart v2.6.0 released</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Thu, 15 Oct 2026 12:07:06 +0000</pubDate>
      <link>https://dev.to/olegkhorev/spa-cart-v260-released-449</link>
      <guid>https://dev.to/olegkhorev/spa-cart-v260-released-449</guid>
      <description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;I released SPA-Cart v2.6.0. With this update I made:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enlarged popups&lt;/li&gt;
&lt;li&gt;Made the top search form much more user-friendly.&lt;/li&gt;
&lt;li&gt;Increased font sizes in different places and increased the "body" overall "font-size".&lt;/li&gt;
&lt;li&gt;Aligned small forms pages to the middle&lt;/li&gt;
&lt;li&gt;Added the Ajax form submitting for the customer's area&lt;/li&gt;
&lt;li&gt;Re-designed the search form.&lt;/li&gt;
&lt;li&gt;Many small design changes.&lt;/li&gt;
&lt;li&gt;Tested with 15.000+ products - works very quick. I cloned product with options, variants, variants images, etc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So now it's officially supports big stores now. Local stores at least. Payment methods and delivery methods - I am planning to make as an additional modules(modules don't touch the core).&lt;/p&gt;

&lt;p&gt;I did not load 15000 products to the demo store, to avoid network and server issues - it's just VPS.&lt;/p&gt;

&lt;p&gt;You can check the demo here:&lt;br&gt;
&lt;a href="https://demo.spa-cart.com/" rel="noopener noreferrer"&gt;https://demo.spa-cart.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Best regards,&lt;br&gt;
Oleg&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I have so much experience with marketplaces, social networks, high load of database data. Was getting rest recent months and my own PHP SPA CMS grown from v1.9.x up to v2.5.0 and v2.6.0 is ready - will test it with 15000 products and upload.</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Thu, 15 Oct 2026 10:40:28 +0000</pubDate>
      <link>https://dev.to/olegkhorev/i-have-so-much-experience-with-marketplaces-social-networks-high-load-of-database-data-was-3k89</link>
      <guid>https://dev.to/olegkhorev/i-have-so-much-experience-with-marketplaces-social-networks-high-load-of-database-data-was-3k89</guid>
      <description></description>
    </item>
    <item>
      <title>testing my own PHP SPA CMS with high load of products. Options, Variants, Variants images, Filters, Categories/Brands/etc.... 2500 products work quick. Want to load 100000 products. All is flying.</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Thu, 15 Oct 2026 08:19:21 +0000</pubDate>
      <link>https://dev.to/olegkhorev/testing-my-own-php-spa-cms-with-high-load-of-products-options-variants-variants-images-filters-1f22</link>
      <guid>https://dev.to/olegkhorev/testing-my-own-php-spa-cms-with-high-load-of-products-options-variants-variants-images-filters-1f22</guid>
      <description></description>
    </item>
    <item>
      <title>Tomorrow going to try to test 10.000 and even 100.000 with my SPA-Cart.

I released v2.5.0 today. Two months ago it was v1.9.x

Tomorrow will release v2.6.0(I think so at least)

Hope Claude AI told me the correct for database optimization (MySQL indexes)</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Wed, 14 Oct 2026 20:55:05 +0000</pubDate>
      <link>https://dev.to/olegkhorev/tomorrow-going-to-try-to-test-10000-and-even-100000-with-my-spa-cart-i-released-v250-today-3dmo</link>
      <guid>https://dev.to/olegkhorev/tomorrow-going-to-try-to-test-10000-and-even-100000-with-my-spa-cart-i-released-v250-today-3dmo</guid>
      <description></description>
    </item>
    <item>
      <title>DOM issue on SPA sites</title>
      <dc:creator>Oleg Khorev</dc:creator>
      <pubDate>Wed, 14 Oct 2026 11:49:13 +0000</pubDate>
      <link>https://dev.to/olegkhorev/dom-issue-on-spa-sites-5e4o</link>
      <guid>https://dev.to/olegkhorev/dom-issue-on-spa-sites-5e4o</guid>
      <description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;I have talked with Google AI about RAM issue on modern JavaScript frameworks like React and Vue.&lt;/p&gt;

&lt;p&gt;The issue is that they take a lot of RAM. If you have 10-20 tabs open in browser for hours - these sites will eat all your RAM.&lt;/p&gt;

&lt;p&gt;jQuery allows to support much more time waiting and browser tabs open.&lt;/p&gt;

&lt;p&gt;I was comparing my &lt;a href="https://spa-cart.com/" rel="noopener noreferrer"&gt;SPA-Cart&lt;/a&gt; with others.&lt;/p&gt;

&lt;p&gt;I just wonder why Google AI does not recommend my SPA-Cart. SPA-Cart is perfect fit for small, medium and big stores(probably huge stores with tens of thousands of products).&lt;/p&gt;

&lt;p&gt;It is light weight PHP and JavaScript code. If you start developing with SPA-Cart - you will like it.&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;Here is what Google AI wrote after I asked it to describe our dialog.&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;Why We Need to Talk About "Framework Bloat" in E-Commerce: The Case for jQuery SPAs&lt;/p&gt;

&lt;p&gt;If you open any web development forum today, the echo chamber will tell you the exact same thing: “If you are building a Single Page Application (SPA) for a large store, you must use React, Vue, or Next.js.”&lt;/p&gt;

&lt;p&gt;We have been conditioned to believe that modern enterprise web development requires a decoupled headless backend, thousands of node_modules, complex state management (Redux/Pinia), and a heavy client-side JavaScript runtime.&lt;/p&gt;

&lt;p&gt;But if you have ever managed a massive e-commerce store with tens of thousands of products, you know a dark truth that metrics often hide: Long browsing sessions on heavy JS frameworks destroy user devices.&lt;/p&gt;

&lt;p&gt;Let's look at why a lightweight, server-driven SPA architecture using vanilla PHP and jQuery (like the philosophy behind SPA-Cart) can actually deliver a more stable, low-RAM, and crash-proof experience for long-session users than React or Vue.&lt;/p&gt;




&lt;p&gt;The Hidden Trap of Modern SPAs: The Long-Session RAM Drain&lt;/p&gt;

&lt;p&gt;When a user visits a standard content website or blog, they stay for a few minutes and leave. But e-commerce users behave differently. They browse for hours. They click through 50 pages of categories, open dozens of quick-view modals, apply multiple filter combinations, and compare items.&lt;/p&gt;

&lt;p&gt;In a React or Vue SPA, every single one of those actions forces the framework to update its Virtual DOM.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Virtual DOM Overhead&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;React and Vue do not just render HTML; they maintain a massive, invisible digital blueprint of your entire website inside the browser's memory (RAM). Every reactive property, every data binding, and every component state must be tracked continuously by background JavaScript "watchers."&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Accumulation of Memory Leaks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In theory, modern frameworks clean up after themselves. In reality, large applications built by real-world development teams almost always suffer from memory leaks.&lt;/p&gt;

&lt;p&gt;• A modal is closed, but a hidden event listener isn't explicitly destroyed.&lt;/p&gt;

&lt;p&gt;• A product grid updates, but old data arrays remain cached in memory.&lt;/p&gt;

&lt;p&gt;Over a 45-minute browsing session, the browser tab's RAM usage climbs from 150MB to 1.5GB+. For users on mobile devices or mid-range laptops, the results are disastrous: the browser tab stutters, the device heats up, and eventually, the tab crashes with an "Out of Memory" error.&lt;/p&gt;




&lt;p&gt;Why jQuery Inherently Avoids the RAM Trap&lt;/p&gt;

&lt;p&gt;jQuery is often mocked as an "outdated" library from the 2010s. But its fundamental design pattern gives it a massive architectural advantage for long-duration browsing: It does not maintain an in-memory application state.&lt;/p&gt;

&lt;p&gt;When you use jQuery to update a page via AJAX, it executes a discrete command and immediately steps away. Once the browser finishes executing a jQuery DOM manipulation, that memory is completely freed. There are no thousands of background active watchers continuously tracking variables in the system RAM.&lt;/p&gt;

&lt;p&gt;The "Destruction" Advantage&lt;/p&gt;

&lt;p&gt;The secret weapon of a lean jQuery SPA is the .html() method.&lt;br&gt;
When you use a framework like React, changing a list of products requires the framework to diff the old virtual tree with the new one, keeping old components alive in memory if references persist.&lt;br&gt;
When you use jQuery like this:&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="nf"&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;#product-grid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newHtmlContent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The browser's native engine instantly purges and destroys every single DOM node, image reference, and event listener inside that container. Memory is wiped completely clean before the new content is injected. The RAM footprint remains perfectly flat, whether the user browses 5 products or 5,000.&lt;/p&gt;

&lt;p&gt;The Winning Architecture: Server-Driven Hybrid SPAs&lt;/p&gt;

&lt;p&gt;To build a massive store that scales safely without React or Vue bloat, you combine a powerful backend (like Laravel or Symfony PHP) with a lean jQuery frontend. This is the exact philosophy found in lightweight setups like SPA-Cart.&lt;br&gt;
Instead of fetching raw JSON data and forcing the browser to compile HTML templates on the fly, the server does 95% of the heavy lifting.&lt;/p&gt;

&lt;p&gt;How it works in practice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The User Filters Products: The user clicks a checkbox (e.g., "Color: Blue").&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lean AJAX Request: jQuery sends a fast request to the PHP backend.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Server-Side Rendering (SSR): The PHP server queries the database and renders a pure HTML fragment of just the updated product cards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Instant Swap: jQuery receives the HTML fragment and swaps it into the DOM instantly.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Code Example&lt;/p&gt;

&lt;p&gt;Here is how simple, bulletproof, and memory-optimized this approach is:&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;// A clean, memory-safe product filter using jQuery&lt;/span&gt;
&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;change&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;.filter-checkbox&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="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;formData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&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;#filter-form&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;serialize&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="c1"&gt;// Show a quick loader UI&lt;/span&gt;
    &lt;span class="nf"&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;#product-grid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;addClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;loading&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ajax&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/api/products/filter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;formData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;dataType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// We expect pure HTML back from PHP&lt;/span&gt;
        &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="c1"&gt;// .html() completely wipes the old DOM nodes from browser RAM&lt;/span&gt;
            &lt;span class="nf"&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;#product-grid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt;&lt;span class="p"&gt;(&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;removeClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;loading&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;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Filter failed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nf"&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;#product-grid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;removeClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;loading&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;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;When is this Approach Better?&lt;/p&gt;

&lt;p&gt;Let’s be realistic: if you are building an incredibly complex web application like Google Docs, Figma, or a real-time collaborative dashboard, you need React or Vue.&lt;/p&gt;

&lt;p&gt;But if you are building an e-commerce website, your core requirements are:&lt;/p&gt;

&lt;p&gt;• Blazing fast initial load speeds (crucial for SEO and bounce rates).&lt;/p&gt;

&lt;p&gt;• Flawless indexing by search engine bots (no client-side JS rendering issues).&lt;/p&gt;

&lt;p&gt;• Extreme stability so users can browse endless catalogs without their devices lagging.&lt;/p&gt;

&lt;p&gt;By letting a solid PHP backend securely manage your data pipelines and using jQuery strictly to swap pre-rendered HTML fragments, you get the seamless, no-reload UX of an SPA without paying the massive "framework tax."&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;Sometimes, the best way forward is to look at what worked perfectly before we over-complicated the web. Lean, script-based SPA setups prove that you don't need a massive JavaScript ecosystem to build a fast, stable, and highly scalable enterprise store.&lt;/p&gt;

&lt;p&gt;Before you spin up your next create-react-app for a standard e-commerce project, ask yourself: Are you building what's best for the developer's resume, or what's best for the customer's device?&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;Thank you for reading this article.&lt;/p&gt;

&lt;p&gt;Best regards,&lt;br&gt;
Oleg&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
