Kent C. Dodds
-
The next chapter: EpicAI.pro
What I'm working on with AI education and why I think it's the future.
Published
-
AI is taking your job
AI is changing how hiring works, and that makes in person connections even more important.
Published
-
How I increased my visibility
Someone asked me this and here's my answer.
Published
-
2023 in Review
A review of what happened in the life of Kent C. Dodds in 2023
Published
-
Launching Epic Web
The story of how Epic Web came to be
Published
-
Stop Being a Junior
Some advise for people who still consider themselves junior developers
Published
-
RSC with Dan Abramov and Joe Savona Live Stream
I had a live streamed conversation with Joe Savona and Dan Abramov. Here's a summary of our discussion.
Published
-
Fixing a Memory Leak in a Production Node.js App
How I found and fixed a memory leak on kentcdodds.com
Published
-
2022 in Review
A review of what happened in the KCD world in 2022
Published
-
My Car Accident
I was involved in a very bad car accident in 2022. Here's the story.
Published
-
I Migrated from a Postgres Cluster to Distributed SQLite with LiteFS
Why and how I migrated from distributed postgres to distributed sqlite on kentcdodds.com
Published
-
I'm building EpicWeb.dev
I've struck out on my own again to focus on my most ambitious project yet.
Published
-
A review of my time at Remix
As I move on to my next adventure, I want to take this opportunity to review what I accomplished while at Remix.
Published
-
Remix: The Yang to React's Yin
Remix fills the missing piece that all React web applications need: The Network Chasm
Published
-
Why I Love Remix
I've written tens of thousands of lines of code with Remix and I want to tell you why I love using this framework.
Published
-
The State Initializer Pattern
A simple pattern used in libraries like downshift and ReachUI to enable component/hook users to initialize your state and even reset it to that initial value.
Published
-
How to React ⚛️
Let's see how learning React ⚛️ in the right order can make it less overwhelming.
Published
-
How I help you build better websites
I'm making a career move to more effectively help you make the web (and the world) better.
Published
-
Get a catch block error message with TypeScript
TypeScript forces you to acknowledge you can't know what was thrown making getting the error message a pain. Here's how you can manage it.
Published
-
How Remix makes CSS clashes predictable
Remix has this beautifully simple feature for CSS that I want to tell you all about.
Published
-
Building an awesome image loading experience
How Unsplash's blurred image loading works and why I did mine differently for a more excellent experience on my site.
Published
-
Introducing the new kentcdodds.com
This site just experienced a huge rewrite and I want to show you around a bit.
Published
-
How I built a modern website in 2021
I rewrote kentcdodds.com using the latest technologies and I want to talk about what I did.
Published
-
How to use React Context effectively
How to create and expose React Context providers and consumers
Published
-
Static vs Unit vs Integration vs E2E Testing for Frontend Apps
What these mean, why they matter, and why they don't
Published
-
The Testing Trophy and Testing Classifications
How to interpret the testing trophy for optimal clarity
Published
-
Don't Solve Problems, Eliminate Them
How eliminating problems can drastically simplify your codebases and life
Published
-
Array reduce vs chaining vs for loop
A comparison of different approaches to operating on an array
Published
-
Super Simple Start to Remix
The simplest distraction-free version of a remix app
Published
-
Super Simple Start to ESModules in Node.js
All supported versions of Node.js support ESModules now. Here's how to get started using them.
Published
-
How to write a React Component in TypeScript
There are plenty of ways to do it, here's how I recommend typing React Components
Published
-
JavaScript Pass By Value Function Parameters
How it works and how to work with it... and around it
Published
-
How to write a Constrained Identity Function (CIF) in TypeScript
A handy advanced TypeScript pattern to increase your productivity.
Published
-
How to optimize your context value
Why and how you can optimize your context provider's value to avoid performance issues
Published
-
TypeScript Function Syntaxes
The syntax for various functions and function types in TypeScript with simple examples.
Published
-
Listify a JavaScript Array
Make a human readable list from an array in JavaScript.
Published
-
Build vs Buy: Component Libraries edition
Some things to think about before you decide to create your own component library.
Published
-
Using fetch with TypeScript
How to make HTTP requests with fetch and TypeScript
Published
-
Wrapping React.useState with TypeScript
How to make a custom hook that wraps useState with TypeScript properly
Published
-
Define function overload types with TypeScript
Have your JS expressiveness and type it too.
Published
-
2020 in Review
An overview of what I accomplished in 2020 and a bit about my goals for 2021.
Published
-
Business and Engineering alignment
How to convince "the business folks" to let you do what you want.
Published
-
Hi, thanks for reaching out to me 👋
How to get help from Kent
Published
-
useEffect vs useLayoutEffect
The simple rules for when to use each.
Published
-
Super simple start to Firebase functions
The simplest getting started guide for Firebase Cloud functions
Published
-
Super simple start to Netlify functions
Easily create server code without worrying about managing servers yourself
Published
-
Super Simple Start to css variables
How to get started using css variables
Published
-
Favor Progress Over Pride in Open Source
How I deprecated my most popular open source project in favor of a better library
Published
-
Testing Implementation Details
Testing implementation details is a recipe for disaster. Why is that? And what does it even mean?
Published
-
How getting into Open Source has been awesome for me
An anecdotal argument for contributing and using open source
Published
-
useState lazy initialization and function updates
When to pass a function to useState and setState
Published
-
JavaScript to Know for React
What JavaScript features you should be familiar with when learning and using React
Published
-
Application State Management with React
How React is all you need to manage your application state
Published
-
Use ternaries rather than && in JSX
What problems can happen when you use && to conditionally render content in JSX
Published
-
Use react-error-boundary to handle errors in React
How to simplify your React apps by handling React errors effectively with react-error-boundary
Published
-
How I structure Express apps
The build/dev tools and scripts I use for Node backends.
Published
-
What open source project should I contribute to?
My silver bullet answer to this frequently posed question, and how to get started
Published
-
Stop mocking fetch
Why you shouldn't mock fetch or your API Client in your tests and what to do instead.
Published
-
When I follow TDD
Test-Driven Development doesn't always make sense, here's when it does for me.
Published
-
AHA Programming 💡
The dangers of DRY, the web of WET, the awesomeness of AHA.
Published
-
How I Record Educational Videos
My process for making high value-to-minute content.
Published
-
Should I write a test or fix a bug?
How to prioritize tests relative to everything else.
Published
-
Tracing user interactions with React
How to use the (EXPERIMENTAL) interactions tracing API in React.
Published
-
Eliminate an entire category of bugs with a few simple tools
How you can use a few simple static code analysis tools to avoid common programming bugs.
Published
-
Intentional Career Building
A challenge and ideas for you to do something to build your career.
Published
-
Improve test error messages of your abstractions
How to manipulate stack traces to get beautiful error messages with Jest and your test helper functions.
Published
-
Common mistakes with React Testing Library
Some mistakes I frequently see people making with React Testing Library.
Published
-
Function forms
When I prefer to use function declarations instead of arrow functions
Published
-
Super Simple Start to React
The most simple React setup imaginable
Published
-
Stop using client-side route redirects
Why you should stop using client-side route redirects (like the `from` prop on React Router's Redirect component) and what you should do instead.
Published
-
The State Reducer Pattern with React Hooks
A pattern for you to use in custom hooks to enhance the power and flexibility of your hooks.
Published
-
How to test custom React hooks
Get confidence your custom React hooks work properly with solid tests.
Published
-
Replace axios with a simple custom fetch wrapper
Axios can do a ton of stuff, but here's a simpler solution that can handle most use cases
Published
-
React Production Performance Monitoring
How to set up performance monitoring for production React applications.
Published
-
Should I useState or useReducer?
Two built-in React hooks that handle state, which one should you use?
Published
-
Stop using isLoading booleans
Why using a status enum (or even better: a **state machine**) will help your app stay bug free
Published
-
Make Your Test Fail
If you're not careful you can write a test that's worse than having no tests at all
Published
-
Make your own DevTools
How creating DevTools specific for your own app can improve your productivity
Published
-
An Argument for Automation
Why it can be worth spending 1 hour automating a 10 second task
Published
-
Fix the "not wrapped in act(...)" warning
There are a few reasons you're getting this warning. Here's how you fix it.
Published
-
Super Simple Start to ESModules in the Browser
All major browsers support ESModules now. Here's how to get started using them.
Published
-
Implementing a simple state machine library in JavaScript
Let's write a state machine abstraction together to understand it better
Published
-
Don't call a React function component
The difference between React.createElement and calling a function component directly
Published
-
Why I avoid nesting closures
A little tendency I have to reduce cognitive load for readers of my code.
Published
-
2010s Decade in Review
The 2010s are over, time to think back, then forward
Published
-
Why your team needs TestingJavaScript.com
A letter you can copy/paste and send to your boss.
Published
-
Why users care about how you write code
Your coding practices and technology choices impact user experience...
Published
-
Inversion of Control
A simple principle that can drastically improve your reusable code
Published
-
Understanding React's key prop
The key prop is a mechanism for controlling component instances.
Published
-
How to Enable React Concurrent Mode
Concurrent Mode is an enormous improvement for user experience and developer experience. Here's how you enable it.
Published
-
Speed up your App with Web Workers
How to get started using web workers for practical use cases
Published
-
Building the Open Source Community We Want
Let's be intentional about the open source community we want and work hard to build it.
Published
-
How to add testing to an existing project
This is how you get started in testing your application
Published
-
Making your UI tests resilient to change
User interface tests are famously finicky and prone to breakage. Let's talk about how to improve this.
Published
-
Don't Sync State. Derive It!
How to avoid state synchronization bugs and complexity with derived state.
Published
-
State Colocation will make your React app faster
How state colocation makes your app not only more maintainable but also faster.
Published
-
Profile a React App for Performance
How to use the React DevTools and React's profiling build to properly profile a production app
Published
-
Fix the slow render before you fix the re-render
How to start optimizing your React app renders
Published
-
How to implement useState with useReducer
A fun exercise to help understand the differences and use cases of these two related hooks
Published
-
Write fewer, longer tests
Making tests too short often leads to poor testing practices and way more tests.
Published
-
How to get experience as a software engineer
There's no shortcut to experience, but there are things you can do to increase the impact of your time.
Published
-
5 Tips to Help You Avoid React Hooks Pitfalls
Let's explore some hook gotchas and how to avoid them.
Published
-
Write tests. Not too many. Mostly integration.
[Guillermo Rauch](https://x.com/rauchg) [tweeted](https://x.com/rauchg/status/807626710350839808) this a while back. Let's take a dive into what it means.
Published
-
When to break up a component into multiple components
At what point does it make sense to break a single component into multiple components?
Published
-
Avoid Nesting when you're Testing
Why using hooks like beforeEach as a mechanism for code reuse leads to unmaintainable tests and how to avoid it.
Published
-
React Fundamentals: Props vs State
What's the difference between props and state in React?
Published
-
How I Teach
How I apply the science of learning to help students retain what I teach them, and how I learn.
Published
-
When to useMemo and useCallback
Performance optimizations ALWAYS come with a cost but do NOT always come with a benefit. Let's talk about the costs and benefits of useMemo and useCallback.
Published
-
One simple trick to optimize React re-renders
Without using React.memo, PureComponent, or shouldComponentUpdate
Published
-
Colocation
Maintainability through colocation
Published
-
Avoid the Test User
How your UI code has only two users, but the wrong tests can add a third
Published
-
Authentication in React Applications
How to handle user authentication in modern React Applications with context and hooks
Published
-
AHA Testing 💡
How to apply the "Avoid Hasty Abstraction" principle to your test code.
Published
-
How to know what to test
Practical advice to help you determine what to test.
Published
-
How to get started with programming
So you want to get into programming? Here's how you get started.
Published
-
How to Enable React Strict Mode
What it is and how to add it to your app.
Published
-
🚨 Big Announcement: I'm a full-time educator! 👨🏫
After years of teaching on the side, I've decided to take the plunge and go full-time as an educator!
Published
-
Goodbye Medium
I've migrated from Medium to kentcdodds.com/blog... Here's why
Published
-
React Hooks: Compound Components
How do compound components change with React hooks?
Published
-
Please stop building inaccessible forms (and how to fix them)
I regularly find inaccessible forms. In this post we'll check out some common accessibility problems and fix them.
Published
-
2018 in Review
An overview of what I've accomplished in 2018 and a bit about my goals for 2019.
Published
-
React Hooks: Array Destructuring Fundamentals
React's upcoming useState hook relies on array destructuring, let's dive in and see how that feature works.
Published
-
React Hooks: What's going to happen to my tests?
How can we prepare our tests for React's new hooks feature?
Published
-
React Hooks: What's going to happen to react context?
With the cool new stuff coming to React (Hooks/Suspense), what's going to happen to the context api?
Published
-
React Hooks: What's going to happen to render props?
What am I going to do with all these render props components now that react hooks solve the code reuse problem better than render props ever did?
Published
-
How Gratitude can make you a better developer
What does gratitude have to do with software development?
Published
-
Introducing a new course: Simplify React Apps with React Hooks and Suspense
Learn about the massive improvements coming to function components in React via a fresh new course showing you how to refactor an existing...
Published
-
UI Testing Myths
Some common myths around testing and what the reality is...
Published
-
Common Testing Mistakes
Today let's talk about some common mistakes that people make when testing JavaScript applications.
Published
-
The Merits of Mocking
What are you doing when you mock something, and when is it worth the cost?
Published
-
React is an implementation detail
...yep, you read that right. Most of the course actually has nothing to do with React specifically.
Published
-
Demystifying Testing
How to get from aimlessly testing or not testing at all to really understanding how and what to test.
Published
-
The time I messed up
That time I went too far with Test Driven Development and forgot a very important step
Published
-
Why you've been bad about testing
Some common struggles people have with testing, and things you can do to improve.
Published
-
Confidently Shipping Code
Why I care about testing
Published
-
React/JSX as a server-side templating language
Using React function components to render your website's skeleton index.html
Published
-
How I am so productive
People regularly ask me how I get so much done. Here's my secret...
Published
-
Getting Noticed and Widening Your Reach
Some things you can do to gain a wider audience and get your stuff noticed
Published
-
Make Impossible States Impossible
A simple trick to simplify your application and component state
Published
-
How to make the most out of conferences
Some specific things you can do as a conference attendee
Published
-
Why and How I started public speaking
Some stories and some advice from an international speaker and trainer
Published
-
mdx-deck: slide decks powered by markdown and react
Why it's awesome, what it is, how it works, and how to use mdx-deck.
Published
-
unpkg: An open source CDN for npm
Let's learn how unpkg the service and the open source project can improve performance for your company's apps.
Published
-
Polyfill as needed with polyfill-service
How to maximize the performance of loading polyfills for your application users.
Published
-
What is a polyfill
The difference between a polyfill and a code transform.
Published
-
Why I Never Use Shallow Rendering
Tests should help me be confident that my application is working and there are better ways to do that than shallow rendering.
Published
-
What is JSX?
You may use it every day, but have you seen what happens after Babel compiles it?
Published
-
Test Isolation with React
Why your tests should be completely isolated from one another and how to do that.
Published
-
🏎 downshift 2.0.0 released 🎉
Even better accessibility, React Native and ReasonReact support, even simpler API, improved docs, new examples site, Flow and TypeScript...
Published
-
💯 UPDATED: Advanced React Component Patterns ⚛️
Now featuring the latest React APIs (like context) and entirely new patterns (like state reducer props).
Published
-
JavaScript default parameters
The expressive power of expressions in default values for parameters
Published
-
Dealing with FOMO
What is "Fear Of Missing Out" and how to deal with this natural unhealthy tendency.
Published
-
When to use Control Props or State Reducers
Comparing two similar patterns that enable many of the same use cases.
Published
-
Write your own code transform for fun and profit
How to write your own code macro with babel-plugin-macros 🎣
Published
-
React DevTools
A quick demo of the browser extension you should definitely be using.
Published
-
Prop Drilling
What it is, why it's good, why it's bad, and how to avoid common problems with it
Published
-
How I learn an Open Source Codebase
What I do to learn and understand an open source project to which I want to contribute.
Published
-
Mixing Component Patterns
Let's make a component that supports Render Props, Component Injection, Compound Components, the Provider Pattern, and Higher Order...
Published
-
Pure Modules
How you write your ES Modules impacts the performance and maintainability of your code.
Published
-
Migrating to React's New Context API
Let's compare the before/after of React's new context API.
Published
-
Compose Render Props
One of the reasons I'm so excited about render props
Published
-
Introducing the react-testing-library 🐐
A simpler replacement for enzyme that encourages good testing practices.
Published
-
When to NOT use Render Props
Let's back up from the hype and think critically about the render props pattern
Published
-
But really, what is a JavaScript mock?
Let's take a step back and understand what mocks are and how to use them to facilitate testing in JavaScript.
Published
-
Increase your marketability
Some tips of things that I've done that have helped me get where I want to be in the industry.
Published
-
Solidifying what you learn
Teaching is nature's way of letting you know how sloppy your understanding is.
Published
-
The state reducer pattern ⚛️ 🏎
A new pattern has been implemented in downshift and it's awesome. Use the state reducer pattern to make your components more useful.
Published
-
Answers to common questions about render props
Because there's a ton of hype, and a bunch of questions ⚛️
Published
-
React's ⚛️ new Context API
It's way more ergonomic, it's no longer "experimental," and it's now a first-class API! OH, AND IT USES A RENDER PROP!
Published
-
Concerning toolkits 🛠 📦
The merits and use cases of consolidating tools into one "zero config" toolkit.
Published
-
Spelunking in node_modules 👷
Deep dive into Jest, React, and jsdom: A story about how I go about finding and fixing bugs in my dependencies.
Published
-
Building Production Apps 100% in the browser
How I built & deployed 2 production apps without downloading any source code.
Published
-
Testing ⚛️ components using render props
Let's look at how we can write tests for React components that use render props!
Published
-
But really, what is a JavaScript test?
Let's take a step back and understand automated testing of JavaScript from square one.
Published
-
Advanced React Component Patterns
An overview of some of the patterns covered in my recently released egghead.io course (free until Friday).
Published
-
Merry Christmas!
As I write this, it's Christmas Eve. My kids have fallen asleep and I've wrapped up the last few presents I've made or purchased for them...
Published
-
The Beginner's Guide to ReactJS
The course is free forever on egghead.io! Let's talk about how it teaches even developers experienced with React ⚛️
Published
-
Giving good demos
I gave a pretty good demo and here are some things I did that might help you give good demos too.
Published
-
Learn React Fundamentals 🆓 and Advanced Patterns ⚛️ 🎁
Two and a half hours of new beginner (free) and advanced React material are now available egghead.io!
Published
-
Becoming an Open Source Project Maintainer
Some tips and tricks that have worked for me.
Published
-
Rendering a function with React
How I tricked React into rendering a function (not call it... render it)
Published
-
Improving the usability of your modules
How to make your modules more generically useful and easier to test.
Published
-
Effective Snapshot Testing
Snapshot testing can be useless, or super useful. Your choice. Let's talk about how to make them useful.
Published
-
Make maintainable workarounds with codegen 💥
Sometimes you need to workaround issues in other libraries. These workarounds can often lead to messy code. codegen is a tool that helps...
Published
-
How to give rendering control to users with prop getters
Render props are awesome, put it together with prop getters and you have an awesome combination to give users of your React components...
Published
-
Tools without config 🛠📦
TL;DR/Spoiler alert: I'm working on a tool at PayPal called paypal-scripts and a personal one called kcd-scripts. You should try it too!
Published
-
Introducing downshift 🏎 for React ⚛️
downshift 🏎 is the primitive you need to build simple, flexible, WAI-ARIA compliant React...
Published
-
How writing custom Babel & ESLint plugins can increase productivity & improve user experience
And it's way more approachable than you think...
Published
-
Classes, Complexity, and Functional Programming
When I use classes, when I don't, what I do instead, and why
Published
-
Introducing glamorous 💄
A styled-components 💅 and jsxstyle inspired solution for styling ⚛️ React Components from PayPal
Published
-
Tips for making a CLI-based tool with node
I got this question on my AMA and decided to turn the answer into a formal blogpost.
Published
-
Migrating to Jest
on the P2P team at PayPal
Published
-
🌆 Sunsetting JavaScript Air 🌆
for now... 🌇
Published
-
Kent OOO (Out Of the Office)
Why this week's episode of JavaScript Air is canceled and where I'm going...
Published
-
Introducing: How to Contribute to Open Source
My free, first-timer friendly egghead.io series all about how to contribute to open source projects on GitHub.
Published
-
Misunderstanding ES6 Modules, Upgrading Babel, Tears, and a Solution
On October 29th, 2015, Sebastian McKenzie, James Kyle, and the rest of the Babel team dropped a huge major release for frontend developers...
Published
-
Semicolons in JavaScript: A preference
An argument for why use of semicolons in JavaScript source is a preference
Published
-
Open Source Stamina
You contribute best to something you use regularly.
Published
-
Please, don't commit commented out code
Some solid reasons you should delete code that is not used
Published
-
Why I don't commit generated files to master
for libraries...
Published
-
How to Write a JavaScript Library
There are so many reasons to open source your code. But knowing how to do it can be a real challenge.
Published
-
First Timers Only
A suggestion to Open Source project maintainers...
Published
-
Newspaper Code Structure
Your code should read like a newspaper article. Important stuff at the top, details at the bottom. I have a particular convention for my...
Published