<?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: Srinu Web developer</title>
    <description>The latest articles on DEV Community by Srinu Web developer (@srinu_desetti).</description>
    <link>https://dev.to/srinu_desetti</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%2F3825633%2Fb309d018-09b7-4d42-9fd1-f3fffe1c98b6.png</url>
      <title>DEV Community: Srinu Web developer</title>
      <link>https://dev.to/srinu_desetti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/srinu_desetti"/>
    <language>en</language>
    <item>
      <title>Webpack Module Federation — Complete Guide for Micro Frontends</title>
      <dc:creator>Srinu Web developer</dc:creator>
      <pubDate>Mon, 06 Apr 2026 11:16:01 +0000</pubDate>
      <link>https://dev.to/srinu_desetti/webpack-module-federation-complete-guide-for-micro-frontends-4eao</link>
      <guid>https://dev.to/srinu_desetti/webpack-module-federation-complete-guide-for-micro-frontends-4eao</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Invalid hook call. Hooks can only be called inside
       the body of a function component.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You've seen this error. Your component works in isolation. But the moment you load it as a Module Federation remote inside the host — hooks crash.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The cause:&lt;/strong&gt; React loaded twice. Module Federation shared your component code, but not React itself. Two React instances mean two internal state trees, and hooks break immediately.&lt;/p&gt;

