<?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: Suyash Vashishtha</title>
    <description>The latest articles on DEV Community by Suyash Vashishtha (@suyashdev).</description>
    <link>https://dev.to/suyashdev</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%2F744686%2F5c614616-c18e-4cc5-a21c-d845e0390638.png</url>
      <title>DEV Community: Suyash Vashishtha</title>
      <link>https://dev.to/suyashdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/suyashdev"/>
    <language>en</language>
    <item>
      <title>How I boosted my App Performance up to 80%</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Mon, 07 Oct 2024 06:35:00 +0000</pubDate>
      <link>https://dev.to/suyashdev/how-i-boosted-my-app-performance-up-to-80-334n</link>
      <guid>https://dev.to/suyashdev/how-i-boosted-my-app-performance-up-to-80-334n</guid>
      <description>&lt;h3&gt;
  
  
  ⌛ Recap Time
&lt;/h3&gt;

&lt;p&gt;In my last blog I talked about how I Reduced my app size from 75MB to 34MB in just 2 weeks ( &lt;a href="https://dev.to/suyashdev/how-i-reduced-my-app-size-from-75mb-to-34mb--51m1"&gt;View !&lt;/a&gt; ). But that's not all , I also improved overall performance of our app upto 80% 🚀.&lt;/p&gt;

&lt;p&gt;Let's discover HOW !!&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🕜 The Lore
&lt;/h2&gt;

&lt;p&gt;After a simple round of walk through I discovered few of the top tier issues in our app leading to bad user experience and performance single headedly. What a day !&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Main Villain - Whole App UI Frozen while generating Realtime response&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Side Villain - Slow response time and No frame rates&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Villain's lover - Too many Api calls &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Undead Army - Poor Error handling and crashes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sufferings - More CPU usages and Server Costs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Tarnished - ME !&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57dpwy4gm5eazj66pv6f.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57dpwy4gm5eazj66pv6f.jpg" alt="Tarnished"&gt;&lt;/a&gt;&lt;br&gt;
Hence a lifeless battle of recreation of universe with a better world hope begins. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Tahiti Plan ( But this time it works )
&lt;/h2&gt;

&lt;p&gt;So I started with tackling the easier problems first as it is easy to ignore the great depression than fighting it on the moment.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. ⚛️ Curse of React
&lt;/h3&gt;

&lt;p&gt;The Wisdom and Curse of ReactJs is states. As we grow older in React we realize that lesser the states more better the application. Hence this particular piece of art was using 22 ( Yes goddamn 22 useStates) in a single chat screen where all you can do is send message and receive message.&lt;/p&gt;

&lt;p&gt;Cherry on the top !&lt;br&gt;
We were using Server Side event implementation for getting chunk-by-chunk data from server , which in case was word-by-word. So if you had a query which has a response of 100 words ( THIS IS LEAST OF RESPONSE ). It will actually receive 100 events.&lt;/p&gt;

&lt;p&gt;So if you know the maths, &lt;strong&gt;100*22 = 2200 re-renders&lt;/strong&gt; each time we get a response.&lt;/p&gt;

&lt;p&gt;Do I have to explain any further ? ( NO )&lt;/p&gt;

&lt;p&gt;So I begin recreating the whole screen and took down the number to 6 states now. With better and smooth functionality as before. &lt;/p&gt;

&lt;p&gt;That is &lt;strong&gt;72% more performant&lt;/strong&gt; that previous !!&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2. ❄️ The Frozen Desert
&lt;/h2&gt;

&lt;p&gt;Now after witnessing the Radahn of React, we can easily conclude that app is going to be freezing quite a lot right ?&lt;/p&gt;

&lt;p&gt;Now even with 6 states, the main issue remains same it is 100*6. We are still hanging but with less states.&lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuj5fi3b01h9qep14dd6u.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuj5fi3b01h9qep14dd6u.jpg" alt="Hang with less states"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The main cause was, react dom getting updated on each chunk. So to tackle this we used &lt;strong&gt;"Batch Processing &amp;amp; Frame Rates Generation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Hell Yeahh !&lt;/p&gt;

&lt;p&gt;So basically instead updating the DOM each time we get a chunk, we were making batches of chunk and updating it in a fixed dynamic frame rate. These frame rates were called from OS so every device will have a different FPS as per system capacity giving the app more robust and compatible performance.&lt;/p&gt;

&lt;p&gt;We captured a limited set of chunks in a batch and hold the response till the frame is released and repeated the same till all chunks are processed.&lt;/p&gt;

&lt;p&gt;Hence instead of updating DOM 100 times we only updated DOM 3-4 times. &lt;/p&gt;

&lt;p&gt;Now do the maths and calculate the performance enhancement for Homework !&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  3. 😊 Be a good listener !
&lt;/h2&gt;

&lt;p&gt;It didn't work for me to get a girlfriend, but certainly worked to make the app much better. &lt;/p&gt;

&lt;p&gt;Apis are cool and nice way to get data but using them wisely is a skill of your own ! Now this app was using this api to get the user status from backend. But the best part is it was using it every 3 seconds !!&lt;/p&gt;

&lt;p&gt;I get it, developer had insecurities but this is not what they meant by bringing Work-life balance.&lt;/p&gt;
&lt;h4&gt;
  
  
  a) Fetching
&lt;/h4&gt;

&lt;p&gt;In order to get the user data every time user uses the app, is to make the call at app start or every time app gets called from recent ( App state listener ). Calling it every 3 seconds not only uses Mobile resources into a infinite stream but also cause Server overhead .&lt;/p&gt;

&lt;p&gt;Instead of getting 100 requests from 100 users, serve will get 100 request from 1 user. Doesn't sound very scalable and reliable to me.&lt;/p&gt;

&lt;p&gt;As well as it creates untraceable memory leaks and usages which creates problem in longer usages.&lt;/p&gt;
&lt;h4&gt;
  
  
  b) Data Flow
&lt;/h4&gt;

