React Authentication Crash Course With Firebase And Routing

2024 ж. 9 Мам.
643 391 Рет қаралды

🚨 IMPORTANT:
Learn React Today Course: courses.webdevsimplified.com/...
Authentication is crucial for nearly every application. It can also be incredibly difficult to create a good authentication solution. This is where firebase comes in. Firebase makes it incredibly easy to create a secure authentication solution, and in this video I will be showing you how to setup firebase auth with React.
📚 Materials/References:
GitHub Code: github.com/WebDevSimplified/R...
useContext Tutorial: • Learn useContext In 13...
🧠 Concepts Covered:
- How to setup firebase auth
- How to use firebase in React
- How to setup secure Firebase in React
🌎 Find Me Here:
My Blog: blog.webdevsimplified.com
My Courses: courses.webdevsimplified.com
Patreon: / webdevsimplified
Twitter: / devsimplified
Discord: / discord
GitHub: github.com/WebDevSimplified
CodePen: codepen.io/WebDevSimplified
⏱️ Timestamps:
00:00 - Introduction
00:43 - Demo
01:38 - Firebase Setup
08:36 - Signup Component
16:03 - Auth Context Setup
20:20 - Signup Component Functionality
25:28 - Auth Loading State
27:11 - Routing Setup
30:11 - Login Component
32:32 - Marker 9
35:44 - Dashboard Component
39:15 - Logout Functionality
41:02 - Private Routes
43:38 - Password Reset
49:17 - Profile Update
55:46 - Outro
#FirebaseAuth #WDS #ReactJS

