<?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: Md. Shakhawat Hossain</title>
    <description>The latest articles on DEV Community by Md. Shakhawat Hossain (@shakhawat_dev).</description>
    <link>https://dev.to/shakhawat_dev</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%2F4036411%2Fa0de762d-5627-4822-a5d7-5de77be20627.jpg</url>
      <title>DEV Community: Md. Shakhawat Hossain</title>
      <link>https://dev.to/shakhawat_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shakhawat_dev"/>
    <language>en</language>
    <item>
      <title>React/Next.js Auto Skeleton Loader - @shakhawat.dev/skeleton</title>
      <dc:creator>Md. Shakhawat Hossain</dc:creator>
      <pubDate>Sun, 19 Jul 2026 11:27:02 +0000</pubDate>
      <link>https://dev.to/shakhawat_dev/reactnextjs-auto-skeleton-loader-shakhawatdevskeleton-4n0c</link>
      <guid>https://dev.to/shakhawat_dev/reactnextjs-auto-skeleton-loader-shakhawatdevskeleton-4n0c</guid>
      <description>&lt;p&gt;Frontend Developer দের React/Next দিয়ে কাজ করতে গিয়ে সবচেয়ে বিরক্তিকর যে কাজটা বারবার করতে হয় সেটা হলো — loading state-এর জন্য skeleton UI হাতে করে বানানো। &lt;/p&gt;

&lt;p&gt;প্রতিটা card, প্রতিটা list, প্রতিটা component-এর জন্য আলাদা করে div বসিয়ে, width-height মিলিয়ে, radius ঠিক করে skeleton design করা — অনেক সময় নষ্ট হয়, আর আসল UI বদলালে skeleton-ও হাতে করে আবার আপডেট করতে হয়। &lt;/p&gt;

&lt;p&gt;এই সমস্যা সমাধান করতেই এই npm package টি :- &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Packege Link :&lt;/em&gt;&lt;/strong&gt;    &lt;a href="https://www.npmjs.com/package/@shakhawat.dev/skeleton" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@shakhawat.dev/skeleton&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;কী এই Package?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;@shakhawat.dev/skeleton এমন একটি React Package যেটা আপনার আসল Component-এর DOM parse করে স্বয়ংক্রিয়ভাবে একই structure-এর Skeleton Loader তৈরি করে।&lt;/p&gt;

&lt;p&gt;অর্থাৎ—&lt;/p&gt;

&lt;p&gt;আপনি একবার Real Component লিখবেন।&lt;/p&gt;

&lt;p&gt;Skeleton আর কখনো হাতে বানাতে হবে না।&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Package নিজেই—&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Element Size&lt;br&gt;
Width / Height&lt;br&gt;
Margin&lt;br&gt;
Padding&lt;br&gt;
Border Radius&lt;br&gt;
Flex Layout&lt;br&gt;
Grid Layout&lt;br&gt;
Gap&lt;br&gt;
Alignment&lt;/p&gt;

&lt;p&gt;সব Measure করে Real UI-এর মতোই Skeleton Generate করবে।&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Installation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;আপনার Project Folder Open করুন।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;npm&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;PowerShell&lt;/em&gt;&lt;br&gt;
npm install "@shakhawat.dev/skeleton@latest"&lt;br&gt;
&lt;em&gt;Bash&lt;/em&gt;&lt;br&gt;
npm install @shakhawat.dev/skeleton&lt;br&gt;
&lt;strong&gt;Yarn&lt;/strong&gt;&lt;br&gt;
yarn add @shakhawat.dev/skeleton&lt;br&gt;
&lt;strong&gt;Bun&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;PowerShell&lt;/em&gt;&lt;br&gt;
bun install "@shakhawat.dev/skeleton@latest"&lt;br&gt;
&lt;em&gt;Bash&lt;/em&gt;&lt;br&gt;
bun install @shakhawat.dev/skeleton&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: PowerShell-এ package name @ দিয়ে শুরু হওয়ায় quotes ব্যবহার করতে হবে।&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;সবচেয়ে সহজ ব্যবহার (Recommended)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;ধরুন আপনার একটি Profile Card আছে।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ProfileCard&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="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="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"card"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&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;avatar&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&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="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&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="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&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;bio&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Follow&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&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;শুধু একটি id যোগ করলেন।&lt;/p&gt;

