<?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: brunobraga</title>
    <description>The latest articles on DEV Community by brunobraga (@onurbraga).</description>
    <link>https://dev.to/onurbraga</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%2F539618%2F18fc8d30-d5d2-4a54-bb26-abebf08aeb20.jpg</url>
      <title>DEV Community: brunobraga</title>
      <link>https://dev.to/onurbraga</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/onurbraga"/>
    <language>en</language>
    <item>
      <title>I developed a chrome extension to display tabs vertically.</title>
      <dc:creator>brunobraga</dc:creator>
      <pubDate>Mon, 02 Jan 2023 15:56:46 +0000</pubDate>
      <link>https://dev.to/onurbraga/i-developed-a-chrome-extension-to-display-tabs-vertically-5bi5</link>
      <guid>https://dev.to/onurbraga/i-developed-a-chrome-extension-to-display-tabs-vertically-5bi5</guid>
      <description>&lt;p&gt;hi folks, I just finished Vertical Tabs View and would love to get your feedback.&lt;/p&gt;

&lt;p&gt;You can download the extension here: &lt;a href="https://chrome.google.com/webstore/detail/vertical-tabs-view/nelmjkbalflkmcnnnhjgiodpndcebfgo" rel="noopener noreferrer"&gt;https://chrome.google.com/webstore/detail/vertical-tabs-view/nelmjkbalflkmcnnnhjgiodpndcebfgo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vertical tabs view most useful feature to me is how easy it makes to open recently opened tabs and to sort them by the last time they where active. It makes it super easy to navigate and to keep your tabs in check.&lt;br&gt;&lt;br&gt;
Besides that it also detects duplicates and automatically gets rid of them with one single click.  &lt;/p&gt;

&lt;p&gt;I tried many vertical tabs extensions and did not like any of them, specifically they all had poor design. Any feedback you could give me would be very useful.  &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%2F27teg71jo7pb8pl6dmqm.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%2F27teg71jo7pb8pl6dmqm.png" alt="Vertical Tabs View" width="800" height="1016"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks =)&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
    <item>
      <title>EZBookmarks, I created my first chrome extension and hope it is useful to more people :)</title>
      <dc:creator>brunobraga</dc:creator>
      <pubDate>Sun, 02 May 2021 17:39:17 +0000</pubDate>
      <link>https://dev.to/onurbraga/ezbookmarks-i-created-my-first-chrome-extension-and-hope-it-is-useful-to-more-people-1e9m</link>
      <guid>https://dev.to/onurbraga/ezbookmarks-i-created-my-first-chrome-extension-and-hope-it-is-useful-to-more-people-1e9m</guid>
      <description>&lt;p&gt;Hi everyone&lt;/p&gt;

&lt;p&gt;Last week I developed my first chrome extension. It is something simple that is useful to me.&lt;/p&gt;

&lt;p&gt;I noticed that I have many old bookmarks/favorites that I no longer need. Because they added clutter to my list I thought it would be nice to auto delete those I have not used in a while, at the same time I learned how to code them.&lt;/p&gt;

&lt;p&gt;With that in mind I created EZBookmarks, that allows me to configure the number of days after which, any bookmark that I have not visited will be deleted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chrome.google.com/webstore/detail/ezbookmarks/kfpngpodajkfhjdabfeaineopjoooljb?hl=pt-BR&amp;amp;authuser=0"&gt;https://chrome.google.com/webstore/detail/ezbookmarks/kfpngpodajkfhjdabfeaineopjoooljb?hl=pt-BR&amp;amp;authuser=0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this is useful to someone out there and if anyone has questions or feedback, I would highly appreciate :)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>But bro, these are the good practices.</title>
      <dc:creator>brunobraga</dc:creator>
      <pubDate>Thu, 15 Apr 2021 05:49:24 +0000</pubDate>
      <link>https://dev.to/onurbraga/but-bro-these-are-the-good-practices-48d7</link>
      <guid>https://dev.to/onurbraga/but-bro-these-are-the-good-practices-48d7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Et0PToC4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ql5h5mknsb3f1wichfwy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Et0PToC4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ql5h5mknsb3f1wichfwy.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  disclaimer: This post is opinion based.
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;“Because these are good practices”&lt;/em&gt;. More and more I have heard this answer being thrown around as an “end of conversation” tactic and I believe it is time for us to challenge the idea that everything in Software Development can be boiled down to step by step rules that can be followed at all times.&lt;/p&gt;

