{"record":{"id":"8e133931f6f8ac00","repo":"reflex-dev/reflex","slug":"computedvar-dependencies-must-be-var-instances-or","errorCode":null,"errorMessage":"ComputedVar dependencies must be Var instances or var names (non-empty strings).","messagePattern":"ComputedVar dependencies must be Var instances or var names \\(non-empty strings\\)\\.","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"packages/reflex-base/src/reflex_base/vars/base.py","lineNumber":2423,"sourceCode":"        \"\"\"\n        if deps is None:\n            deps = self._static_deps\n        if isinstance(dep, Var):\n            state_name = (\n                all_var_data.state\n                if (all_var_data := dep._get_all_var_data()) and all_var_data.state\n                else None\n            )\n            if all_var_data is not None:\n                var_name = all_var_data.field_name\n            else:\n                var_name = dep._js_expr\n            deps.setdefault(state_name, set()).add(var_name)\n        elif isinstance(dep, str) and dep != \"\":\n            deps.setdefault(None, set()).add(dep)\n        else:\n            msg = \"ComputedVar dependencies must be Var instances or var names (non-empty strings).\"\n            raise TypeError(msg)\n        return deps\n\n    @override\n    def _replace(\n        self,\n        merge_var_data: VarData | None = None,\n        **kwargs: Any,\n    ) -> Self:\n        \"\"\"Replace the attributes of the ComputedVar.\n\n        Args:\n            merge_var_data: VarData to merge into the existing VarData.\n            **kwargs: Var fields to update.\n\n        Returns:\n            The new ComputedVar instance.\n\n        Raises:","sourceCodeStart":2405,"sourceCodeEnd":2441,"githubUrl":"https://github.com/reflex-dev/reflex/blob/45b8ed5ab735f8a56bbb09a42384f030eb0208e7/packages/reflex-base/src/reflex_base/vars/base.py#L2405-L2441","documentation":"When you declare explicit dependencies for a ComputedVar via deps=[...], each entry must be either a Var instance or a non-empty string naming another var. Anything else (None, empty string, int, arbitrary objects) raises this TypeError during dependency setup.","triggerScenarios":"Passing deps=[None], deps=[''], deps=[0], or a list containing a lambda/function or plain object to rx.var(deps=...) / ComputedVar(deps=...); building deps programmatically and including an uninitialized/None entry.","commonSituations":"Conditionally collecting dependency names into a list and leaving None placeholders; passing a method/function instead of a Var or its name; copy-pasting a deps list from a State where the referenced Var was renamed or deleted.","solutions":["Filter/validate deps before passing: keep only Var instances and non-empty strings","Reference dependencies as state var names, e.g. deps=[State.other_value] or deps=['other_value']","Check for None/empty entries introduced by conditional logic in dynamically-built dep lists"],"exampleFix":"# before\n@rx.var(deps=[self.first_name if flag else None])\ndef greeting(self) -> str: ...\n\n# after\n@rx.var(deps=[State.first_name])\ndef greeting(self) -> str: ...\n\n# or for dynamic lists:\ndeps = [d for d in maybe_deps if isinstance(d, (str, rx.Var)) and d]","handlingStrategy":"validation","validationCode":"from reflex.vars import Var\n\ndef valid_deps(deps) -> list:\n    return [d for d in deps if isinstance(d, Var) or (isinstance(d, str) and d)]\n\n# usage\nrx.var(deps=valid_deps(candidate_deps))(fn)","typeGuard":"from reflex.vars import Var\n\ndef is_valid_dep(dep) -> bool:\n    return isinstance(dep, Var) or (isinstance(dep, str) and dep != '')","tryCatchPattern":"try:\n    cv = rx.var(deps=deps)(fn)\nexcept TypeError as e:\n    if 'dependencies must be Var instances' in str(e):\n        cv = rx.var(deps=[d for d in deps if isinstance(d, (Var, str)) and d])(fn)\n    else:\n        raise","preventionTips":["Build dep lists only from State attribute Vars or non-empty name strings","Filter conditional dep lists to drop None/empty entries before passing","Never pass functions/lambdas or literals in deps"],"tags":["reflex","computed-var","dependencies","typeerror","state"],"backgroundTag":"invalid-dependency-declaration","analyzedSha":"45b8ed5ab735f8a56bbb09a42384f030eb0208e7","analyzedAt":"2026-08-28T19:25:27.644Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}