&lt;p&gt;এখন Loading State-এ লিখুন—&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;AutoSkeleton&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="s2"&gt;@shakhawat.dev/skeleton&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;Loader&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;loading&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="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;loading&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="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoSkeleton&lt;/span&gt; &lt;span class="na"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt; &lt;span class="p"&gt;/&amp;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;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ProfileCard&lt;/span&gt; &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ব্যস - কোন Skeleton Design করতে হবে না।&lt;br&gt;
Package নিজেই Profile Card-এর মতো Skeleton Generate করবে।&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;AutoSkeleton কীভাবে কাজ করে?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;প্রথমবার Component Render হওয়ার পর Package—&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DOM Scan করে&lt;/li&gt;
&lt;li&gt;Element Measure করে&lt;/li&gt;
&lt;li&gt;Structure Parse করে&lt;/li&gt;
&lt;li&gt;Skeleton Tree তৈরি করে&lt;/li&gt;
&lt;li&gt;Memory এবং Session Storage-এ Cache করে রাখে&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;এরপর যখনই আপনি একই uid ব্যবহার করবেন—&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoSkeleton&lt;/span&gt; &lt;span class="na"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Package সঙ্গে সঙ্গে Cached Skeleton Render করবে।&lt;br&gt;
অর্থাৎ প্রতিবার নতুন করে Measure করারও দরকার হবে না।&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;SkeletonBoundary (Alternative Way)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;আপনি যদি id ব্যবহার করতে না চান তাহলে SkeletonBoundary ব্যবহার করতে পারেন।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;SkeletonBoundary&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="s2"&gt;@shakhawat.dev/skeleton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SkeletonBoundary&lt;/span&gt;
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt;
    &lt;span class="na"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;loading&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ProfileCard&lt;/span&gt; &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;SkeletonBoundary&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে Component-কে Wrapper-এর মধ্যে রাখলেই হবে।&lt;br&gt;
Loading=true হলে Skeleton দেখাবে।&lt;br&gt;
Loading=false হলে আসল Component Render হবে।&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;পুরো Page-এর Skeleton&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;এই Package শুধু ছোট Card-এর জন্য নয়।&lt;/p&gt;

&lt;p&gt;আপনি চাইলে পুরো Page-এর Skeleton-ও তৈরি করতে পারবেন।&lt;/p&gt;

&lt;p&gt;যেমন—SkeletonBoundary (Alternative Way)&lt;/p&gt;

&lt;p&gt;আপনি যদি id ব্যবহার করতে না চান তাহলে SkeletonBoundary ব্যবহার করতে পারেন।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;SkeletonBoundary&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="s2"&gt;@shakhawat.dev/skeleton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SkeletonBoundary&lt;/span&gt;
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt;
    &lt;span class="na"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;loading&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ProfileCard&lt;/span&gt; &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;SkeletonBoundary&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে Component-কে Wrapper-এর মধ্যে রাখলেই হবে।&lt;br&gt;
Loading=true হলে Skeleton দেখাবে।&lt;br&gt;
Loading=false হলে আসল Component Render হবে।&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;
&lt;h2&gt;
  
  
  Theme Support
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Light Theme&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoSkeleton&lt;/span&gt;
    &lt;span class="na"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt;
    &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"light"&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Dark Theme&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoSkeleton&lt;/span&gt;
    &lt;span class="na"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt;
    &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"dark"&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Custom Color&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoSkeleton&lt;/span&gt;
    &lt;span class="na"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt;
    &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;base&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#ECECEC&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;highlight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#FFFFFF&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  Animation
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Shimmer&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoSkeleton&lt;/span&gt;
    &lt;span class="na"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt;
    &lt;span class="na"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"shimmer"&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Pulse&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoSkeleton&lt;/span&gt;
    &lt;span class="na"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt;
    &lt;span class="na"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"pulse"&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Animation বন্ধ&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoSkeleton&lt;/span&gt;
    &lt;span class="na"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"uid-skeleton-profile-card"&lt;/span&gt;
    &lt;span class="na"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"none"&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Global Theme Provider&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;বারবার Theme Pass না করে পুরো App-এর জন্য Theme Set করতে পারবেন।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;SkeletonThemeProvider&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="s2"&gt;@shakhawat.dev/skeleton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SkeletonThemeProvider&lt;/span&gt;
    &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"dark"&lt;/span&gt;
    &lt;span class="na"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"shimmer"&lt;/span&gt;
&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;App&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;SkeletonThemeProvider&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;নিজের মতো ID Prefix ব্যবহার করুন&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Default Prefix হচ্ছে—&lt;/p&gt;

&lt;p&gt;uid-skeleton&lt;/p&gt;