&lt;p&gt;Now after resolving that inhouse DDOS attack, I discovered that this app was using many apis whose data was getting ghosted in thin air ( Poor data handling ). Instead of caching data and using it again in same flow, the app was calling apis again. &lt;/p&gt;

&lt;p&gt;I made sure data gets cached and flowed linearly to the flow and api is called only when needed for fresh instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Point to remember !&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This resulted in better server health and less downtime for our backend due to too much api requests. As it costs company to run backend it is crucial to use apis effectively and only when needed&lt;/p&gt;

&lt;p&gt;Not only for backend but for frontend as well, making extra api calls make it more system consuming as it has to do more HTTP handshakes and protocols every time you make a call.&lt;/p&gt;


&lt;h2&gt;
  
  
  3. 😎 Its not a Error if we don't acknowledge it !
&lt;/h2&gt;

&lt;p&gt;One of the crucial thing for handling apis is, ERRORS. Consoling them to the logs isnt enough as it makes user's exp far worse than their good usages.&lt;/p&gt;

&lt;p&gt;It is important to handle errors from any action using some kind of feedback system . It can be an Alert or Popup or Toast or anything. But user should know why and how it happened so that they can report it back or atleast get to know what they did wrong !&lt;/p&gt;


&lt;h2&gt;
  
  
  4. 💔 Her Memories
&lt;/h2&gt;

&lt;p&gt;Gottacha homie ! She aint coming back but the memory leaks will. One of the main thing we forget while attaching any listener or Api call is to remove its instance after we close that activity.&lt;/p&gt;

&lt;p&gt;This app had tone of it, api calls were getting called even after activity is closed or in background. Causing unnecessary CPU usage and resource hogging making app more laggy and hard to use.&lt;/p&gt;

&lt;p&gt;Proper cleaning of these makes app more faster and less over heading. &lt;/p&gt;


&lt;h2&gt;
  
  
  5. Declaration of Performance
&lt;/h2&gt;

&lt;p&gt;Now a basic way to use any asset is to import it and use it right ?&lt;/p&gt;

&lt;p&gt;But do you know how it works ? Every time you default import an item it gets allocated into memory with an initialization. So if you import and declare a Image or component in 5 files like this&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="nx"&gt;Profile&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../profile&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will create 5 instances of it for the same thing !&lt;/p&gt;

&lt;p&gt;Instead you should call all assets in one index file and import the object from it, that way it will only be declared once and will be used by Reference everywhere.&lt;/p&gt;

&lt;p&gt;Hence reducing the memory usage to 4/5. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Conclusion -
&lt;/h2&gt;

&lt;p&gt;Your a good man Arthor ! ( Sorry I just completed RDR2 and it was a great great game ) . &lt;/p&gt;

&lt;p&gt;With these changes the app performance boosted like hell with not just better mobile side health but as well as better Server side optimization. &lt;/p&gt;

&lt;p&gt;The Store Rating went from 3.5 to 4.1 in just 1 week of using !!!&lt;/p&gt;

&lt;p&gt;Remember it is not just a code but a story on how users interacts with it.&lt;/p&gt;

&lt;p&gt;As a Frontend developer, the whole product depends upon us. No matter how scalable the backend is, the end product which user is going to use is out creation and it is the only thing they make decision on. So it is most important for us to give them a smooth interaction which leads to better business for the entire company.&lt;/p&gt;

&lt;p&gt;🚀 Drop comments if you like the blog, or share it with your homies to let them enjoy it as well !&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>android</category>
      <category>ios</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How I reduced my app size from 75MB to 34MB !!</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Fri, 27 Sep 2024 07:55:59 +0000</pubDate>
      <link>https://dev.to/suyashdev/how-i-reduced-my-app-size-from-75mb-to-34mb--51m1</link>
      <guid>https://dev.to/suyashdev/how-i-reduced-my-app-size-from-75mb-to-34mb--51m1</guid>
      <description>&lt;h2&gt;
  
  
  🕜 The Lore
&lt;/h2&gt;

&lt;p&gt;So recently I was hired by Neurobridge Tech. as a Senior Mobile app developer to develop and lead end-to-end product development of their Flagship app Chanakya AI !&lt;/p&gt;

&lt;p&gt;Wanna checkout the app? &lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=tech.neurobridge.chanakya" rel="noopener noreferrer"&gt;Download Android &lt;/a&gt; &lt;br&gt;
&lt;a href="https://apps.apple.com/us/app/chanakya-ai/id6504797681" rel="noopener noreferrer"&gt;Download iOS&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now they already had the app released and users were using it quite a much. But the app size was around 75mb at that time. So naturally we had some issues with performance, scale, etc but we will discuss that in the next post.&lt;/p&gt;

&lt;p&gt;Back to the lore, now as industry-standard a Simple app without any complex processing at the client side or 30-40 heavy animation screens, the app size should not be more than 25 MB; but as we are using Server side event handling and some advanced features, 35Mb is fine. &lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flju9oqsef09jsbp993mg.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flju9oqsef09jsbp993mg.png" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But here we are with a Big Chungas 75MB Asteroid Destroyer !!&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Realization....
&lt;/h2&gt;

&lt;p&gt;I started by identifying where we were using spaces. After a good look ( I was traumatized by the code base ) I discovered that the whole app needs to be refactored with better code practices and more optimized manner &lt;br&gt;
(Some things are beyond salvation ) &lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p1jzkbbi0ond6vudq54.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p1jzkbbi0ond6vudq54.jpg" alt="frustated" width="760" height="570"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Recreation (But Better)
&lt;/h2&gt;

&lt;p&gt;Hence after getting OCD from the old code base, I started making new architecture while referring to old ones. &lt;/p&gt;

&lt;p&gt;Now here comes the main part -&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 🛞 Reinventing Wheel
&lt;/h3&gt;

&lt;p&gt;I noticed that previously we made different screens and components for the functionalities which were 80% the same ( Logged-in user and Guest user ) So I started by combining both flows to reduce the code base. &lt;/p&gt;

