[proofplan]
We reduce to the scalar case by post-composing with continuous linear functionals. For each $\phi \in X^*$, the scalar function $\phi \circ f: \mathbb{C} \to \mathbb{C}$ is entire (continuity and linearity of $\phi$ pass through the difference quotient defining the complex derivative) and bounded ($|\phi(f(z))| \le \|\phi\|_{X^*} M$). By the the classical scalar Liouville theorem (every bounded entire function mathbb{C}\to\mathbb{C} constant) for scalar entire functions, $\phi \circ f$ is constant. Since $X^*$ separates points of $X$ (a consequence of the [Hahn-Banach (Normed Space Version)](/theorems/2629)), this scalar constancy upgrades to constancy of $f$ itself.
[/proofplan]
[step:Fix $\phi \in X^*$ and verify that $\phi \circ f$ is entire]
Let $\phi \in X^*$ be arbitrary. Define
\begin{align*}
g_\phi: \mathbb{C} &\to \mathbb{C} \\
z &\mapsto \phi(f(z)).
\end{align*}
We show $g_\phi$ is holomorphic on $\mathbb{C}$. Fix $w \in \mathbb{C}$. By hypothesis, $f$ is complex-differentiable at $w$: the limit $f'(w) := \lim_{z \to w} \frac{f(z) - f(w)}{z - w}$ exists in $X$ (in the norm topology). Continuity and linearity of $\phi: X \to \mathbb{C}$ allow us to pass $\phi$ through this limit:
\begin{align*}
\lim_{z \to w} \frac{g_\phi(z) - g_\phi(w)}{z - w}
&= \lim_{z \to w} \frac{\phi(f(z)) - \phi(f(w))}{z - w} \\
&= \lim_{z \to w} \phi\!\left( \frac{f(z) - f(w)}{z - w} \right) \\
&= \phi(f'(w)).
\end{align*}
The second equality uses linearity of $\phi$ (for the scalar $1/(z-w) \in \mathbb{C}$ and the difference $f(z) - f(w) \in X$); the third equality uses continuity of $\phi$ (a norm-convergent sequence in $X$ has a convergent image in $\mathbb{C}$ under any continuous map). The limit exists for every $w \in \mathbb{C}$, so $g_\phi$ is entire on $\mathbb{C}$ with derivative $g_\phi'(w) = \phi(f'(w))$.
[guided]
Why does linearity of $\phi$ allow us to pull the scalar $1/(z-w)$ outside? Because $\phi$ is $\mathbb{C}$-linear: for any scalar $\lambda \in \mathbb{C}$ and any vector $v \in X$, $\phi(\lambda v) = \lambda \phi(v)$. Applying this with $\lambda = 1/(z-w)$ and $v = f(z) - f(w)$ gives
\begin{align*}
\frac{\phi(f(z)) - \phi(f(w))}{z - w} = \frac{1}{z - w} \phi(f(z) - f(w)) = \phi\!\left( \frac{f(z) - f(w)}{z - w} \right),
\end{align*}
where the first equality uses additivity of $\phi$ to write $\phi(f(z)) - \phi(f(w)) = \phi(f(z) - f(w))$.
Why does continuity of $\phi$ allow us to pull $\phi$ through the limit? By definition of complex derivative in $X$, the difference quotient $D(z) := (f(z) - f(w))/(z - w)$ converges in norm to $f'(w) \in X$ as $z \to w$. A continuous linear functional $\phi$ is a continuous map from $X$ to $\mathbb{C}$, so it sends norm-convergent sequences in $X$ to convergent sequences in $\mathbb{C}$: $\phi(D(z)) \to \phi(f'(w))$ as $z \to w$.
This is the standard "continuous linear functionals commute with limits" pattern that lets us reduce vector-valued analyticity to scalar analyticity.
[/guided]
[/step]
[step:Bound $g_\phi$ uniformly on $\mathbb{C}$]
For every $z \in \mathbb{C}$, the operator-norm bound for $\phi \in X^*$ gives
\begin{align*}
|g_\phi(z)| = |\phi(f(z))| \le \|\phi\|_{X^*} \|f(z)\|_X \le \|\phi\|_{X^*} M,
\end{align*}
where the second inequality uses $\sup_{z \in \mathbb{C}} \|f(z)\|_X \le M$. Hence $g_\phi$ is bounded on $\mathbb{C}$ by the constant $\|\phi\|_{X^*} M$.
[/step]
[step:Apply the scalar Liouville theorem to conclude $g_\phi$ is constant]
The function $g_\phi: \mathbb{C} \to \mathbb{C}$ is entire (Step 1) and bounded (Step 2). The scalar the classical scalar Liouville theorem (every bounded entire function mathbb{C}\to\mathbb{C} constant) — every bounded entire function $\mathbb{C} \to \mathbb{C}$ is constant — therefore applies, with hypotheses verified directly above. Consequently
\begin{align*}
g_\phi(z) = g_\phi(0) \qquad \text{for all } z \in \mathbb{C},
\end{align*}
that is, $\phi(f(z)) = \phi(f(0))$ for every $z \in \mathbb{C}$.
[/step]
[step:Use that $X^*$ separates points to upgrade to $f \equiv f(0)$]
The previous step gives, for every $\phi \in X^*$ and every $z \in \mathbb{C}$,
\begin{align*}
\phi(f(z) - f(0)) = \phi(f(z)) - \phi(f(0)) = 0.
\end{align*}
We claim this forces $f(z) - f(0) = 0$. Suppose for contradiction that $v := f(z) - f(0) \ne 0$ for some $z$. By the [Hahn-Banach (Normed Space Version)](/theorems/2629), part (ii) — applied to the non-zero vector $v \in X$ — there exists a support functional $\phi_v \in X^*$ with $\|\phi_v\|_{X^*} = 1$ and $\phi_v(v) = \|v\|_X > 0$. But then $\phi_v(f(z) - f(0)) = \|v\|_X \ne 0$, contradicting the universal vanishing established above.
Hence $f(z) = f(0)$ for every $z \in \mathbb{C}$, so $f$ is constant.
[guided]
The principle being used is **point-separation by the dual**: in any normed space $X$, if $\phi(v) = 0$ for every $\phi \in X^*$, then $v = 0$. This is a direct corollary of the support-functional consequence of [Hahn-Banach (Normed Space Version)](/theorems/2629), part (ii), via the contrapositive: if $v \ne 0$, we can build $\phi_v \in X^*$ with $\phi_v(v) = \|v\|_X \ne 0$.
Why does the proof rely on Hahn-Banach here, rather than just on linearity and continuity? Because for a general normed space, there is no a priori reason every vector should be detected by some functional: the existence of "enough" continuous linear functionals on $X$ to separate points is precisely what Hahn-Banach establishes. In, say, an incomplete pre-Hilbert space we still have separation via inner products, but in a general Banach space (with no inner product structure) we need Hahn-Banach.
This is the only place in the proof where the Banach space structure of $X$ enters in a substantive way — the rest of the argument worked from analyticity, continuity of $\phi$, and the boundedness hypothesis. Completeness of $X$ is not directly used; only the existence of a separating dual is used. (Hahn-Banach holds for any normed space, not just Banach spaces, so the theorem is in fact valid for normed-space-valued analytic maps as well — but the conventional statement is for Banach spaces.)
[/guided]
[/step]
[step:Combine the steps to conclude]
Steps 1-3 establish that $\phi(f(z)) = \phi(f(0))$ for all $\phi \in X^*$ and all $z \in \mathbb{C}$. Step 4 uses the point-separation property of $X^*$ — a consequence of [Hahn-Banach (Normed Space Version)](/theorems/2629) — to conclude $f(z) = f(0)$ for all $z \in \mathbb{C}$. Hence $f$ is constant, completing the proof.
[/step]