ARTICLE AD BOX
I’m using Streamlit + streamlit-aggrid (AG Grid Community) and I’m facing a strange client-specific issue:
✅ Works locally on my machine
✅ Works after deployment for my colleagues
❌ After deployment, only on my machine/browser, the grid renders but checkbox clicks don’t register
What I see (symptoms)
On my machine (deployed app only):
Clicking the row selection checkbox does nothing (no selection changes)
Clicking the editable boolean checkbox (locked) does nothing (no value changes)
The grid renders and scrolls normally — it’s only checkbox clicking that fails
Because selection never updates, my Assignment panel never opens
Expected behavior
If the user selects any row using the checkbox in the Select column, the app should open an Assignment panel (hidden initially).
The Assignment panel is shown only when selected_ids is non-empty.
example
This simplified example reproduces the behavior: selecting rows should update selected_rows and show the Assignment section.
import streamlit as st import pandas as pd from st_aggrid import AgGrid, GridOptionsBuilder, GridUpdateMode, JsCode, DataReturnMode st.set_page_config(layout="wide") st.title("AG Grid checkbox not clickable after deployment (client-specific)") # ---- sample data ---- df = pd.DataFrame({ "unique_id": [1, 2, 3], "name": ["A", "B", "C"], "locked": [False, True, False], }) # Add selection helper column (must be non-boolean to avoid double-checkbox effect) df_view = df.copy() df_view.insert(0, "Select", "") # Selection checkbox column gb = GridOptionsBuilder.from_dataframe(df_view) gb.configure_default_column( editable=False, resizable=True, sortable=True, filter=False, suppressMenu=True, ) # Selection config gb.configure_selection( selection_mode="multiple", use_checkbox=False, suppressRowClickSelection=True, ) # Row selection checkbox column gb.configure_column( "Select", checkboxSelection=True, headerCheckboxSelection=True, headerCheckboxSelectionFilteredOnly=True, pinned="left", width=90, sortable=False, filter=False, ) # Editable boolean checkbox column gb.configure_column( "locked", header_name="Locked", editable=True, cellRenderer="agCheckboxCellRenderer", cellEditor="agCheckboxCellEditor", type=["booleanColumn"], width=90, ) grid_options = gb.build() # Stable row IDs + immutability (used in my real app) grid_options["immutableData"] = True grid_options["getRowId"] = JsCode("function(p){ return String(p.data.unique_id); }") resp = AgGrid( df_view, gridOptions=grid_options, update_mode=GridUpdateMode.VALUE_CHANGED | GridUpdateMode.SELECTION_CHANGED, data_return_mode=DataReturnMode.AS_INPUT, allow_unsafe_jscode=True, theme="streamlit", height=300, key="grid", ) # ---- selection -> open assignment panel ---- selected = resp.get("selected_rows", []) st.write("Selected rows:", selected) selected_ids = [] if isinstance(selected, list): selected_ids = [r.get("unique_id") for r in selected if r.get("unique_id") is not None] st.subheader("Assignment panel") if selected_ids: st.success(f"Assignment panel is OPEN (selected ids: {selected_ids})") st.write("...assignment UI here...") else: st.info("Assignment panel is hidden until at least one row is selected.")My real app call (similar)
grid_resp = AgGrid( t, gridOptions=grid_options, update_mode=GridUpdateMode.VALUE_CHANGED | GridUpdateMode.SELECTION_CHANGED, data_return_mode=DataReturnMode.AS_INPUT, allow_unsafe_jscode=True, fit_columns_on_grid_load=True, theme="streamlit", height=520, key=f"supplier_grid_{st.session_state.get('bulk_widget_reset_counter', 0)}", )Environment
Python: 3.12
streamlit: 1.41.1
streamlit-aggrid: 1.1.0
Deployment: Azure App Service (Linux) (also tested similarly on Streamlit Cloud)
What I already tried
Hard refresh + clear cache
Different browser + incognito
Disabled extensions / adblock
Changed the grid key= to force re-mount
Disabled immutableData
Tried different GridUpdateMode combinations
Removed custom CSS (including hiding AG Grid menu)
Verified data types (selection column is string, locked is boolean)
Key detail
This happens only for me in the deployed app.
The same deployment works for colleagues.
What could cause AG Grid checkbox click events to be blocked only for a specific client after deployment?
Any known issues with:
Streamlit iframe/event handling,
browser security settings,
CSS overlay / z-index / pointer-events,
enterprise proxies / injected scripts,
or streamlit-aggrid + AG Grid checkbox cell renderer/editor behavior?
If there are known debugging steps (e.g., checking DOM overlays, pointer-events, event listeners, CSP issues), I’d appreciate guidance.