&lt;p&gt;I deleted over 300 files of code and brought the whole code base to 75% less code ( 1500 lines of code to approx 350 lines ).&lt;/p&gt;

&lt;p&gt;One of the things to always remember is that, if 2 or more modules have the same base functionality of over 70%, it is always better to keep them in a single source while maintaining a conditional execution. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 🖼️ The Collector
&lt;/h3&gt;

&lt;p&gt;As development is a rapid thing in startups, we often forget to delete any unnecessary files or assets that might make our app heavy from shadows. &lt;/p&gt;

&lt;p&gt;I analyzed and modularised whole images and assets and deleted the unused media leading to size reduction while bundling assets. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. ♾️ Domain expansion - NPM Install
&lt;/h3&gt;

&lt;p&gt;As more experienced you get, the more you realize that if it can be done manually then just do it. &lt;/p&gt;

&lt;p&gt;Don't be that guy "Just one more module bro, I can remove it anytime I want"&lt;/p&gt;

&lt;p&gt;Using Node modules for every little thing even when you can do it yourself isn't cool ! This Bad boi had 3.5GB of Node modules in it ( YESS the freaking GigaByte ) ! &lt;/p&gt;

&lt;p&gt;I don't know how it happened, and really not interested to know as well!&lt;/p&gt;

&lt;p&gt;All I cared about was reducing it to minimal while recreating most of the functionalities and removing unused linked modules as native linked modules get bundled even if they are not used in JS code.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. 🦚 Geeta Method - The Single Source of Truth
&lt;/h3&gt;

&lt;p&gt;Often while developing a complex and interlinked application, we forget to make it modular and more globalized.&lt;/p&gt;

&lt;p&gt;Previously we were using all values, methods, functions, etc by hardcoding them directly in place, which led to extra compilation and memory usage. Leading to a bad product.&lt;/p&gt;

&lt;p&gt;I Modularized every reusable item ( variables, strings, functions, data handlers, etc ) to make sure everything gets initialized only once and then can be used by reference.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Conclusion
&lt;/h2&gt;

&lt;p&gt;With all this refactoring and carefully crafted code in 2 weeks, we were finally able to reduce the app size from 75MB to 34MB in stores. &lt;/p&gt;

&lt;p&gt;A Smaller app not only runs faster but plays a crucial role in user traffic. Nobody wants a Big Chungus app with a slow process, everyone likes to keep it small, fast, and quick. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎁 Bonus Content ( Cause why not )
&lt;/h2&gt;

&lt;p&gt;While keeping the app size at best, I also made the whole app 🚀 80% faster in performance and reduced the Network request down to 50% ultimately leading to &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better server health&lt;/li&gt;
&lt;li&gt;Less Loadings&lt;/li&gt;
&lt;li&gt;Less Overheads&lt;/li&gt;
&lt;li&gt;Less downtime&lt;/li&gt;
&lt;li&gt;Less running cost&lt;/li&gt;
&lt;li&gt;Scalability stonks&lt;/li&gt;
&lt;li&gt;Low Latency&lt;/li&gt;
&lt;li&gt;Fast UI/UX Flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sounds Cool right !?&lt;br&gt;
Check out my next post to see how what I exactly used to make the system 80% efficient while keeping size and deps minimal!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/suyashdev/how-i-boosted-my-app-performance-up-to-80-334n"&gt;Click here&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Thanks for Reading my Homies!
&lt;/h3&gt;

&lt;p&gt;Show some love in a comment or ask anything you like :)&lt;/p&gt;

&lt;p&gt;👋 Until Next time!&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>javascript</category>
      <category>mobile</category>
      <category>android</category>
    </item>
    <item>
      <title>How to Send Data while Navigating Back in React Native</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Mon, 30 Jan 2023 18:20:20 +0000</pubDate>
      <link>https://dev.to/suyashdev/how-to-send-data-while-navigating-back-in-react-native-17dj</link>
      <guid>https://dev.to/suyashdev/how-to-send-data-while-navigating-back-in-react-native-17dj</guid>
      <description>&lt;p&gt;It is one of the most common issues in Mobile apps in React Native. We can send data from ScreenA to ScreenB in params but can't send data from ScreenB to ScreenA while navigating back!&lt;/p&gt;

&lt;h2&gt;
  
  
  But I have got a Hack!
&lt;/h2&gt;

&lt;p&gt;In this blog, I am gonna tell you how to send data from ScreenB to ScreenA while navigating back.&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's start by making Screen A
&lt;/h3&gt;

&lt;p&gt;In ScreeA, I created a button to navigate to ScreenB with no data.&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.amazonaws.com%2Fuploads%2Farticles%2F313fm0friki5fs9ocozz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F313fm0friki5fs9ocozz.png" alt="ScreenA" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting up Screen B
&lt;/h3&gt;

&lt;p&gt;Now in ScreenB let's make a similar button for going back, but instead of using &lt;code&gt;navigation.goBack()&lt;/code&gt; we will use &lt;code&gt;navigation.navigate()&lt;/code&gt; here.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reason&lt;/strong&gt; - In &lt;code&gt;navigation.navigate()&lt;/code&gt; function, If the given path is present in the navigation tree, it will navigate to that path instead of creating a new one, else It will create a new path.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
And as we know, ScreenA was already there in our navigation tree so &lt;code&gt;navigation.navigate()&lt;/code&gt; will move to ScreenA which is technically our previous screen.&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.amazonaws.com%2Fuploads%2Farticles%2Fcywncp6cavun6pocp3kp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcywncp6cavun6pocp3kp.png" alt="ScreenB" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you might notice here, that the arguments are different from regular ones. Let me explain-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;name&lt;/strong&gt; - Screen/Route Name&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;data&lt;/strong&gt; - data to be passed in routes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;merge&lt;/strong&gt; -
true if you want to merge the data with the given screen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this, we can &lt;strong&gt;send data to ScreenA&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to handle the new data in Screen A?
&lt;/h2&gt;