&lt;p&gt;In my 4 years of industry, I have heard different “universal truths” that go hand in hand with Newton’s gravitational law. Here are some examples that I can think of.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If your function has more than X lines, you are doing something wrong.&lt;/li&gt;
&lt;li&gt;Good code does not need comments, your code needs to be easy to read and the documentation itself, when comments are necessary, you are doing something wrong.&lt;/li&gt;
&lt;li&gt;Every single line of code needs to be tested, if you do not test all your code from the beginning, you are wrong.&lt;/li&gt;
&lt;li&gt;Always use forEach instead of for loops. (What???).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Perhaps I am too skeptical, or perhaps those who make such claims are so far ahead of me, that they were able to analyze in their heads every different scenario, of every different codebase, at all times and were therefore able to make such strong claims.&lt;/p&gt;

&lt;p&gt;There are 3 main issues with such an approach to software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  No, they are not laws of nature, and they are not applicable at all times
&lt;/h2&gt;

&lt;p&gt;This should go without saying. Multiple times I have found myself in Technical arguments where two different ways of doing the same thing was being discussed. While one side’s main argument for doing X was based on &lt;strong&gt;solid data, pros and cons, examples and careful analysis&lt;/strong&gt;, the counterpart was defending the Y way of doing things because it was considered a “Good Practice”, or because Y simply had a “smell to it”, which they could not really explain what it was. These practices have their own place and time, even those who created them did not believe they were a one size fits all solution.&lt;/p&gt;

&lt;p&gt;That being said, I would like to add an even better practice.&lt;/p&gt;

&lt;h3&gt;
  
  
  “As a best practice always rethink your decision when your main point to back it up is that fact that it is considered a good practice”.
&lt;/h3&gt;

&lt;p&gt;Such an attitude stands in the way of new and better approaches to problems from emerging.&lt;br&gt;
Following industry good practices on itself is not a problem and SHOULD be encouraged, the problem is when some engineers no longer know why they do what they do and find themselves repeating sentences they read in a book or heard from a colleague.&lt;/p&gt;

&lt;p&gt;Multiple times I have seen developers go against their own common sense and experience to follow someone’s good practice, when they had a much better claim to follow their own.&lt;br&gt;
But what happens when we all start following these ideas and collectively use them to suppress unorthodox solutions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stagnation happens&lt;/strong&gt;. Even worse, what happens when the good practice in question is not so good after all?&lt;/p&gt;

&lt;p&gt;On a personal experience, back at a Startup I used to work at, people got into the behavior of creating environment variables everywhere, spamming them without really thinking of it and claiming that it was good for readability and to keep consistency. It reached a point where CONSTANT VALUES were being used as environment variables, even thought they would always be the same.When challenged against it, the answer would be: &lt;em&gt;It is a practice that we follow, and to not do it is a code smell&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  “If you claim that 8 squared is anything but 64, you are wrong. If your function has more than X lines of code, well, I don’t know, maybe?”
&lt;/h3&gt;

&lt;p&gt;When writing software becomes a step by step recipe, boringness can creep in.&lt;/p&gt;

&lt;p&gt;I have always believed, and looked at Coding as a way of expressing creativity and imagination. There are numerous ways the same piece of code can be written, some are good, some are bad, some good enough, and there is beauty to it. We need to start looking at experimenting with code as part of a natural process that will allow the industry to reach better standards.&lt;/p&gt;

&lt;p&gt;Every time a discussion is “won” by the good practice tactic I see someone’s creative side being suppressed and the message that innovation is not welcomed can come across, even if not intentionally.&lt;/p&gt;

