<?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: Gokcan Degirmenci</title>
    <description>The latest articles on DEV Community by Gokcan Degirmenci (@gokcan).</description>
    <link>https://dev.to/gokcan</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%2F107496%2F688587d7-0d6b-47d2-ab76-7ff7620cb41c.jpg</url>
      <title>DEV Community: Gokcan Degirmenci</title>
      <link>https://dev.to/gokcan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gokcan"/>
    <language>en</language>
    <item>
      <title>🤙🏼 How I Handle Async Image Loading in React with Suspense-like library? </title>
      <dc:creator>Gokcan Degirmenci</dc:creator>
      <pubDate>Sat, 16 May 2020 22:00:05 +0000</pubDate>
      <link>https://dev.to/gokcan/how-i-handle-async-image-img-loading-in-react-4m28</link>
      <guid>https://dev.to/gokcan/how-i-handle-async-image-img-loading-in-react-4m28</guid>
      <description>&lt;p&gt;Long story short, I wrote a Suspense-like async loading, native, React &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; component almost two years ago. And today, I've published major changes to react-shimmer. (Thank you Mr. Quarantine 👌🏼).&lt;/p&gt;

&lt;p&gt;Introducing the Release v3.0.0 🤙🏼🌠&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source code has been rewritten in TypeScript.&lt;/li&gt;
&lt;li&gt;Native &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; component props (all of them) are preserved.&lt;/li&gt;
&lt;li&gt;Enforced "separation of concerns" between the actual async handling logic and "loaders". New &lt;em&gt;pluggable-loader&lt;/em&gt; architecture.&lt;/li&gt;
&lt;li&gt;Better dependency management + deploy/publish process.&lt;/li&gt;
&lt;li&gt;Zero dependencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check it out! 😇&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vWogaON8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-28d89282e0daa1e2496205e2f218a44c755b0dd6536bbadf5ed5a44a7ca54716.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/gokcan"&gt;
        gokcan
      &lt;/a&gt; / &lt;a href="https://github.com/gokcan/react-shimmer"&gt;
        react-shimmer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🌠Suspense-like loading, native React &amp;lt;img&amp;gt; component
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/f4bc0d165384e2fb85029768b0204622f7e9bc0a/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f6c6f676f2e706e67"&gt;&lt;img alt="Logo" src="https://camo.githubusercontent.com/f4bc0d165384e2fb85029768b0204622f7e9bc0a/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f6c6f676f2e706e67" width="40%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A powerful, customisable, Suspense-like &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; component that (optionally) simulates a &lt;a href="https://github.com/facebook/Shimmer"&gt;&lt;strong&gt;shimmer&lt;/strong&gt;&lt;/a&gt; effect while &lt;strong&gt;loading&lt;/strong&gt;. (with zero dependencies!).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
  &lt;a href="https://www.npmjs.com/package/react-shimmer" rel="nofollow"&gt;
    &lt;img alt="NPM" src="https://camo.githubusercontent.com/86911d5654f288b3fc0ad999dbee96d4198ecd41/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f72656163742d7368696d6d65722e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://standardjs.com" rel="nofollow"&gt;
    &lt;img alt="JavaScript Style Guide" src="https://camo.githubusercontent.com/58fbab8bb63d069c1e4fb3fa37c2899c38ffcd18/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64655f7374796c652d7374616e646172642d627269676874677265656e2e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/gokcan/react-shimmer/actions?query=workflow%3A%22Node.js+CI%22"&gt;
    &lt;img alt="Github Actions CI Status" src="https://res.cloudinary.com/practicaldev/image/fetch/s--0qddEl4q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/gokcan/react-shimmer/workflows/Node.js%2520CI/badge.svg%3Fbranch%3Dmaster"&gt;
  &lt;/a&gt;
  &lt;a href="https://codeclimate.com/github/gokcan/react-shimmer/maintainability" rel="nofollow"&gt;
    &lt;img alt="Maintainability" src="https://camo.githubusercontent.com/5ecd30add42244751f1eef02ed6719b5116f0e8c/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f61393961383864323861643337613739646266362f6d61696e7461696e6162696c697479"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/26b5a0815731fc9d282a9299af0f922567232e15/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f6865616465722e706e67"&gt;&lt;img alt="Header" src="https://camo.githubusercontent.com/26b5a0815731fc9d282a9299af0f922567232e15/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f6865616465722e706e67" width="60%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;
&lt;a href="https://stackblitz.com/edit/react-shimmer-demo?embed=1&amp;amp;file=index.js" rel="nofollow"&gt;&lt;strong&gt;Live Demo&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/92f836c3865f034ba3d5df879c43cf4d0facc3ff/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f64656d6f2e676966"&gt;&lt;img src="https://camo.githubusercontent.com/92f836c3865f034ba3d5df879c43cf4d0facc3ff/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f64656d6f2e676966" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
Install&lt;/h2&gt;

&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;npm i react-shimmer&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;yarn add react-shimmer&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;
Usage&lt;/h2&gt;