&lt;p&gt;When we initialised the screen we didn’t mention any routes params data because there weren't any!&lt;br&gt;
So how are we going to handle this new data in Screen A?&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.amazonaws.com%2Fuploads%2Farticles%2Fvj593v4gqhgkq93vxzrv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvj593v4gqhgkq93vxzrv.png" alt="Code to handle data from ScreenB to ScreenA" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In ScreenA we will place a useEffect for new route data with a " ? " to check if the data key exists. Initially, the data key wouldn’t exist hence it will do nothing, but after navigating back from ScreenB it will get engaged and log the new data.&lt;/p&gt;

&lt;p&gt;Basically we are forcing new route data into our ScreenA.&lt;/p&gt;

&lt;p&gt;And POOF, we have our data from ScreenB!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for Reading !&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>blockchain</category>
      <category>web3</category>
      <category>offers</category>
    </item>
    <item>
      <title>React States works by Reference</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Mon, 30 Jan 2023 09:12:59 +0000</pubDate>
      <link>https://dev.to/suyashdev/react-states-works-by-reference-58ae</link>
      <guid>https://dev.to/suyashdev/react-states-works-by-reference-58ae</guid>
      <description>&lt;p&gt;Today I learned something cool in React. I was trying to update a post in the list of Posts ( State ) but even after changing the element's key value, it wasn't reflecting in UI ( but showing updated data in the console log. I spent hours trying to figure out why it is happening and according to JS, I was doing the right array manipulation.&lt;/p&gt;

&lt;p&gt;So I did some research and a GitHub thread finally guided me to the right track, comes out that the React States are used by references not by value.&lt;/p&gt;

&lt;p&gt;"React compares by reference, in the setState(newState) call, you are just setting the state to the same list. Changing the contents of the list doesn't change the reference to the list. When the next state is the same as the old state, React bails out on doing any work.&lt;br&gt;
One quick thing you can do is slice the array like this:&lt;/p&gt;

&lt;p&gt;const newData = oldData.slice(0);&lt;br&gt;
newData[0] = 'something'&lt;br&gt;
setState(newData);&lt;br&gt;
"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vercel/next.js/discussions/32802#discussioncomment-2652014"&gt;GitHub Thread&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here slice() returns a new array based on the given condition, so it breaks the state reference and creates a new array reference. Now React will take the new array as a different entity and will update the state.&lt;/p&gt;

&lt;p&gt;React is a beautiful thing ❤️&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to show Loading wrapper in ReactJS / React Native while api call !</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Thu, 27 Oct 2022 21:17:50 +0000</pubDate>
      <link>https://dev.to/suyashdev/how-to-show-loading-wrapper-in-reactjs-react-native-while-api-call--26oe</link>
      <guid>https://dev.to/suyashdev/how-to-show-loading-wrapper-in-reactjs-react-native-while-api-call--26oe</guid>
      <description>&lt;p&gt;No Introduction, Let's cut to the chase&lt;/p&gt;

&lt;p&gt;You have an API and a component to show with data provided by API. Now the problem is, that component gets called before the API call is completed resulting in throwing an undefined or null error while calling children keys in a component.&lt;/p&gt;

&lt;p&gt;To Resolve this we use something called a Loading Wrapper. Now, this method works on both React and React Native as it uses common useState and Reacts LifeCycles to work.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Step 1 - Maintaining a Loading State
&lt;/h2&gt;

&lt;p&gt;Let's start by making a loading state to check and update our application whenever the loading starts and ends.&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;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isLoading&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Now we will update it to &lt;code&gt;true&lt;/code&gt; when the call starts and &lt;code&gt;false&lt;/code&gt; when the call ends.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Step 2 - Calling APi with Loading State
&lt;/h2&gt;

&lt;p&gt;In this step, we will simply update the &lt;code&gt;isLoading&lt;/code&gt; state to true and false to tell our application the current loading condition.&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="nx"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="nx"&gt;getData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;},[])&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isLoading&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setData&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="nx"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

   &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
           &lt;span class="nx"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
           &lt;span class="nx"&gt;setData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&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="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
           &lt;span class="nx"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&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;&lt;em&gt;&lt;strong&gt;What the hell did you do here ????????&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Well I started by setting &lt;code&gt;isLoading&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; when our API call started ( just before Axios) and then to &lt;code&gt;false&lt;/code&gt; when our promise finally ended ( either with success or failure )&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Step 3 - Showing Loading wrapper based on this api call
&lt;/h2&gt;

&lt;p&gt;Now our application knows if the API is loading or not, let's move to the rendering part.&lt;/p&gt;

&lt;p&gt;We will use conditional rendering to render the diff UI based on diff cases.&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;return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
   &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isLoading&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt;
      &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;!==&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;YourComponent&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="p"&gt;:&lt;/span&gt;
       &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;Can&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;t connect to server ! &amp;lt;/h1&amp;gt;
   :
   &amp;lt;span&amp;gt; Loading... &amp;lt;/span&amp;gt;
)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we are first checking is &lt;code&gt;isLoading&lt;/code&gt; is false, which means the API call has ended. So we will move to render our component. If &lt;code&gt;isLoading&lt;/code&gt; is true it will show a &lt;code&gt;span&lt;/code&gt; tag with text as Loading...&lt;/p&gt;

&lt;p&gt;Then, we are checking if &lt;code&gt;data!==null&lt;/code&gt; which means the API call has been success full and populated with backend data. If it is null that means the API call is failed and there is some error in the API call.&lt;/p&gt;

&lt;p&gt;It is not really a part of Loading Wrapper but it is most commonly used with loading states to avoid crashes and undefined errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So Now our loading wrapper is ready, and each time the &lt;code&gt;getData()&lt;/code&gt; function gets called it will again trigger the loading and our render function will act accordingly.&lt;/strong&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  ❤️🧑🏻‍💻Thanks for reading , If you liked this blog please drop a like and comment !
&lt;/h3&gt;

