When do you use dot notation and when do you use bracket notation?
Dot notation is the default. It reads better, and it tells the reader and the type checker that the key is a known identifier. Use it whenever the property name is a valid JavaScript identifier and you know it at compile time.
Bracket notation is needed in four situations. The key is dynamic, so it is held in a variable. The key contains characters that are not valid in an identifier, such as a space or a hyphen. The key is a symbol rather than a string. Or the key is a reserved word in some contexts, where the bracket form is the clearer choice even though modern engines accept reserved words after a dot.
There is also a performance consideration that is smaller than it used to be. Modern engines compile both forms to roughly the same property access when the key is a literal string, so the old argument about bracket notation being slower no longer holds for constant keys. It is only noticeably slower when the key is a computed expression that the engine cannot treat as a fixed name, because the lookup cannot be cached as easily.
Style guidance for a team is simple: dot notation unless you have a reason not to. The reason is not really performance, it is readability and tooling. Bracket notation everywhere makes the code look dynamic when it is not, and it defeats autocomplete in editors.