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'

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",

[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`). 
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