&lt;div class="highlight highlight-source-js-jsx"&gt;&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-smi"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;react&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-smi"&gt;Image&lt;/span&gt;, { &lt;span class="pl-smi"&gt;Shimmer&lt;/span&gt; } &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;react-shimmer&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-en"&gt;App&lt;/span&gt;() {
  &lt;span class="pl-k"&gt;return&lt;/span&gt; (
    &amp;lt;&lt;span class="pl-ent"&gt;div&lt;/span&gt;&amp;amp;gt
      &amp;lt;&lt;span class="pl-ent"&gt;Image&lt;/span&gt;
        &lt;span class="pl-e"&gt;src&lt;/span&gt;&lt;span class="pl-k"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;https://source.unsplash.com/random/800x600&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
        &lt;span class="pl-e"&gt;fallback&lt;/span&gt;&lt;span class="pl-k"&gt;=&lt;/span&gt;&lt;span class="pl-pse"&gt;{&lt;/span&gt;&amp;lt;&lt;span class="pl-ent"&gt;Shimmer&lt;/span&gt; &lt;span class="pl-e"&gt;width&lt;/span&gt;&lt;span class="pl-k"&gt;=&lt;/span&gt;&lt;span class="pl-pse"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;800&lt;/span&gt;&lt;span class="pl-pse"&gt;}&lt;/span&gt; &lt;span class="pl-e"&gt;height&lt;/span&gt;&lt;span class="pl-k"&gt;=&lt;/span&gt;&lt;span class="pl-pse"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;600&lt;/span&gt;&lt;span class="pl-pse"&gt;}&lt;/span&gt; /&amp;gt;&lt;span class="pl-pse"&gt;}&lt;/span&gt;
      /&amp;amp;gt
    &amp;lt;/&lt;span class="pl-ent"&gt;div&lt;/span&gt;&amp;gt;
  )
}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;or you can use your custom React component as a fallback:&lt;/p&gt;
&lt;div class="highlight highlight-source-js-jsx"&gt;&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-smi"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;react&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-smi"&gt;Image&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;react-shimmer&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;

&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-smi"&gt;Spinner&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;./Spinner&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;

&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-en"&gt;App&lt;/span&gt;(&lt;span class="pl-smi"&gt;props&lt;/span&gt;) {
  &lt;span class="pl-k"&gt;return&lt;/span&gt; (
    &amp;lt;&lt;span class="pl-ent"&gt;div&lt;/span&gt;&amp;gt;
      &amp;lt;&lt;span class="pl-ent"&gt;Image&lt;/span&gt;
        &lt;span class="pl-e"&gt;src&lt;/span&gt;&lt;span class="pl-k"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;https://example.com/test.jpg&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;
        &lt;span class="pl-e"&gt;fallback&lt;/span&gt;&lt;span class="pl-k"&gt;=&lt;/span&gt;&lt;span class="pl-pse"&gt;{&lt;/span&gt;&amp;lt;&lt;span class="pl-ent"&gt;Spinner&lt;/span&gt; /&amp;gt;&lt;span class="pl-pse"&gt;}&lt;/span&gt;
      /&amp;gt;
    &amp;lt;/&lt;span class="pl-ent"&gt;div&lt;/span&gt;&amp;gt;
  )
}&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
Properties&lt;/h3&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Default value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/gokcan/react-shimmer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7oH8_JZt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/h47vgbiq6qbc8o2yvr4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7oH8_JZt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/h47vgbiq6qbc8o2yvr4e.png" alt="react-shimmer"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>image</category>
      <category>suspense</category>
      <category>lazyloading</category>
    </item>
    <item>
      <title>🌠 react-shimmer: a Better way to handle async images in React!</title>
      <dc:creator>Gokcan Degirmenci</dc:creator>
      <pubDate>Fri, 12 Oct 2018 13:58:22 +0000</pubDate>
      <link>https://dev.to/gokcan/-react-shimmer-a-better-way-to-handle-async-images-in-react-43pp</link>
      <guid>https://dev.to/gokcan/-react-shimmer-a-better-way-to-handle-async-images-in-react-43pp</guid>
      <description>&lt;h1&gt;
  
  
  The Problem 😐
&lt;/h1&gt;

