# Beamer, tikz-cd: uncover does not work

I have a similar problem to this one, only I'm using tikz-cd instead of tikz.

Here is a minimal example:

\begin{frame}
\begin{tikzcd}[ampersand replacement=\&]
1{\uncover<2->{\arrow{r}}}\&2
\end{tikzcd}
\end{frame}

This will have two slides, both having the arrow. Removing the {...} will lead to an Error:

Giving up on this path. Did you forget a semicolon?

Using \only instead of \uncover does work, but does move things in bigger diagrams, which I don't want.

Is there a workaround without converting all my tikz-cd diagrams into tikzpictures?

Use the visible on style:

\documentclass{beamer}
\usepackage{tikz-cd}

\tikzset{
invisible/.style={opacity=0},
visible on/.style={alt={#1{}{invisible}}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
}
}

\begin{document}

\begin{frame}
\begin{tikzcd}[ampersand replacement=\&]
1 \arrow[visible on=<2->,r]\arrow[visible on=<3>,d] \& 2\arrow[visible on=<2->,d] \\
3 \arrow[visible on=<3>,r] \& 4
\end{tikzcd}
\end{frame}

\end{document}