The `toLocaleString()` function can substitute for a full date formatter in a few situations. But unfortunately it comes with a huge limitation: there’s no way to change the order of the components without changing the locale. There’s another reason why we had to use the en-GB locale: because that locale happens to output year, month, date in exactly the opposite order of what we needed.
So while `toLocaleString()` and `toLocaleDateString()` can help you solve some limited basic problems without reaching for an outside lib, odds are you should use an outside lib if you have anything beyond the most basic of date formatting requirements. Otherwise you might find yourself trying to figure out the exact right locale to get dates into the format you need.