Stopwatch interface OOP (Vanilla JS)
Welcome to Code Review! Hopefully you find the feedback here and in other posts useful!
Good things
The code makes good use of const for items that shouldn't be re-assigned (e.g. screen, btnStart, screen, etc.) and let for re-assignable values (e.g. counter, intervalID).
Suggestions
This code uses some ES6 features like arrow functions - thus it could use the class syntax. Until then, each instance of StopWatch has methods defined using this.[method]. This works but isn't as efficient as using the prototype. Such a change might likely require changing local variables to instance variables (e.g. screen =&gt; this.screen).
The naming of methods on UI could be more appropriate - e.g. toggleClass would be more appropriate as toggleActiveClass because it toggles the activeBtn class, and removeClass would be more appropriate as removeActiveClass for the same reason.
I see that the Error is thrown when clicking the button with text Start twice, which makes sense, but perhaps the click event handler should only call the function sw.start (as well as ui.toggleClass(this)) if intervalID === 0 - if that is a case then perhaps a public method to determine if the Stopwatch is started is necessary.
I noticed the HTML for the buttons labeled Stop and Reset have attributes on the close tag:

&lt;button type=&quot;submit&quot; id=&quot;btnStop&quot; class=&quot;btn&quot;&gt;Stop&lt;/button type=&quot;submit&quot;&gt;
&lt;button type=&quot;submit&quot; id=&quot;btnReset&quot; class=&quot;btn&quot;&gt;Reset&lt;/button type=&quot;submit&quot;&gt;


Setting attributes on the closing tags will either be ignored by the browser, or could lead to an error - see answers to this SO question for more of an explanation.