{"record":{"id":"ae8976654a65294a","repo":"reflex-dev/reflex","slug":"cannot-specify-both-default-and-default-factory-ae8976","errorCode":null,"errorMessage":"cannot specify both default and default_factory","messagePattern":"cannot specify both default and default_factory","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"packages/reflex-base/src/reflex_base/components/props.py","lineNumber":161,"sourceCode":"def props_field(\n    default: PROPS_FIELD_TYPE | _MISSING_TYPE = MISSING,\n    default_factory: Callable[[], PROPS_FIELD_TYPE] | None = None,\n) -> PROPS_FIELD_TYPE:\n    \"\"\"Create a field for a props class.\n\n    Args:\n        default: The default value for the field.\n        default_factory: The default factory for the field.\n\n    Returns:\n        The field for the props class.\n\n    Raises:\n        ValueError: If both default and default_factory are specified.\n    \"\"\"\n    if default is not MISSING and default_factory is not None:\n        msg = \"cannot specify both default and default_factory\"\n        raise ValueError(msg)\n    return PropsField(  # pyright: ignore [reportReturnType]\n        default=default,\n        default_factory=default_factory,\n        annotated_type=MISSING,\n    )\n\n\n@dataclass_transform(field_specifiers=(props_field,))\nclass PropsBaseMeta(FieldBasedMeta):\n    \"\"\"Meta class for PropsBase.\"\"\"\n\n    @classmethod\n    def _process_annotated_fields(\n        cls,\n        namespace: dict[str, Any],\n        annotations: dict[str, Any],\n        inherited_fields: dict[str, PropsField],\n    ) -> dict[str, PropsField]:","sourceCodeStart":143,"sourceCodeEnd":179,"githubUrl":"https://github.com/reflex-dev/reflex/blob/45b8ed5ab735f8a56bbb09a42384f030eb0208e7/packages/reflex-base/src/reflex_base/components/props.py#L143-L179","documentation":"`props_field()` cannot receive both `default=` and `default_factory=`; they are mutually exclusive because a field can only have one source of its initial value.","triggerScenarios":"`props_field(default=0, default_factory=list)` in a Props class definition.","commonSituations":"Copy-pasting a dataclass field and adding a factory while the default stayed, or editing a field from a scalar default to a mutable one.","solutions":["Keep `default_factory` for mutable defaults and remove `default`","For immutable defaults (int, str, tuple), keep `default` and remove `default_factory`"],"exampleFix":"# before\nitems: list[str] = props_field(default=[], default_factory=list)\n\n# after\nitems: list[str] = props_field(default_factory=list)","handlingStrategy":"validation","validationCode":"def safe_field(default=None, default_factory=None):\n    assert not (default is not None and default_factory is not None), \\\n        \"pick exactly one of default / default_factory\"\n    return props_field(default=default, default_factory=default_factory)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never use mutable defaults; prefer default_factory alone for lists/dicts/sets","Code-review Props classes for fields declaring both"],"tags":["reflex","props","dataclass","default-value"],"backgroundTag":"conflicting-defaults","analyzedSha":"45b8ed5ab735f8a56bbb09a42384f030eb0208e7","analyzedAt":"2026-08-28T19:25:27.644Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}