&lt;p&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;configureAutoSkeleton&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="s2"&gt;@shakhawat.dev/skeleton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;configureAutoSkeleton&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;idPrefix&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;skel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;তাহলে—&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"skel-profile-card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এভাবেও কাজ করবে।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manual Skeleton Components&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;কিছু ক্ষেত্রে আপনি চাইলে নিজেও Skeleton Compose করতে পারবেন।&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;SkeletonBox&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;SkeletonCircle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;SkeletonImage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;SkeletonButton&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;SkeletonText&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="s2"&gt;@shakhawat.dev/skeleton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;যেমন—&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SkeletonCircle&lt;/span&gt; &lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SkeletonText&lt;/span&gt; &lt;span class="na"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SkeletonButton&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SkeletonImage&lt;/span&gt;
    &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"100%"&lt;/span&gt;
    &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SkeletonBox&lt;/span&gt;
    &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"100%"&lt;/span&gt;
    &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  Package-এর Detection Rules
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;Package নিজে থেকেই Element Type Detect করার চেষ্টা করে।&lt;/p&gt;

&lt;p&gt;যেমন—&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Circular Image → Avatar&lt;/li&gt;
&lt;li&gt;Image → Skeleton Image&lt;/li&gt;
&lt;li&gt;Button → Skeleton Button&lt;/li&gt;
&lt;li&gt;SVG → SVG Placeholder&lt;/li&gt;
&lt;li&gt;Text → Multiple Skeleton Lines&lt;/li&gt;
&lt;li&gt;Flex Layout → Flex Layout&lt;/li&gt;
&lt;li&gt;Grid Layout → Grid Layout&lt;/li&gt;
&lt;li&gt;Box → Structural Container&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ফলে বেশিরভাগ ক্ষেত্রেই Manual Configuration লাগে না।&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;Package Design করার সময় Performance-কে গুরুত্ব দেওয়া হয়েছে।&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Single MutationObserver&lt;/li&gt;
&lt;li&gt;DOM Cache&lt;/li&gt;
&lt;li&gt;Session Storage Cache&lt;/li&gt;
&lt;li&gt;React.memo&lt;/li&gt;
&lt;li&gt;Recursive Tree Parsing&lt;/li&gt;
&lt;li&gt;Lightweight Render&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ফলে বড় Project-এও Smooth Performance পাওয়া যায়।&lt;/p&gt;

&lt;h2&gt;
  
  
  **
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;কোন Project-এ ব্যবহার করবেন?
**&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;এই Package বিশেষভাবে উপযোগী—&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;React Projects&lt;/li&gt;
&lt;li&gt;Next.js Projects&lt;/li&gt;
&lt;li&gt;Dashboard&lt;/li&gt;
&lt;li&gt;Admin Panel&lt;/li&gt;
&lt;li&gt;CRM&lt;/li&gt;
&lt;li&gt;E-commerce&lt;/li&gt;
&lt;li&gt;Social Feed&lt;/li&gt;
&lt;li&gt;Profile Page&lt;/li&gt;
&lt;li&gt;SaaS Application&lt;/li&gt;
&lt;li&gt;Portfolio&lt;/li&gt;
&lt;li&gt;Blog Website&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;যেখানে বারবার Skeleton Loader লাগে।&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  কেন এই Package?
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Skeleton UI হাতে লিখতে হয় না।&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Real UI বদলালেই Skeleton নিজে Update হয়ে যায়।&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;একই Component-এর জন্য বারবার Skeleton Maintain করতে হয় না।&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Design Consistency বজায় থাকে।&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;TypeScript Support রয়েছে।&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Light এবং Dark Theme Support।&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Shimmer এবং Pulse Animation।&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Session Cache থাকায় Loading Experience আরও Smooth হয়।&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Future Plan&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Package-টি এখনও Active Development-এ রয়েছে।&lt;/p&gt;

&lt;p&gt;ভবিষ্যতে আরও কিছু Feature যোগ করার পরিকল্পনা আছে—&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Better Nested Layout Detection&lt;/li&gt;
&lt;li&gt;Better SVG Support&lt;/li&gt;
&lt;li&gt;Virtualized List Optimization&lt;/li&gt;
&lt;li&gt;More Theme Presets&lt;/li&gt;
&lt;li&gt;Better Animation Customization&lt;/li&gt;
&lt;li&gt;DevTools Support&lt;/li&gt;
&lt;li&gt;Performance Improvements&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;এই Package সম্পূর্ণ Open Source।&lt;/p&gt;

&lt;p&gt;আপনি ব্যবহার করে যদি কোনো Bug, Suggestion অথবা Feature Request পান, অবশ্যই জানাবেন।&lt;/p&gt;

&lt;p&gt;আপনার Feedback এই Project-কে আরও ভালো করতে সাহায্য করবে।&lt;/p&gt;

&lt;p&gt;Happy Coding ❤️&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>productivity</category>
      <category>react</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