Пікірлер
  • Due to some updates on firebase you can't import firebase like this (import firebase from 'firebase/app') anymore, rather use this ( import firebase from 'firebase/compat/app' ). Same for auth ( import 'firebase/compat/auth' )

    @shadmanrahman1905@shadmanrahman19052 жыл бұрын
    • thanks for commenting with that solution i would of prob given up lol

      @cerealgrapist7386@cerealgrapist73862 жыл бұрын
    • bro 🔥🔥🔥

      @joelmounts3336@joelmounts33362 жыл бұрын
    • Ty!

      @nikolaisim7863@nikolaisim78632 жыл бұрын
    • I'm still getting an error in the console saying "app.auth()" is not a function. Any chance you could help me with what i'm doing wrong? import { initializeApp } from "firebase/app"; import 'firebase/compat/auth'; const app = initializeApp({ apiKey: process.env.REACT_APP_FIRBASE_API_KEY, authDomain: process.env.REACT_APP_FIRBASE_AUTH_DOMAIN, projectId: process.env.REACT_APP_FIRBASE_PROJECT_ID, storageBucket: process.env.REACT_APP_FIRBASE_STORAGE_BUCKET, messagingSenderId: process.env.REACT_APP_FIRBASE_MESSAGING_SENDER_ID, appId: process.env.REACT_APP_FIRBASE_APP_ID, }); export const auth = app.auth(); export default app;

      @drewgainey9136@drewgainey91362 жыл бұрын
    • Legend

      @deonvisser2480@deonvisser24802 жыл бұрын
  • If you are getting 'Firebase: Error (auth/invalid-api-key)', this is caused by your react app not detecting your '.env.local' file. For some reason, this file needs to be placed in the root directory of your app instead of the '.src' folder. Also, in the latest version of react, 'Switch' has been replaced by 'Routes' and you can not use the 'component' prop anymore. It must replaced with 'element' as such: Also, 'useHistory()' is replaced by 'useNavigate()'. Use 'const navigate=useNavigate()' and 'navigate('/')' instead of 'const history=useHistory()' and 'history.push('/')'. 'Redirect' has been replaced by 'Navigate'.

    @w1ndro1d@w1ndro1d2 жыл бұрын
    • You are a life-saver

      @Kriskata33@Kriskata33 Жыл бұрын
    • life saver, thanks for sharing

      @harshasrisameera8164@harshasrisameera8164 Жыл бұрын
    • Thank you so much

      @natalianatalia3677@natalianatalia36775 ай бұрын
  • 42:48 for anyone stuck with the private route on v6, routes and route components have since changed so this won't work. Also the "Redirect" component will not work. Instead use this for your private route: import React from "react"; import { Navigate } from "react-router-dom"; import { useAuth } from "../contexts/AuthContext"; export default function PrivateRoute({ children }) { const { currentUser } = useAuth(); return currentUser ? children : ; } Then this for the dashboard element in your app.js:

    @GrayFox391@GrayFox3912 жыл бұрын
    • Thanks! I was getting stuck on this for sure. btw Are you sure that this is the correct way to do things now?

      @MiikaKontio@MiikaKontio2 жыл бұрын
    • @@MiikaKontio No worries, not sure if it's the "correct" way to do things but it's how I was able to get it to work

      @GrayFox391@GrayFox3912 жыл бұрын
    • @@GrayFox391 i mean is it safe? I dont want people to see Pages they are not supposed To see

      @MiikaKontio@MiikaKontio2 жыл бұрын
    • @@MiikaKontio If a user isn't logged in then they won't be able to access the routes

      @GrayFox391@GrayFox3912 жыл бұрын
    • Thank man. I was stuck here for hours. Tried React Router Dom documents and all, but none of them worked. Thank you so much again.

      @mdbhardwaj5005@mdbhardwaj50052 жыл бұрын
  • We need an updated version for this soooo bad

    @alexzimmerman3447@alexzimmerman3447 Жыл бұрын
    • Best I can say is: Firebase docs, or Fireship io next Firebase course.

      @Michael-Martell@Michael-Martell Жыл бұрын
    • yes very much wrong with context and in app.js with router-dom dont work

      @zaurhuseyn4432@zaurhuseyn4432 Жыл бұрын
    • yea i know i want say dont try make project with old video only 2022-23)

      @zaurhuseyn4432@zaurhuseyn4432 Жыл бұрын
    • Can we please get this updated with NextJS

      @wrighttechnologyinc.1544@wrighttechnologyinc.1544 Жыл бұрын
    • It's mostly the same, the biggest change is way you create protected routes in React Router v6. Dennis Ivy made a great video about how to make it in v6: kzhead.info/sun/Zc9xftCdfZx9aoE/bejne.html

      @SxAde@SxAde11 ай бұрын
  • Every time I need something, kyle just uploads a video about that, its crazy.

    @d.n.ctalop5560@d.n.ctalop55603 жыл бұрын
    • I’m so glad I found this video I was trying to build the user login feature using Firebase for a project.

      @mhh5002@mhh50023 жыл бұрын
    • ass kisser

      @alexandruajax824@alexandruajax8242 жыл бұрын
    • In my case it's reverse...when I watch something ...that exact thing I have to apply next day to solve issues🤣🤣

      @omkarramdasi3087@omkarramdasi3087 Жыл бұрын
  • Thank you, Kyle - I was struggling with auth process and wanted to find something that's easy to implement high-quality content, nice and clean code - right on point just what I need :) love the way you implement bootstrap in react

    @naampondpat5769@naampondpat57693 жыл бұрын
  • I used to dread setting up authentication on react applications, but seeing your nice patterns has made it a lot easier.

    @davidsaint8866@davidsaint88663 жыл бұрын
  • Just got through the intro and love the way you're straight to the point while still sharing some information.

    @xyntax7019@xyntax7019 Жыл бұрын
  • If you have a error with the Switch Module you need to rename it. In the newer react-router-dom versions it was renamed from "Switch" to "Routes" and you have to declare the Route differently now. Instead of " you have to write: "

    @PakuBaku@PakuBaku2 жыл бұрын
    • came here to say the same thing. thanks man! react-router-dom's documentation is pretty good too, everyone should check it out for more details

      @refeals@refeals2 жыл бұрын
    • m stuck at 24:35 saying that 'Failed to create an account' eventho the password is same and more than 6 characters. Any idea?

      @muhammadaqlan1649@muhammadaqlan16492 жыл бұрын
    • Assalamu alaykum @@muhammadaqlan1649 I had the same error and it was because i imported the signup method as { signup } instead of { signUp }

      @hanifali2566@hanifali25662 жыл бұрын
    • @@muhammadaqlan1649 I had the same issue. My resolution had something to do with the env.local file. I hard-coded the values to authenticate with Firebase config and it fixed the issue.

      @sheldon1459@sheldon1459 Жыл бұрын
    • Thank you for sharing! I had this same problem too!

      @ianpropst-campbell6028@ianpropst-campbell6028 Жыл бұрын
  • That was an extraordinary performance! I have rarely ever had any instructor get through so much material in such a condensed manner and still remain coherent.

    @HallOfThought@HallOfThought Жыл бұрын
    • do all the functions still work? or is it outdated? thinking of coding along

      @michaels393@michaels393 Жыл бұрын
  • Thank you so much! You have the clearest, most in-depth and well explained tutorials. Your channel is a blessing. Keep it up!

    @HarrysSecretWife@HarrysSecretWife3 жыл бұрын
  • Perfect Tutorial! Loved every single minute of it. Been following you & learning so much :) Thanks Kyle!

    @yachujoshi@yachujoshi3 жыл бұрын
  • My favourite react teacher! Im a junior developer and I've struggled finding good content for firebase :)

    @aidanwalker3058@aidanwalker30583 жыл бұрын
  • This is everything about authentication and that too in just 56 minutes ,, that's amazing.

    @SUNYBOI@SUNYBOI2 жыл бұрын
  • Thank you Kyle! You transform concept into context like nobody else can!

    @shelbyrothman4522@shelbyrothman45222 жыл бұрын
  • Perfect timing!!!! Everytime I need something, I found perfect video about it on your channel

    @midhatahir8104@midhatahir81043 жыл бұрын
  • I know I'm late to the party but this was a really good video! Can't say I understood everything perfectly but I typed every single line of code along with the video (pausing to keep up with Kyle) and it all works great! Definitely going to take your full courses. All of them. Would love to know more about react and more advanced things like how to switch from dev to prod, using this routing for sites that have a lot of pages (I hope it doesn't get too ugly!), etc.

    @knaz7468@knaz74683 жыл бұрын
  • Perfect timing this is exactly what i needed today. Much love.

    @stevendelpercio@stevendelpercio3 жыл бұрын
  • Aftera few years of React experience, I thoroughly enjoyed and learned some new stuff in this video. Thanks Kyle

    @tevinmorake8924@tevinmorake89243 жыл бұрын
  • I follow every tutorial on your channel without missing it. You have simplified web development. I was waiting for this video. Thank you..!!!!

    @worldinnumbers00@worldinnumbers003 жыл бұрын
  • I just implemented this in a recent app, but it's really cool to see how you approach it. I may need to do some refactoring now

    @Aaronmoreno@Aaronmoreno3 жыл бұрын
  • My God! I went through multiple resources online this morning to lookup how to set up firebase with react and now Kyle post a vid on this topic. God is amazing.

    @augedoo8409@augedoo84093 жыл бұрын
  • Your videos are always useful, even years later. Keep up the great content Kyle!!!

    @Rafps3player@Rafps3player3 жыл бұрын
  • Just ported all of this to Nextjs for a starter template. Thank you for the content and keep it up! Your calm demeanor makes it really easy keep coding

    @lowkyio@lowkyio3 жыл бұрын
  • Hello, I'm a Brazilian programmer, I'm 14 years old and you're helping me a lot, your speech is clean and clear, this is helping me to learn English :) I just got to know your channel and I'm loving it, continue with your great work, which helps thousands of people like me. One day I intend to meet you!

    @codigodesenior3995@codigodesenior39953 жыл бұрын
    • If you make a fortune because of Kyle's tutorials, make sure wire part of it to Kyle's bank accout to support Kyle continuing making awesome tutorial videos !!!

      @maskman4821@maskman48213 жыл бұрын
    • sure you can support him on Patreon.... the link is in the video description

      @amankaushik5833@amankaushik58333 жыл бұрын
    • @@amankaushik5833 yep, but i dont have money now...

      @codigodesenior3995@codigodesenior39953 жыл бұрын
    • @@maskman4821 Its a good idea

      @codigodesenior3995@codigodesenior39953 жыл бұрын
    • @@amankaushik5833 Obs: 1 Dollar in Brazil is 5.75 Reais

      @codigodesenior3995@codigodesenior39953 жыл бұрын
  • I spent way too long on error debugging at 24:35 until I found out that the error I was getting was caused by the fact that Firebase has built in password requirements (at least 6 characters long and so forth). Hope someone finds this helpful ;)

    @erikbachryhl789@erikbachryhl7893 жыл бұрын
    • Yea its easy to see if inside catch you do catch(error) { console.log(error) } then google says if email already exists or if password to weak and other problems :)

      @TheLigitaksas@TheLigitaksas3 жыл бұрын
    • Thank you! I was wondering what I was doing wrong until I read your comment!

      @pekemsx@pekemsx3 жыл бұрын
    • @@TheLigitaksas thank you very much I was looking for this

      @hafsahussein2016@hafsahussein20163 жыл бұрын
    • Legend! Thanks king

      @gnrsn9714@gnrsn97143 жыл бұрын
    • Thanks, this is exactly what I was missing!

      @chadkennedy7246@chadkennedy72463 жыл бұрын
  • Hi Kyle, really appreciate your videos. They are helping me learn a few things about react, and full stack dev in general. Thank you for these.

    @SagarThorat@SagarThorat3 жыл бұрын
  • dude! This is brilliant. it is much appreciated. I must say you are rapid! All that hard work shows.

    @FaeUtero@FaeUtero3 жыл бұрын
  • I've learned so much from you dude. More valuable than all of Udemy. Thank you

    @bhagiradhkodamanchili5565@bhagiradhkodamanchili55653 жыл бұрын
  • Keep in mind that if you're using Material UI, you'll have to use inputRef={whateverRef} instead of ref={whateverRef} as the TextField attribute.

    @danielhayes4782@danielhayes47823 жыл бұрын
    • Thanks man! Killer hint!

      @victordeoliveira344@victordeoliveira3443 жыл бұрын
    • After struggling and constantly adding my own style and reading docs to do even the most basic thing, I have come to the conclusion that writing css myself is far more better and under my control.

      @prabhkang226@prabhkang2263 жыл бұрын
    • OH GOD THANK YOU

      @escamillaremi3503@escamillaremi35032 жыл бұрын
    • YES! THANK YOU!

      @namekendrick@namekendrick2 жыл бұрын
    • I didn't know about inputRef so I used the e.currentTarget.elements in handleSubmit 🥲

      @durgeshnandan5181@durgeshnandan51812 жыл бұрын
  • The best explanation on React Firebase Authentication! Keep the good work up man!

    @akshatatray556@akshatatray5563 жыл бұрын
  • Great tutorial, loved the speed in which you managed to cover the complete topic at the same time in way one can understand well....

    @sudhamajayanthi@sudhamajayanthi3 жыл бұрын
  • For anyone having troubles with getting the database url, just leave it blank if it isn't provided by firebase on setup. I'm not entirely sure how it works, but it think it's for the real-time database or something but if you don't have one setup you can just leave the field blank like this: REACT_APP_FIREBASE_DATABASE_URL= with no quotations for a string or anything. Please lmk if this doesn't work or if you have a better understanding, I would love to hear.

    @holdengjuka1608@holdengjuka16082 жыл бұрын
    • what should i do in the config?

      @ariw96@ariw96 Жыл бұрын
    • same problem

      @akashkaushik8684@akashkaushik8684 Жыл бұрын
    • just create a realtime database in firebase and after creating the database reload the page where you see the config. The link will appear. It worked for me.

      @pritikamishra@pritikamishra6 ай бұрын
  • Perfect timing, it's like you made this video just to help me! You're the best Kyle!

    @bahrambj@bahrambj3 жыл бұрын
    • Kyle is everywhere, he can read your mind, and creating awesome content to help people, he is amazing !!!

      @maskman4821@maskman48213 жыл бұрын
  • Thank you Kyle. This is exactly what I needed. Keep up the great work!

    @billyjayamunga@billyjayamunga2 жыл бұрын
  • this was such a helpful tutorial and straight forward to implement. great explanations along the way. Thank you for helping me understand this!

    @nataliefinnegan5050@nataliefinnegan50502 жыл бұрын
  • Thank you so much for this Kyle you're an amazing teacher! can you please create an updated tutorial with version 9?

    @leerenae313@leerenae3132 жыл бұрын
    • For other firebase newbies you might find this video helpful for working with version 9 : kzhead.info/sun/qceqnt2proJ-Zok/bejne.html

      @leerenae313@leerenae3132 жыл бұрын
  • Great so far. I struggled at 24:45 with my apiKey not being set. Please note that whenever you change any of the .env files, you have to stop and restart your "yarn start" process.

    @tom-snively@tom-snively3 жыл бұрын
    • Upvote! This solved my problem. I had to close and npm start again. Many thanks, Tom.

      @shannon-daygrant8754@shannon-daygrant87543 жыл бұрын
    • 3 months later and this solved my problem as well. Thank you!

      @fullstackburger@fullstackburger2 жыл бұрын
    • Hmmmm! Will give it a try

      @johnsunday3548@johnsunday35482 жыл бұрын
    • I tried this but it still says that my api key is not valid. I plug in the api key directly instead of the "process.env..." and it works. Not sure what is up there.

      @davidgurulejr8122@davidgurulejr81222 жыл бұрын
    • @@davidgurulejr8122 I'd try console.logging the process.env.REACT... to see if that is working. I think the variables must start with REACT_APP_ or they will not work.

      @tom-snively@tom-snively2 жыл бұрын
  • Hi Kyle, as you said... "You do make web development simplified" Thanks a lot.

    @vinothkumars7421@vinothkumars74213 жыл бұрын
  • Wow, that's really good timing, I just started building my first react app with auth

    @felipetrost@felipetrost3 жыл бұрын
  • Hi, just a small question. When using react-router-dom, you have 2 options in regards to "history". You can get access to it and use it using the "useHistory" hook like Kyle does in the video. However, you can also just pass it down as a component prop: const Signup = ({history}) => {etc ...} My question is if there's any substantial difference between the two or if it's just a matter of preference. I'd be grateful if anyone could share their knowledge/thoughts on this.

    @yitzchaksviridyuk932@yitzchaksviridyuk9323 жыл бұрын
  • Great tutorial, just starting a new project, and wanted to make sure I'll be able to handle the backend of the auth part. Now I know I have my reference. One thing I guess I missed, since I am new to Firebase, is once I build in development mode how do I seamlessly switch to production.

    @anvarsaidov8964@anvarsaidov89642 жыл бұрын
    • unfortunately, you might wanna not use this video as reference anymore. The version of firebase used in this video is different and firebase v9 was released on sep 1 2021. the syntax, the functions, etc have all changed and its a waste of time trying to troubleshoot. Use the tutorial docs provided by firebase for a more up to date reference.

      @darkspark8735@darkspark87352 жыл бұрын
  • Love the way you condense the most useful information!🤩

    @satindersingh9671@satindersingh96713 жыл бұрын
  • This is really a CRASH course. Just got back on Firebase for a new project, need to brush up and it is perfect all-in-one-place video. Big thanks for doing it.

    @tarmac5482@tarmac54823 жыл бұрын
  • seriously everything went over my head right now maybe i will come back after a while and try again

    @endlesslearning26@endlesslearning263 жыл бұрын
  • anyone stuck in 35:00 In react-router-dom v6 useHistory() is replaced by useNavigate(). use below import { useNavigate } from 'react-router-dom'; const navigate = useNavigate(); navigate('/home'); Hope help any one😁😁

    @tharindumandusanka7708@tharindumandusanka7708 Жыл бұрын
    • god bless you

      @Cami555555Sheep@Cami555555Sheep Жыл бұрын
  • Subscribed. I love your videos and how much work you put in to help everyone out. The real og.

    @mod_123_@mod_123_3 жыл бұрын
  • I love the way Kyle demonstrates, got to learn so many things from him.

    @aditalware1952@aditalware19523 жыл бұрын
  • At 6:50 If anyone is getting an error saying "export 'default' (imported as 'firebase') was not found in 'firebase/app" in your project, make sure sure you have the updated import methods for the new firebase release. New way of importing firebase: import firebase from "firebase/compat/app" import 'firebase/compat/auth'; import 'firebase/compat/firestore';

    @noahhoffman5212@noahhoffman521210 ай бұрын
    • Then i have app.getAuth is not a function T.T

      @oxpey4473@oxpey44737 ай бұрын
    • same thing here stuck for couple hours on this error @@oxpey4473

      @yusefturin2122@yusefturin21225 ай бұрын
  • That was really well done, but now I have a headache. lol

    @JohnStrandt@JohnStrandt3 жыл бұрын
  • I finally found a really clear and helpful tutorial about Authentication with Firebase. Thank you so much! Great tutorial.

    @musabas5341@musabas53413 жыл бұрын
  • your short and sweet section @ 25:28 on Auth State Loading solved a major headache I was having with my app attempting to load before checking for the user (on page refresh)...the set loading onAuthStateChanged in useEffect....massive help, before it would just redirect but now it checks for the session...SOOOooOOOooOOoo many thanks, Subbed!

    @johnsmith1789@johnsmith1789 Жыл бұрын
  • Crash course, felt like a full one if you ask me...writing your own back-end is tiresome... Great video dude, thank you!

    @bafana_mhlamvu@bafana_mhlamvu3 жыл бұрын
  • databaseURL is absent update version of firebase. you find databaseURL in realtime database section. hope someone find this helpful

    @apurbusarderapu3383@apurbusarderapu33833 жыл бұрын
    • I did, thank you

      @moaningscott3930@moaningscott39302 жыл бұрын
    • Thank You!

      @anshumangogate4806@anshumangogate48062 жыл бұрын
    • THANKS MAN

      @abhinavdogra3835@abhinavdogra38352 жыл бұрын
    • yeh right ..so will it work if we continue the lecture?

      @mazharimam9216@mazharimam92162 жыл бұрын
    • Where in realtime database section? Do we have to create a new database?

      @2024comingforyou@2024comingforyou2 жыл бұрын
  • I did authentication myself years ago in React Native but you just saved me so much time, thanks!

    @SpooningTreesap86@SpooningTreesap862 жыл бұрын
  • Really great video! I learned a lot about React and Firebase. You are great at explaining things in a way that makes it easy for the viewer to understand.

    @jonatanrisaasen2581@jonatanrisaasen25813 жыл бұрын
  • I'm at 27:23 and when I enter in a email + 2 correct passwords and then press the "Sign Up" button, I get the error failed to create account. When seeing you do it in the video you get no error. Does this have to do something with database in firebase or do I need to continue a few steps for this to be fixed?

    @daanketelaars9509@daanketelaars95092 жыл бұрын
    • Hi! :) Have you found a solution for it? I'm also stuck at that part of the code, as I keep getting the same alert, although the passwords match

      @rtcodes4618@rtcodes46182 жыл бұрын
    • @@rtcodes4618 I think I did yeah, it's a pretty strange one. I figured it out today actually haha. You need at least 6 characters for your password to be successful. That's why you keep getting an error, even if the passwords match. Very strange and will see if I can add an message for this or find a solution.

      @daanketelaars9509@daanketelaars95092 жыл бұрын
  • When logging in for the first time, I get the following error in the console: (any ideas why?) Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function

    @BookOfSaints@BookOfSaints3 жыл бұрын
    • Getting that too, is it because state is being set from the useEffect hook maybe?

      @brendandefaria4495@brendandefaria44953 жыл бұрын
    • I've read elsewhere that it might have to do with setLoading(false) in Login.js taking place AFTER the history.push('/') so I'm commenting that here for anyone in the future. Not sure though.

      @shannon-daygrant8754@shannon-daygrant87542 жыл бұрын
  • This is simply amazing. Thank you so much for providing such a great content!

    @brittosmonteiro@brittosmonteiro3 жыл бұрын
  • Amazing tutorial. Just what I needed. I got my auth finally set up!

    @MiikaKontio@MiikaKontio2 жыл бұрын
  • I kept getting an error when setting up my routes "Attempted import error: 'Switch' is not exported from 'react-router-dom'." In react-router-dom v6, "Switch" is replaced by "Routes" Update the Route declaration from to useHistory() is replaced by useNavigate() Great tutorial and hope this helps!

    @jbean92@jbean922 жыл бұрын
    • Huge help, Thank you!

      @jackhendry6292@jackhendry62922 жыл бұрын
  • 50 minutes but it actually takes 3+ hours to do because I needed to figure out how to configure everything with the latest firebase 9.

    @seafoam7881@seafoam78812 жыл бұрын
    • Not to mention React Router v6

      @illestoth9298@illestoth92982 жыл бұрын
    • You figured it out in 3? Lucky… 🥲

      @dh.bryson1627@dh.bryson16272 жыл бұрын
  • So many cool patterns that you use Kyle! It is super fun to learn with you

    @diogosoares1309@diogosoares13093 жыл бұрын
  • Thank you so much for this tutorial! Informative and straight to the point, thank you again!

    @Hazzahs@Hazzahs3 жыл бұрын
  • Great tutorial. But we get this one error just after signing up. I think it has to do with history.push moving to a new page without updating state. "Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function." Can you help suggest a fix?

    @usmellfunny2000@usmellfunny20003 жыл бұрын
  • Great crash course and intro to react with firebase integration. Is there a specific reason why you used useRef instead of useState for the email and password? I think the same can be achieved with useState and in a much cleaner way or did I miss something

    @nidhalbaccouri1799@nidhalbaccouri17993 жыл бұрын
    • Kyle has a video about useRef. Basically, it's very similar to useState. But when the value store in useRef, the component will not re-render if the value has changed. And it's popular to use it to reference a HTML element.

      @SaulLee66@SaulLee663 жыл бұрын
  • Thx man! Very simple and helpful react content! Keep going!

    @Daniel-qs4yw@Daniel-qs4yw3 жыл бұрын
  • This was extremely helpful. May I ask, what’s the best way to create different user roles with react/firebase? Like an admin should be able to see different info on their dashboard. Or if I wanted to distinguish between paid and free users? Thank you.

    @matthewsullivan2800@matthewsullivan28003 жыл бұрын
    • I would add those roles as any user extra information, in the firestore (another service firebase has). And link with a key each document with the corresponding user.

      @lucasser21@lucasser212 жыл бұрын
  • Protip: Instead of creating a separate development project, use Firebase Emulators to run firebase SDK locally in your machine. It will also save unnecessary bills if you are testing with big data and large no of users.

    @goodsamaritan208@goodsamaritan2082 жыл бұрын
  • Thankyou kyle for the wonderful tutorial! Totally aced it!

    @georgeyvb4460@georgeyvb44603 жыл бұрын
  • Thank you Kyle. Well done, clear, and super helpful. Thanks!

    @donc5395@donc53953 жыл бұрын
  • If anybody gets a memory leak from trying to set a state on an unmounted component in Signup or Login, its because of the setLoading(false) being at the bottom handleSubmit functions which is after you are pushing to a new page. Just move the setLoading(false) be before the history.push.

    @elianhijmansmalessy8736@elianhijmansmalessy87362 жыл бұрын
    • HUGE thanks for this. :)

      @Kelden-sf8gs@Kelden-sf8gs2 жыл бұрын
  • Thank you for the video! I tried learning it and I just can't. I don't know if it's the way you explain or if authentication is just a difficult topic for me. Everything else in react I've learn really fast but authentication is giving me problems. I'll read the firebase docs. Again, thank you for the content!

    @noelcovarrubias7490@noelcovarrubias74903 жыл бұрын
    • yeah, I feel your pain lol

      @gavingonzalez7174@gavingonzalez71742 жыл бұрын
  • This what i was just looking for to build complete applications. Thanks

    @dennissavai337@dennissavai3373 жыл бұрын
  • Really useful tutorial! Thank you!!! And thank you to those who added comments warning of some of the changes that have happened

    @jasongottfried9238@jasongottfried92382 жыл бұрын
  • This was excellent tutorial. I had an error with my Login with the async function handleSubmit. (Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.) Particularly the setLoading(false). If I comment that out I don't receive the error. Can't really figure out why but I left a note to try to figure out why the error happens later. Thanks for the great video.

    @jeremydiaz6494@jeremydiaz64943 жыл бұрын
    • I think it is because in the try {} block you have "history.push('/')" that redirects you to Dashboard component and then you try to set "setLoading state" to the Login component that now is unmounted.

      3 жыл бұрын
    • Hey Jeremy, were you able to figure out why this happens? I have the same error and commenting out the loading seems to work for me too. Would like to find out how to fix it permanently though...

      @kjro23@kjro233 жыл бұрын
    • @@kjro23 Hey so I was still receiving the error. I took what Lavinia stated and just moved the history push outside of the try{} and after the setloading(false). That resolved the error and the history.push still works. :D. Hope that helps setLoading(false) history.push('/profile')

      @jeremydiaz6494@jeremydiaz64943 жыл бұрын
    • @@jeremydiaz6494 i dont think you can put history.push(" outside the try block, if there is error on your login, the the catch block will not work properly

      @rickvian@rickvian2 жыл бұрын
  • For anyone getting the error: "Your API key is invalid, please check you have copied it correctly." You have to restart the development server if you changed any .env variables. Just run "npm start" again in the console.

    @Flexo1986@Flexo19863 жыл бұрын
    • Thanks for your kind comment you save my time to traveling with errors

      @jonghyeonko3275@jonghyeonko32753 жыл бұрын
    • @@jonghyeonko3275 happy to help!🙂

      @Flexo1986@Flexo19863 жыл бұрын
    • I keep getting the error in my console: "Your API key is invalid, please check you have copied it correctly." @Web Dev Simplified

      @fauxeditor6663@fauxeditor66633 жыл бұрын
    • @@fauxeditor6663 When I use the API key string directly in firebase file it works but not when it is used as my env variables..

      @danielac.2485@danielac.24853 жыл бұрын
    • Same issue here, has anyone figured this out? In development everything works fine, but when i try to deploy, it deploys as a blank page and the console says "Your API key is invalid, please check you have copied it correctly."

      @coffeymay6775@coffeymay67753 жыл бұрын
  • bro. Im at Purdue in CS307 - Software Engineering. You're saving my life with this I got so much done today. bless up

    @jrose2082@jrose2082 Жыл бұрын
  • The best quality content I've seen in this area. I wish the continuation of your success

    @Thelandoftheartist@Thelandoftheartist Жыл бұрын
  • In case your react app logs out every time you refresh the page, useffect in authcontext should look like that useEffect(() => { const unsubscribe = onAuthStateChanged(auth, (user) => { if (user) { setCurrentUser(user); setLoading(false); } else { setCurrentUser(null); setLoading(false); } }); return () => { unsubscribe(); }; }, []);

    @maksym.pryhoda@maksym.pryhoda Жыл бұрын
    • Hero!

      @antoniojohnson7693@antoniojohnson76939 ай бұрын
  • if I'm not doing something wrong: using setLoading(false) in finally gives warning on console. because we try to update state after using history.push. - after unmounting instead of doing setLoading(false) in finally (also at the end of an async function) we can do it inside .then before history.push and .catch (also for async functions int try-catch blocks in try before history.push and in catch)

    @ylmazcandelen3121@ylmazcandelen31213 жыл бұрын
    • Hi, I'm trying to understand why it happens.. I tried what you suggested and I still get this error in the console. Could you please explain again? Thank you!

      @nivmonovich7976@nivmonovich79763 жыл бұрын
    • @@nivmonovich7976 I don't know how i can explain better, not that my explanation was perceft just i don't know how to do it. if you don't know about mounting/unmounting components you should look them up, it might help you understand better. it is not exactly same but we can think like we are trying to edit something that no longer exists.

      @ylmazcandelen3121@ylmazcandelen31213 жыл бұрын
    • @@ylmazcandelen3121 Thanks! But as I understood the return unsubscribe in the end of the useEffect supposes to 'cleanup' the useEffect function...

      @nivmonovich7976@nivmonovich79763 жыл бұрын
  • Very clear, very simple. This channel deserves the name 👌🏻

    @alanschwarzlopez@alanschwarzlopez3 жыл бұрын
  • Kyle, thanks a lot for the amazing videos man. Really really helpful. 👍

    @yitzchaksviridyuk932@yitzchaksviridyuk9323 жыл бұрын
  • any clue why I get this "Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function." when logging in? Login works but this error is in the console, even with the "unsubscribe" cleaning function in AuthContext. Thanks

    @adrianpop6521@adrianpop65213 жыл бұрын
  • can't find REACT_APP_FIREBASE_DATABASE_URL

    @sabermehdi7857@sabermehdi7857 Жыл бұрын
    • There has been an update to Firebase so now I do not think we have it anymore...

      @emmanuelkofyagyapong6382@emmanuelkofyagyapong6382 Жыл бұрын
  • everything i needed was in this video, love you buddy and many thanx SUBSCRIBED :)

    @rajatsawarkar@rajatsawarkar3 жыл бұрын
  • I like your explanation because it's not too slow and not too fast, but still looks very clear to understand.. Awesome🔥

    @adipati27ma@adipati27ma2 жыл бұрын
  • Hi, when login i have this warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function. Can you help me please?.

    @DarwinAristaArevalo@DarwinAristaArevalo3 жыл бұрын
    • It has to do with the Signup component. In the handleSubmit function, when you call the history.push() method your Signup component gets unmounted, and the one that your'e pushing to gets mounted. After unmounting, your'e trying to modify the state of the Signup component with the method setLoading, that's why you're getting the error. To solve it, you just have to set the loading state before using history.push() method

      @josevillar5508@josevillar55083 жыл бұрын
    • @@josevillar5508 wow great, it works !. Thank you very much friend!

      @DarwinAristaArevalo@DarwinAristaArevalo3 жыл бұрын
    • @@DarwinAristaArevalo You're welcome! But tbh I was about to come back and fix my comment cause I thought I got it wrong... maybe it was not about the Signup component but the Login one... But anywayssss, I'm glad it helped

      @josevillar5508@josevillar55083 жыл бұрын
    • @@josevillar5508 may i know how to set the loading state? as in can i have a coding example? i'm quite new at this

      @plumpeacherry7625@plumpeacherry76252 жыл бұрын
    • @@josevillar5508 You’re a lifesaver. I spent 2 hrs. trying to fix this problem. I thought the onAuthStateChanged listener was not executing the unsubscribe call. Also, I was wrong about how a try/catch block works. I thought that the try/.catch block had an implicit return statement and that it stopped any further execution within the handleSubmit function. I didn't think the setLoading(false) would run. Putting the setLoading(false) inside the catch block fixed my problem. Thank you, José!

      @Goku19881@Goku198812 жыл бұрын
  • My Firebase configuration doesn’t show a databaseURL. What do I do?

    @intlconxun@intlconxun3 жыл бұрын
    • You can find it under Realtime Database

      @omarbenseddik8910@omarbenseddik89103 жыл бұрын
    • Don’t worry it’s not something you need to have

      @user-ku2fy9rx8r@user-ku2fy9rx8r3 жыл бұрын
  • Kyle, great content and explanation. The flow was smooth and as a fellow programmer, I have to admit that your concepts are really strong. Keep up the great work!

    @raheel1@raheel13 жыл бұрын
  • Perfect premium quality tutorial.. Keep up the great work.

    @Abhilash-Nayak@Abhilash-Nayak3 жыл бұрын
  • Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function. in Signup (created by Context.Consumer) Guys even tho this works but im getting this warning

    @ahsantahseen6531@ahsantahseen65313 жыл бұрын
    • Here's the solution if anyone is still looking for it. It was provided by someone called Lavinia Ţole in this comment section: "I think it is because in the try {} block you have "history.push('/')" that redirects you to Dashboard component and then you try to set "setLoading state" to the Login component that now is unmounted. I moved setLoading(false) after the await function and before the history.push('/') and the error is now gone."

      @somkl7617@somkl76173 жыл бұрын
    • @@somkl7617 Thx! :)

      @MultiBBB3@MultiBBB33 жыл бұрын
    • @@somkl7617 but if the login error, that will never loading set to false! you have to put that after setError in the catch block as well!

      @rickvian@rickvian2 жыл бұрын
  • i have been getting this error message TypeError: app.auth is not a function, does anyone know how to fix this? Thank you.

    @mwanda8943@mwanda89432 жыл бұрын
    • Are you using a ref, you might need to use .current

      @BrianThorne@BrianThorne2 жыл бұрын
    • In Firebase (v9), You will need to use `getAuth` instead of using `app.auth`. So: import { getAuth } from "firebase/auth"; export const auth = getAuth(app);

      @gameofcharging@gameofcharging2 жыл бұрын
    • @@gameofcharging hey i am unable to create user please help

      @ankitdahake5207@ankitdahake52072 жыл бұрын
    • import firebase from "firebase/compat/app"; import "firebase/compat/auth";

      @souravsingh763@souravsingh7632 жыл бұрын
  • someone help me when i log out there is an error :- TypeError: Cannot read properties of null (reading 'email')

    @peedsstudio@peedsstudio2 жыл бұрын
  • Man this channel is the best. Not only the content is awesome but you also find solutions to problems you might run into in the comments. Thanks a lot y'all!

    @davidgonzalez965@davidgonzalez9653 жыл бұрын
  • Firebase doesn't provide the database URL anymore.. Hope that isn't a issue. Great vid friend!!!

    @tod670@tod6703 жыл бұрын
    • did it?

      @demetrissergides7059@demetrissergides70593 жыл бұрын
    • @@demetrissergides7059 I ended up doing another vid sign in

      @tod670@tod6703 жыл бұрын
    • Wondering how to find this too. Can't figure out where to find it Did you ever figure it out?

      @stephanieraymos4675@stephanieraymos46753 жыл бұрын
    • @@stephanieraymos4675 yes you must follow lots of videos, this one and a few more about sending the user a email Verificacion and after add Google sign in etc etc

      @tod670@tod6703 жыл бұрын
    • @@tod670 I actually figured out you don’t even need the database URL anymore. It’s deprecated. My site is working fine without it.

      @stephanieraymos4675@stephanieraymos46753 жыл бұрын
  • Thank you, great tutorial! But there's a "Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function." How to fix this? I modified "AuthContext.js" file a little bit. I added in useEffect "unsubscribe" function this: return function cleanup() { AbortController.abort()} - it didn't help. This warning appears after you press Log in.

    @RinatYouldashbaev@RinatYouldashbaev3 жыл бұрын
    • I got the same error, I cloned the repo in the description and got the same error. It happens because in Login.js there is setLoading(false) which updates the component AFTER the history.push('/'). This updates the Login component after it is unmounted. I'm guessing Kyle probably forgot to delete it :P there is no need for it as when the component mounts again, the inital loading state is set to false again.

      @eduardserei6859@eduardserei68593 жыл бұрын
    • Hey guys, make sure you put 'email' as a parameter of the resetPassword(email) function within the AuthContext.js since we're passing in 'emailRef.current.value' as an argument within the ForgotPassword.js component. I also had this error and that was my issue which solved it.

      @klhmia@klhmia2 жыл бұрын
    • @@eduardserei6859 it is needed if the login is failed, you have to set the loading to false

      @rickvian@rickvian2 жыл бұрын
    • Someone solved it? Thanks

      @agu7432@agu74322 жыл бұрын
    • @@eduardserei6859 the same problem exists in the UpdateProfile. Remove setLoading(false) solved it

      @robertzuk7046@robertzuk70462 жыл бұрын
  • from other youtuber tutorials i have to do x1.25 and in your tutorial i have to pause to catchup.... your tutorials are crisp and to the point

    @addictedSK@addictedSK2 жыл бұрын
  • Wow, Kyle! Thank you very much! I learnt two things in this video. 1. How to use Firebase in an app. 2. Private Route thing. This video is a poor gold!

    @ArhisAlight@ArhisAlight3 жыл бұрын
  • TypeError: Cannot destructure property 'signup' of 'Object(...)(...)' as it is undefined.

    @pedrovsn@pedrovsn3 жыл бұрын
    • Did you find any solution ?

      @dashxanurag@dashxanurag3 жыл бұрын
    • Likely forgot to add the AuthProvider in App.js

      @chrismacdonald2836@chrismacdonald28362 жыл бұрын
    • Same error. I couldn't find the solution.

      @joseteran9123@joseteran91232 жыл бұрын
KZhead