&lt;p&gt;Of course there are nuances to it. Trying new solutions at a 15 engineers startup is a whole different beast from doing the same at a FAANG, while the first can afford more trial and error, the ladder can emphasize code base consistency.&lt;br&gt;
Depending on the context, there should be a sweet spot between innovation and consistency and it should be part of our job to find it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Then when are the best practices welcomed?
&lt;/h3&gt;

&lt;p&gt;As with so many things in life, when to follow or not follow a best practice is not black and requires common sense. In general they should be used as a fallback when it is not clear what the best solution for a given problem is.&lt;/p&gt;

&lt;p&gt;They become especially important at medium to large companies where hundreds of developers are working on the same codebase and consistency helps to boost velocity.&lt;/p&gt;

&lt;p&gt;That being said, they should &lt;strong&gt;NOT&lt;/strong&gt; be repeated without a clear explanation but instead based on pros and cons as to why they should be followed.&lt;/p&gt;

&lt;p&gt;All in all, its mostly common sense.&lt;/p&gt;

&lt;p&gt;If this article was useful to you, please follow me on my social media :)&lt;/p&gt;

&lt;p&gt;twitter: &lt;a href="https://twitter.com/onurbraga"&gt;@onurbraga&lt;/a&gt;&lt;br&gt;
instagram: &lt;a href="https://www.instagram.com/brnbraga/"&gt;@brnbraga&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How did you improve your communication skills?</title>
      <dc:creator>brunobraga</dc:creator>
      <pubDate>Thu, 15 Apr 2021 05:26:14 +0000</pubDate>
      <link>https://dev.to/onurbraga/how-did-you-improve-your-communication-skills-1fpg</link>
      <guid>https://dev.to/onurbraga/how-did-you-improve-your-communication-skills-1fpg</guid>
      <description>&lt;p&gt;Hi there, its Bruno.&lt;/p&gt;

&lt;p&gt;We all know how important it is to be able to communicate clearly and directly. This in fact goes to any field, not only software development.&lt;/p&gt;

&lt;p&gt;I have seen several times now the situation where the well respected/higher in the ladder was the person who was clearly a good communication, as opposed to the one who had a very good technical knowledge and even worked more hours.&lt;/p&gt;

&lt;p&gt;I would like to hear from you what are the steps you have taken to improve on it? Books? courses? training?&lt;/p&gt;

&lt;p&gt;am I the only one who thinks &lt;em&gt;half&lt;/em&gt; of the arguments are won by the person who speaks with the most confidence?&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>But bro, these are the good practices.</title>
      <dc:creator>brunobraga</dc:creator>
      <pubDate>Thu, 15 Apr 2021 05:14:31 +0000</pubDate>
      <link>https://dev.to/onurbraga/but-bro-these-are-the-good-practices-42ja</link>
      <guid>https://dev.to/onurbraga/but-bro-these-are-the-good-practices-42ja</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--356WsZTj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zgnnpakxbby27ugho2ud.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--356WsZTj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zgnnpakxbby27ugho2ud.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  disclaimer: this post is opinion based
&lt;/h2&gt;

&lt;p&gt;"Because these are good practices". More and more I have heard this answer being thrown around as an "end of conversation" tactic and I believe it is time for us to challenge the idea that everything in Software Development can be boiled down to step by step rules that can be followed at all times.&lt;/p&gt;

&lt;p&gt;In my 4 years of industry, I have heard different "universal truths" that go hand in hand with Newton's gravitational law. Here are some examples that I can think of.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If your function has more than X lines, you are doing something wrong.&lt;/li&gt;
&lt;li&gt;Good code does not need comments, your code needs to be easy to read and the documentation itself, when comments are necessary, you are doing something wrong.&lt;/li&gt;
&lt;li&gt;Every single line of code needs to be tested, if you do not test all your code from the beginning, you are wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always&lt;/strong&gt; use forEach instead of for loops.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Perhaps I am too skeptical, or perhaps those who make such claims are so far ahead of me, that they were able to analyze in their heads every different scenario, of every different codebase, at all times and were therefore able to make such strong claims.&lt;/p&gt;

