---
title: 2018 in Review
date: 2019-01-14
description:
  An overview of what I've accomplished in 2018 and a bit about my goals for
  2019.
meta:
  keywords:
    - javascript
    - 2018 in Review
bannerCloudinaryId: unsplash/photo-1504006833117-8886a355efbf
bannerCredit: Photo by [Geran de Klerk](https://unsplash.com/photos/bKhETeDV1WM)
---

Whether you've had a great 2018 or not, I think it's important to look back and
reflect on your accomplishments for the year. You've probably done more than you
think you have. In this post, I'm going to share with you some of my
professional (and unprofessional) accomplishments of which I'm particularly
proud and give a few hints as to what I'm planning for 2019 (which is actually
mostly a secret and surprise 😃).

<callout-info>
	Note: I don't want to bother with trying to sort these in any particular
	order, so... they're not in any particular order...
</callout-info>

## [React Testing Library](https://github.com/testing-library/react-testing-library)

This year I
[created](https://github.com/testing-library/react-testing-library/commit/4f16c6e6b356fae1ad92f59eebeb1a8000f60714)
and
[introduced React Testing Library](/blog/introducing-the-react-testing-library).
It has [grown a lot](https://www.npmtrends.com/@testing-library/react) since
then. [The spectrum community](https://spectrum.chat/testing-library) has
[over 300 members now](https://twitter.com/kentcdodds/status/1079523389553790976).
We've [really](https://twitter.com/Saifadin/status/1079746658882195457)
[had](https://twitter.com/blankmannow/status/1079358441380954112)
[a](https://twitter.com/LaurenBeatty13/status/1079489139433762819)
[whole](https://twitter.com/littlekope0903/status/1077045168195452928)
[lot](https://twitter.com/fatihkupkil/status/1077165153056157699)
[of](https://twitter.com/jeanbauerr/status/1076935301166260227)
[love](https://twitter.com/housecor/status/1074319158362415106)...
[like](https://twitter.com/BjoernRicks/status/1070596680540672000),
[a](https://twitter.com/jaredpalmer/status/1060912456829231104)
[lot](https://twitter.com/jaredpalmer/status/1060348319485095936)
[of](https://twitter.com/th__chia/status/1058542488816803840)
[sweet](https://twitter.com/antontelesh/status/976364558586667009)
[tweets](https://twitter.com/skidding/status/1054718393209753600)
[of](https://twitter.com/housecor/status/1047150875502960641)
[appreciation](https://twitter.com/JeffreyRussom/status/1003996108270555136)
([Dan even called it "not bad"](https://twitter.com/dan_abramov/status/1078709118863593472)).
Shout out to
[Ryan Florence for the name](https://twitter.com/ryanflorence/status/975424602699530240)
and [Michał Pierzchała](https://twitter.com/thymikee/status/1050372496971706368)
for making
[react-native-testing-library](https://github.com/callstack/react-native-testing-library).

I'm super proud of what we've accomplished here. The
[React Testing Library all contributors table](https://github.com/testing-library/react-testing-library/blob/master/README.md#contributors)
lists 63 awesome people, and the
[DOM Testing Library all contributors table](https://github.com/testing-library/dom-testing-library/blob/master/README.md#contributors)
lists 46 (many repeats, but not all). These people are amazing and I really
appreciate what they've done. I don't want to leave anyone out, but I would like
to give a special shout out to these folks: [Giorgio](https://twitter.com/Gpx),
[Alex Krolick](https://twitter.com/TensorNo),
[Ivan Babak](https://twitter.com/sompylasar),
[Ernesto García](https://twitter.com/gnapse), and
[Łukasz Gandecki](https://twitter.com/lgandecki).

Creating this open source software and the community of awesome people that has
been built around it is probably one of my finest accomplishments of 2019. If
you'd like to hear more about how this software came to be, you can watch
[S05E12 Modern Web Podcast - Testing](https://youtu.be/nw-GFMW8LSQ) or listen to
[RRU 043: Testing React Apps Without Testing Implementation Details with Kent C. Dodds](https://devchat.tv/react-round-up/rru-043-testing-react-apps-without-testing-implementation-details-with-kent-c-dodds).

## [National Novel Writing Month](https://nanowrimo.org)

Of all non-professional things I've done this year, I'm most proud of this one.
If you didn't know, I wrote a 50,000 word novel in the month of November for
[NaNoWriMo](https://nanowrimo.org). This was the first year I tried and I WON!

Back in August, I decided I wanted to become better at storytelling because my
kids are always asking me to tell them stories and I wasn't very good at it.
Something reminded me of my friend in college who had written a novel in one
month for NaNoWriMo. I had been listening to a LOT of
[Brandon Sanderson](https://brandonsanderson.com) recently (more on this later)
and decided to try writing my own Sanderson-style fantasy novel.

I spent the next few months preparing. I listened to
[the entire story grid podcast](https://storygrid.simplecast.fm), four seasons
of [the writing excuses podcast](https://writingexcuses.com) (they have a lot of
seasons), I talked through the story, characters, magic, and more with my wife
and she gave me some brilliant ideas, I made
[an in depth outline and took notes](https://workflowy.com/s/--B.0EZBOxYZWM)
([workflowy is awesome by the way](https://workflowy.com/invite/a9f7933.lnx)),
and helped inspire the creation of [DevsWhoWrite discord](https://kcd.im/dww)
where I joined several other awesome devs who... well... write 😉 (feel free to
join us!).

The end result is [Shurlan](https://kcd.im/shurlan). I'm super proud of it and
still working on editing to prepare it for publication! Here's a little summary:

> The Immortal family has ruled Shurlan for thousands of years. Thanks to their
> wisdom, the perfect society has been formed and peace and plenty graces
> Shurlan. But when the food allotments start to dwindle, a rebellion begins,
> and only those with secret magic abilities can stop them.
>
> Kyana, an extremely skilled gravity displacer (known as a drifter) is chosen
> by Lord Talmar of the Immortal family to do the impossible task of recruiting
> non-displacers and training them to learn a displacement skill. They need to
> find and stop the rebellion before they steal the harvest and their families
> starve.

This is a [hard fantasy](https://en.wikipedia.org/wiki/Hard_fantasy) novel. That
means that the magic system and world are intended to be rational and knowable
(it's also really cool). It's also
[juvenile fantasy](https://en.wikipedia.org/wiki/Juvenile_fantasy), which means
it's an enjoyable read for adults and kids alike (think Harry Potter).

What I think makes this book special is the message I'm trying to communicate,
the world I've created, the characters, and the magic system.

I've totally immersed myself in this world and the world of writing. I'm
planning on attending writing conferences this year to do some networking and
improving my craft. I'm looking forward to November 2019 when I'll write book 2
in the Shurlan series. I have the concept for 4 series (3 books each) in this
world. Feeling determined :)

## [TestingJavaScript.com](https://testingjavascript.com)

This was a HUGE effort by me and the good folks at
[egghead.io](https://egghead.io). It's the equivalent of 7 full sized egghead.io
courses + 9 podcast episodes. It was a TON of work and people LOVE it. So I'm
really happy with this.

## [paypal-scripts](/blog/tools-without-config)

I started this project in August of 2017, but most of the work was done in 2018.
It's basically a single tool that consolidates a bunch of other tools common to
PayPal projects (both applications and reusable modules published to our
internal npm registry). Think of it like create-react-app's react-scripts, or
ember-cli, or angular-cli. But it does a lot more than just the build/tests.
Here are all the available scripts as of today:

```
build
clean
dev
format
gh-pages
lint
pre-commit
release
remark
test
typecheck
validate
```

It would take another blog post to explain what these all do and how it does
them. But suffice it to say, this was a herculean effort that took most of my
time at work this year.

One huge accomplishment around paypal-scripts was in the last month I decided to
adopt TypeScript (that's a blog post for another time) and I was heads down
updating all the tools to work with `.ts` and `.tsx` files.

What makes this project such a big deal is that it's very soon to be the basis
of the default template project at PayPal we have called the "sample-app." Every
new app started at PayPal is basically a fork of this "sample-app." So because
of the work that I and others have done, every new app at PayPal will be written
in TypeScript, use Jest, React, React Testing Library, emotion, webpack, babel,
prettier, and eslint. And what makes it better is those apps wont have to worry
about keeping those tools up to date saving dozens of developer hours a year PER
PROJECT. I'm really proud of this accomplishment.

<callout-warning>
	(Before you ask, this will not be open sourced, it's too PayPal specific, but
	you might be interested in forking
	[kcd-scripts](https://github.com/kentcdodds/kcd-scripts)).
</callout-warning>

## [PayPal.me](https://paypal.me) rewrite

At the beginning of the year, PayPal decided to make some significant changes to
parts of the experience and that had a big impact on how
[PayPal.me](https://paypal.me) was supposed to work. The original implementation
would be hard to upgrade incrementally and the app is pretty simple anyway, so
we decided to do a complete rewrite. We used paypal-scripts for all the tooling
(it was the first major production app to do so) and we were able to get the
tooling side of things done without much configuration or wiring together tools
of any kind (I had to make quite a few adjustments to paypal-scripts though 😅
but it's good now I promise). That was an awesome experience for paypal-scripts
and I'm really excited to see the experience for everyone else at PayPal as
adoption increases.

Building the app was great. We ended up using
[unstated](https://github.com/jamiebuilds/unstated) for state management and
we're pretty happy with it. We used
[glamorous](https://github.com/paypal/glamorous) (decided that before deciding
to deprecate glamorous, we'll be moving to emotion eventually). The backend was
GraphQL (huge thanks to [Arnab Banik](https://twitter.com/arnab0831) who did
most of the work there). It's a pretty simple app, so we're not using Apollo or
anything, just
[`graphql-request`](https://www.npmjs.com/package/graphql-request) and that
worked well for our needs.

Anyway, really happy with how that turned out :)

## Open Source

Aside from creating React Testing Library (and DOM Testing Library) this year,
there are a few other accomplishments I had this year/useless numbers in the
realm of Open Source that I'd like to mention. Here are a few numbers:

- Hit 500 repos (most of them are nonsense, I do have over 100 published npm
  packages though, so there's that).
- [Added `babel-plugin-macros` to `create-react-app`](https://github.com/facebook/create-react-app/pull/3675)
  and it was [added to gatsby](https://github.com/gatsbyjs/gatsby/pull/7129).
  There are
  [over 200 dependents published on npm](https://www.npmjs.com/browse/depended/babel-plugin-macros)!
- [I opened 134 issues](https://github.com/search?q=created%3A>2018-01-01+is%3Aissue+author%3Akentcdodds&type=Issues)
- [I created 86 PRs](https://github.com/search?q=created%3A>2018-01-01+is%3Apr+author%3Akentcdodds+-user%3Akentcdodds)
  ([73 were merged](https://github.com/search?utf8=✓&q=created%3A>2018-01-01+is%3Apr+author%3Akentcdodds+-user%3Akentcdodds+is%3Amerged&ref=simplesearch))
- [I reviewed 802 PRs](https://github.com/search?q=created%3A>2018-01-01+is%3Apr+reviewed-by%3Akentcdodds&type=Issues)...
  WOW. 🤯
- I [deprecated glamorous](https://github.com/paypal/glamorous/issues/419) in
  favor of [emotion.sh](https://emotion.sh)
- Published v2 and v3 of [downshift](https://github.com/downshift-js/downshift).
- There are now
  [over 2k `.all-contributorsrc` files on GitHub](https://github.com/search?q=.all-contributorsrc+in%3Apath&type=Code&utf8=✓)
  😱
- All in all,
  [I had 2,337 GitHub contributions in the last year](https://github.com/kentcdodds).

## [My YouTube Channel](https://kcd.im/youtube)

This was the year I decided to do week-daily livestreams on
[my YouTube channel](https://kcd.im/youtube):
[Dev Tips with Kent](https://kcd.im/devtips). I've got over 100 videos on the
dev tips playlist. Some of them are longer than others, some of them are more
coherent than others, but altogether they represent a great resource for people
to learn things from JavaScript to testing to React to Babel to more and more :)

I also have a playlist called
[Talks and workshops from Kent C. Dodds](https://youtube.com/playlist?list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf)
with over 60 videos. More on this later.

Altogether, this year I've really been pushing content onto YouTube and
[hit over 10k subscribers](https://twitter.com/kentcdodds/status/1073589861054070784).
My videos got over 260k views this year (I am of course excluding
[my smiley face video](https://youtu.be/t6q5_7fVjEg)
[which was stolen](https://github.com/kentcdodds/ama/issues/290) and has 3.7
million views now).

## Conferences

I gave a lot of talks this year, you can find all the available recordings on
[my YouTube playlist](https://youtube.com/playlist?list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf).
I spoke at 7 conferences and several meetups. I was especially proud to deliver
[my first keynote](https://youtu.be/M9X2qGddHkU?list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf)
at [Chain React](https://infinite.red/ChainReactConf) which was awesome.

I gave
[a similar talk](https://youtu.be/AiJ8tRRH0f8?list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf)
at [React Rally](https://www.reactrally.com) which is my favorite conference and
has been a dream of mine since year one.

I try to avoid traveling to conferences, so most of the conferences I spoke at
were either local or remote. I did travel to San Antonio for
[Assert.js](https://www.assertjs.com) and Portland for
[Chain React](https://infinite.red/ChainReactConf). The only other travel I did
this year was to PayPal offices to give workshops/trainings in San Jose and
Austin, TX.

## Other

Here are some other interesting facts/accomplishments from 2018:

- [I read the Book of Mormon](https://twitter.com/ryanflorence/status/1062114045417873408)
  again.
- [Twitter](https://twitter.com/kentcdodds): I went from
  [25k followers](https://twitter.com/kentcdodds/status/955863656788643840) to
  almost 50k.
- [Newsletter](https://kcd.im/news): I went from
  [less than 5k subscribers](https://twitter.com/kentcdodds/status/973023708473278465)
  to over 10k.
- [Brandon Sanderson](https://brandonsanderson.com): I listened to almost 30
  DAYS worth of time of Brandon Sanderson fantasy novels in 2018. I listen at
  2.9x speed, so it amounts to ~10 days of time, but still. I've filled my ears
  with his words this year!
- I posted 62 new blog posts on [my blog](/blog) on subjects around JavaScript,
  Testing, React, as well as career advice.
- In 2018, I spent most of my course time on testingjavascript.com, but I did
  manage to make a complete update to
  [Advanced React Component Patterns](https://kcd.im/advanced-react) and make
  [Simplify React Apps with React Hooks](https://egghead.io/courses/simplify-react-apps-with-react-hooks)
  as well as [Hooks & Suspense Playlist](https://kcd.im/hooks-and-suspense). I
  don't have easy access to stats, but in last night's egghead stats email
  people watched ~26 hours of my content yesterday and that's pretty typical. I
  think that's pretty neat!
- Back in April, I made a trip to Minneapolis to record workshops for
  [Frontend Masters](https://kcd.im/fem). We made three (almost four) courses
  out of that trip:
  [Advanced React Patterns](https://frontendmasters.com/courses/advanced-react-patterns),
  [Testing React Applications, v2](https://frontendmasters.com/courses/testing-react),
  and
  [JavaScript Testing Practices and Principles](https://frontendmasters.com/courses/testing-practices-principles).
  I'm really happy about how those turned out!
- For the first part of the year,
  [Ryan Florence](https://twitter.com/ryanflorence) made
  [Workshop.me](https://twitter.com/workshop_me). I gave 5 workshops (two on
  testing, two on advanced react, and one on beginning react) through
  workshop.me and it was awesome (though short-lived).
- I gave 4 other workshops this year all of which you can find on
  [my YouTube playlist](https://youtube.com/playlist?list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf).

## What's next in 2019

I'm really excited about plans I have for 2019. I'm not going to give away all
my surprises, but here are a few things:

- I'm turning my [3 minutes with Kent podcast](https://kcd.im/3-mins) into a
  week-daily Q&A. Give it a look, subscribe, and ask your own question on my
  AMA: [kcd.im/ama](https://kcd.im/ama)
- I'm revamping [my website](https://kentcdodds.com) using Gatsby and a bunch of
  other cool tools. I'll definitely blog about it. I'm actually kinda excited
  about it :) I'll also be moving my blog from Medium to my website with gatsby
  and hopefully automate more parts of this newsletter stuff :)
- Remember TestingJavaScript.com? How would you like something like that for
  learning React? But even bigger? From total beginner to JS to total React
  professional? This is going to be enormous.
- I avoid traveling as much as possible, but I want to give more workshops this
  year than I gave last year. So I'm going to do online workshops. There are
  [a lot of benefits to remote workshops](https://twitter.com/kentcdodds/status/1022675523154014209).
  I've done it and I know how to make up for the difficulties of not being there
  in person. You're going to want to take advantage of these!
- At PayPal, I'm working on a component library. I imagine there are some
  opportunities to open source the generic stuff (HOOKS!)
- I'm scheduled to speak and give workshops at
  [React Amsterdam](https://react.amsterdam) in April! See you there? I have at
  least one other conference that I'll probably be speaking at soon as well. I
  expect I'll be speaking a lot around here in Utah as well.
- I have about 15 fantasy novels in mind for the Shurlan Universe. I'm
  definitely planning on writing one each year in November and working
  throughout the year to get each published. I'm feeling pretty optimistic and
  motivated about this whole novel writing stuff :)

## Conclusion

I hope you take the opportunity to look back at your year and see what you've
accomplished. Then make some goals to become even better than you are now.

> "There is nothing noble in being superior to your fellow man; true nobility is
> being superior to your former self." ― Ernest Hemingway

I wish you the very best and happiest New Year!