&lt;p&gt;I needed a custom Image component to asynchronously load images in React. After experimenting with possible ideas, I wanted to apply Facebook's original placeholder effect(e.g. &lt;a href="https://github.com/facebook/Shimmer" rel="noopener noreferrer"&gt;Shimmer&lt;/a&gt;) in my custom Image component. The challenge was: it also must work nicely with &lt;strong&gt;different image sizes&lt;/strong&gt; and &lt;strong&gt;ratios&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Introducing the solution 🧠
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;react-shimmer&lt;/code&gt; is a powerful, &lt;strong&gt;highly customizable&lt;/strong&gt; React &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; component that simulates a shimmer 🌠 effect while the image is loading. (with zero dependencies!).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Written entirely in next-gen JS.&lt;/li&gt;
&lt;li&gt;Exactly zero-dependency! Only a few KBs.&lt;/li&gt;
&lt;li&gt;Animation duration, delay and color options are fine-tunable.&lt;/li&gt;
&lt;li&gt;Better error handling compared to default &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Same feel of the shimmer effect on different aspect ratios and sizes.&lt;/li&gt;
&lt;li&gt;(P.S. Looking for new contributors, feel free to ping me!)&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/gokcan" rel="noopener noreferrer"&gt;
        gokcan
      &lt;/a&gt; / &lt;a href="https://github.com/gokcan/react-shimmer" rel="noopener noreferrer"&gt;
        react-shimmer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🌠 Async loading, performant Image component for React.js
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/c7f840f4dd327c6ac4a87225e178ae1b666beaaf122886a651db1ad8c5d791ef/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f6c6f676f2e706e67"&gt;&lt;img alt="Logo" src="https://camo.githubusercontent.com/c7f840f4dd327c6ac4a87225e178ae1b666beaaf122886a651db1ad8c5d791ef/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f6c6f676f2e706e67" width="40%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A powerful, customisable, Suspense-like &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; component that (optionally) simulates a &lt;a href="https://github.com/facebook/Shimmer" rel="noopener noreferrer"&gt;&lt;strong&gt;shimmer&lt;/strong&gt;&lt;/a&gt; effect while &lt;strong&gt;loading&lt;/strong&gt;. (with zero dependencies!).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
  &lt;a href="https://www.npmjs.com/package/react-shimmer" rel="nofollow noopener noreferrer"&gt;
    &lt;img alt="NPM" src="https://camo.githubusercontent.com/75992b66f74d78c1665a50f6a78fe3b348dd1cb80548817c06ad20d7f52b0d11/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f72656163742d7368696d6d65722e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://standardjs.com" rel="nofollow noopener noreferrer"&gt;
    &lt;img alt="JavaScript Style Guide" src="https://camo.githubusercontent.com/5338a68a0f130dc684279ff3e42e45c9c74006018a1bdeaac76905979b3ccd49/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64655f7374796c652d7374616e646172642d627269676874677265656e2e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/gokcan/react-shimmer/actions?query=workflow%3A%22Node.js+CI%22" rel="noopener noreferrer"&gt;
    &lt;img alt="Github Actions CI Status" src="https://github.com/gokcan/react-shimmer/workflows/Node.js%20CI/badge.svg?branch=master"&gt;
  &lt;/a&gt;
  &lt;a href="https://codeclimate.com/github/gokcan/react-shimmer/maintainability" rel="nofollow noopener noreferrer"&gt;
    &lt;img alt="Maintainability" src="https://camo.githubusercontent.com/088a2604c208e46f6f3626d23996ce84c2f46713cf9c4f5ac8ea694cb79962ee/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f61393961383864323861643337613739646266362f6d61696e7461696e6162696c697479"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a9721e2e54c1eb3f78ffb05d6a783d5fed2895e1e52b44cc0dbf437dd17c0ed7/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f6865616465722e706e67"&gt;&lt;img alt="Header" src="https://camo.githubusercontent.com/a9721e2e54c1eb3f78ffb05d6a783d5fed2895e1e52b44cc0dbf437dd17c0ed7/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f6865616465722e706e67" width="60%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;a href="https://codesandbox.io/s/nh9x1" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Live Demo&lt;/strong&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/e382d144e815f1a5228a1f09da6ccd788c734dd545225d3f9de6926a61f8a76f/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f64656d6f2e676966"&gt;&lt;img src="https://camo.githubusercontent.com/e382d144e815f1a5228a1f09da6ccd788c734dd545225d3f9de6926a61f8a76f/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f64656d6f2e676966" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm i react-shimmer&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;yarn add react-shimmer&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react'&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;Image&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-v"&gt;Shimmer&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react-shimmer'&lt;/span&gt;

&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;div&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;Image&lt;/span&gt;
        &lt;span class="pl-c1"&gt;src&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;'https://source.unsplash.com/random/800x600'&lt;/span&gt;
        &lt;span class="pl-c1"&gt;fallback&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;Shimmer&lt;/span&gt; &lt;span class="pl-c1"&gt;width&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;800&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-c1"&gt;height&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;600&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;
      &lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;div&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="pl-kos"&gt;)&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react'&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;Image&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-v"&gt;Breathing&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react-shimmer'&lt;/span&gt;

&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;div&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;Image&lt;/span&gt;
        &lt;span class="pl-c1"&gt;src&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;'https://source.unsplash.com/random/800x600'&lt;/span&gt;
        &lt;span class="pl-c1"&gt;fallback&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;Breathing&lt;/span&gt; &lt;span class="pl-c1"&gt;width&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;800&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-c1"&gt;height&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;600&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;
      &lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;div&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="pl-kos"&gt;)&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;or you can use your custom React component as a fallback:&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react'&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/gokcan/react-shimmer" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fh47vgbiq6qbc8o2yvr4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fh47vgbiq6qbc8o2yvr4e.png" alt="react-shimmer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You may also reach out to me on &lt;a href="https://twitter.com/skylifee7" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>ui</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
