◆ HTML タグの意味って文書向けなのでアプリを作るときにはいらないと思う
◆ アプリはレイアウト優先でレイアウト都合の構造になるので 意味的には求めてるとおりにならない
◆ 文書じゃないので意味を考えても特に意味自体がないし 読み上げにも使えない
◆ タグ名はスタイル用の div とレイアウトと機能を表すタグのみで十分
  ◆ 組み込みの input や iframe とかと WebComponents の CustomElements

HTML でセマンティックがどうこう言って ul とか dd とか main とか footer とか nav とか意味にあったタグを使うことが推奨されてたりします
もともと HTML は文書を書く言語だったわけで 文書と考えれば意味的にここはリストだとかテーブルだとかわかることに価値があるのはわかります
ですが最近多いウェブアプリ系(ツールやウェブシステムとか)ではそれは当てはまらないと思います

例えば VSCode のようなエディタやエクセルのような表計算ソフトウェアの UI で適切なマークアップになっていても何も嬉しくないと思います
li とか nav とか別になくていいと思います
極端に言って全部 div と span でも十分です
ただ開発者的には div だけだと機能的な区切りがわからず class に書いていくのもイマイチ感がありますがそこは WebComponents を使えばタグ名として cell や token みたいな名前を書けます
なのでコンポーネント名と div や span だけで意味的なタグをわざわざ入れる必要はないと思います


文書なら文書構造を定義しておけばユーザがスタイルを当てるでもいいですし ウィンドウ幅に応じてどこで改行してもよかったりけっこう自由なものです
ですがアプリだとレイアウトがはっきり決まっていて固定されてるのがほとんどです
最近ではページ全体をスクロールできる昔ながらのタイプのアプリ自体が少なくなってると思います
Windows アプリのようなローカルアプリに近くて height: 100% の中を分割してパネル内をスクロール可能にするような作りです
flexbox と grid で出来てるイメージです

アプリで HTML 構造による意味とか考えると 求めるレイアウトにしようとしたときに構造が一致しないことも多いです
ひとつのリストに入ってるべきものなのにレイアウトの都合で 1 つの ul で表現できないような場合もあります
無理やり position でレイアウトできなくもないですが 複雑になるだけでそこまでする価値があるとは思えないです
複数の ul になると異なるリストになりますが意味としては 1 つのリストが正しいです

文書だと markdown で変換したものにスタイルを当てるようなもので 文書として構造があってそれの見た目を変えるだけです
細かにこれはここみたいなレイアウトを気にするものはそうないです
ですがアプリでは操作感などレイアウトのほうが重要です
見た目や操作のしやすさ的にどこに何を配置するというのが先にあるので HTML を見たときに適切な構造や意味が伝わるようには思えません
レイアウトを表すだけのものです
アプリだとボタンのラベルみたいなものしか言葉がないことも多く 「意味=レイアウト」 と考えれば間違ってないのかもしれませんけど


そもそも構造や意味を HTML で表す目的は機械的な処理や目が見えない人向けのアクセシビリティです
文書なら検索エンジンや要約ツールなど機械的に意味が理解できれば嬉しいことも多いです
ですがツールのページで機械的に意味を理解する必要はないですし body の中を見ても理解するような意味なんてないと思います
検索で引っかかるのもトップなどのランディングページのみでしょうし
そういうのは head タグのメタデータで伝えればいいです
目が見えない人向けなら 読み上げのときに利用できるので文書ならタグで意味や構造を表す価値は十分あると思います
しかし ツール系の画面で HTML タグだけ見てユーザにどういう画面で何ができるかや何を操作するかを伝えるのは無理があると思います
これまでの HTML タグとは別に「操作」と「結果」に着目して音声ガイドする別の仕組みを作るべきだと思います


そんな感じでアプリ系でも HTML のタグにこだわるのはムダだと思います
HTML は昔からある文書をマークアップするための言語なので アプリにまで使う必要はないと思います
アプリ向けなら XAML みたいなレイアウトや機能を表すタグであるべきで それは WebComponents でやればいいと思います
結果 WebComponents のカスタム要素のタグと組み込みの機能タグ(img や video や input や form みたいなの)以外は div だけでも十分だと思います