&lt;p&gt;The fix is one line — &lt;code&gt;singleton: true&lt;/code&gt; — but Module Federation has 5 more configuration traps that will bite you in production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Remote URLs change completely&lt;/strong&gt; between local (&lt;code&gt;https://localhost:4002/remoteEntry.js&lt;/code&gt;) and production (&lt;code&gt;/products/remoteEntry.js&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;publicPath must match&lt;/strong&gt; the reverse proxy route — mismatch = 404 on every chunk after remoteEntry.js loads&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The bootstrap pattern is required&lt;/strong&gt; — without &lt;code&gt;import("./bootstrap")&lt;/code&gt;, shared deps fail before negotiation happens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;remoteEntry.js is NOT your bundle&lt;/strong&gt; — it's a ~5KB manifest that registers &lt;code&gt;window.Products&lt;/code&gt; for on-demand chunk loading&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;requiredVersion doesn't enforce&lt;/strong&gt; — with singleton, the first-loaded version always wins. It only warns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wrote a complete guide with real webpack configs for host and remote (both local dev and production), all exposed modules mapped, shared dependency configuration with the singleton pattern, how remoteEntry.js works step by step, and a debugging checklist for the 5 most common errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full guide with code examples →&lt;/strong&gt; &lt;a href="https://blog.srinudesetti.in/micro-frontend/react/webpack-module-federation-complete-guide" rel="noopener noreferrer"&gt;https://blog.srinudesetti.in/micro-frontend/react/webpack-module-federation-complete-guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>microfrontend</category>
      <category>react</category>
      <category>webpack</category>
      <category>srinudesetti</category>
    </item>
    <item>
      <title>Tailwind CSS in Micro Frontend Monorepo — Setup Guide</title>
      <dc:creator>Srinu Web developer</dc:creator>
      <pubDate>Sun, 05 Apr 2026 11:09:52 +0000</pubDate>
      <link>https://dev.to/srinu_desetti/tailwind-css-in-micro-frontend-monorepo-setup-guide-473k</link>
      <guid>https://dev.to/srinu_desetti/tailwind-css-in-micro-frontend-monorepo-setup-guide-473k</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Production build output:
// styles.css — 0 classes generated
// ERROR: @tailwind directives treated as plain text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This happens when you set up Tailwind CSS in a micro frontend monorepo the same way you would in a standard React app. It does not work that way.&lt;/p&gt;

&lt;p&gt;Each MFE is an independent Webpack build. Tailwind is a PostCSS plugin that runs at build time inside &lt;code&gt;postcss-loader&lt;/code&gt;. A single root-level &lt;code&gt;tailwind.config.js&lt;/code&gt; will NOT be resolved by apps in &lt;code&gt;apps/products/&lt;/code&gt; — each app needs its own.&lt;/p&gt;

&lt;p&gt;The content paths also differ between host and remote MFEs. The host scans &lt;code&gt;./src/**&lt;/code&gt;, &lt;code&gt;./public/**&lt;/code&gt;, and &lt;code&gt;./index.html&lt;/code&gt;. Remotes only scan &lt;code&gt;./src/**&lt;/code&gt; and &lt;code&gt;./src/index.html&lt;/code&gt; because they are loaded into the host at runtime.&lt;/p&gt;

&lt;p&gt;What the full guide covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Step-by-step installation&lt;/strong&gt; — root + per-app dependencies with npm workspaces&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-MFE tailwind.config.js&lt;/strong&gt; — host vs remote content path differences&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostCSS + Webpack wiring&lt;/strong&gt; — the 3-loader chain (MiniCssExtractPlugin -&amp;gt; css-loader -&amp;gt; postcss-loader)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why CSS is NOT shared via Module Federation&lt;/strong&gt; — build-time vs runtime&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared Tailwind presets&lt;/strong&gt; — consistent theming without duplicating configs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS isolation with prefix&lt;/strong&gt; — when and why to use it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5 common mistakes&lt;/strong&gt; — wrong content paths, root-level config, missing postcss-loader, and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read the full guide with code examples from a real production monorepo:&lt;br&gt;
&lt;a href="https://blog.srinudesetti.in/micro-frontend/react/tailwind-css-micro-frontend-monorepo" rel="noopener noreferrer"&gt;https://blog.srinudesetti.in/micro-frontend/react/tailwind-css-micro-frontend-monorepo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>react</category>
      <category>microfrontend</category>
      <category>srinudesetti</category>
    </item>
    <item>
      <title>Webpack 5 Configuration for Micro Frontends — Complete Guide</title>
      <dc:creator>Srinu Web developer</dc:creator>
      <pubDate>Sun, 29 Mar 2026 09:37:41 +0000</pubDate>
      <link>https://dev.to/srinu_desetti/webpack-5-configuration-for-micro-frontends-complete-guide-1kb4</link>
      <guid>https://dev.to/srinu_desetti/webpack-5-configuration-for-micro-frontends-complete-guide-1kb4</guid>
      <description>&lt;p&gt;&lt;code&gt;publicPath: "https://localhost:4002/"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That one line cost me 3 hours in production. Every chunk after remoteEntry.js returned 404. The fix? Change it to &lt;code&gt;publicPath: "/products/"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The Webpack config you use for local Micro Frontend development is &lt;strong&gt;fundamentally different&lt;/strong&gt; from what you deploy. 7 settings change between environments, and most tutorials only show one config.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this article covers
&lt;/h2&gt;

&lt;p&gt;Every section of the Webpack 5 config for Micro Frontends, shown TWICE — local development AND production — side by side:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Entry &amp;amp; Output&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Host uses &lt;code&gt;publicPath: "/"&lt;/code&gt; in both environments&lt;/li&gt;
&lt;li&gt;Remotes use &lt;code&gt;https://localhost:PORT/&lt;/code&gt; locally, &lt;code&gt;/mfe-name/&lt;/code&gt; in production&lt;/li&gt;
&lt;li&gt;Production adds &lt;code&gt;[contenthash]&lt;/code&gt; for long-term caching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Babel Loader&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard: only processes &lt;code&gt;src/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Monorepo: MUST include &lt;code&gt;../../packages&lt;/code&gt; for shared package JSX&lt;/li&gt;
&lt;li&gt;Forgetting this = &lt;code&gt;SyntaxError: Unexpected token &amp;lt;&lt;/code&gt; at runtime&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dev Server&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local: HTTPS (mkcert), CORS headers (&lt;code&gt;Access-Control-Allow-Origin: *&lt;/code&gt;), historyApiFallback&lt;/li&gt;
&lt;li&gt;Production: No devServer at all — Nginx serves static files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why HTTPS is required locally:&lt;/strong&gt;&lt;br&gt;
Module Federation loads remote code via `&lt;/p&gt;

&lt;p&gt;article link :-   &lt;a href="https://blog.srinudesetti.in/micro-frontend/react/webpack-5-configuration-micro-frontend" rel="noopener noreferrer"&gt;https://blog.srinudesetti.in/micro-frontend/react/webpack-5-configuration-micro-frontend&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>microfrontend</category>
      <category>webpack</category>
      <category>srinudesetti</category>
    </item>
    <item>
      <title>Shared Packages in Micro Frontend Monorepo — Complete Guide</title>
      <dc:creator>Srinu Web developer</dc:creator>
      <pubDate>Sat, 28 Mar 2026 11:28:23 +0000</pubDate>
      <link>https://dev.to/srinu_desetti/shared-packages-in-micro-frontend-monorepo-complete-guide-141f</link>
      <guid>https://dev.to/srinu_desetti/shared-packages-in-micro-frontend-monorepo-complete-guide-141f</guid>
      <description>&lt;p&gt;Your Micro Frontend has a silent bug and you don't know it yet.&lt;/p&gt;

&lt;p&gt;The user logs in on the Auth MFE. The auth token gets saved to the Redux store. They navigate to Products — a different MFE loaded via Module Federation. The Products page says they're not logged in.&lt;/p&gt;

&lt;p&gt;Why? Because Products MFE created its own Redux store instance. Auth MFE has a separate instance. Two stores. Two states. Completely out of sync.&lt;/p&gt;

&lt;p&gt;This is the #1 problem teams hit when they build Micro Frontends without shared packages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are shared packages?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Internal libraries inside your monorepo that ALL MFEs consume. Instead of each MFE building its own API layer, its own Redux store, and its own UI components, you build them ONCE in &lt;code&gt;packages/&lt;/code&gt; and import everywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this article, I break down the 3 packages that hold a production MFE monorepo together:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. @myapp/api — Shared API Layer&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full axios instance with request interceptors (JWT token attachment) and response interceptors (401 handling + token refresh)&lt;/li&gt;
&lt;li&gt;Failed request queue — when a token expires, multiple API calls fail simultaneously. Without the queue, each triggers its own refresh. The queue holds them, refreshes once, then retries all.&lt;/li&gt;
&lt;li&gt;Domain-organized API folders: Inventory-Apis/, Products-Apis/, Order-Apis/, each containing real CRUD functions&lt;/li&gt;
&lt;li&gt;File upload handling with FormData + progress tracking&lt;/li&gt;
&lt;li&gt;Asset URL resolution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. @myapp/store — Shared Redux Store&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;configureStore() with auth reducer&lt;/li&gt;
&lt;li&gt;Complete authSlice: 7 reducers (setIsLoggedIn, setAuthToken, setSessionExpired, setUserInfo, setSellerProfile, setLoading, updateUser) + 9 selectors&lt;/li&gt;
&lt;li&gt;Custom hooks (useAppDispatch, useAppSelector) ready for TypeScript&lt;/li&gt;
&lt;li&gt;Barrel export pattern — one import path for everything&lt;/li&gt;
&lt;li&gt;Module Federation singleton: true ensures ONE store instance across all MFEs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. @myapp/uicomponents — Shared UI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CustomToast with react-hot-toast configuration&lt;/li&gt;
&lt;li&gt;Button and Card components&lt;/li&gt;
&lt;li&gt;Change the design once, every MFE updates automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The critical wiring:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Webpack &lt;code&gt;resolve.alias&lt;/code&gt; maps &lt;code&gt;@myapp/store&lt;/code&gt; to &lt;code&gt;./../packages/core/store&lt;/code&gt; at BUILD time&lt;/li&gt;
&lt;li&gt;Module Federation &lt;code&gt;shared: { singleton: true }&lt;/code&gt; deduplicates the package at RUNTIME&lt;/li&gt;
&lt;li&gt;You need BOTH. Aliases alone = each MFE bundles its own copy. Singleton alone = import path not resolved.&lt;/li&gt;
&lt;li&gt;Local config uses localhost ports. Production uses Nginx paths. Both shown side by side.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every code block is from a real production monorepo with 11 independently deployable React MFEs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full guide with 15 code blocks:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://blog.srinudesetti.in/micro-frontend/react/shared-packages-micro-frontend-monorepo" rel="noopener noreferrer"&gt;https://blog.srinudesetti.in/micro-frontend/react/shared-packages-micro-frontend-monorepo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>redux</category>
      <category>microfrontend</category>
      <category>react</category>
      <category>srinudesetti</category>
    </item>
    <item>
      <title>React Micro Frontend Monorepo Setup with Turborepo</title>
      <dc:creator>Srinu Web developer</dc:creator>
      <pubDate>Thu, 26 Mar 2026 09:53:57 +0000</pubDate>
      <link>https://dev.to/srinu_desetti/react-micro-frontend-monorepo-setup-with-turborepo-p6c</link>
      <guid>https://dev.to/srinu_desetti/react-micro-frontend-monorepo-setup-with-turborepo-p6c</guid>
      <description>&lt;p&gt;"Just npm run dev."&lt;/p&gt;

&lt;p&gt;That one command starts 12 React applications on 12 different ports — all in parallel. No Docker. No separate terminal tabs. No manual startup scripts.&lt;/p&gt;

&lt;p&gt;How? Turborepo + npm workspaces + Webpack 5 Module Federation.&lt;/p&gt;

&lt;p&gt;I just published a step-by-step guide for setting up a React Micro Frontend monorepo from scratch. Every config comes from a production system with 11 React MFEs on ports 4000–4011.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you'll build:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ Root package.json with npm workspaces&lt;br&gt;
→ turbo.json pipeline config (build, dev, start)&lt;br&gt;
→ Host webpack.config.js — LOCAL and PRODUCTION (they're different!)&lt;br&gt;
→ Remote MFE webpack.config.js — LOCAL and PRODUCTION&lt;br&gt;
→ The async boundary pattern (import('./bootstrap')) and why it's required&lt;br&gt;
→ Shared @myapp/store (Redux singleton) and @myapp/api (axios interceptors)&lt;br&gt;
→ Host App.jsx with lazy-loaded routes for 11 MFEs&lt;br&gt;
→ PostCSS + Tailwind config per MFE&lt;br&gt;
→ Common mistakes table with 6 errors, causes, and fixes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key insight:&lt;/strong&gt; Local dev uses &lt;a href="https://localhost:PORT/remoteEntry.js" rel="noopener noreferrer"&gt;https://localhost:PORT/remoteEntry.js&lt;/a&gt; with mkcert certificates. Production uses /products/remoteEntry.js with Nginx routing. The webpack configs are significantly different — and most tutorials only show one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full guide:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://blog.srinudesetti.in/micro-frontend/react/react-micro-frontend-monorepo-turborepo" rel="noopener noreferrer"&gt;https://blog.srinudesetti.in/micro-frontend/react/react-micro-frontend-monorepo-turborepo&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Article 8 of 50 in my Micro Frontend series — this is the first article in Section 2 (React MFE). We're moving from fundamentals to hands-on implementation.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webpack</category>
      <category>microfrontend</category>
      <category>react</category>
      <category>srinudesetti</category>
    </item>
    <item>
      <title>Micro Frontend vs SPA: Which Architecture Should You Choose?</title>
      <dc:creator>Srinu Web developer</dc:creator>
      <pubDate>Wed, 25 Mar 2026 09:32:59 +0000</pubDate>
      <link>https://dev.to/srinu_desetti/micro-frontend-vs-spa-which-architecture-should-you-choose-2ogh</link>
      <guid>https://dev.to/srinu_desetti/micro-frontend-vs-spa-which-architecture-should-you-choose-2ogh</guid>
      <description>&lt;p&gt;Your SPA was perfect at 3 developers. At 8 developers, it's a war zone.&lt;/p&gt;

&lt;p&gt;Merge conflicts every morning. A broken Support page blocking the Cart team's release. 5-minute builds that used to take 20 seconds. And a 2.8 MB bundle that loads chart.js, leaflet, and xlsx on the homepage — where nobody needs them.&lt;/p&gt;

&lt;p&gt;Sound familiar?&lt;/p&gt;

&lt;p&gt;I just published a deep-dive comparing SPA and Micro Frontend architectures with &lt;strong&gt;15 real code blocks&lt;/strong&gt; showing both approaches side by side:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you'll see:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ SPA webpack.config.js vs MFE webpack.config.js (Local AND Production — they're different)&lt;br&gt;
→ SPA routing (all routes in one file) vs MFE routing (lazy-loaded remote apps)&lt;br&gt;
→ SPA deployment (one build, one deploy, one bottleneck) vs MFE deployment (30-second independent builds)&lt;br&gt;
→ SPA bundle problem (2.8 MB all upfront) vs MFE targeted loading (150-300 KB per MFE)&lt;br&gt;
→ React Host (ModuleFederationPlugin) vs Next.js Host (NextFederationPlugin) — the config is NOT the same&lt;br&gt;
→ Turborepo pipeline for parallel MFE builds&lt;br&gt;
→ 4-step strangler migration pattern from SPA to MFE&lt;/p&gt;

&lt;p&gt;This isn't "MFE is better than SPA." I show you exactly when SPA is the RIGHT choice (small team, single domain, fast MVP) and when MFE becomes necessary.&lt;/p&gt;

&lt;p&gt;Every code block is from a production system with 7 MFEs running on independent ports.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full comparison:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://blog.srinudesetti.in/micro-frontend/fundamentals/micro-frontend-vs-spa" rel="noopener noreferrer"&gt;https://blog.srinudesetti.in/micro-frontend/fundamentals/micro-frontend-vs-spa&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>microfrontend</category>
      <category>srinudesetti</category>
    </item>
    <item>
      <title>Micro Frontend vs Microservices: What's the Difference?</title>
      <dc:creator>Srinu Web developer</dc:creator>
      <pubDate>Mon, 23 Mar 2026 10:28:54 +0000</pubDate>
      <link>https://dev.to/srinu_desetti/micro-frontend-vs-microservices-whats-the-difference-2076</link>
      <guid>https://dev.to/srinu_desetti/micro-frontend-vs-microservices-whats-the-difference-2076</guid>
      <description>&lt;p&gt;"Micro Frontend is just Microservices for the frontend."&lt;/p&gt;

&lt;p&gt;I hear this in every architecture discussion. And it's &lt;strong&gt;wrong&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They share the same philosophy — decompose a monolith into independently deployable units. But the implementation? Completely different layers, different tools, different problems they solve.&lt;/p&gt;

&lt;p&gt;Here's what most articles won't show you:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The real confusion starts when you need BOTH.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your Products MFE calls the Product Service. Your Cart MFE calls the Cart Service AND the Logistics Service. Your Auth MFE and Account MFE both call the same User Service. One-to-many. Many-to-one. Through an API Gateway. With a shared axios singleton handling JWT refresh across every MFE.&lt;/p&gt;

&lt;p&gt;In this article, I break down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📐 Side-by-side comparison across 14 dimensions (layer, communication, deployment, database, scaling, gateway, team ownership...)&lt;/li&gt;
&lt;li&gt;🔗 How MFEs connect to Microservices through a shared API config pattern — real production code&lt;/li&gt;
&lt;li&gt;🏗️ What a real Express.js microservice looks like (CORS, health checks, Kubernetes probes)&lt;/li&gt;
&lt;li&gt;🐳 Docker Compose running MFEs + Microservices + Nginx + MongoDB together&lt;/li&gt;
&lt;li&gt;⚠️ 3 misconceptions that lead teams to over-engineer&lt;/li&gt;
&lt;li&gt;🧭 Decision flowchart: When to adopt MFE only, Microservices only, both, or neither&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every code block is from a real production system — not toy examples.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full guide with 10+ code blocks, architecture diagrams, and decision framework:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://blog.srinudesetti.in/micro-frontend/fundamentals/micro-frontend-vs-microservices" rel="noopener noreferrer"&gt;https://blog.srinudesetti.in/micro-frontend/fundamentals/micro-frontend-vs-microservices&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is Article 6 in my 50-article Micro Frontend series — from fundamentals through Kubernetes deployment, all based on a real 12-MFE + 8-microservice production system.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>microservices</category>
      <category>microfrontend</category>
      <category>srinudesetti</category>
    </item>
    <item>
      <title>Micro Frontend Folder Structure: Best Practices Guide</title>
      <dc:creator>Srinu Web developer</dc:creator>
      <pubDate>Sun, 22 Mar 2026 09:48:25 +0000</pubDate>
      <link>https://dev.to/srinu_desetti/micro-frontend-folder-structure-best-practices-guide-39e7</link>
      <guid>https://dev.to/srinu_desetti/micro-frontend-folder-structure-best-practices-guide-39e7</guid>
      <description>&lt;p&gt;How you organize your Micro Frontend project determines how easy it is to develop, build, deploy, and scale.&lt;/p&gt;

&lt;p&gt;In this guide, I cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monorepo vs Polyrepo comparison&lt;/li&gt;
&lt;li&gt;The recommended two-directory structure (apps/ + packages/)&lt;/li&gt;
&lt;li&gt;React Remote MFE internal structure with bootstrap.js&lt;/li&gt;
&lt;li&gt;React Host vs Next.js Host — when to use each (they are independent, not competing)&lt;/li&gt;
&lt;li&gt;Local vs Production webpack/next.config differences (with code tabs)&lt;/li&gt;
&lt;li&gt;Shared packages: Redux store, API layer, UI components&lt;/li&gt;
&lt;li&gt;Turborepo pipeline configuration&lt;/li&gt;
&lt;li&gt;Infrastructure co-location (Docker + Kubernetes)&lt;/li&gt;
&lt;li&gt;Anti-patterns to avoid&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every example is from real production projects.&lt;/p&gt;

&lt;p&gt;Read the full article: &lt;a href="https://blog.srinudesetti.in/micro-frontend/fundamentals/micro-frontend-folder-structure" rel="noopener noreferrer"&gt;https://blog.srinudesetti.in/micro-frontend/fundamentals/micro-frontend-folder-structure&lt;/a&gt;&lt;/p&gt;

</description>
      <category>microfrontend</category>
      <category>monorepo</category>
      <category>nextjs</category>
      <category>srinudesett</category>
    </item>
    <item>
      <title>Micro Frontend vs Monolith: How to Choose the Right Architecture</title>
      <dc:creator>Srinu Web developer</dc:creator>
      <pubDate>Tue, 17 Mar 2026 09:31:45 +0000</pubDate>
      <link>https://dev.to/srinu_desetti/micro-frontend-vs-monolith-how-to-choose-the-right-architecture-pfa</link>
      <guid>https://dev.to/srinu_desetti/micro-frontend-vs-monolith-how-to-choose-the-right-architecture-pfa</guid>
      <description>&lt;p&gt;"Should I use Micro Frontend or stick with Monolith?"&lt;/p&gt;

&lt;p&gt;This is the most common question I hear from frontend developers. The answer isn't about team size alone — &lt;strong&gt;scalability matters too&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this article, I cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Side-by-side comparison: Monolith vs Micro Frontend&lt;/li&gt;
&lt;li&gt;A decision framework to help you choose&lt;/li&gt;
&lt;li&gt;Why even small teams should consider MFE for high-traffic apps&lt;/li&gt;
&lt;li&gt;Step-by-step Monolith → MFE migration using the Strangler Fig Pattern&lt;/li&gt;
&lt;li&gt;Real code examples for both architectures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key insight: A 5-person team building a high-traffic e-commerce app with seasonal spikes may benefit more from MFE than a 20-person team building an internal tool.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://blog.srinudesetti.in/micro-frontend/fundamentals/micro-frontend-vs-monolith" rel="noopener noreferrer"&gt;Read the full guide with decision framework →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>microfrontend</category>
      <category>frontend</category>
      <category>webdev</category>
      <category>srinudesetti</category>
    </item>
    <item>
      <title>What is Micro Frontend Architecture? Complete Guide</title>
      <dc:creator>Srinu Web developer</dc:creator>
      <pubDate>Mon, 16 Mar 2026 11:21:10 +0000</pubDate>
      <link>https://dev.to/srinu_desetti/what-is-micro-frontend-architecture-complete-guide-bj8</link>
      <guid>https://dev.to/srinu_desetti/what-is-micro-frontend-architecture-complete-guide-bj8</guid>
      <description>&lt;p&gt;Ever wondered how large-scale apps like Amazon or Spotify manage their massive frontends?&lt;/p&gt;

&lt;p&gt;They don't build one giant monolithic frontend — they split it into &lt;strong&gt;Micro Frontends (MFEs)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this guide, I break down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What Micro Frontend Architecture actually is&lt;/li&gt;
&lt;li&gt;How Webpack Module Federation connects independent apps&lt;/li&gt;
&lt;li&gt;Local vs Production code setup (with real examples)&lt;/li&gt;
&lt;li&gt;Host and Remote configuration patterns&lt;/li&gt;
&lt;li&gt;Common FAQs developers ask about MFE&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're a solo developer or part of a large team, understanding MFE architecture is becoming essential for building scalable web applications.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://blog.srinudesetti.in/micro-frontend/fundamentals/what-is-micro-frontend-architecture" rel="noopener noreferrer"&gt;Read the full guide with code examples →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>react</category>
      <category>microfrontend</category>
    </item>
  </channel>
</rss>
