This chapter introduced the concept of configurability in large-scale JavaScript applications. The major configuration categories are locales, behavior, and appearance. Locales are a big part of web applications today because there's nothing stopping people, anywhere in the world, from using our application. There are scaling challenges associated with internationalization though. It adds complexity to our development lifecycle and there's the cost of maintaining locales.
Preferences need to be stored somewhere. Storing them in the browser works, but there's no portability with this approach. It's much more appropriate to store preferences in the backend and load them when the application initializes. There're many challenges to scaling lots of preferences, including differentiating between user-defined and system preferences. It shouldn't matter if we've included sane hard-coded default values.
The styles of our application are another configurable dimension. There're frameworks and...