02/07/2020 , 2m, 57s

An Argument for Automation

Checkout the record and livestream scripts I wrote on GitHub.

Making Process-based Goals

02/06/2020 , 2m, 58s

Going off-script a bit for this one, but hopefully it helps you think intentionally about the types of things you want to accomplish. Good luck!

AMA: Virtual DOM vs DOM

08/29/2019 , 2m, 57s

AMA: Learning and Teaching

04/24/2019 , 2m, 53s

AMA: Visual Regression Testing

04/18/2019 , 2m, 55s

AMA: How did you start?

03/25/2019 , 2m, 53s


Read the extended story here: #1

early bird pricing for "Learn React Hooks" remote workshop and more!

03/21/2019 , 2m, 57s

This discount is over in a few hours so don't miss: Keep up with my upcoming workshops here:

And make sure you're subscribed to my mailing list to not miss announcements about more remote workshops coming soon:

AMA: How did you become a member of the TC39 Committee?

03/19/2019 , 2m, 53s



Note: I'm no longer a delegate to the TC39 because I'm no longer employed by PayPal.

AMA: What's the difference?

03/14/2019 , 2m, 58s


AMA: Company to work remotely

02/11/2019 , 2m, 58s

AMA: Capability of unit tests

02/01/2019 , 2m, 56s

AMA: How do you test for mobile?

01/31/2019 , 2m, 49s

AMA: Your thoughts about CSS in JavaScript?

01/28/2019 , 2m, 57s


Here's the YouTube video I referenced:

AMA: Impostor Syndrome and self doubt

01/24/2019 , 2m, 57s



[00:00:00] Hey everybody today is January 24th, it's a Thursday and I am running late today. Had a couple of things going on. You know taxes and stuff had to do this morning. But today I'm answering question number five hundred and forty six. The question is titled Imposter syndrome and self-doubt. The Oscars name is Ritchie from Melbourne Australia. And the question asks about or says I've been in the industry for 10 plus years and it's only recently I began doubting myself as a developer. How or have you or do you know somebody who has experience imposter syndrome. If so how did you or they overcome it. So I think that everybody like imposter syndrome is something that a lot of people can relate to. I have definitely felt imposter syndrome. Sometimes I especially early on in my career I was like I'm literally just spending all of my time asking other people questions and I feel like that's probably the same anytime you try something new. Even with 10 plus years experience you find yourself spending just a ton of time asking people questions. But at the end of the day you're probably pushing out some stuff that is helpful to people and that's one of the cool things about software is that once you have it written it can continue to provide value even when you're sleeping and you can create a lot of value. So imposter syndrome how do you deal with that. So I don't know. [00:01:28][87.4] [00:01:28] I think that you need to place your value in things that you can control and be mindful of the emotions and feelings that you're having if you... Yeah if you focus mostly on you know I did better today than I or like I. I worked hard even though I made no progress on my ticket or whatever I'm working on I worked hard and that's all that I can expect. Definitely don't compare yourself to the rest of the world like often we can think hey there are two people in this world it's me and everybody else and we lump everybody else into this category and so then when we compare ourselves to this other person on the planet which is everybody else we like obviously fall short and we'll never reach the level of experience and intelligence that they all have but that's like totally not a reasonable comparison at all. And so focusing mostly on not comparing yourself to other people but maybe comparing yourself to yourself and continuously improving and being mindful and compassionate toward yourself I think can really help you overcome self-doubt and imposter syndrome and yeah just focus on in improving yourself. And definitely don't compare yourself to other people and you'll get there. It's great. We're doing good things. I hope you have a wonderful day. And I will see you all later. I mean I won't see you but I'll hear you all or you'll hear me. Good bye. [00:01:28][0.0] [87.4]

AMA: Thoughts on GraphQL and Apollo?

01/23/2019 , 2m, 54s



