Hi, I'm Eric Diviney
I want to help you build React apps
The React Handbook is a website primarily maintained by me, Eric Diviney. I'm a software engineer building things at Dialexa, an IBM company.
Here's a little about me and why I built this website (and what I think about web development in general).
1) Why do I like React? Why is React so popular?
So, this is just my perspective, far from the complete history. If you want to really understand the history of React, I recommend this documentary (it's fantastic, seriously). Anyways, here's why I think React is great:
- React was invented at the perfect time - JavaScript was evolving so quickly, and new tools were being invented all the time. There was strong demand for a generic library that was easily approachable and simplified building UIs. React fit this need perfectly at the time.
- React is very simple (NOT easy, simple) - while this may be a controversial point for some, React's simple-but-flexible API is not a very steep learning curve. I don't want to call it easy, but the API, in our opinion, is much simpler than its counterparts, and also why we prefer it for building UIs.
- JSX is awesome - At first, it was demonized, but now it's loved. Granted, JSX is nothing react-specific (you can use JSX in just about any modern framework). JSX is a declarative way to define your UI and its hierarchy and feels naturally intuitive to web developers because of its XML/HTML-like syntax.
- React focused on the right things (at the time) - Instead of shipping the entire kitchen sink (routing, data fetching, styling, etc.) it just focused on the rendering of HTML. This allowed the ecosystem to develop around the library and surfaced the right tools needed by developers. This early (but critical) choice to focus on the right set of features is, in my opinion, what truly unlocked the ecosystem that we enjoy today. Of course, meta-frameworks all ship with opinionated methods of routing, data-fetching, and styling nowadays, but that's because now we see React can definitely still shine if decisions like those are made for us. It lets developers focus more on our application.
- React is the most popular UI framework in the world now. According to various sources, one can reasonably conclude React is very likely to continue its growth trajectory in the near future (next five years) from these sources:
2) How do I keep up with React/JavaScript?
First, some great (free) resources
- Clean Code JavaScript - how to write clean, simple, understandable JavaScript
- Typescript for new programmers
- JavaScript | MDN
- Subreddits (interesting libraries are posted and discussions by library maintainers are fruitful)
- My favorite twitter accounts:
- My favorite websites/blogs/misc:
- The only newsletters I subscribe to:
I've paid thousands over my career. It's very rare that a paid course/lesson sticks with me, the following list are those resources that just took me to a completely new level as a developer, I highly recommend them to anyone looking to further their career in frontend development:
- Just JavaScript by Dan Abramov
- Epic React Dev by Kent C. Dodds
- Advanced React by Nadia Makarevich
3) Some of my favorite technologies for building software
- React / React Native
- TypeScript
- TailWind
- Radix UI
- Laravel (PHP)
- Flask (Python)
4) Arguments I Care About
- Philosophies to live by:
- KISS (Keep It Simple, Stupid)
- "Great advice, hurts my feelings every time"
- Strong Opinions, Loosely Held
- "When the facts change, I change my mind. What do you do, sir?"
- Simple Code > Clever One-Liner that requires a comment to understand
- Everybody loves a good TODO left in the code. But you're truly a hero if you also put it in the backlog
- KISS (Keep It Simple, Stupid)
- Frontend preferences
- TypeScript > JavaScript
- Don't use
any
in TypeScript unless you have exhausted reasonable attempts to solve it (or consulted the TS guru on your team)
- Don't use
- In general, too many apps built today are SPA's
- Also, the SPA gets a bad wrap. If the whole app is behind Authentication, SPAs can be a great approach
- The linter should require semicolons at the end of statements. Ya'll are getting ridiculous!
- Tailwind > Traditional CSS (because I don't spend time having to name everything)
- TypeScript > JavaScript
5) Arguments I Don't Care About
- Tabs vs spaces (just pick one so everyone is consistent)
- camelCase vs snake_case (same reason above, but honestly I do prefer camelCase)
- Sass vs Styled Components vs Post CSS (if we're writing CSS, I care little how we do it, as long as we all do it consistently)
- NeVeR uSe PHP (PHP is awesome) (and WordPress is alright)
- Anything that results in bike-shedding