I am Ryan Florence. Ask me anything.

Ryan is Co-founder of React Training and creator of popular library React Router. He has been creating websites since the early 90’s, focusing primarily on the frontend for the past several years. He conceived React Router, which quickly became the most popular 3rd-party library built on React.

Ask Ryan Florence about:

  • ReactJS
  • React Router
  • Getting started with React
  • JavaScript
  • Contributing to OSS
  • Public Speaking
  • General Advice

Hey! Let's do this!

Comments (75)

Kent C. Dodds's photo

Hey Ryan. Do you think that you'll ever use anything other than React (or an evolution of React) to build UIs again? If not, what do you think prevents React from evolving to that thing?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

Hi C.!

Hmm ... the only reason I'd never use another UI lib again is if I stopped building UIs. It's inevitable that something more interesting to me will come along.

But, the staying power of React has been extraordinary. Individuals and teams continue to pick it over and over and over, which I've never seen before. Personally I used to carry around a "bag of misgivings" about the tech I was using to build UI. React's bag is very, very small.

So, yeah, I'll use something besides React eventually--which may just be an evolution of React or something totally new--but I'm not looking for anything new right now, pretty happy with it even after 4 years.

It's silly, but I still get excited when teaching our fundamentals workshop. React is a lot of fun.

Chris Geirman's photo

What's the best career advice you've ever received? And by whom?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I like this one.

Alright, so I used to be securities licensed and sold retail finance: mutual funds, insurance, etc.

I had a sales manager then named Mickey, a bit large, tall, southern good ol' boy. Spoke with the accent you'd expect. When he said "Ryan" it sounded more like "Ron" or "Rahn".

Rahn, getting the sale is a lot like getting a date with a girl. Your chances go WAY UP if you ask.

That has always stuck with me. I say it to Micheal often whenever we're working a contract or trying to get in the door somewhere.

A second phrase that has influenced my career a lot was from my direct manager when I was in sales. He'd regularly say:

It worked so well, I quit doing it.

That is to say, sometimes we have an idea, and it works so well, we forget that the reason we're being successful is because of it. Eventually you don't need that thing anymore because of your success, at which point, the success starts fading and you eventually think "What the heck? What's wrong?" and you realize you quit doing the thing that made you successful.

This makes a lot of sense for marketing/sales strategies, but also code. I often get really lazy with tests. They work so well, I quit thinking I need them cause "the app has been stable for a long time, these tests are a waste of time."

The tests worked so well, I quit writing them. Months later, the app is a wreck.

Dustin Goldman's photo

Hey, Ryan. Still Mookie Proofed?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

PFFFFFFFFFFTTT Hey Dustin. Long time!

http://ryanflorence.com/may24th.mp3 http://ryanflorence.com/nervous_again.mp3

(For anybody following along, Dustin is an old high school friend and loyal fan of Mookie Proofed--my high school band.)

Susan Dinglesen's photo

Hi Ryan, Thanks for doing this AMA.

What are your thoughts on React going MIT?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I think its great I can just move on to the next question and not talk about the React license anymore 😜

Chris Geirman's photo

How did you decide what price to charge for your online courses?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

It's always easier to come down, so start as high as you're comfortable!

I always think about our pricing as value based, and I definitely think our online advanced course is worth $250 if you're a few months into React and want to level up.

Consider this: if you make 100k/yr as a developer, that's only 5 hours of pay.

Learning how and when to use those patterns on your own will definitely cost your boss more money than that.

Arihant's photo

It's been a year and a half since I started learning javascript (and programming at large). I've never made something end to end. It demoralises me. I think I take too much time to learn, and no matter how much I persevere, I seem to give up at the end. I have clear ideas, but I'm not able to put them in practice. Is it normal ? What could I do more smartly?

Show all replies
Arihant's photo

Non sticky pan to events 🥘🍳

On it! 💛 Thanks Ryan!

everdimension's photo

Component composition is great.

I love using render callbacks, but do you think that perhaps we can come up with a more natural syntax for this pattern?

I don't quite have an idea what it might look like yet, but may be something more fitting for xml/jsx-like syntax?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I'm wary of any new syntax for a specific pattern like that. If we did come up with something, would it apply to the the normal "event" or "action" prop callbacks?

<button onClick={() => /* not really different */}/>

I've found it feels less syntax-crazy when you use a prop named render instead goofing around with children.