[00:00:00] What does up everybody today is January 23. It's a Wednesday. And the snow is starting to melt. We are going to be talking about question number five hundred forty seven. Thoughts on graft GraphQL and Apollo. This is from somebody named John bebb. Sorry should have practiced that before. And there are questions about graft you on Apollo. They say that they've been building stuff with GraphQL on Apollo and they really liked it. apollo-link-state for local state management and react and a bunch of stuff to feel like it's a really good way to separate the front end from the back end to have it more flexible on the front and you can make changes really quickly without having to necessarily go to the back end to make some changes. And they're just wondering like what my thoughts are about that and if they're missing something. Pros and cons. So I'll preface this first by saying I have not used Apollo at all. I have definitely used GraphQL a little bit and the I've used. What is it called a graphql-request I think is the package graphql-request on npm and I use that because it's small. So yeah I don't really typically. I haven't had a real use case for something like Appollo which is actually very large. So what are my thoughts. [00:01:24][84.0]

[00:01:25] I think that's probably the biggest thing Apollo and GraphQL client-side libraries are enormous typically mostly to handle caching and the merging of GraphQL queries and stuff like that and so it would... I'd Have to really be doing a lot of GraphQL queries and stuff for it to justify the size. But other than that I am super super gung ho about GraphQL and I'm really excited about the opportunities that we have for building front ends that are totally separated from the back and I feel like that's the right architecture for most apps. Now if you're building an app that is really SEO like super super important with SEO or something it's not logged in or whatever then I would strongly recommend Gatsby. In which case you can still use GraphQL and things but it has the server rendering aspect and even if it's SEO is not a huge concern then Gatsby is still probably a really awesome bet. I'm really excited about Gatsby. And there are only a few cases where Gatsby probably isn't enough. So yeah. GraphQL. It's awesome. Separating in front end from the back end super super great. Yeah I'm really excited about that. It's something that we're investigating heavily at PayPal as well. And yeah thank you so much for the question. And I will be in your ears tomorrow. Goodbye. [00:01:25][0.0] [84.0]

AMA: Your opinion about A.I.

01/18/2019 , 2m, 57s

AMA: What do you wish you were asked?

01/08/2019 , 2m, 56s


  • My Book Shurlan (
  • My faith
  • Can I give you a million dollars?
  • Can I translate your articles?
  • Anything that I can turn into impactful content.

I'm not huge on answering questions about specific coding issues for free. I am willing to do consulting, but I'm a little expensive.

AMA: How do you practice patience?

01/07/2019 , 2m, 47s


@kentcdodds I really admire your patience when it comes to putting in the work and waiting for results

umm, how? πŸ˜…

  • losing hope too quickly
  • optimising for the short term (with maybe poorer results)
  • not undertaking long projects at all

AMA: TypeScript era

01/04/2019 , 2m, 47s


Now that you started migrating your personal projects to TypeScript, I some questions for you:

  1. What are your recommendations on moving from flow to TS?
  2. When developing a library, what should I take into account regarding build process?
  3. Will you be updating your testing JS course with TS?

AMA: How to code faster?

01/03/2019 , 2m, 42s

AMA: What's it like working at PayPal?

05/14/2018 , 3m, 1s

Someone asked me a few questions so here's my answer!

react-router and some implantation details

11/16/2017 , 2m, 32s

Another answer to a question on my AMA about react-router.

Questions about babel-preset-env

11/16/2017 , 2m, 59s

This is an answer to a question on my AMA about babel-preset-env.


  • browserslist - The library babel-preset-env uses to know what browsers support.

Using and making new tools

11/16/2017 , 2m, 42s

My answer to this question on my AMA.

React Questions

06/15/2017 , 2m, 56s

Someone asked me some questions about using React and here are my answers :)

Newspaper Code Structure and Function Declarations

06/01/2017 , 2m, 52s

In this episode, I talk about my blogpost Newspaper Code Structure and Function Declarations. Enjoy!

React Testing Patterns

