  We study maximum matchings in fully dynamic graphs, which are graphs that
undergo both edge insertions and deletions. Our focus is on algorithms that
estimate the size of maximum matching after each update while spending a small
time.
  An important question studied extensively is the best approximation
achievable via algorithms that only spend $\text{poly}(\log n)$ time per
update, where $n$ is the number of vertices. The current best bound is a
$(1/2+\varepsilon_0)$-approximation for a small constant $\varepsilon_0 > 0$,
due to recent works of Behnezhad [SODA'23] ($\varepsilon_0 \sim 0.001$) and
Bhattacharya, Kiss, Saranurak, Wajc [SODA'23] ($\varepsilon_0 \sim 0.006$) who
broke the long-standing 1/2-approximation barrier. These works also showed that
for any fixed $\varepsilon > 0$, the approximation can be further improved to
$(2-\sqrt{2}-\varepsilon) \sim .585$ for bipartite graphs, leaving a huge gap
between general and bipartite graphs.
  In this work, we close this gap. We show that for any fixed $\varepsilon >
0$, a $(2-\sqrt{2}-\varepsilon)$ approximation can be maintained in
$\text{poly}(\log n)$ time per update even in general graphs. Our techniques
also lead to the same approximation for general graphs in two passes of the
semi-streaming setting, removing a similar gap in that setting.
