What Gets Updated in a Splice Version Upgrade?
Understanding what changes (and what doesn't) when you upgrade your validator Helm charts.
The Question
When we upgrade a validator node version, is it mainly just the validator app and participant, or do other elements (like the wallet UI) also change?
The Answer
In a standard Splice Helm upgrade, all images shipped by the Helm charts upgrade together — validator app, participant, and UIs.
PostgreSQL is usually the exception because it's deployed via a separate chart/release with its own lifecycle.
Quick Mental Model
Think of your node as "bundled apps + one database backbone": most runtime components follow the Splice chart appVersion, while Postgres is typically managed separately.
For major network upgrades, the network may perform a synchronizer migration with downtime, during which your node exports a migration dump and then re-initializes the participant from that dump after upgrading.
What Upgrades Together (Helm AppVersion)
splice-validator chart includes
| Component | Image (example) | Purpose |
|---|---|---|
validator-app | validator-app:0.5.x | Core validator backend |
wallet-web-ui | wallet-web-ui:0.5.x | Wallet UI frontend |
ans-web-ui | ans-web-ui:0.5.x | Canton Name Service UI |
splice-participant chart includes
| Component | Image (example) | Purpose |
|---|---|---|
canton-participant | canton-participant:0.5.x | Ledger participant node |
Why Everything Bumps Together
The chart templates typically reference the same {{ .Chart.AppVersion }} tag for each deployed image, so changing the Helm chart version changes the AppVersion and thus updates all those pods.
# validator.yaml
image: "{{ .Values.imageRepo }}/validator-app:{{ .Chart.AppVersion }}"
# wallet-web-ui.yaml
image: "{{ .Values.imageRepo }}/wallet-web-ui:{{ .Chart.AppVersion }}"
# ans-web-ui.yaml
image: "{{ .Values.imageRepo }}/ans-web-ui:{{ .Chart.AppVersion }}"
# participant.yaml
image: "{{ .Values.imageRepo }}/canton-participant:{{ .Chart.AppVersion }}"What Does NOT Automatically Follow (Postgres)
PostgreSQL is commonly deployed via a separate splice-postgres chart/release and therefore does not automatically track the same appVersion as the validator/participant bundle.
That's why you might see something like Postgres on 0.5.1 while validator components are on 0.5.8.
Major Upgrades vs "Regular Upgrades"
Some Splice releases include an "Upgrade to Canton X.Y" that cannot be applied as a routine upgrade and instead requires a scheduled synchronizer migration with downtime.
During Downtime Upgrades, Validators Typically:
- Wait for SVs to pause traffic
- Ensure they are caught up with the network
- Verify the migration dump exists
- Take full backups
- Upgrade and let the validator backend import the dump to initialize a fresh participant database
Verify What's Running
List current images for each pod to confirm what actually upgraded:
kubectl get pods -n validator \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}'Key Takeaways
- One Splice chart version upgrade typically updates participant + validator app + wallet UI + ANS UI together
- Postgres is usually separate — upgrade it deliberately and less frequently
- Always read release notes — some upgrades require a synchronizer migration with downtime, not a normal helm upgrade
- Test on DevNet/TestNet first — UI/API behavior can change across versions

