Data missing from Altair compound chart

Streamlit is an incredible tool - thanks for all of your hard work.

I am running into an issue when displaying some compound Altair charts.

Here is a reproducible example:

import streamlit as st
import numpy as np
import pandas as pd
import altair as alt

# Dummy data
dates = (pd.date_range('2016-01-01', '2021-04-01')
         .sample(14, replace=False, random_state=42)

rng = np.random.default_rng(42)
vals = rng.integers(low=0, high=15, size=len(dates))

source = pd.DataFrame({
    'date': dates,
    'val': vals

# Make plot components
brush = alt.selection(type='interval', encodings=['x'])

base = alt.Chart(source).mark_bar().encode(

upper = base.encode(
    alt.X('date:T', scale=alt.Scale(domain=brush))

lower =

Horizontal or vertical concatenation works as expected:

st.altair_chart(upper & lower)
st.altair_chart(upper | lower)

However when horizontally concatenating any plot to this, the data from one or multiple plots disappear (I’ve reused one of the components here for simplicity but this occurs when other plots are used as well):

st.altair_chart(upper & lower | lower)

st.altair_chart(lower | lower & upper)

These plots render normally in other settings (e.g. Jupyter, DataPane, etc.).

Vertical concatenation of multiple plots seems to work without problems:

st.altair_chart(lower & lower & upper)

I am using Streamlit 0.79.0, Altair 4.1.0, and Python 3.8.8

(The issue persists when using alt.vconcat() or alt.hconcat(). I used the & and | operators for readability)

Thanks in advance for any assistance.