05/31/2017 , 2m, 51s

I had a friend send me this testing code:

describe('handleChangeStatusConditionSearchText', () => {
  test('should handle changing status search text within FormWizard', () =>
    const wrapper = shallow(<FormWizard />);
    const state = {
      statusConditionSearchText: 'poop'

And I had a few concerns with it, so I decided to record my thoughts :) (Learn more about enzyme and shallow rendering, and then never shallow render again... πŸ˜‰)

Classes - A Premature Optimization

05/30/2017 , 2m, 58s

Just some ramblings for my personal feelings around classes in JavaScript. I'd much rather just use objects and closures :)


05/24/2017 , 2m, 58s

Some brief and deeper thoughts about Wicked.

Why Open Source?

05/22/2017 , 2m, 58s

Just some thoughts about why I open source my stuff by default. Links:

Have a nice day!

The Utility of ESLint

05/19/2017 , 2m, 56s

I had a friend help me out on a project last night. His PR had a few linting issues so I asked him to fix some of them and later saw him on twitter expressing frustrating that ESLint can get in the way of building stuff. I agree with him to a point. This is how I feel about ESLint.


See you all around!

Adopting prettier-eslint at work

05/18/2017 , 2m, 54s

Back in January, James Long introduced us to his new JavaScript code formatting tool prettier. It gained popularity quickly and just two days later I released prettier-eslint. Since then, a bunch of tooling has been built around these tools to make the experience and workflow really awesome. I'm excited to say that we're now using it on my team's project at PayPal!

In this brief, I talk a bit about the challenges we've faced so far adopting prettier-eslint. Fun stuff!

An Argument for Automation

05/17/2017 , 3m

Here's a quick synopsis of my blog post An Argument for Automation. I also talk about my yeoman generator kcd-oss which has been really influential in me getting new high quality projects spun up really quickly.

See yah!


05/17/2017 , 2m, 55s

I created a library to make the testing lesson of my babel egghead course easier (to learn and teach).

Scaling OSS Management

05/15/2017 , 2m, 58s

One of my best internet friends Sarah Drasner recently tweeted something really nice about me:

IMHO the contributions @kentcdodds makes are huge because he teaches people how to contribute to OSS. That's time investment that scales πŸŽ–

I really appreciated that validation and those kind words and I want to talk about it a little bit more so here are my thoughts on that.

In addition, here are some resources:

  1. What open source project should I contribute to?
  2. How to Write an Open Source JavaScript Library
  4. First Timers Only
  5. How getting into Open Source has been awesome for me

See ya'll around!

When to use Snapshots πŸ“Έ with Jest

05/11/2017 , 2m, 55s

I get a lot of questions about when it's appropriate to use Jest snapshot testing, or why you wouldn't use snapshots for pretty much everything. This brief is my answer.

If you're unfamiliar with Jest snapshot testing, it's really great and you can learn about what it is and how it works here.

I hope this is helpful! See you around!

Why I don't normally use scoped packages

02/21/2017 , 2m, 56s

This is another answer to a question on my ama: Why not use a scoped package for nps?

Maintainable Tests

02/16/2017 , 2m, 43s

Just some thoughts on how to structure tests (specifically setup) in a way that makes them easier to understand in the future.

Learning new tech and working on side projects

02/10/2017 , 2m, 47s

I got a question on my AMA asking me how to learn new tech and work on side projects. Here's my answer.


See you all on twitter!

Learning Codebases

02/10/2017 , 2m, 43s

I got a question on my AMA asking me how I read and learn codebases. Here's my answer!

See you all on twitter!

AMA: TypeScript or Babel?

02/09/2017 , 2m, 54s

I got a question on my AMA asking me about whether I prefer TypeScript or Babel. I prefer Babel because it has better interop and a wider community. For more, listen to this 3 minute podcast :)

See you all on twitter!

Change the pace of your day-to-day

01/19/2017 , 2m, 38s

I've recently been working on prettier-eslint and an accomanying cli and it's been a lot of fun. I really think that doing this kind of thing can really change the pace of your day-to-day and encourage you to do the same!

See you all on twitter!

Q&A: Deploying and Build Process

08/23/2016 , 2m, 51s

David asked me about my Deploy/Build process and it was easier to answer in audio form :)

Links: What we can learn about testing from the wheel (my talk at Ignite Fluent 2016)

See you all on twitter!

Lodash Tooling and Optimizations

07/13/2016 , 2m, 58s

My co-worker asked me about why the babel-plugin-lodash module is useful and I explain that and the lodash-webpack-plugin too :-)

