{"record":{"id":"2b924ba79459680a","repo":"reflex-dev/reflex","slug":"computedvar-dependencies-must-be-var-instances-wit","errorCode":null,"errorMessage":"ComputedVar dependencies must be Var instances with a state and field name, got {dep!r}.","messagePattern":"ComputedVar dependencies must be Var instances with a state and field name, got (.+?)\\.","errorType":"exception","errorClass":"VarDependencyError","httpStatus":null,"severity":"error","filePath":"packages/reflex-base/src/reflex_base/vars/base.py","lineNumber":2716,"sourceCode":"                    self._static_deps.setdefault(state_name, set()).add(var_name)\n                    target_state_class = objclass.get_root_state().get_class_substate(\n                        state_name\n                    )\n                    target_state_class._var_dependencies.setdefault(\n                        var_name, set()\n                    ).add((\n                        objclass.get_full_name(),\n                        self._name,\n                    ))\n                    target_state_class._potentially_dirty_states.add(\n                        objclass.get_full_name()\n                    )\n                    return\n        msg = (\n            \"ComputedVar dependencies must be Var instances with a state and \"\n            f\"field name, got {dep!r}.\"\n        )\n        raise VarDependencyError(msg)\n\n    def _determine_var_type(self) -> type:\n        \"\"\"Get the type of the var.\n\n        Returns:\n            The type of the var.\n        \"\"\"\n        hints = get_type_hints(self._fget)\n        if \"return\" in hints:\n            return hints[\"return\"]\n        return Any  # pyright: ignore [reportReturnType]\n\n    @property\n    def __class__(self) -> type:\n        \"\"\"The class of the var.\n\n        Returns:\n            The class of the var.","sourceCodeStart":2698,"sourceCodeEnd":2734,"githubUrl":"https://github.com/reflex-dev/reflex/blob/45b8ed5ab735f8a56bbb09a42384f030eb0208e7/packages/reflex-base/src/reflex_base/vars/base.py#L2698-L2734","documentation":"add_dependency (used to wire explicit deps for a ComputedVar) requires the dependency Var to carry both a state name and a field name in its VarData. If the Var has no var data at all, or its state/field_name is missing (e.g. a raw LiteralVar or an unlinked expression), VarDependencyError is raised. VarDependencyError subclasses RuntimeError, so it escapes 'except TypeError' handlers.","triggerScenarios":"Passing a literal or plain expression as a dependency: deps=[rx.Var('x')], a number/string literal Var, or a Var whose _var_data was stripped during compilation; calling ComputedVar.add_dependency(objclass, dep) where dep is not attached to any State field.","commonSituations":"Declaring deps with hand-constructed Vars instead of State attributes (deps=[State.counter] works; deps=[rx.Var('counter')] does not); dependency Vars created via string concatenation or operations that drop var data; compiler/state-machinery edge cases after refactoring State hierarchies.","solutions":["Reference real State attributes in deps so the Var carries state+field metadata: deps=[State.other_value] or deps=[self.other_value]","For name-based deps, pass plain strings: deps=['other_value'] (handled by the string branch, not add_dependency)","If building Vars programmatically, ensure _var_data includes state and field_name (VarData(state=..., field_name=...)) before using as a dep"],"exampleFix":"# before\n@rx.var(deps=[rx.Var('counter')])  # no state/field metadata\ndef doubled(self) -> int:\n    return self.counter * 2\n\n# after\nclass State(rx.State):\n    counter: int = 0\n\n    @rx.var(deps=[State.counter])\n    def doubled(self) -> int:\n        return self.counter * 2\n    # or deps=['counter']","handlingStrategy":"type-guard","validationCode":"from reflex.vars import Var\n\ndef deps_with_var_data(deps):\n    out = []\n    for d in deps:\n        if isinstance(d, str) and d:\n            out.append(d)\n        elif isinstance(d, Var) and (data := d._get_all_var_data()) and data.state and data.field_name:\n            out.append(d)\n    return out","typeGuard":"from reflex.vars import Var\n\ndef is_state_linked_var(dep) -> bool:\n    if not isinstance(dep, Var):\n        return False\n    data = dep._get_all_var_data()\n    return bool(data and data.state and data.field_name)","tryCatchPattern":"from reflex.vars import VarDependencyError\n\ntry:\n    cv.add_dependency(state_cls, dep)\nexcept VarDependencyError:\n    # fall back to name-based dependency wiring\n    state_cls._var_dependencies.setdefault(dep_name := str(dep), set()).add((state_cls.get_full_name(), cv._name))","preventionTips":["Always declare deps as State attributes (deps=[State.x]) or plain field-name strings","Never construct raw rx.Var(...) objects for use as dependencies","Ensure dependency Vars are not stripped of var data by expression building before use"],"tags":["reflex","computed-var","dependencies","state","var-data"],"backgroundTag":"invalid-dependency-declaration","analyzedSha":"45b8ed5ab735f8a56bbb09a42384f030eb0208e7","analyzedAt":"2026-08-28T19:25:27.644Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}