</description>
    </item>
    <item>
      <title>Looking for open source contributors in React Native !</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Mon, 17 Oct 2022 10:47:34 +0000</pubDate>
      <link>https://dev.to/suyashdev/looking-for-open-source-contributors-in-react-native--l7m</link>
      <guid>https://dev.to/suyashdev/looking-for-open-source-contributors-in-react-native--l7m</guid>
      <description>&lt;p&gt;I am looking for open-source contributors to work with me on my cute little UI Kit for react-native. &lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;🙋🏻‍♂️ Hi, I am Suyash. I am React Native Developer from India and working on a small-scale UI Kit for react native. &lt;/p&gt;

&lt;p&gt;I aim to provide some miscellaneous Ui elements that are either ugly or not available in react native default element collection. A common example is Alert [ Ugly AF in the android system ]. &lt;/p&gt;

&lt;h3&gt;
  
  
  So why would you use my UI KIT when others are available huh?
&lt;/h3&gt;

&lt;p&gt;Well, the answer is, I am trying to make all these elements without using any third library or dev dependencies so the support line would be maximum and you don't have to install some other stuff that u will never see in the whole dev.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to participate
&lt;/h2&gt;

&lt;p&gt;Note - Use the given theme or add the colors if u think that would look cool, but don't change the previous colors.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Fork The Repo from &lt;a href="https://github.com/suyashvash/protonic-ui"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Start developing something&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Submit a PR with a proper description of what your magical ✨ div ✨ does and also include the screenshots ( Gotta check the aesthetic ).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If everything goes right, I will merge them asap.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Don't have an Ideas right now ?
&lt;/h3&gt;

&lt;p&gt;I gotta you, try to make these -&lt;br&gt;
     1. Alert Pop up ( Done )&lt;br&gt;
     2. Vertically scrollable tabs with onScroll tab Changing&lt;br&gt;
     3. TextInputs&lt;br&gt;
     4. Dropdown&lt;/p&gt;

&lt;h3&gt;
  
  
  Either way, you are always welcome to use the KIT, provide review or have a nice talk about it ☕️
&lt;/h3&gt;

</description>
      <category>reactnative</category>
      <category>opensource</category>
      <category>contributorswanted</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>How to get Girlfriend as a Developer</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Wed, 07 Sep 2022 23:02:13 +0000</pubDate>
      <link>https://dev.to/suyashdev/how-to-get-girlfriend-as-a-developer-100f</link>
      <guid>https://dev.to/suyashdev/how-to-get-girlfriend-as-a-developer-100f</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;undefined is not an object 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  *&lt;em&gt;&lt;em&gt;Thanks for Reading !&lt;/em&gt; *&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xydKRfBB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mysy02qwdzen7ytbh89p.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xydKRfBB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mysy02qwdzen7ytbh89p.jpeg" alt="you cant" width="602" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>CamelCase to normal String in JavaScript</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Wed, 07 Sep 2022 22:49:59 +0000</pubDate>
      <link>https://dev.to/suyashdev/camelcase-to-normal-string-in-javascript-592g</link>
      <guid>https://dev.to/suyashdev/camelcase-to-normal-string-in-javascript-592g</guid>
      <description>&lt;p&gt;In this post we will see how we can turn any camelCase string to normal string in JS JavaScript..&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 - Breaking the Camel Case
&lt;/h3&gt;

&lt;p&gt;Lets take an example - "checkThisOutBro"&lt;/p&gt;

&lt;p&gt;Now we want to break this camelCase string to "Check This Out Bro".&lt;/p&gt;

&lt;p&gt;So, In order to do this we will use a regex &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;camelToFlat&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;camel&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;camelCase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;camel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;([&lt;/span&gt;&lt;span class="sr"&gt;a-z&lt;/span&gt;&lt;span class="se"&gt;])([&lt;/span&gt;&lt;span class="sr"&gt;A-Z&lt;/span&gt;&lt;span class="se"&gt;])&lt;/span&gt;&lt;span class="sr"&gt;/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;$1 $2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;camelCase&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;



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

&lt;/div&gt;

&lt;p&gt;this will give us ```check&lt;br&gt;
&lt;br&gt;
 This Out Bro&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
hmmmmm, well atleast it is now a simple string, lets improve it better

### Step 2 -  Taking every letter out from this string...

So after getting ```check

 This Out Bro

``` we can use split() function with " " as args to break it down in an array with each word as element.

```javascript



const camelToFlat=(camel)=&amp;gt;{
    const camelCase =camel.replace(/([a-z])([A-Z])/g, '$1 $2').split(" ")

    return camelCase
}




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

&lt;/div&gt;

&lt;p&gt;This will return &lt;code&gt;[ 'check', 'This', 'Out', 'Bro' ]&lt;/code&gt; as output and we now have an array of words in that camelCase.&lt;/p&gt;

&lt;p&gt;"&lt;strong&gt;&lt;em&gt;Wow Suyash you said we will be changing camelCase to string , how come it is an array now huh ?&lt;/em&gt;&lt;/strong&gt;"&lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwlhv9v8dtalp919iprv.jpeg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwlhv9v8dtalp919iprv.jpeg" alt="BigBrainTime"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just wait a min, we will make it a string again but better !&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 - Making each First letter capital this time !
&lt;/h3&gt;

&lt;p&gt;Now as we have an array of words for a string, we can simply run a loop and make every letter or char at 0 index upperCase.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;


&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;camelToFlat&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;camel&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;camelCase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;camel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;([&lt;/span&gt;&lt;span class="sr"&gt;a-z&lt;/span&gt;&lt;span class="se"&gt;])([&lt;/span&gt;&lt;span class="sr"&gt;A-Z&lt;/span&gt;&lt;span class="se"&gt;])&lt;/span&gt;&lt;span class="sr"&gt;/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;$1 $2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&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;flat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;

    &lt;span class="nx"&gt;camelCase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;word&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;    
        &lt;span class="nx"&gt;flat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;flat&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;word&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;charAt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;word&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;  
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;flat&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;





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