Testing and Transpilation

06/24/2016 , 2m, 59s

I got a question about why we test our pre-transpiled code (or rather, instrument that code for coverage) rather than our post-transpiled code. So here's my answer. I reference babel-plugin-__coverage__ (use this with karma) and nyc (use this with tests run in node, like with mocha or ava).

Good luck!

My Daughter, JavaScript Air, Pam Selle, and Diversity in Tech

06/08/2016 , 2m, 56s

I had an enlightening experience today after hearing my 4 year old daughter Becca's response to watching some of the JavaScript Air episode on webpack today. Pam Selle is a regular panelist.

Q&A: Thoughts on TDD (Test Driven Development)

06/07/2016 , 2m, 57s

I was asked on my AMA about my opinoin on Test Driven Development (or TDD).

Q&A: Aphrodite vs. Radium

06/06/2016 , 2m, 48s

Alex Booker asks:

Hi, Kent

I've seen you advocating Aphrodite on Twitter and noticed you're using it for the JavaScript Air site

Just wondering what drew you to Aphrodite over it's competitors (most notably Radium)

I have a small amount of exposure to both and they seem to accomplish same thing but Radium is more mature


P.S. I hope you're having a nice trip, mate πŸ˜€

Also, you might be interested in this CSS in JS comparison. (Note this PR)

I hope this answer helps!

Nested Unit Tests: An Anti-Pattern

05/25/2016 , 2m, 58s

At first I was really bothered that AVA didn't have support for nested tests, but now I consider nesting tests to be an anti-pattern.

Here's an example of the kind of thing I mean (see this in a syntax-highlighted gist here):