<Thing render={() => (
  <div>More Stuff</div>

// vs.

  {() => (
    <div>More Stuff</div>

That said, if you use children and skip JSX completely it's totally natural, it's just a normal looking callback:

fs.readFile(path, (err, data) => {
  // callback!

let e = React.createElement

e(Fetch, ({ error, data }) => (
  // callback!

I sometimes think I'd rather use e than JSX. Imagine this code block w/o JSX, would actually look pretty clean: https://github.com/ReactTraining/react-router/blob/master/website/modules/components/Environment.js#L42-L61

Erik Rasmussen's photo

How do you balance teaching and coding?

If you get too deep into one, you can no longer really do the other very well, right? Which do you find more fulfilling?

Show all replies
Erik Rasmussen's photo

American expat programming in Spain.

Indeed, having a popular OSS project definitely keeps you grounded in real world use cases. I can attest to that!

Brian Kimball's photo

When you tried Vue the other day, was there anything you saw that you wished was available in React? I know you love React, I give you props for trying out Vue. I'm one of the people who really like both.

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I think vue appeals to a different audience and is a great fit for some teams. People say "right tool for the job" but the job is same, its more "right tool for the team".

Expressing UI as code instead of a template will work on some teams and be a disaster on others. In those cases, templates are perfect.

Sean Clayton's photo

I asked this in the Reactiflux AMA you did a long time ago, but what's the state of React30? It was my all-time favorite react podcast ☹️

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

Oh, Sean ... hard times.

Michael basically spearheaded that thing and we'd love to do it, but it's hard to make the time. Running a business, especially one that plans events, takes a lot of time. Also, we've both got spouses, kids (I have 3, he has 4), and community/church responsibilities. Mix in our travel schedules (we each travel 2 or 3 times per month) and we're just out of time for the podcast :(

We recorded one a few months ago but the guest was basically in a cafeteria and the audio quality was just too terrible. Maybe one day it'll come back, but at this point myHopes !== high.

Anthony Gore's photo

Hi Ryan, how did you get into React training? How did you know the demand was there?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I was training our teams at Instructure on React and put the repo on github. It was the first result when you searched "React training" and people started emailing me, asking me if I could train their teams. I just turned them down, having no idea how much you can charge for training.

Then, Tyler McGinnis asked me to run React Week at a local dev bootcamp, and Frontend Masters asked me to do video for them.

But it wasn't until I was at the after-party of React Conf with my friend Brian Leroux (guy who made phonegap/cordova) that I decided to do it. We started talking about his workshops for phonegap he used to do, I asked how much he charged, and then I calculated in my head how many workshops I'd have to fill up to quit my job. I knew I had to give notice when I got back to work on Monday.

Michael and I had been working on Router together a lot and had become pretty good friends through it. We chatted about partnering and away we went. This was late January I think? Our last days of work at our old jobs were April 1st. (Protip, end on the first day of the month so you keep an extra 30 days of health care).

How did you know the demand was there?

I guess you never really do. My old job would have taken me back so my biggest risk was racking up credit card debt for a couple months. Seemed worth it.

It all worked out.

The question now is, how long will the demand be there?! 🤷🏼‍♂️

Chris Geirman's photo

If you had a magic wand that would instantly and elegantly solve any of react's weaknesses, how would you use it?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

Make it so fast that shouldComponentUpdate wasn't a thing at all and then context wouldn't be "broken".

If I can't get a faster horse though, I'd like a car, but I don't know what that looks like.

Chris Geirman's photo

You make learning both enjoyable and entertaining. When did you first realize you had a gift for teaching tech?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

All growing up I loved performing. Whether it was on stage w/ my punk rock band, or wakeboarding past the beach and throwing a few flips to get some cheers. I served a proselyting mission for 2 years for the Church of Jesus Christ of Latter-day Saints and was told often I was a great teacher. I was a TA in college for my Economics professors. When I sold insurance/mutual funds I taught people about financial growth/risk etc. My first software job I was a trainer and implementation consultant. So my whole life I've been teaching/performing.

So I don't know if I ever realized I had a gift (if I even do?), I just know I've always enjoyed sharing what I know, and trying to entertain people. There are a lot of social situations that make me uncomfortable, but being on stage trying to make somebody laugh or think is my happy place.

Denny Trebbin's photo

Hi Ryan,

Regardless of your paid training, will we see you in a live coding session on Youtube? I'm not interested in the material you're selling, but I would love to watch you code something again while you comment on what's going through your mind.


Ryan Florence's photo

Cannot read property 'tagLine' of undefined

Unfortunately I have to pay the bills, so it's hard to find time for that sort of thing, but I've got a lot of things I'd like to put out there. I actually have a document of notes on little free videos I want to make.

But when the choice is something that puts money in my pocket and something that doesn't, I'm gonna go for the money 😅, at the moment, the revenue generating activities are consuming my time!

Felippe Nardi's photo

What is the best resource to learn React TDD?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I'm not really into TDD, maybe ask Kent C. Dodds :)

Tommy Watson's photo

How did you come across ReactJS? What's the story behind learning React and starting React Training? :D

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I came across React like everybody else, saw it announced and thought "that looks dumb."

Then my boss rewrote the infamous "dbmon" in React and the speed improvement was mind blowing.

I answered how I got into React Training in another question :)

Susan Dinglesen's photo

Why do you think developers adopted ReactJS so well? I remember when React was new people were crazy about Angular. What changed?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I don't know for sure. The people I'm close to were generally all sick of either too much indirection and limitations with angular/ember or too much plumbing with jQuery/backbone. React hit a sweet spot, it got rid of the hardest part (reliable DOM updates) without taking JavaScript out of your hands.

Benjamin Adam's photo

How do you balance "work time" vs family time?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I've got a spouse and three kids, and I think all four of them are awesome. Working from home can either help or hurt this balance. Traveling absolutely makes it worse.

I like to be around during "the crossroads". When my kids leave to school, get home from school, go to piano/karate/soccer/dance whatever. I'll regularly take my kids to their activities like piano, and then kick back in the back of our minivan with my laptop and get work done while they're busy w/ the activity. When they're done, its fresh on their mind and we can chat about it as we drive home. The thing with kids is they don't put effort into remembering anything when you ask "how was piano?" or "how was school?", but if you ask when its fresh, during "the crossroads", you actually get to have a conversation. So I do whatever I can to be around for that.

Also, think about how much unproductive time most of us spend around co-workers during the day (lunch, wandering the company kitchen looking for cookies, smash bros). I get to spend that time w/ my family. Just this morning I helped my son get to the shrine in the northern Labyrinth in Zelda BotW.

Traveling is the really crappy part of this though. We do all of our workshops at the end of the week, Thu-Fri or Wed-Fri. That way we can coordinate less and bank on dad being around Sat, Sun, Mon, Tues, and sometimes Wed.

My wife is also awesome and gets babysitters most weekends, so we get to keep being friends even when life gets busy.

Finally, we take a lot of vacation to make up for all the travel. Michael and I take off the entire month of July! We're lucky to have really flexible jobs so we can be to all the things our kids do, like school presentations, birthdays, etc.

The hardest thing though is when you've got code in your head and it needs to get out. I go into this terrible mode where I can't pay attention to anything around me no matter how hard I try. My family is pretty good at letting me do my thing and working 24/7 until its done, as long as I take enough time off afterward to help get the house back in order!

Joshua Kuiros's photo

Hey Ryan. What editor are you currently using?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

Atom. My front-end vim plugins were causing problems and I figured that the cool kids aren't going to be keeping vim stuff up to date, so I went to atom. I'm still sad, I haven't thought about my editor in YEARS, but now I have to whether I'm in vim or atom.

I'm mostly adjusted to atom though, vim-mode-plus has closed the uncanny valley enough that I'm productive again w/o thinking about my editor.

I hate thinking about my editor!

Alex Salgado's photo

Hi Ryan, I am Professor and I will start teaching ReactJS. What's the best way to start learning?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

The react docs, tylermcginnis.com, and one of our workshops.

Horacio Herrera's photo

Hi Ryan, thanks for the AMA.

what would be the better way to handle back routing with RRv4? it would be nice to check when is a back transition so we can flip animations or something like that.. any thoughts?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

The browser doesn't tell us (and therefore we can't tell you) if they clicked the back or forward button, so not really something we can do right now.

We have some ideas on how to track some data to know which button they clicked, but we've never gotten it bullet-proof.

Chris Geirman's photo

Tyler McGinnis joined React Training, then pretty soon after silently went solo. What happened? (you said "ask me 'anything'")

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

Hey, haha.

Tyler is still a great friend and everything between us is good.

I think in January it'll make more sense why we split. Short story, we wanted to take React Training one way, it wasn't working as we'd hoped, had some new ideas, then moved forward with them.

Pierre Bertet's photo

Hey Ryan!

How do you see the present and the future of components packaging and distribution, specifically regarding their non-JS dependencies?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined


Chris Geirman's photo

How do you manage your to-do list in term of tools, process, etc?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I built my own little thing, forgive the initial data, was a joke with a friend:


On its own, probably doesn't make a ton of sense, but with some explanation, its really awesome. Helps me track not just "todos" but what I want "to be".

I find working on becoming something, rather than doing or achieving stuff brings me far more fulfillment.

Other than that, google inbox "snooze" feature is amazing.

Chris Geirman's photo

What's your favorite lifehack?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

Eating apples from the bottom up and suddenly there is no core.


everdimension's photo

I sure like managing state with setState. But for data like entities and business logic in general you have to keep that stuff in one place, not across components.

How do you get that data to all the places that you need? Should context become a first-class react feature instead of a "dangerous experimental" one? I can think of so many uses for context... but kinda reluctant to use it all over since it has this status of being reserved until you "really-really-really" need it.

Or maybe something crazy like throwing that data into portals? :)

Passing props deeply seems to make all the sense even for complex widgets, but not for any app that's medium-to-large in scale.

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

Then came everdimension to him, and said, Ryan, how oft shall my co-worker pass props down a level, and I forgive them? till seven times?

Ryan saith unto everdimension, I say not unto thee, Until seven times: but, Until seventy times seven.

Redux is a great way to get stuff deep too.

Alejandro Soto's photo

Is React 16 ready for enterprise project or still under minor development tweaks ?

Geoff Davis's photo

How do you "discover" and assess new patterns in such libraries like React?

Throughout the past few years, we've seen cool and exciting new patterns like Higher Order Components, render props, function-as-children, and now render callback functions; despite having access to the relatively simple and straightforward React API docs, I still find it interesting and sometimes mind-blowing that devs find these new ways of composing components.

How do you personally discover potential new patterns? How do you assess patterns that other people have found/created for viability?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

Uh ... I think just writing lots of code, and reviewing lots of code, and sitting back and thinking about it.

render props, function-as-children, and now render callback functions

That's all render props :)

Speaking of, I saw Cheng Lou do that in React Motion and thought "WHAT THE CRAP IS HE DOING?!"

Then I sat back and thought about it and realized how cool it was to be able to share state that way. With more thinking/teaching/coding I feel like I've found out how/when/why I would use it.

I dunno really. Just experience?

Sid's photo

Hi Ryan!

How is your day going? 😀

I have 2 questions for you:

  1. What's a non technical skill/practice that has helped you the most in your career? (that fellow devs often don't realise/ignore)

  2. What are your personal goals as a developer and human?

Show all replies
Sid's photo

Design systems with React @auth0 ∙ running http://frontend.army + @stackstickers + @atinyconf on the side ∙ past: frontend architect @pract

Sales is something I struggle with. I know it matters so much, but it also feels awkward af 🙃

Thanks for sharing!

NR Alekya's photo

I am a b.tech graduate in CSE. But, I developed an interest in writing and I hold 2 years of work experience in technical content writing. Presently, I feel like I am wasting my technical knowledge and I would like to make my career in software development. Would it be possible now, with 4 years of a gap after graduation?

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

I graduated in economics and then sold life insurance before becoming a developer.

The cool thing about code is you don't need anybody to give you coding experience, you can get it yourself. Build something awesome, show it off and you'll get interviews, show it off at interviews and with any luck, you'll get a job.


I've interviewed tons of developers, I loved hiring people who came to us with some enthusiasm about something they had built at work or home that was awesome.

Sergio Barrera's photo

Hi Ryan, I’m building a react application where you list song tracks fetched from an api. I’d like to know what’s the best to to improve the performance when doing remote requests. also best practices to help troubleshoot when the data is not being rendered between views. Thank u!

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

Sorry that's a bit specific. Good luck!

Kang-Li Cheng's photo

Hi Ryan, I'm guessing you may have written about this before but I couldn't find it on the internet. Can you tell us how your programming education and how you first got involved in open source software? Then how did you become the "react guy"? Thanks

Ryan Florence's photo

Cannot read property 'tagLine' of undefined

My dad invested in an ISP when I was a kid. So I had a homepage at fia.net/~caseyf an started putting HTML up there (there was no CSS or JavaScript). Back then you could view source and learn. I was lucky to be on the web as it was being invented: I remember when IE first supported CSS, when mozilla showed up, I got developer previews of macromedia shockwave flash, ms frontpage, etc.

I spent my time playing/recording music w/ my band and building websites for us and our friend's bands.

Then I left on an LDS mission where you don't have a computer. Two years later I got home and went to college, forgetting all about building websites. It was SO DIFFERENT from 2000 to 2002. Suddenly "view source" was full of craziness, JavaScript got big, CSS had great support in IE6 (don't laugh, it was amazing) etc.

It wasn't until 2005 that my wife needed an online portfolio or printed portfolio for her photography degree that I got back into it. A printed portfolio was going to be $200, so I busted out Notepad.exe and built her a website instead. It was hilarious. She'd ask for features, I'd say "not possible" and then the next day I'd figure it out and show her.

From there I got involved with MooTools just by publishing my code to github. A few of them noticed and invited me into the secret #mootools-dev channel. That group of people basically taught me how to program and got me contracts and eventually my first full-time job with clockfour.com. The rest is history.

I don't know if I'm the react guy, but being loud on twitter about stuff you're excited about helps you become something like one :)

Ritik Rishu's photo

Hello sir, how would you describe the road map that led you from your hello world program to where you are now? Thanks!