&lt;/div&gt;

&lt;p&gt;After doing this, our function will take every word in camelCase array and convert it's first letter ( at 0 index) capital and join it with others to make an string&lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7srigifj9vujez4inluj.gif" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7srigifj9vujez4inluj.gif" alt="Magik"&gt;&lt;/a&gt;&lt;br&gt;
"&lt;strong&gt;&lt;em&gt;POOOOOF ! Magic&lt;/em&gt;&lt;/strong&gt;"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And now our output will be &lt;code&gt;Check This Out Bro&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://snippetsauce.tech/snippet?title=Camel+Case+to+Normal%2F+Flat+word+in+JavaScript+JS+%7C+Camel+case+to+normal+in+JS&amp;amp;sauce=jvs734158" rel="noopener noreferrer"&gt; Snippet Sauce link for code snippet !&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;This is commonly used while rendering keys of an object in applications ( Objects.keys(yourObject) returns array ). And generally keys are in camelCase so you want them to be a normal string but with a dynamic way..&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;If you liked the blog please drop a ❤️&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Loading Modal in React Native with Activity Indicator</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Mon, 22 Aug 2022 20:48:00 +0000</pubDate>
      <link>https://dev.to/suyashdev/loading-modal-in-react-native-with-activity-indicator-23ka</link>
      <guid>https://dev.to/suyashdev/loading-modal-in-react-native-with-activity-indicator-23ka</guid>
      <description>&lt;p&gt;Loading modals are basically a wrapper to tell our user that something is happening and restrict them to tap anywhere else.&lt;/p&gt;

&lt;p&gt;Common example - while uploading something..&lt;/p&gt;

