Generally, they don’t. Front-end projects proceed from the requirements to the solution, rather than from the requirements to an architecture to a solution. The middle step of working out the required elements is not required, as the naive approach is sufficient for most use cases.
In the case that the naive approach is too slow or doesn’t adequately solve the problem, then it is refined until it does.
I personally like to apply a small amount of architectural thinking to front-end code, but I consider it a luxury.
The reason this state of affairs persists is because requirements in front-end code change in ways that architecture cannot anticipate. Whatever architecture the project does have is embedded in the chosen technology stack. i.e. React. Front-end developers simply grab these components off the shelf and go to work.