<?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: mutalibb</title>
    <description>The latest articles on DEV Community by mutalibb (@mutalibb).</description>
    <link>https://dev.to/mutalibb</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%2F1679909%2Fb14ba29d-21b5-4c8e-98f0-f41bbb6fc00e.JPG</url>
      <title>DEV Community: mutalibb</title>
      <link>https://dev.to/mutalibb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mutalibb"/>
    <language>en</language>
    <item>
      <title>Tips I Learned While Working on React Native</title>
      <dc:creator>mutalibb</dc:creator>
      <pubDate>Tue, 02 Sep 2025 11:32:48 +0000</pubDate>
      <link>https://dev.to/mutalibb/tips-i-learned-while-working-on-react-native-29kb</link>
      <guid>https://dev.to/mutalibb/tips-i-learned-while-working-on-react-native-29kb</guid>
      <description>&lt;p&gt;&lt;em&gt;I’ve worked on a couple of apps using React Native and Firebase, and along the way, I’ve learned a lot. I decided to share some of the little things I picked up that might help you too.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Find What Works for You
&lt;/h2&gt;

&lt;p&gt;When I started, I tried splitting everything into small chunks and files (since that’s one of React’s strengths). But for me, fixing mistakes and constantly switching between files was stressful. Now, I prefer to keep my style and logic in the same file, except for functions I’ll reuse multiple times, which I move to a components folder. This way, if there’s a bug, I know exactly which file to open and can fix it faster.&lt;/p&gt;

&lt;p&gt;This is just my personal workflow. For larger projects, splitting code into smaller files is still better for long-term maintainability.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Remember React Native is Still React
&lt;/h2&gt;

&lt;p&gt;React Native runs on React under the hood. That means all your React knowledge still applies, especially hooks like &lt;code&gt;useState&lt;/code&gt;, &lt;code&gt;useCallback&lt;/code&gt;, and &lt;code&gt;useEffect&lt;/code&gt;. Using them properly can help with performance optimization just like in React for the web.&lt;/p&gt;

&lt;h2&gt;
  
  
  3.  Stay Up to Date and Read Documentation
&lt;/h2&gt;

&lt;p&gt;This one saved me multiple times. For example, I once tried building a custom switch input from scratch and it was stressful. Later, while reading the Expo SDK docs, I discovered newer versions of React Native (and the Expo SDK) already provided this and many other built-in components like &lt;code&gt;CheckBox&lt;/code&gt;, &lt;code&gt;Switch&lt;/code&gt;, and &lt;code&gt;Network&lt;/code&gt; APIs. If I hadn’t checked the docs, I’d have wasted more time reinventing the wheel.&lt;/p&gt;

&lt;p&gt;The same goes for Firebase integration. The Expo SDK had updated guides that simplified setup. Staying updated with documentation makes life much easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Choose Well-Maintained Packages
&lt;/h2&gt;

&lt;p&gt;If you’re installing packages from npm and there are multiple options, always go for the one that is actively maintained and updated. This will save you from broken code when upgrading your project later.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Understand Hooks and Why They Exist
&lt;/h2&gt;

&lt;p&gt;Hooks aren’t just there for fun. They solve real problems. For example, when working on Clan Circle, I noticed my Firebase bill was getting too high. After debugging, I realized multiple &lt;code&gt;useEffect&lt;/code&gt; calls were running every time the app started, fetching data from screens users never even visited.&lt;/p&gt;

&lt;p&gt;My fix: I used &lt;code&gt;useCallback&lt;/code&gt; wrapped inside &lt;code&gt;useFocusEffect&lt;/code&gt;. Now, data only loads when the user opens a screen and stops listening when they leave. I also replaced some &lt;code&gt;onValue&lt;/code&gt; listeners with &lt;code&gt;get()&lt;/code&gt; (fetch once) where real-time updates weren’t needed. This saved me about 70% of my Firebase costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Read Documentation (Again)
&lt;/h2&gt;

&lt;p&gt;Honestly, more than once I spent hours Googling or asking AI for help, only to later realize the answer was right in the official docs. Many times, 10–15 minutes of reading the docs fixed my bug instantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Use TypeScript
&lt;/h2&gt;

&lt;p&gt;While Metro bundler gives good error messages, TypeScript catches issues much earlier. It helps prevent silly mistakes and speeds up development overall.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Learn the Native Languages (Bonus)
&lt;/h2&gt;

&lt;p&gt;Knowing the official languages like Kotlin for Android and Swift for iOS can be really helpful. Sometimes, new functionalities are available in native SDKs long before they arrive in React Native or Expo. With some knowledge of Kotlin or Swift, you can implement native modules when needed.&lt;/p&gt;

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