&lt;p&gt;But I believe there are 3 main issues with such an approach to software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  No, they are not laws of nature, and they are not applicable at all times.
&lt;/h2&gt;

&lt;p&gt;This should go without saying. Multiple times I have found myself in Technical arguments where two different ways of doing the same thing was being discussed. While one side's main argument for doing X was based on solid data, pros and cons, examples and careful analysis, the counterpart was defending the Y way of doing things because it was considered a "Good Practice", or because Y simply had a "smell to it", which they could not really explain what it was. These practices have their own place and time, even those who created them did not believe they were a one size fits all solution.&lt;/p&gt;

&lt;p&gt;That being said, I would like to add an even better practice.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"As a best practice always rethink your decision when your main point to back it up is that fact that it is considered a good practice".&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Such an attitude stands in the way of new and better approaches to problems from emerging.
&lt;/h3&gt;

&lt;p&gt;Following industry good practices on itself is not a problem and SHOULD be encouraged, the problem is when some engineers no longer know why they do what they do and find themselves repeating sentences they read in a book or heard from a colleague.&lt;/p&gt;

&lt;p&gt;Multiple times I have seen developers go against their own common sense and experience to follow someone's good practice, when they had a much better claim to follow their own.&lt;/p&gt;

&lt;p&gt;But what happens when we all start following these ideas and collectively use them to suppress unorthodox solutions?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stagnation happens&lt;/strong&gt;. Even worse, what happens when the good practice in question is not so good after all?&lt;/p&gt;

&lt;p&gt;On a personal experience, back at a Startup I used to work at, people got into the behavior of creating environment variables everywhere, spamming them without really thinking of it and claiming that it was good for readability and to keep consistency. It reached a point where CONSTANT VALUES were being used as environment variables, even though they would always be the same. When challenged against it, the answer would be: It is a practice that we follow, and not doing it is a code smell.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"If you claim that 8 squared is anything but 64, you are wrong. If your function has more than X lines of code, well, I don't know, maybe?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When writing software becomes a step by step recipe, boringness can creep in.&lt;/p&gt;

&lt;p&gt;I have always believed, and looked at Coding as a way of expressing creativity and imagination. There are numerous ways the same piece of code can be written, some are good, some are bad, some good enough, and there is beauty to it. We need to start looking at experimenting with code as part of a natural process that will allow the industry to reach better standards.&lt;/p&gt;

&lt;p&gt;Every time a discussion is "won" by the good practice tactic I see someone's creative side being suppressed and the message that innovation is not welcomed can come across, even if not intentionally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Of course there are nuances to it&lt;/strong&gt;. Trying new solutions at a 15 engineers startup is a whole different beast from doing the same at a FAANG, while the first can afford more trial and error, the ladder can emphasize code base consistency.&lt;br&gt;
Depending on the context, there should be a sweet spot between innovation and consistency and it should be part of our job to find it.&lt;/p&gt;

&lt;p&gt;Then when are the best practices welcomed?&lt;/p&gt;

&lt;p&gt;As with so many things in life, when to follow or not follow a best practice is not black and white and requires common sense.&lt;br&gt;
In general they should be used as a fallback when it is not clear what the best solution for a given problem is.&lt;br&gt;
They become especially important at medium to large companies where hundreds of developers are working on the same codebase and consistency helps to boost velocity.&lt;/p&gt;

&lt;p&gt;That being said, they should NOT be simply repeated without a clear explanation but instead based on pros and cons as to why they should be followed.&lt;/p&gt;

&lt;p&gt;All in all, it is all a matter of common sense.&lt;/p&gt;

&lt;p&gt;Also I am open to discussions on this topic? Do you also believe there is a sweet spot between old west without consistency and 100% good practices following?&lt;/p&gt;

&lt;p&gt;Let me know&lt;/p&gt;

&lt;p&gt;If this article was interesting to you, please follow me on my social media :)&lt;/p&gt;

