{"record":{"id":"50d539dab393b7a8","repo":"reflex-dev/reflex","slug":"undefined-library-for-nossrcomponent","errorCode":null,"errorMessage":"Undefined library for NoSSRComponent","messagePattern":"Undefined library for NoSSRComponent","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"packages/reflex-base/src/reflex_base/components/component.py","lineNumber":2333,"sourceCode":"        # Do NOT import the main library/tag statically.\n        import_name = self._get_import_name()\n        if import_name is not None:\n            with contextlib.suppress(ValueError):\n                imports_[import_name].remove(self.import_var)\n            imports_[import_name].append(ImportVar(tag=None, render=False))\n\n        return imports.merge_imports(\n            dynamic_import,\n            imports_,\n            self._get_dependencies_imports(),\n        )\n\n    def _get_dynamic_imports(self) -> str:\n        # extract the correct import name from library name\n        base_import_name = self._get_import_name()\n        if base_import_name is None:\n            msg = \"Undefined library for NoSSRComponent\"\n            raise ValueError(msg)\n        import_name = format.format_library_name(base_import_name)\n\n        library_import = f\"import('{import_name}')\"\n        mod_import = (\n            # https://nextjs.org/docs/pages/building-your-application/optimizing/lazy-loading#with-named-exports\n            f\".then((mod) => mod.{self.tag})\"\n            if not self.is_default\n            else \".then((mod) => mod.default.default ?? mod.default)\"\n        )\n        name = self.alias or self.tag\n        return (\n            f\"const {name} = ClientSide(() => \"\n            + library_import\n            + mod_import\n            + f\", {json.dumps(name)})\"\n        )\n\n","sourceCodeStart":2315,"sourceCodeEnd":2351,"githubUrl":"https://github.com/reflex-dev/reflex/blob/45b8ed5ab735f8a56bbb09a42384f030eb0208e7/packages/reflex-base/src/reflex_base/components/component.py#L2315-L2351","documentation":"BaseState._deserialize accepts either raw bytes (`data`) or a file object (`fp`), exclusively. Passing both or neither raises ValueError('Only one of `data` or `fp` must be provided').","triggerScenarios":"Calling `State.deserialize(data=buf, fp=fh)` or `State.deserialize()` with no arguments.","commonSituations":"Custom persistence layers that pass a file and already-read bytes; refactors of deserialization helpers where a parameter becomes None.","solutions":["Pass exactly one source: `State.deserialize(data=pickled_bytes)` or `State.deserialize(fp=file_obj)`","Default unused parameter to None explicitly"],"exampleFix":"// before\nstate = StateRoot.deserialize(data=buf, fp=fh)\n// after\nstate = StateRoot.deserialize(data=buf)","handlingStrategy":"validation","validationCode":"assert (data is None) != (fp is None), \"pass exactly one of data or fp\"","typeGuard":null,"tryCatchPattern":"try:\n    st = StateRoot.deserialize(data=data, fp=fp)\nexcept ValueError:\n    st = StateRoot.deserialize(data=data)","preventionTips":["Pass exactly one source; default the other to None"],"tags":["reflex","state","deserialization","arguments"],"backgroundTag":"mutually-exclusive-arguments","analyzedSha":"45b8ed5ab735f8a56bbb09a42384f030eb0208e7","analyzedAt":"2026-08-28T19:25:27.644Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}