&lt;p&gt;👉 That’s it! These are some of the lessons I’ve learned while working with React Native. I hope they help you avoid some of the mistakes I made.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Deploying a MERN Project to Vercel: Frontend and Backend Separately</title>
      <dc:creator>mutalibb</dc:creator>
      <pubDate>Tue, 05 Nov 2024 16:58:20 +0000</pubDate>
      <link>https://dev.to/mutalibb/deploying-a-mern-project-to-vercel-frontend-and-backend-separately-3hf0</link>
      <guid>https://dev.to/mutalibb/deploying-a-mern-project-to-vercel-frontend-and-backend-separately-3hf0</guid>
      <description>&lt;p&gt;Today, I will give step-by-step instructions on how to deploy a MERN project to Vercel, with the frontend and backend deployed separately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create Project Directory:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;mkdir &lt;/span&gt;mernproject
   &lt;span class="nb"&gt;cd &lt;/span&gt;mernproject
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Initialize Node Project:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  npm init -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3.Install Express:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install express

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Install Other Necessary Packages for Backend:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install cors body-parser dotenv mongoose
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Create .env File:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch .env

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Add your tokens and other sensitive information in this file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. install Nodemon:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev nodemon

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;This will automatically restart your project when you save.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;7.Create Server File:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch server.js

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;8.Set Up React:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-react-app client

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Replace &lt;code&gt;client&lt;/code&gt; with the name of the folder you want your frontend to be in. In this case, I use &lt;code&gt;client&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;9. Build Frontend:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;when you are done coding and it's time to deploy:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd client
npm build
git add .
git commit -m "Build frontend"
git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;10. Deploy Frontend to Vercel:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If you have already initialized Vercel with GitHub, you will see your project in Vercel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Import your project in Vercel.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;11.Copy Frontend Link:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy the link generated by Vercel.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;12 Update Backend:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.use(
  cors({
    origin: 'frontend link',
  })
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;13.Deploy Backend to Vercel:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At the root of your project, create a vercel.json file and add the following code inside:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "version": 2,
  "builds": [{ "src": "server.js", "use": "@vercel/node" }],
  "routes": [{ "src": "/(.*)", "dest": "server.js" }]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;This will tell Vercel the entry point of your project. If the entry point is not server.js, replace server.js with the entry point of your server.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a .gitignore file:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch .gitignore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add &lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;.env&lt;/code&gt;, and &lt;code&gt;frontend-folder&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure your frontend folder is in &lt;code&gt;.gitignore&lt;/code&gt; because you don't need to deploy that again.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;14. Push to GitHub and Upload to Vercel:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Push your folder to GitHub and upload to Vercel.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;15. Set Environment Variables in Vercel:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to your project directory in Vercel, click on settings, click on environment variables, import your &lt;code&gt;.env&lt;/code&gt; file, and save.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure you're in your imported backend directory after successfully uploading before uploading the variables.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After these steps, your project will work perfectly as it does in development mode.&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>open-source project</title>
      <dc:creator>mutalibb</dc:creator>
      <pubDate>Mon, 16 Sep 2024 23:24:09 +0000</pubDate>
      <link>https://dev.to/mutalibb/open-source-project-2b43</link>
      <guid>https://dev.to/mutalibb/open-source-project-2b43</guid>
      <description>&lt;p&gt;Hi guys are there any open-source JavaScript or JavaScript frameworks project I can contribute in&lt;/p&gt;

</description>
    </item>
    <item>
      <title>king's clean.</title>
      <dc:creator>mutalibb</dc:creator>
      <pubDate>Sat, 06 Jul 2024 20:42:50 +0000</pubDate>
      <link>https://dev.to/mutalibb/kings-clean-5781</link>
      <guid>https://dev.to/mutalibb/kings-clean-5781</guid>
      <description>&lt;p&gt;&lt;strong&gt;cleaning service landing page&lt;/strong&gt;&lt;br&gt;
For this, I used CSS Grid and Flex. They allow me to focus more on the design and worry less about different screen sizes. CSS Grid and Flex are perfect for creating responsive layouts; they fit and display beautifully on all kinds of screens without requiring media queries. This is a cleaning company landing page—a demo I designed to showcase how a simple page can include all the necessary details without the need for navigation between pages.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Tribute page</title>
      <dc:creator>mutalibb</dc:creator>
      <pubDate>Sat, 06 Jul 2024 05:16:30 +0000</pubDate>
      <link>https://dev.to/mutalibb/tribute-page-6ei</link>
      <guid>https://dev.to/mutalibb/tribute-page-6ei</guid>
      <description>&lt;p&gt;Bootstrap is a CSS framework. Its responsive layout and pre-styled components make it my choice for this project. The intentionally large images draw attention, as they depict the subject of the page. I used the carousel component to create a scrollable image display.&lt;/p&gt;

&lt;p&gt;Additionally, I included Scroll spy, Collapse, and Card components to enhance the page’s appearance and provide a better user experience. The logo is styled using CSS box shadow and animation.&lt;/p&gt;

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