Question: I have a complex Dash app where different layouts are displayed depending on some inputs. These output layouts (created in callbacks) contain some inputs. Because those inputs are not defined yet in the layout, I have the error "A nonexistent object was used in an Input of a Dash callback." Is there a way nowadays to get rid of this error other than playing with the CSS style "visibility" to make them exist in the HTML code, but invisible to the user? I tried to add suppress_callback_exceptions=True when creating the app but it is not working. I am using Dash v2.9.3. from dash import dcc, Dash, html, Input, Output, callback app = Dash(__name__, suppress_callback_exceptions=True) app.layout = html.Div( children=[ dcc.Store(id="store_filters", storage_type="memory"), dcc.RadioItems( id="choice_filters", options=["filters1", "filters2", "filters3"], value="filters1", inline=True, ), html.Div(id="filters"), ] ) @callback(Output("filters", "children"), Input("choice_filters", "value")) def update_filters(choice_filters): if choice_filters == "filters1": layout = [dcc.Input(id="input1", type="text")] elif choice_filters == "filters2": layout = [dcc.Input(id="input2", type="text")] elif choice_filters == "filters3": layout = [dcc.Input(id="input3", type="text")] else: layout = [] return layout @callback( Output("store_filters", "data"), [ Input("input1", "value"), Input("input2", "value"), Input("input3", "value"), ], ) def filters_result(input1, input2, input3): filters = {"filter1": input1, "filter2": input2, "filter3": input3} print("Last filters entered : ") print(filters) return filters if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=8222) 

Answer: Building off of @Dmitry's answer (👍+1), I modified and extended a few aspects of the code:  The functionality of the pattern-matching is printed live to the app for the sake of easier demonstration Using dcc.Store to persist the dynamically generated dcc.Input components' user-entered text values Contextualizing the code into a fully working demo app  E.g., the following: from dash import dcc, Dash, html, Input, Output, callback, ALL, State app = Dash(__name__, suppress_callback_exceptions=True) app.layout = html.Div( children=[ dcc.Store(id="store_filters", storage_type="session", data={}), dcc.RadioItems( id="choice_filters", options=[ {"label": "Filter 1", "value": "Filter 1"}, {"label": "Filter 2", "value": "Filter 2"}, {"label": "Filter 3", "value": "Filter 3"}, ], value="Filter 1", inline=True, ), html.Div(id="filters"), html.Div(id="filters_output"), ], style={"margin": "10%", "textAlign": "center"}, ) @callback( Output("filters", "children"), Input("choice_filters", "value"), State("store_filters", "data"), ) def update_filters(choice_filters, stored_data): stored_value = stored_data.get(choice_filters, "") filter_input = dcc.Input( id={"type": "filter", "name": choice_filters}, type="text", placeholder=f"Enter value for {choice_filters}", value=stored_value, ) return [filter_input] @callback( Output("filters_output", "children"), Output("store_filters", "data"), Input({"type": "filter", "name": ALL}, "value"), State({"type": "filter", "name": ALL}, "id"), State("store_filters", "data"), prevent_initial_call=True, ) def filters_result(filter_values, filter_ids, stored_data): filters = { id_value["name"]: value for id_value, value in zip(filter_ids, filter_values) } for key, value in filters.items(): stored_data[key] = value filters_output = [ html.Div([html.H2(f"{key}:"), html.P(f"{value}")]) for key, value in filters.items() ] return filters_output, stored_data if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=8222)  results in: