I've reviewed a lot of frontend code, and the accessibility problems are remarkably consistent. None of these are exotic. All of them are cheap to fix at review time and expensive to fix after launch.
A div that should be a button
If it has an onClick, it needs to be focusable, activate on Enter *and* Space, and announce itself as a control. A <button> does all of that for free. Every hand-rolled alternative I've reviewed has been missing at least one.
The usual reason is styling, and it hasn't been a real reason for years: appearance: none and a reset gets you a blank slate.
Focus that goes nowhere
Open a modal, and focus stays on the page behind it. Close it, and focus lands on <body>, dumping keyboard users at the top of the document.
Three rules: move focus into the dialog on open, trap it there, and return it to the trigger on close. <dialog> with showModal() now handles the first two natively, which makes this mostly a matter of remembering the third.
Icon buttons with no name
An icon-only button is an unlabelled button. A screen reader announces "button" and the user has to guess. An aria-label is one attribute, and the icon itself should be aria-hidden, or it gets announced as well.
Placeholder instead of label
Placeholders disappear the moment someone types, fail contrast requirements in most designs, and aren't reliably announced. If the design has no room for a visible label, the label still needs to exist — visually hidden, but present.
Colour as the only signal
A red border on an invalid field communicates nothing to a colourblind user, and nothing at all to a screen reader. Error state needs text, associated with the input via aria-describedby, and aria-invalid on the field.
Skipped heading levels
Heading level is document structure, not font size. Jumping from h2 to h4 because it looked right breaks the outline that many users navigate by. Pick the level from the hierarchy and set the size with a class.
Almost all of this is caught by using the right element. Accessibility work is mostly the discipline of not reinventing controls the platform already ships.