&lt;p&gt;It is a most common used widget in Mobile dev industry and I don’t know why React Native doesn’t really provide one.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Edit - I have made a package for it as &lt;a href="https://www.npmjs.com/package/react-native-loading-modal" rel="noopener noreferrer"&gt;react-native-loading-modal&lt;/a&gt; , In case you want to use it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So that's why we are making a fully customisable Loading Modal in React Native using Activity Indicator from &lt;code&gt;react-native&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  JSX Code for Custom loading modal
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;don’t worry code is available  at &lt;a href="https://snippetsauce.tech/snippet?title=Loading+Modal+in+React+Native+%7C+React+Native+loading+modal+with+activity+indicator&amp;amp;sauce=rnv344967" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F51rmahw4s155gnz5s6pf.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F51rmahw4s155gnz5s6pf.png" alt="JSX code for custom loading modal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Styling for Custom Loading modal using Stylesheet
&lt;/h2&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqj7h1qyruu3hteiadjiy.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqj7h1qyruu3hteiadjiy.png" alt="Styling for Custom Loading modal using Stylesheet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it, now you can call your Loading modal simply by doing&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;LoadingModal&lt;/span&gt; &lt;span class="na"&gt;modalVisible&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="kc"&gt;true&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;or with custom task or label&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;LoadingModal&lt;/span&gt; &lt;span class="na"&gt;modalVisible&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Your task&lt;/span&gt;&lt;span class="dl"&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;That's it for this blog ❤️, If you guys want source code here's the link to the code website -&amp;gt; &lt;a href="https://snippetsauce.tech/snippet?title=Loading+Modal+in+React+Native+%7C+React+Native+loading+modal+with+activity+indicator&amp;amp;sauce=rnv344967" rel="noopener noreferrer"&gt;click here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;`&lt;/p&gt;

&lt;p&gt;Let me know your thoughts comments and share it with your friends ! &lt;/p&gt;

&lt;p&gt;With love Suyash ❤️🧑🏻‍💻&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>axios</category>
      <category>javascript</category>
      <category>loading</category>
    </item>
    <item>
      <title>How to open UPI Apps in React Native | UPI Integration with React Native</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Wed, 13 Jul 2022 06:27:40 +0000</pubDate>
      <link>https://dev.to/suyashdev/how-to-open-upi-apps-in-react-native-upi-integration-with-react-native-1f5a</link>
      <guid>https://dev.to/suyashdev/how-to-open-upi-apps-in-react-native-upi-integration-with-react-native-1f5a</guid>
      <description>&lt;p&gt;This post is going to be more specific for Indian clients or Indian Developers as it targets UPI payment (Unified Payments Interface) which is used in India Only.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In India majority of people use UPI for transactions as it is much easier to use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;But what if we want to integrate it to our app ? To be honest it is quite simple but tricky solution.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  First, let's see How UPI generally works using QR Code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;As we all know QR codes are the main method of making transactions in UPI. But how does it work ?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Well it works on UPI id and a link which is encoded inside the Qrcode for that user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When we scan the Qrcode our scanner takes the link and process it with desired UPI App with the help of Deep Links.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And boom it opens our Phone pay or Google pay app with transaction confirmation screen.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Deep Links - Not going all in depth for this blog, but deep links are simply some local urls which points to a specific app with given parameters&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Taking a QR Code example
&lt;/h2&gt;

&lt;p&gt;Let's take my UPI QrCode for example&lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhdnzksk1z6afdln369o.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhdnzksk1z6afdln369o.png" alt="My UPI Qrcode.. you can donate to it if you want ;) "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now scan it with a local scanner or decode it using online scanners and extract the UPI Link&lt;/p&gt;

&lt;p&gt;It will look something like this.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;upi://pay?pa=suyashvashishtha@axl&amp;amp;pn=Suyash%20Vashishtha&amp;amp;mc=0000&amp;amp;mode=02&amp;amp;purpose=00&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now all we have to do is , open this link with React Native Linking APi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Opening UPI with React Native
&lt;/h2&gt;

&lt;p&gt;As of now we have a UPI link and a React Native App ( Expo or Cli, doesnt really matter )&lt;/p&gt;

&lt;p&gt;Now in order to open our UPI Apps all we have to do is, call &lt;code&gt;Linking&lt;/code&gt; api from &lt;code&gt;react-native&lt;/code&gt; and pass the url to it using &lt;code&gt;OpenURl()&lt;/code&gt; method.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Code Snippet - *&lt;/em&gt;&lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ferpnb2fnrewhfkkrtbyj.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ferpnb2fnrewhfkkrtbyj.png" alt="Code snippet for UPI Integration in React Native"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can copy the code from &lt;a href="https://snippetsauce.tech/snippet?title=How+to+open+UPi+Apps+in+React+Native+%7C+UPI+Integration+with+React+Native&amp;amp;sauce=rnv912366" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
&lt;strong&gt;That's it , It will open a sheet showing all the UPI apps available in the mobile and which ever you will choose will redirect you to their payment screen for confirmation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading this blog, I will keep uploading more blogs to help our dev community ❤️.&lt;/p&gt;

&lt;p&gt;Comment | Share | Like&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>upi</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to make Floating animation in HTML CSS</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Sun, 26 Dec 2021 09:08:03 +0000</pubDate>
      <link>https://dev.to/suyashdev/how-to-make-floating-animation-in-html-css-51da</link>
      <guid>https://dev.to/suyashdev/how-to-make-floating-animation-in-html-css-51da</guid>
      <description>&lt;p&gt;Animations are one of the most attractive things when it comes to Websites. Even having some little minimalistic animations can make your website much more soothing and attractive.&lt;/p&gt;

&lt;p&gt;In this blog, we will see how to we can make a little floating animation in HTML CSS only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example-&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbbacauh9lidxgsy27zf.gif" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbbacauh9lidxgsy27zf.gif" alt="Floating image demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This gif is from my React JS OTT webapp &lt;a href="https://ethrex-watch.web.app/" rel="noopener noreferrer"&gt;Link here&lt;/a&gt; :)&lt;/p&gt;

&lt;p&gt;Looks cool enough for loading screens right ? You can also use it for some on page element animations.&lt;br&gt;
``&lt;/p&gt;
&lt;h2&gt;
  
  
  Let's jump into Development part !
&lt;/h2&gt;
&lt;h3&gt;
  
  
  - HTML
&lt;/h3&gt;

&lt;p&gt;Put a simple image inside of a div. This image will be the one we are going to make a float.&lt;/p&gt;
&lt;h3&gt;
  
  
  - CSS
&lt;/h3&gt;

&lt;p&gt;Design your parent div with a flex (recommended way but totally optional).&lt;br&gt;
Then make a &lt;code&gt;@keyframe&lt;/code&gt; with an animation -&lt;/p&gt;

&lt;pre&gt;
@keyframes floater {
  0%{transform: translateY(-10%);transition: ease 0.5s;}
  50%{transform: translateY(10%);transition: ease 0.5s;}
}
&lt;/pre&gt;

&lt;p&gt;Now connect your animation with you're image class. And put default   translateY to -10% and transition ease 0.5s for smooth animation&lt;/p&gt;

&lt;pre&gt;
.float-area{
  height:100vh;
  display: flex;
  flex-direction:column;
  align-items: center;
  justify-content: center;
}

.floating-img{
  transform: translateY(-10%);
  animation: floater 1.5s infinite;
  transition: ease 0.5s;
  width: 80px;
  height:80px;
}

&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Source code -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/suyashvash/embed/eYGeQzW?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  And Poof ! You're image is floating like a charm !
&lt;/h3&gt;

&lt;p&gt;Now go on and play with the values and make it more interesting according to your needs :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading my blog! Please drop a Like and Comment if you found it useful&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>animation</category>
      <category>html</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to get Freelance Clients from LinkedIn ?</title>
      <dc:creator>Suyash Vashishtha</dc:creator>
      <pubDate>Mon, 20 Dec 2021 14:27:58 +0000</pubDate>
      <link>https://dev.to/suyashdev/how-to-get-freelance-clients-from-linkedin--2j49</link>
      <guid>https://dev.to/suyashdev/how-to-get-freelance-clients-from-linkedin--2j49</guid>
      <description>&lt;p&gt;Previously I wrote a blog about &lt;a href="https://dev.to/suyashvash/how-to-get-your-first-client-as-a-developer--15cp"&gt;&lt;strong&gt;How to get your First client as a Developer.&lt;/strong&gt;&lt;/a&gt;, in which I talked about pitching sales on LinkedIn. But the main question is &lt;strong&gt;How to do that?&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Well in this blog, I will talk about how I scored a GIG on LinkedIn using my strategy&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Building Profile
&lt;/h2&gt;

&lt;p&gt;Yeah, I know you have created your account and uploaded a fully charming profile pic, and wrote a self-awarding bio for yourself. But that's not enough!.&lt;/p&gt;

&lt;p&gt;A Profile is not for showing how good looing or attractive you are, but instead it is about how good you can showcase your services and skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  - Profile picture
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"Ohh yeah, I uploaded my profile pic from that party and I look super cool alright!." &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's one of the &lt;strong&gt;Biggest Mistakes&lt;/strong&gt; beginners make while building up their LinkedIn profile. You shouldn't upload any type of casual photo as your profile pic, because &lt;strong&gt;it represents your mindset about your work ethics&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;It is the first thing a client seeks, your profile pic should speak about your mindset and behavior towards your work!.&lt;/p&gt;

&lt;p&gt;A profile pic from the top of your head to your chest will do just fine. And also keep an eye on good clothing, It can either be a plain T-shirt or a work coat or blazer but not some party costume.&lt;br&gt;
``&lt;/p&gt;

&lt;h3&gt;
  
  
  - Cover photo
&lt;/h3&gt;

&lt;p&gt;Well, it is pretty much clear by the name, a Cover photo is a big banner that shows up at the top of your profile. A good way to decorate is to put all the &lt;strong&gt;services you provide in symbols&lt;/strong&gt; and logos.&lt;/p&gt;

&lt;p&gt;For example - I am MERN STACK Developer so my Cover looks like this - &lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8vlp6go7wvx6e534ty9.JPG" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8vlp6go7wvx6e534ty9.JPG" alt="My LinkedIn cover photo suyash vashishtha"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It unconsciously sends a message that this guy is Full stack developer and has these skillsets. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Images play a Big role in profile as they unconsciously tell people what are you and what you can do.&lt;/strong&gt;&lt;br&gt;
``&lt;/p&gt;

&lt;h3&gt;
  
  
  - Title and Bio
&lt;/h3&gt;

&lt;p&gt;The perfect way to write a Title is to Write services your Provide. Something Like this - &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Frontend Developer | React JS | React Native | Mobile app developer&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It is one of the major factors in setting up your profile. Whenever someone searches for these services, your name will pop up with these inputs and tell what you can do just below your name; so the potential client will get a clear hint that you might be the right guy for his Job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In Bio&lt;/strong&gt; you should write a brief 2-3 line paragraph about you and what you can do.  &lt;strong&gt;But here is the catch&lt;/strong&gt;, while in interview HR always asks a common question &lt;strong&gt;Tell me something about yourself ?&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Now, most people think it is time to tell a good flashback story about yourself to make a good impression in front of HR and the boss.&lt;/p&gt;

&lt;p&gt;Well, life is not some reality show like India Got Talent or something. Telling how you did something good or struggling wouldn't make any sense. When someone asks you this question, the answer they are excepting is &lt;strong&gt;How are you valuable to them or what you can do for them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So in order to write a perfect bio, you must write 2-3 lines about how you love your work and how are you passionate about it. And then list all the tools and software you use to provide those services.&lt;br&gt;
``&lt;/p&gt;

&lt;h3&gt;
  
  
  - Accomplishments
&lt;/h3&gt;

&lt;p&gt;In the accomplishments section, list all the personal projects you made while learning those awesome skills you have. Remember it doesn't have to be 10-12 projects. &lt;strong&gt;3 Best projects are sufficient-enough to tell others how are you a good fit.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  - Experience
&lt;/h3&gt;

&lt;p&gt;Considering you are a beginner, you might not have a list of experience in your hand. So in that case you have to make Posts to tell them how you made those 3 Best Projects and how you know you are the right fit for the job. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With these points Profile Building is Complete.&lt;/strong&gt;&lt;br&gt;
``&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Creating Posts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No this is not Facebook&lt;/strong&gt;, I know you have a great idea of how to make posts and upload pictures on social media like Facebook and Instagram. &lt;/p&gt;

&lt;p&gt;But here it is a little different, by a post I don't mean your personal life and happy memories.** As a part of the professional community your post should talk about your professional life instead of personal.**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use your posts to tell the world about your achievement and all the things you have done in your Developer journey.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Make Carousals of your Projects, how you build them, what tech you used to make it real etc...&lt;/p&gt;

&lt;p&gt;Use the right hashtags, grammar, and a noble professional caption telling how you did it. Then share it with the world to let them know there is a Diamond in a Coalmine.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;These posts are one of the biggest mediums of attracting potential clients with the same requirements. *&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Making Connections
&lt;/h2&gt;

&lt;p&gt;Connections are simply friend requests but in a professional way. More connections mean more chances of getting a client.&lt;/p&gt;

&lt;p&gt;It is not some calculus, it is simple math, more the connections you will have, the more views you will get on your Posts. And more chances of getting leads.&lt;/p&gt;

&lt;p&gt;Make connections with people having the same Skillset or topics and HRs from different companies. What if they get a client but they don't have time to do their work? Yeah, there is a chance they will forward it to you.&lt;/p&gt;

&lt;p&gt;So keep making connections because once Tim Sanders said &lt;br&gt;
&lt;strong&gt;“Your network is your net worth.”&lt;/strong&gt;&lt;br&gt;
``&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Cold mail and messages
&lt;/h2&gt;

&lt;p&gt;Ok, let's put it in simple words. Cold mailing simply means messaging potential clients from the front or without any prior contact. &lt;/p&gt;

&lt;p&gt;Suppose you have a hint that maybe that guy might have a need for a graphic designer for his business, so instead of waiting for him to ask you for the gig; you make the first step and ask him if there is any work available for Graphic Designers ?.&lt;/p&gt;

&lt;p&gt;We have to do the same but on LinkedIn. Now after doing it for months and going with Hit n Try, I found a strategy for cold mailing. With the right target and right weapon, you can shoot a Flying eagle in his eyes.&lt;/p&gt;

&lt;p&gt;Ok ! that was a bit too much...&lt;/p&gt;

&lt;p&gt;But yeah, I found a perfect opening for beginners to get their clients easily.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; - Look for a company with low employees count.&lt;br&gt;
Companies with a low employees count prefer freelancers more than full-time employees to save their expenditures. So chances of being selected automatically become high. Also as the employee's count is low that means the company is still in their initial stage that means it is easier to get work due to low standards bars.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; - Follow the company and make a connection with its HR or any senior. Ask them if there is any work for your niche and start the sales pitching.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; - Don't show them that you are in desperate need of work. Make an impression like you are casually browsing for work, but also make sure they think you have a genuine interest in the project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; -  After getting the work, try to complete it before the deadline with out-expectation work. This will increase your chances of getting another order from the same client.&lt;br&gt;
``&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. What next ?
&lt;/h3&gt;

&lt;p&gt;Now repeat the same strategy with a different topic and companies/clients. And make sure you leave a good impression at the end of order completion for any future work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I hope it gave you a good idea of how to pitch sales/leads on Scary LinkedIn.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I would love to hear your thoughts in the comments below.&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>linkedin</category>
      <category>client</category>
      <category>developer</category>
    </item>
  </channel>
</rss>