&lt;p&gt;twitter: &lt;a href="https://twitter.com/onurbraga"&gt;@onurbraga&lt;/a&gt;&lt;br&gt;
instagram: &lt;a href="https://www.instagram.com/brnbraga/"&gt;@brnbraga&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Firebase authentication using react hooks</title>
      <dc:creator>brunobraga</dc:creator>
      <pubDate>Thu, 15 Apr 2021 04:50:09 +0000</pubDate>
      <link>https://dev.to/onurbraga/firebase-authentication-using-react-hooks-50j0</link>
      <guid>https://dev.to/onurbraga/firebase-authentication-using-react-hooks-50j0</guid>
      <description>&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%2Fno1k58bhaypzpa1bffrl.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%2Fno1k58bhaypzpa1bffrl.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code Example: &lt;a href="https://github.com/brunobraga95/ultimate-firebase-authentication-react-hooks/tree/master" rel="noopener noreferrer"&gt;https://github.com/brunobraga95/ultimate-firebase-authentication-react-hooks/tree/master&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hello Everyone, its Bruno here.&lt;br&gt;
For the last few months I have been working on a side project with a friend. Because of some prior experience with firebase and react I decided to choose those two as part of my stack. Specially, I decided to use firebase to handle authentication.&lt;/p&gt;

&lt;p&gt;After spending some time with it, I came up with a very good set up that I would like to share with you all. It is an encapsulation of the most common methods provided by firebase, which will make ramping up your future projects much easier. We will create a provider that will always give you the current state of the logged in user and update your component every time it changes, it is very handy =)&lt;/p&gt;

&lt;p&gt;Let's jump in!&lt;/p&gt;

&lt;p&gt;Here is what you should expect to have after this post:&lt;br&gt;
A plug and play set up that will notify your application about the user authentication status being updated.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Facebook, Google and email helper authentication methods.&lt;/li&gt;
&lt;li&gt;Account linking between Facebook, Google and Email login.&lt;/li&gt;
&lt;li&gt;Update email address.&lt;/li&gt;
&lt;li&gt;Send email verification helper method.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;First let us create our main file, firebase.js which is responsible for encapsulating and abstracting interaction with firebase.&lt;/p&gt;
&lt;h2&gt;
  
  
  firebase.js
&lt;/h2&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;The file above shows our main class. It encapsulates and handles much of the logic around authentication, handling errors and providing useful log messages.&lt;/p&gt;

&lt;p&gt;As you can see, a lot of its methods receive a setAuthState function param. This will be introduced in a second, but in a nutshell it is a React Hook state. Calling this method updates this state, ultimately triggering a rendering of every component that is interested in the authentication context.&lt;/p&gt;

&lt;p&gt;Now let us talk more about where this authentication state is defined and how one can use it.&lt;br&gt;
AuthStateContext.js&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;There are two main points to make about the provider above:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It is another layer of encapsulation around the class introduced in Firebase.js. The difference here is that now we are talking about a Provider that will expose the firebase methods to our whole application.&lt;/li&gt;
&lt;li&gt;It introduces the AuthState hooks value (i.e the method we call in the Firebase.js file to update the caller). Which has both the current authentication state and the user details returned by firebase.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In order to finally use the functionalities we created above, we need to inject the AuthStateProvider created in AuthStateContext.js in the root file of our application. Since I am using create react app, this file is called App.js.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;And that is it&lt;/p&gt;

&lt;p&gt;&lt;code&gt;const { authState } = useAuthStateContext();&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The call above will always give you the state of the current user and will re-render the component every time it changes, making it much easier to handle the user life cycle, getting private routes right, updating the view on login and logout, etc.&lt;/p&gt;

&lt;p&gt;hope you liked it, feedbacks are more than welcomed&lt;/p&gt;

&lt;p&gt;twitter: &lt;a href="https://twitter.com/onurbraga" rel="noopener noreferrer"&gt;@onurbraga&lt;/a&gt;&lt;br&gt;
instagram: &lt;a href="https://www.instagram.com/brnbraga/" rel="noopener noreferrer"&gt;@brnbraga&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;cheers!!!&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>react</category>
    </item>
  </channel>
</rss>
