Optimized for Change by Dan Abramov
What’s a crucial aspect of designing APIs?
The best API designers I know don’t stop at the “first order” aspects like readability. They dedicate just as much, if not more, effort to what I call the “second order” API design: how code using this API would evolve over time.
A slight change in requirements can make the most elegant code fall apart...[great APIs] are optimized for change.