Mocha with nesting (don't mind the actual tests, just imagine what this would be like with a larger test file):

import Customers from './Customers'
import getMockCustomers from './Customers/mocks'
describe('Customers', () => {

  let mockCustomers

  beforeEach(() => {
    Customers.setCustomers([]) // initialize to empty for most tests
    mockCustomers = getMockCustomers() // have mock customers available

  afterEach(() => {
    Customers.setCustomers([]) // clean up just in case

  describe('getCustomers', () => {
    beforeEach(() => {

    it('should return the existing customers', () => {
      const customers = Customers.getCustomers()
      // questions you must ask if you're not familiar with this file and
it's bigger:
      // - where does `mockCustomers` come from?
      // - what make `getCustomers` return the mockCustomers?

  describe('setCustomers', () => {
    it('should set the customers array', () => {
      const customers = Customers.getCustomers()
      // question you must ask if you're not familiar with this file and
it's bigger:
      // - where does `mockCustomers` come from? What is it initialized as?

Here's what it would look like without nesting (with AVA, though you could mostly do this with Mocha too):

import test from 'ava'

test('getCustomers: should return the existing customers', t => {
  const mockCustomers = initializeCustomers()
  const customers = Customers.getCustomers()
  t.deepEqual(customers, mockCustomers)

test('setCustomers: should set the customers array', t => {
  const mockCustomers = getMockCustomers()
  const customers = Customers.getCustomers()
  t.deepEqual(customers, mockCustomers)

function initializeCustomers(initialCustomers = getMockCustomers()) {
  return initialCustomers

function cleanupCustomers() {

Like I said, this may be a bad example. Don't be distracted by the tests themselves. Just look at the it blocks above in the Mocha tests and compare it to the test block in the AVA tests below. The difference is that with the it blocks, you have to keep in your head what's going on in a beforeEach and that relationship is implicit. In the test block, there is a level of abstraction, but it's explicit so you don't need to worry about keeping it in your head because it's in front of your face.

I hope this is helpful!

OSS Licenses

05/25/2016 , 2m, 22s

Check out the Open Source Definition. A license is required for your project to be considered Open Source. I recommend you choose a license.

Generators, Boilerplates, and Starter Kits

05/25/2016 , 2m, 21s

There are thousands of generators, boilerplates, and starter kits available on npm right now. While these tools are super handy to get started, using them will bite you in the long run. I recommend that you make and use your own, and only use others as a reference.

The value of an AMA

04/27/2016 , 2m, 42s

I was just thinking about my AMA and decided that I'd talk about how I've found it to be valuable and encourage you to start your own!

Here's mine: Here's Sindre's:

Aphrodite vs BEM (CSS)

04/21/2016 , 2m, 51s

I was talking with my good friend Jamund Ferguson today and he mentioned that he just really likes the simplicity of using regular (non-preprocessed) CSS with BEM and here are some of the reasons I still prefer Aphrodite.

I didn't mention in this that I also love that Aphrodite automatically vendor-prefixes everything for me as well.

Hope this is helpful!

JavaScript Air Stats celebration (100k downloads!! πŸŽ‰)

04/18/2016 , 2m, 59s

JavaScript Air just passed 100,000 downloads on the audio podcast hosted by πŸŽ‰ 🎊

Things are going really well for the show so I wanted to share a bunch of stats about the show with you today. Here are the promised stats screenshots:

See you on twitter!

Q&A: Aphrodite vs CSS Modules?

04/08/2016 , 2m, 58s

My friend Matt Winchester asked me what I think of Aphrodite compared to css-modules. Here's my answer.

Here's an example of me migrating from CSS (processed with PostCSS) to Aphrodite:

Oh! And one other thing I didn't mention as a benefit of Aphrodite that can be a killer feature is because your CSS is colocated with the components that are using it, you can ship only the styles that are needed and used, rather than shipping ALL of your styles. A lot of problems go away when you have an explicit relationship between your styles and your components πŸ‘

I hope this is helpful :-) Feel free to ask more questions on my AMA

Q&A: Recording audio/video for JavaScript Air

04/07/2016 , 2m, 10s

Adam Morgan asked me how I record audio and video for JavaScript Air. Here's my answer.


I hope this is helpful! Feel free to ask me more questions on my AMA

How JavaScript Code Coverage Works

04/06/2016 , 2m, 53s

Just a quick explanation of how tools instrument your JavaScript code to record and report code coverage. Common tools:

You may also be interested in this video + this repo where I go through setting up code coverage with ES6, Webpack, and Karma. Just replace where I use isparta with using babel-plugin-__coverage__ (like this) and it should work great πŸ‘

I hope this is helpful!

See you on twitter!

Working from home: Snacks

04/05/2016 , 1m, 35s

Just a quick pro-tip for those of you working from home. Keep the snacks outside of arms reach! And drink lots of water!

Automating JavaScript Air

04/05/2016 , 2m, 54s

I've automated a ton of stuff for JavaScript Air. There's definitely still more to do, but I'm pretty happy with how much is automated. You can find most of the automation stuff in the npm scripts in the package.json in the repo. Many of these reference scripts found in the other directory.

Automation is great. In fact, this very episode used some of the automation found in this repo to make it mono and compress the audio. As I often say: Saving time is not the only reason to automate workflows.

See you on twitter!

From vim to Atom + vim mode

04/05/2016 , 2m, 58s

For the last 24 hours I've been using Atom with vim mode and so far I'm liking it a lot. Here are the plugins I've installed so far:

See you on twitter!

Our Community is Like a Fire πŸ”₯

03/09/2016 , 1m, 28s

I was talking with some of the other Fluent Conf speakers this evening about one of my favorite features of our community: The more we share with each other, the better it is for everyone.

See you on twitter

Go to meetups/conferences and meet new people

03/08/2016 , 2m, 26s

The best part of going to meetups and conferences is getting to know new people you haven't met before and learn about their perspective and experiences. It will make you a better person and software developer πŸ‘

See you on twitter!

First things first

03/05/2016 , 28s

Today I'm playing with my kids and I'm reminded how important they are in life. I am giving two talks at Fluent Conf next week and doing a live JavaScript Air show and I have a lot to prepare and practice. However today I'm focusing on one of the most important things in my life: my relationship with my children. Don't forget what matters most.

Gifs in PRs

02/29/2016 , 1m, 31s

When making a pull request it's often really helpful to take a screenshot of before/after, make an animated gif, or do a screencast. Here are some handy resources about this:

See you on twitter!

Lessons learned broadcasting live at React Conf

02/23/2016 , 2m, 52s

I just finished the show Live at React Conf. This is just a few lessons learned from this experience.

See you on twitter!

Why I can't do your job for you

02/23/2016 , 2m, 52s

Got an email asking me to help someone by basically doing their job for them. I realize that this crazy world of the web can be a little exhausting with all the tooling and stuff, and I'm really motivated to help people learn. But I just simply don't have the time to help everyone that asks me for help. Here's a little bit on why.

Angular and Webpack for Modular Applications

See you on twitter!

React's New Versioning Scheme

02/20/2016 , 2m, 59s

Just my opinion on React's new versioning scheme in which I reference

See you on twitter!

Ignite Talk Proposal: What we can learn about testing from the wheel

02/19/2016 , 2m, 43s

I just made an ignite talk proposal about testing that I think could really help clear up the question about what and how to test your applications. Here's a little teaser of what it's about.

Submit your own proposal here.

See you on twitter!

Sharing your learning: Egghead a day

02/18/2016 , 1m, 50s

Every weekday I tweet at the hashtag #eggheadADay. I share this with my co-workers and we have a discussion about the lesson of the day. It's a great way to keep your skills sharp. Here's the Google Doc I use.

See you on twitter.

New maintainer(s) needed for angular-formly

02/18/2016 , 2m, 54s

This explains the what, why, and how for me requesting a new maintainer (or several) for the angular-formly project. Links:

See you on twitter!

Got a PR Merged into ReactJS πŸŽ‰ + Tips

02/18/2016 , 2m, 51s

Super excited that my first pull request to the ReactJS project was merged last night! It was based on this issue I filed. So excited to have something I've done help the React community :-)

Big thank you to Dan Abramov, Paul O’Shannessy, Jim, and Facebook Community Bot for iterating on the PR with me :-)

In this show I give a few tips about contributing to open source projects and reference my (free) series: How to Contribute to an Open Source Project on GitHub. Also check out my blogpost What open source project should I contribute to? This gives tips on how to identify how you can contribute.

See you on twitter!

Refactoring Big React Components

02/17/2016 , 2m, 21s

Been refactoring a big react component into smaller stateless components to make it easier to understand dependencies for the different pieces of the component. Merrick Christensen demonstrates how to do this in his lesson Extracting Private React Components

See you on twitter!

Workshop Tips

02/16/2016 , 2m, 31s

Last week I gave a workshop about using the AVA framework to test React. One thing that I tried is this idea from A better way to teach technical skills to a group by Dean Hochman which utilizes post-it notes in an interesting way.

I also utilized a little emoji I affectionately call Terry the Tiger 🐯 to direct people to the actionable items in my thorough workshop instructions

See you on twitter!

Let's be nice

02/09/2016 , 2m, 57s

In this first episode of 3 minutes with Kent, I talk about the value of being nice in our industry.