diff --git a/dash/development/_py_components_generation.py b/dash/development/_py_components_generation.py
index 3fcd96c8..61bfd9b2 100644
--- a/dash/development/_py_components_generation.py
+++ b/dash/development/_py_components_generation.py
@@ -436,6 +436,9 @@ def create_prop_docstring(prop_name, type_object, required, description,
     else:
         default = default['value']
 
+    if default in ['true', 'false']:
+        default = default.title()
+
     is_required = 'optional'
     if required:
         is_required = 'required'

[BUG] Auto-generated docstrings contain JS boolean values instead of Python boolean values
Prompted by https://github.com/plotly/dash-bio/pull/379#discussion_r297840872

While `true` and `false` are not capitalized in JavaScript, they are capitalized in Python. The Python components' docstrings should reflect this, since other JS types are "translated" into Python types (e.g., `PropTypes.shape` -> `dict`). 
diff --git a/tests/unit/development/test_base_component.py b/tests/unit/development/test_base_component.py
index c39fe9a7..c34c655d 100644
--- a/tests/unit/development/test_base_component.py
+++ b/tests/unit/development/test_base_component.py
@@ -1041,7 +1041,7 @@ def assert_flow_docstring(assertEqual, docstring):
             "Keyword arguments:",
             "- requiredString (string; required): A required string",
             "- optionalString (string; default ''): A string that isn't required.",
-            "- optionalBoolean (boolean; default false): A boolean test",
+            "- optionalBoolean (boolean; default False): A boolean test",
 
             "- optionalNode (a list of or a singular dash component, string or number; optional): "
             "A node test",

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest numpy>=1.16.0 pandas>=1.0.0
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==25.3.0
beautifulsoup4==4.13.3
blinker==1.9.0
Brotli==1.1.0
certifi==2025.1.31
charset-normalizer==3.4.1
click==8.1.8
-e git+https://github.com/plotly/dash.git@ba27febf71caf112294c53e568d4ff407c5a10ee#egg=dash
dash_core_components==1.0.0
dash_html_components==1.0.0
dash_renderer==1.0.0
dash_table==4.0.0
exceptiongroup==1.2.2
Flask==3.1.0
Flask-Compress==1.17
h11==0.14.0
idna==3.10
importlib_metadata==8.6.1
iniconfig==2.1.0
itsdangerous==2.2.0
Jinja2==3.1.6
lxml==5.3.1
MarkupSafe==3.0.2
narwhals==1.32.0
numpy==2.0.2
outcome==1.3.0.post0
packaging==24.2
pandas==2.2.3
percy==2.0.2
plotly==6.0.1
pluggy==1.5.0
PySocks==1.7.1
pytest==8.3.5
pytest-mock==3.14.0
pytest-sugar==1.0.0
python-dateutil==2.9.0.post0
pytz==2025.2
requests==2.32.3
selenium==4.30.0
six==1.17.0
sniffio==1.3.1
sortedcontainers==2.4.0
soupsieve==2.6
termcolor==2.5.0
tomli==2.2.1
trio==0.29.0
trio-websocket==0.12.2
typing_extensions==4.13.0
tzdata==2025.2
urllib3==2.3.0
waitress==3.0.2
websocket-client==1.8.0
Werkzeug==3.1.3
wsproto==1.2.0
zipp==3.21.0
zstandard==0.23.0

name: dash
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==25.3.0
      - beautifulsoup4==4.13.3
      - blinker==1.9.0
      - brotli==1.1.0
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - click==8.1.8
      - dash-core-components==1.0.0
      - dash-html-components==1.0.0
      - dash-renderer==1.0.0
      - dash-table==4.0.0
      - exceptiongroup==1.2.2
      - flask==3.1.0
      - flask-compress==1.17
      - h11==0.14.0
      - idna==3.10
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - itsdangerous==2.2.0
      - jinja2==3.1.6
      - lxml==5.3.1
      - markupsafe==3.0.2
      - narwhals==1.32.0
      - numpy==2.0.2
      - outcome==1.3.0.post0
      - packaging==24.2
      - pandas==2.2.3
      - percy==2.0.2
      - plotly==6.0.1
      - pluggy==1.5.0
      - pysocks==1.7.1
      - pytest==8.3.5
      - pytest-mock==3.14.0
      - pytest-sugar==1.0.0
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - requests==2.32.3
      - selenium==4.30.0
      - six==1.17.0
      - sniffio==1.3.1
      - sortedcontainers==2.4.0
      - soupsieve==2.6
      - termcolor==2.5.0
      - tomli==2.2.1
      - trio==0.29.0
      - trio-websocket==0.12.2
      - typing-extensions==4.13.0
      - tzdata==2025.2
      - urllib3==2.3.0
      - waitress==3.0.2
      - websocket-client==1.8.0
      - werkzeug==3.1.3
      - wsproto==1.2.0
      - zipp==3.21.0
      - zstandard==0.23.0
prefix: /opt/conda/envs/dash

tests/unit/development/test_base_component.py::TestFlowMetaDataConversions::test_docstring
tests/unit/development/test_base_component.py::TestComponent::test_del_item_from_class tests/unit/development/test_base_component.py::TestComponent::test_del_item_from_list tests/unit/development/test_base_component.py::TestComponent::test_del_item_with_nested_children_with_mixed_strings_and_without_lists tests/unit/development/test_base_component.py::TestComponent::test_get_item_raises_key_if_id_doesnt_exist tests/unit/development/test_base_component.py::TestComponent::test_get_item_with_children tests/unit/development/test_base_component.py::TestComponent::test_get_item_with_children_as_component_instead_of_list tests/unit/development/test_base_component.py::TestComponent::test_get_item_with_nested_children_one_branch tests/unit/development/test_base_component.py::TestComponent::test_get_item_with_nested_children_two_branches tests/unit/development/test_base_component.py::TestComponent::test_get_item_with_nested_children_with_mixed_strings_and_without_lists tests/unit/development/test_base_component.py::TestComponent::test_init tests/unit/development/test_base_component.py::TestComponent::test_iter tests/unit/development/test_base_component.py::TestComponent::test_len tests/unit/development/test_base_component.py::TestComponent::test_len_with_nested_children_with_mixed_strings_and_without_lists tests/unit/development/test_base_component.py::TestComponent::test_set_item tests/unit/development/test_base_component.py::TestComponent::test_set_item_raises_key_error tests/unit/development/test_base_component.py::TestComponent::test_set_item_with_children_as_list tests/unit/development/test_base_component.py::TestComponent::test_set_item_with_nested_children tests/unit/development/test_base_component.py::TestComponent::test_set_item_with_nested_children_with_mixed_strings_and_without_lists tests/unit/development/test_base_component.py::TestComponent::test_to_plotly_json_with_children tests/unit/development/test_base_component.py::TestComponent::test_to_plotly_json_with_nested_children tests/unit/development/test_base_component.py::TestComponent::test_to_plotly_json_with_nested_children_with_mixed_strings_and_without_lists tests/unit/development/test_base_component.py::TestComponent::test_to_plotly_json_with_null_arguments tests/unit/development/test_base_component.py::TestComponent::test_to_plotly_json_with_wildcards tests/unit/development/test_base_component.py::TestComponent::test_to_plotly_json_without_children tests/unit/development/test_base_component.py::TestComponent::test_traverse_with_nested_children_with_mixed_strings_and_without_lists tests/unit/development/test_base_component.py::TestComponent::test_traverse_with_tuples tests/unit/development/test_base_component.py::TestGenerateClassFile::test_class_file tests/unit/development/test_base_component.py::TestGenerateClassFile::test_class_string tests/unit/development/test_base_component.py::TestGenerateClass::test_arguments_become_attributes tests/unit/development/test_base_component.py::TestGenerateClass::test_attrs_match_forbidden_props tests/unit/development/test_base_component.py::TestGenerateClass::test_call_signature tests/unit/development/test_base_component.py::TestGenerateClass::test_docstring tests/unit/development/test_base_component.py::TestGenerateClass::test_no_events tests/unit/development/test_base_component.py::TestGenerateClass::test_repr_multiple_arguments tests/unit/development/test_base_component.py::TestGenerateClass::test_repr_nested_arguments tests/unit/development/test_base_component.py::TestGenerateClass::test_repr_single_default_argument tests/unit/development/test_base_component.py::TestGenerateClass::test_repr_single_non_default_argument tests/unit/development/test_base_component.py::TestGenerateClass::test_repr_with_wildcards tests/unit/development/test_base_component.py::TestGenerateClass::test_required_props tests/unit/development/test_base_component.py::TestGenerateClass::test_to_plotly_json tests/unit/development/test_base_component.py::TestMetaDataConversions::test_docgen_to_python_args tests/unit/development/test_base_component.py::TestMetaDataConversions::test_docstring tests/unit/development/test_base_component.py::TestFlowMetaDataConversions::test_docgen_to_python_args
dash/development/_py_components_generation.py
dash/development/_py_components_generation.py