Interestingly the text is forced to the next line but even single letters take the block style.

import dash
import dash_bootstrap_components as dbc
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input, Output
app = dash.Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
test = html.Div([
dcc.Checklist(
options=[
{'label': 'New York City', 'value': 'NYC'},
{'label': 'Montréal', 'value': 'MTL'},
{'label': 'San Francisco', 'value': 'SF'},
{'label': 'lqejhwlfjqwefhlqiwenfliqefnqlwefnqlienflqeqwe', 'value': '1'},
{'label': 'a', 'value': '2'},
{'label': 'ajsd;fawefuhwoweuhfoasdfasdfa', 'value': '3'},
],
value=['MTL', 'SF'],
style={"display":"block",'border':'2px blue solid'}
)],
style={'width':'10%','border':'2px green solid'}
)
app.layout = html.Div([
dbc.Row([
dbc.Col([test])])
])
app.server.run(debug=True)
But if I remove the borders I get:

After playing around with using borders and changing the ‘display’ I’ve seen that it doesn’t matter: only managing the width will force checklist items to be block, and then you can only use this strategy if all options are approximately the same character length. If any are too short they will be inline, and if any are too long they will be block style with their own check box.
It smells fishy to me why such a basic feature wouldn’t be working at all.