{
  "issues": [
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/6019",
      "id": 3693074592,
      "node_id": "I_kwDOITROHc7cH9ig",
      "number": 6019,
      "title": "Need a better error path when backend sends unprocessable delta",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-04T06:06:24Z",
      "updated_at": "2025-12-04T06:07:44Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\nCurrently if the backend sends a delta that the frontend cannot understand, it (hopefully) throws `dispatch[substate] is not a function` in the browser, which is not useful for end users and if the user is not checking the browser console, it makes the app appear broken after the hydrate event. Ideally the backend should be made aware of this error as python devs often check their terminal for error logs before the browser console\n\nInstead, reflex should internally catch this error in the `socket.on(\"event\")` handler and raise an error with an actionable message that includes the failed state name and potential remediation steps (rebuild frontend, check api_url, etc). The error _should_ be fatal, because we never want to run an app with a mismatched frontend and backend as that indicates some deployment error that we want to catch during testing.\n\n- What is the purpose of the feature?\nMore actionable error when frontend/backend have mismatched states.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/6019/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/6006",
      "id": 3670033366,
      "node_id": "I_kwDOITROHc7awEPW",
      "number": 6006,
      "title": "lock issues related to redis",
      "user": {
        "login": "jamesalphanome",
        "id": 195094882,
        "node_id": "U_kgDOC6DpYg",
        "avatar_url": "https://avatars.githubusercontent.com/u/195094882?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jamesalphanome",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-27T06:25:47Z",
      "updated_at": "2025-12-01T18:58:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**lock issues related to redis**\n\nI am facing lock issues when running my reflex app, connected to redis, the locks are occuring when I am connecting to a public redis (redis://:yourpassword@<public_ip>:6379), but this is not happening when connecting with a redis on localhost (redis://localhost:6379)\n\n**To Reproduce**\n```\nclass A(rx.State, mixin=True):\n    \"\"\"mixin\"\"\"\n\n    @rx.event(background=True)\n    async def on_success(self):\n        raise NotImplementedError(\"Implement this eventhandler - mixin\")\n\n    @rx.event(background=True)\n    async def process(self):\n        await asyncio.sleep(1)\n\n        yield self.__class__.on_success\n\n\nclass B(A, rx.State):\n    \"\"\"The app state.\"\"\"\n\n    file_uploading: bool = False\n\n    @rx.event\n    async def set_state(self):\n        await asyncio.sleep(0.6) # small operation\n\n    @rx.event\n    async def completed_toast(self):\n        return rx.toast.success(\"Done.\")\n\n    @rx.event(background=True)\n    async def on_success(self):\n        yield B.completed_toast\n\n\ndef index() -> rx.Component:\n    return rx.container(\n        rx.color_mode.button(position=\"top-right\"),\n        rx.button(\n            \"Click me\",\n            on_click=B.process,\n        ),\n    )\n\n\napp = rx.App()\napp.add_page(index, on_load=B.set_state)\n\n```\nI have a simple repo: [repo_link](https://github.com/jamesalphanome/test_app)\n\n**Expected behavior**\nNo locks, I am not sure what is happening, am I missing something ?\n\n**Screenshots**\n\n<img width=\"852\" height=\"156\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/27d28931-81ef-4d14-8fc8-579430ee90fa\" />\n\n- Python Version: 3.13\n- Reflex Version: 0.8.21\n- OS: macos\n- Browser (Optional): Chrome\n\n\nI have a production set up (Azure container apps) that is connected to a single Azure managed redis in a vpn, and I am getting the above lock issues there. It is a bit of a problem. I am getting this issue in reflex 0.7.14 and above. 0.7.13 is working fine.\nBut even testing with the repo I have shared above, i am getting lock issues when connecting to a public redis with reflex versions as low as 0.6.8 (haven't tested further).\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/6006/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/6000",
      "id": 3662175655,
      "node_id": "I_kwDOITROHc7aSF2n",
      "number": 6000,
      "title": "Frequent unexpected full page reloads after upgrading Reflex from 0.8.17 → 0.8.20 (likely caused by new reconnect logic)",
      "user": {
        "login": "Kamysek",
        "id": 44401260,
        "node_id": "MDQ6VXNlcjQ0NDAxMjYw",
        "avatar_url": "https://avatars.githubusercontent.com/u/44401260?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kamysek",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-25T09:21:03Z",
      "updated_at": "2025-11-25T09:21:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nAfter upgrading Reflex from 0.8.17 to 0.8.20, our deployed apps randomly and frequently trigger a full page reload / full re-hydrate.\n- This happens only in deployments (prod + other deployed environments).\n- The exact same codebase behaves normally locally (no random reloads).\n- There is no obvious error in the Reflex logs that explains the reloads.\n- It makes our UI (especially forms) very hard to use because the page suddenly reloads while users are interacting with it.\n\nDowngrading Reflex back to 0.8.17 immediately stops the behavior, using the same code and infrastructure.\n\n**To Reproduce**\nUnfortunately we don’t have a minimal public reproduction, but the behavior is consistently reproducible in our deployed environments under these conditions:\n\n- Upgrade Reflex from 0.8.17 → 0.8.20.\n- Deploy the app (behind our existing reverse proxy; in our case Caddy – config unchanged between versions).\n- Open a page with interactive state (e.g. a form where you can create a project).\n- Start filling out the form / interacting with the page and keep it open for some time.\n- Observe that, at seemingly random intervals, the page reloads / does a full re-hydrate by itself.\n\n**Expected behavior**\n- The app should not randomly reload or fully re-hydrate while the user is interacting with it.\n- WebSocket reconnects (if any) should be transparent and should not cause a full page reload that wipes client-side state.\n- Behavior in deployed environments should match the stability we see locally.\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13.2\n- Reflex Version: \n   - Works: 0.8.17\n   - Broken: 0.8.20\n- OS: Locally MacOS, Deployment Linux\n- Browser (Optional): Tested with Chrome and Safari",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/6000/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5999",
      "id": 3661940320,
      "node_id": "I_kwDOITROHc7aRMZg",
      "number": 5999,
      "title": "\"disabled\" attribute  of rx.input break frontend form validation",
      "user": {
        "login": "jianingy",
        "id": 22854,
        "node_id": "MDQ6VXNlcjIyODU0",
        "avatar_url": "https://avatars.githubusercontent.com/u/22854?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jianingy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-25T08:09:55Z",
      "updated_at": "2025-11-25T09:57:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nWhen set disabled attribute of a `rx.input` to a State variable, frontend form validation won't work.\n\n**To Reproduce**\nFirst, define a bool variable in a State.\n```python\nclass DebugState(rx.State):\n    debug_mode: rx.Field[bool] = rx.field(default=False)\n```\n\nThen, set `disabled` to that state variable.\n```python\n# ... \n            rx.form.root(\n                rx.form.field(\n                    rx.form.label(\"Email\"),\n                    rx.form.control(\n                        rx.input(\n                            placeholder=\"Email Address\",\n                            disabled=DebugState.debug_mode, \n                            type=\"email\",\n                        ),\n                        as_child=True,\n                    ),\n                    rx.form.message(\n                        \"Please enter a valid email\",\n                        match=\"typeMismatch\",\n                    ),\n                    name=\"email\",\n                ),\n                rx.form.submit(\n                    rx.button(\"Submit\"),\n                    as_child=True,\n                ),\n                on_submit=lambda form_data: rx.window_alert(form_data.to_string()),\n            )\n#...\n```\n\nAfter set `disabled` to a state variable, frontend validation won't work anymore\n\nIf we try to remove `disabled` attribute or just set `disabled` attribute to constant value like False, frontend validation will work.\n\n**Expected behavior**\nWhen `disabled` attribute of a rx.input been set to a state variable, frontend validation should also work.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.12\n- Reflex Version: 0.8.21\n- OS: MacOS 26.1\n- Browser (Optional): Google Chrome 142\n\n**Additional context**\nN/A\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5999/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5997",
      "id": 3660850732,
      "node_id": "I_kwDOITROHc7aNCYs",
      "number": 5997,
      "title": "If creating a symlink fails, reflex cannot start",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-24T23:07:51Z",
      "updated_at": "2025-11-24T23:07:51Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nDuring compile time, reflex tries to symlink certain files into `assets/` and into `.web/`, but if the client doesn't have permission to symlink or the symlink would be \"cross-device\" and not allowed, there should be a fallback path that just copies the files instead.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5997/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5983",
      "id": 3629287131,
      "node_id": "I_kwDOITROHc7YUobb",
      "number": 5983,
      "title": "Frontend fails to start on first `reflex run` due to Error [ERR_REQUIRE_ESM] (React Router / p-map interop)",
      "user": {
        "login": "amir-codes-here",
        "id": 157317596,
        "node_id": "U_kgDOCWB53A",
        "avatar_url": "https://avatars.githubusercontent.com/u/157317596?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/amir-codes-here",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-15T21:42:03Z",
      "updated_at": "2025-11-24T20:14:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Problem Summary\n\nRunning `reflex run` on a new Reflex project fails immediately during frontend startup.\nThe generated frontend attempts to `require()` an ES-module-only dependency (`p-map`), which causes Node to throw `ERR_REQUIRE_ESM` and Vite exits with code 1.\n\nThis appears to come from `@react-router/dev` in the generated `.web` folder, which still uses CommonJS `require()` for `p-map`, but `p-map` installs as ESM (v5.x) on modern Node versions (e.g., Node 22).\n\n## Environment\n\nOS: Windows 10 (64-bit) (WSL not used)\n\nReflex version: 0.8.19\n\nNode version: 22.8.0\n\nnpm version: 10.8.2\n\nFresh project: yes (error happens on a brand-new Reflex project before any code changes)\n\n## Steps to Reproduce the Error\n\n1. Install reflex\n  ```\n  pip install reflex\n  ```\n\n2. Initialize reflex project (choose blank app template option)\n  ```\n  reflex init\n  ```\n\n3. Attempt to run\n  ```\n  reflex run\n  ```\n\n4. Frontend build fails with `exit code 1`.\n\n## Actual Behavior (Full Error)\n\n```cmd\nStarting frontend failed with exit code 1\n$ react-router dev --host\nfailed to load config from .web/vite.config.js\nError [ERR_REQUIRE_ESM]: require() of ES Module \n.web/node_modules/p-map/index.js from \n.web/node_modules/@react-router/dev/dist/vite.js not supported.\n\nInstead change the require of index.js in \n.web/node_modules/@react-router/dev/dist/vite.js to a dynamic import() \nwhich is available in all CommonJS modules.\n    at Object.<anonymous> (.web/node_modules/@react-router/dev/dist/vite.js:62:28) \n{\n  code: 'ERR_REQUIRE_ESM'\n}\n\nerror: script \"dev\" exited with code 1\n```\n\n## Additional Notes\n\n- This happens because `p-map` starting from v5 is ESM-only, so `require(\"p-map\")` no longer works under modern Node versions (Node 18+).\n\n- The file causing the crash is inside `.web/node_modules/@react-router/dev/dist/vite.js`.\n\n- Manually replacing `require(\"p-map\")` with `await import(\"p-map\")` or pinning `p-map@4` via `overrides` works, but these are temporary workarounds because `.web/` is regenerated. Besides, this shouldn't be happening at the first place. Solving these problems is frustrating for beginners.\n\n- Downgrading to Node 20 probably avoids the issue because some dependency resolutions differ and CJS `p-map` is installed instead. Although requiring users to downgrade to Node 20 is not a sustainable solution, as modern environments (including Node 22+) are becoming the default, and a web framework should remain compatible with current LTS and latest Node releases without forcing developers to regress their tooling.\n\n## Request / Proposal\n\n- Consider pinning a CJS-compatible version of `p-map` in the generated frontend dependencies.\n\n- Alternatively, patch the Reflex template to ensure that `@react-router/dev` is used in a version that no longer uses CJS `require()` for ESM-only packages.\n\n- Or provide a guard/warning for unsupported Node versions (Node 22+).",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5983/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5956",
      "id": 3597270869,
      "node_id": "I_kwDOITROHc7Waf9V",
      "number": 5956,
      "title": "Should be able to `yield` chained events from a computed var",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-06T19:24:58Z",
      "updated_at": "2025-11-06T19:24:58Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\nWhen a computed var is being computed, you cannot reliably modify the state nor chain to any other event (especially background events).\n\nIt would be really nice if you could just yield chained events from a computed var, then return the final value for the var.\n\nIt would also be really nice if the `get_delta` computation in state, would re-run the computed var calculation until some interation limit or until no further dirty vars are generated. That way computed vars could directly modify state state vars and have them reliably persisted and sent to the frontend.\n\n- What is the purpose of the feature?\nMake computed vars more useful/less edge cases.\n\n- Show an example / use cases for the new feature.\n```python\nclass MyState(rx.State):\n    _user_token: str\n    logged_in: bool = False\n\n    @rx.var\n    def user_is_valid(self) -> bool:\n        if not self._user_token:\n            return False\n        if not validate(self._user_token):\n            yield rx.toast(\"Token was found to be invalid\")\n            self.logged_in = False\n            self._user_token = \"\"\n            return False\n        return True\n```\n\nIn this case, the `user_is_valid` setting `self._user_token` to blank would trigger a re-calculation of `user_is_valid` immediately, which would take the early exit path. The delta will include `logged_in = False`. A toast will be displayed to the user from the event which triggered this recalculation of `user_is_valid`.\n\nSince computed vars are always recalculated during delta computation and the lock is held during this process, it's always safe to manipulate the state, the problem was that the final delta was not updated based on changes that occured to the state during computed var resolution.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5956/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": [
        5990
      ]
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5950",
      "id": 3590438887,
      "node_id": "I_kwDOITROHc7WAb_n",
      "number": 5950,
      "title": "Drag and Drop Nodes and Edges Canvas like React Flow. Currently not able to achieve this in Reflex",
      "user": {
        "login": "ramda1234786",
        "id": 147361031,
        "node_id": "U_kgDOCMiNBw",
        "avatar_url": "https://avatars.githubusercontent.com/u/147361031?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ramda1234786",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-05T10:55:10Z",
      "updated_at": "2025-11-06T17:37:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\nCurrently our team wants to make nodes and edges with drag and drop, floatable canvas to move the nodes, adding the node properties, changing the node colors, changing the shape of the nodes etc.\n\nYou can see the complete feature that React provides. here is the link : https://reactflow.dev/\n\n- What is the purpose of the feature?\n\nPurpose is to develop a data flow automaton for any process automation in house\n\n- Read Data From API - API as a Node\n- Response from API will go to Another Node - CSV Node\n- CSV Data goes to Email - Email as a Node\nThe Nodes user should be able to develop if we provide the boiler plate like React flow\n\n**Additional context**\nThis link summarize everything : https://reactflow.dev/\n\nNeed complete boiler plate in Reflex, to create nodes and edges flow canvas.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5950/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5923",
      "id": 3546470072,
      "node_id": "I_kwDOITROHc7TYta4",
      "number": 5923,
      "title": "Duplicate identifier error when using custom React component (0.8.16)",
      "user": {
        "login": "salomaop",
        "id": 50274542,
        "node_id": "MDQ6VXNlcjUwMjc0NTQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/50274542?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/salomaop",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-23T20:35:12Z",
      "updated_at": "2025-10-23T20:35:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nSince version 0.8.8, Reflex fails to build projects that include a custom React component (via rx.NoSSRComponent or rx.Component) — throwing a syntax error about a duplicate identifier during the production build.\n\nThis issue did not occur in version 0.8.7 and only started after upgrading to 0.8.8.\n\n**To Reproduce**\n1.\tCreate a custom JS component and wrap it in a Reflex class:\nclass UnicoSDK(rx.NoSSRComponent):\n    library = \"/public/components/unico_sdk_component.jsx\"\n    tag = \"WidgetUnico\"\n    lib_dependencies: list[str] = [\"idpay-b2b-sdk\"]\n\n    token: rx.Var[str]\n    transactionId: rx.Var[str]\n    env: rx.Var[str]\n    callback: rx.EventHandler[lambda e: [e]]\n\n2.\tInside the JSX file, define the component normally:\nexport default function WidgetUnico({ token, transactionId, env, callback }) {\n    useEffect(() => {\n        (async () => {\n            const mod = await import(\"idpay-b2b-sdk\");\n            const sdk = mod?.IDPaySDK || mod?.default?.IDPaySDK || mod;\n            sdk.init({ type: \"IFRAME\", env });\n            sdk.open({ transactionId, token, onFinish: callback });\n        })();\n    }, [token, transactionId, callback]);\n\n    return <div id=\"unico-container\" style={{ width: 400, height: 400 }} />;\n}\n\n3.\tObserve the error:\nSyntaxError: Identifier 'WidgetUnico' has already been declared.\n  at /.../.web/app/routes/._index.jsx:13:6\n\n- Code/Link to Repo:\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Specifics (please complete the following information):**\n\t•\tReflex version: 0.8.16\n\t•\tPython version: 3.14\n\t•\tOS: macOS 15.7 (M1 Pro)\n\t•\tBuild tool: Bun 1.3.0, Node 24.5.0\n\t•\tDeployment: Docker\n\t•\tDeployment: Docker\n\n**Additional context**\n\t•\tThe issue seems related to how Reflex injects component imports into the generated .web/app/routes/*.jsx files.\n\t•\tThe generated file declares the component twice :\nimport WidgetUnico from \"$/public/js/unico_sdk_component.jsx\"\nconst WidgetUnico = ClientSide(lazy(() => import('$/public/js/unico_sdk_component.jsx')))\n\n**Temporary workaround**\nDowngrading to Reflex 0.8.7 avoids the problem — the component builds and works normally.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5923/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5917",
      "id": 3536408188,
      "node_id": "I_kwDOITROHc7SyU58",
      "number": 5917,
      "title": "Images not found if the app is not depolyed on the root domain, but on a subpath",
      "user": {
        "login": "alq-eium",
        "id": 128128286,
        "node_id": "U_kgDOB6MVHg",
        "avatar_url": "https://avatars.githubusercontent.com/u/128128286?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/alq-eium",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-21T12:50:17Z",
      "updated_at": "2025-11-02T21:17:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have several images on my `/assests` folder (image1.png, image2.png...), therefore I insert images with this command `rx.image(src=\"/image1.png\")`. My app is meant to be deployed on `http://myproject.com/app` instead of `http://myproject.com/`. I have configured `frontend_path=\"/app\"` on my rxconfig.py file. However, when I load the page on my web browser the images are not found because they are searched on `/image1.png` instead `/app/image1.png`. \n\nHow should I proceed in this case? Should I use `rx.image(src=\"/app/image1.png\")` instead of `rx.image(src=\"/image1.png\")` or is there a better option?\n\nBest regards, \nAlejandro ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5917/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5914",
      "id": 3534551439,
      "node_id": "I_kwDOITROHc7SrPmP",
      "number": 5914,
      "title": "Scatter Tooltip Malformatting",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        },
        "1": {
          "id": 7507304446,
          "node_id": "LA_kwDOITROHc8AAAABv3hf_g",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/upstream",
          "name": "upstream",
          "color": "721089",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-21T02:04:45Z",
      "updated_at": "2025-10-21T02:09:45Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The tooltip on a scatterplot doesnt work as inteneded and shows 3 sets of points\n\n```\nimport reflex as rx\nfrom app.states.chart_state import ChartState\nfrom typing import Optional\n\n\ndef custom_tooltip() -> rx.Component:\n    \"\"\"Creates a custom tooltip for the scatter chart.\"\"\"\n    return rx.recharts.graphing_tooltip(\n        content_style={\n            \"backgroundColor\": \"#FFFFFF\",\n            \"padding\": \"12px\",\n            \"borderRadius\": \"0.75rem\",\n            \"border\": \"1px solid #E5E7EB\",\n            \"boxShadow\": \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n            \"fontSize\": \"0.875rem\",\n            \"fontWeight\": \"500\",\n            \"color\": \"#4B5563\",\n        },\n        cursor=False,\n    )\n\n\ndef custom_legend() -> rx.Component:\n    \"\"\"Creates a custom HTML legend for the chart.\"\"\"\n    return rx.el.div(\n        rx.foreach(\n            ChartState.scatter_data,\n            lambda series: rx.el.div(\n                rx.el.div(\n                    class_name=\"w-3 h-3 rounded-full mr-2\",\n                    style={\"background_color\": series[\"fill\"]},\n                ),\n                rx.el.span(\n                    series[\"name\"], class_name=\"text-sm font-medium text-gray-700\"\n                ),\n                class_name=rx.cond(\n                    ChartState.hidden_segments.contains(series[\"name\"]),\n                    \"flex items-center cursor-pointer opacity-50\",\n                    \"flex items-center cursor-pointer\",\n                ),\n                on_click=lambda: ChartState.toggle_segment_visibility(series[\"name\"]),\n            ),\n        ),\n        class_name=\"flex items-center flex-wrap gap-x-6 gap-y-2\",\n    )\n\n\ndef scatter_chart_component() -> rx.Component:\n    \"\"\"Creates the scatter chart component with modern SaaS styling.\"\"\"\n    return rx.el.div(\n        rx.el.div(\n            rx.el.h2(\n                \"Data Distribution\",\n                class_name=\"text-2xl font-semibold text-gray-900 tracking-tight\",\n            ),\n            custom_legend(),\n            class_name=\"flex justify-between items-center mb-6\",\n        ),\n        rx.recharts.scatter_chart(\n            rx.recharts.cartesian_grid(stroke_dasharray=\"3 3\"),\n            custom_tooltip(),\n            rx.recharts.x_axis(type_=\"number\", data_key=\"x\", name=\"X-Value\"),\n            rx.recharts.y_axis(type_=\"number\", data_key=\"y\", name=\"Y-Value\"),\n            rx.foreach(\n                ChartState.active_scatter_data,\n                lambda series: rx.recharts.scatter(\n                    name=series[\"name\"], data=series[\"data\"], fill=series[\"fill\"]\n                ),\n            ),\n            width=\"100%\",\n            height=300,\n            margin={\"left\": 20, \"right\": 20, \"top\": 20, \"bottom\": 20},\n        ),\n        class_name=\"bg-white border border-gray-200 rounded-xl p-6 shadow-[0_1px_2px_rgba(0,0,0,0.04)]\",\n    )\n```\n\n<img width=\"826\" height=\"550\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4b802cd1-6a48-48c5-a39f-afb8ba7795c8\" />\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5914/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5893",
      "id": 3521156807,
      "node_id": "I_kwDOITROHc7R4JbH",
      "number": 5893,
      "title": "Environment variable `REFLEX_ENV_MODE` has no effect",
      "user": {
        "login": "kubotty",
        "id": 166574385,
        "node_id": "U_kgDOCe25MQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/166574385?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kubotty",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-16T09:56:07Z",
      "updated_at": "2025-10-17T01:38:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**  \nI set the environment variable `REFLEX_ENV_MODE=\"prod\"` and ran `reflex run`, but Reflex always starts in \"dev\" mode.\n\nI tried setting `REFLEX_ENV_MODE` both directly in the console and via a `.env` file loaded with `config = rx.Config(..., env_file=\".env\")`. However, Reflex only starts in production mode when passing the argument `--env prod`.\n\nIs this the expected behavior, or am I missing some configuration?\n\n**To Reproduce**  \n1. Set the environment variable `REFLEX_ENV_MODE=\"prod\"`  \n2. Run `reflex run`  \n\n**Expected behavior**  \nWhen `REFLEX_ENV_MODE=\"prod\"`, Reflex should start in production mode and create a production build.\n\n**Specifics (please complete the following information):**  \n- Python Version: 3.13.5  \n- Reflex Version: 0.8.15  \n- OS: Windows  \n- Browser (Optional):  \n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5893/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5871",
      "id": 3500367991,
      "node_id": "I_kwDOITROHc7Qo2B3",
      "number": 5871,
      "title": "suggested method of setting var defaults for ComponentState does not work anymore",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-09T19:24:26Z",
      "updated_at": "2025-10-09T19:24:26Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nThe method for setting default var values in a ComponentState-derived class, as described in https://reflex.dev/docs/state-structure/component-state/#passing-props, suggests accessing the var name from `cls.__fields__` and overriding the `.default` attribute.\n\nUnfortunately for inherited fields, all of the subclasses seem to share the exact same `Field` descriptor, so updating the default in one `get_component` will affect all other copies of the subclass.\n\nWhen pydantic was used for this, each subclass got its own fields and thus modifying the default just worked as expected.\n\n**To Reproduce**\n```python\nimport copy\nimport reflex as rx\n\n\nclass MyComponent(rx.ComponentState):\n    text: str = \"Default\"\n    items: list[str] = [\"Default 1\", \"Default 2\", \"Default 3\"]\n\n    @classmethod\n    def get_component(cls, *children, **props):\n        if \"initial_value\" in props:\n            cls.__fields__[\"text\"].default = props.pop(\"initial_value\")\n        if \"initial_list\" in props:\n            cls.__fields__[\"items\"].default = props.pop(\"initial_list\")\n        return rx.text(*children, cls.text, rx.foreach(cls.items, rx.text.span), **props)\n\n    @classmethod\n    def _get_component_working(cls, *children, **props):\n        if \"initial_value\" in props:\n            text_field = copy.deepcopy(cls.get_fields()[\"text\"])\n            text_field.default = props.pop(\"initial_value\")\n            cls.__fields__[\"text\"] = text_field\n        if \"initial_list\" in props:\n            items_field = copy.deepcopy(cls.get_fields()[\"items\"])\n            items_field.default = props.pop(\"initial_list\")\n            cls.__fields__[\"items\"] = items_field\n        return rx.text(*children, cls.text, rx.foreach(cls.items, rx.text.span), **props)\n\n\ndef index() -> rx.Component:\n    return rx.vstack(\n        MyComponent.create(),\n        MyComponent.create(initial_value=\"Hello, World!\", initial_list=[\"Foo\", \"bar\", \"baz\", \"quuc\", \"grr\"], font_size=\"2em\"),\n        MyComponent.create(initial_value=\"Goodbye, World!\", font_size=\"1em\"),\n    )\n\n\napp = rx.App()\napp.add_page(index)\n```\n\nIn this case, renaming `_get_component_working` to `get_component` shows a potential workaround where in the Field objects are copied, then the copy is modified and assigned back to the class.\n\n**Expected behavior**\nI expected that all inherited Field objects would be copied into subclasses so that the subclass cannot affect its parents and siblings.\n\n**Screenshots**\n\n<img width=\"746\" height=\"389\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/281fcab4-0cd4-483b-a775-d902dc997d0d\" />\n\nThey all have the same values, whatever was set last.\n\nWith `_get_component_working` (expected):\n\n<img width=\"746\" height=\"389\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/11c3e4a4-704d-4982-aa61-252a4830d123\" />\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.14.0\n- Reflex Version: 0.8.15\n- OS: macOS\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5871/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5838",
      "id": 3469620044,
      "node_id": "I_kwDOITROHc7OzjNM",
      "number": 5838,
      "title": "WebSocket connection error",
      "user": {
        "login": "Ernelene",
        "id": 158453922,
        "node_id": "U_kgDOCXHQog",
        "avatar_url": "https://avatars.githubusercontent.com/u/158453922?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Ernelene",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7511042430,
          "node_id": "LA_kwDOITROHc8AAAABv7Fpfg",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cannot%20repro",
          "name": "cannot repro",
          "color": "000000",
          "default": false,
          "description": "Need an example that can be copy/pasted to reproduce the issue immediately"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-30T13:55:55Z",
      "updated_at": "2025-10-06T21:11:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nA clear and concise description of what the bug is.\nmy previous version was on 0.7.14 i upgraded now to version 0.8.12.  I received the depreciation error of app.api, i used it like this \n```\n app.api.include_router(model_router) \napp.api.include_router(other_router)\n```\nfor testing purposes i just removed the lines of code, i pushed to my staging server, and the build worked but i get an error from the ports:\nWebSocket connection to 'wss://xxx/_event/?token=1d59e489-7d5d-4508-89ec-4ab4fd0fb6a1&EIO=4&transport=websocket' failed: \n\nit works locally as a reflex run --env prod\n\n\n- Python Version:3.12.3\n- Reflex Version: 0.8.12\n- OS:\n- Browser (Optional):\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5838/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5837",
      "id": 3467665109,
      "node_id": "I_kwDOITROHc7OsF7V",
      "number": 5837,
      "title": "Add regression/integration tests for FRONTEND_PATH behaviour",
      "user": {
        "login": "tartansandal",
        "id": 3327775,
        "node_id": "MDQ6VXNlcjMzMjc3NzU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3327775?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tartansandal",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-30T05:45:35Z",
      "updated_at": "2025-09-30T05:45:35Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "There have historically been issues with FRONTEND_PATH behaviour being broken by subsequent releases. \nImplementing regression tests will help to prevent future instances of this. In addition they will help to clarify the intended behaviour of this environment variable.\n\nThe PR https://github.com/reflex-dev/reflex/pull/5712 proposes a set of integration tests using the playwright framework.  This would close the issue and form the basis for future hardening of this feature.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5837/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5832",
      "id": 3463916997,
      "node_id": "I_kwDOITROHc7Ody3F",
      "number": 5832,
      "title": "Error on frontend production build when using recharts",
      "user": {
        "login": "MShekow",
        "id": 10126618,
        "node_id": "MDQ6VXNlcjEwMTI2NjE4",
        "avatar_url": "https://avatars.githubusercontent.com/u/10126618?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MShekow",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7507304446,
          "node_id": "LA_kwDOITROHc8AAAABv3hf_g",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/upstream",
          "name": "upstream",
          "color": "721089",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-09-29T08:55:49Z",
      "updated_at": "2025-10-10T17:17:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nRunning `reflex export --frontend-only` for a sample project that uses `recharts` fails with `TypeError: Expected CommonJS module to have a function wrapper. If you weren't messing around with Bun's internals, this is a bug in Bun`\n\nThe project runs fine in developer mode (`reflex run`).\n\n**To Reproduce**\nSteps to reproduce the behavior:\n\n```python\nimport reflex as rx\n\n\ndef index() -> rx.Component:\n    return rx.container(\n        rx.card(\n            rx.recharts.bar_chart(\n                rx.recharts.bar(\n                    data_key=\"count\",\n                    stroke=rx.color(\"accent\", 8),\n                    fill=rx.color(\"accent\", 3),\n                ),\n                rx.recharts.x_axis(type_=\"number\"),\n                rx.recharts.y_axis(data_key=\"label\", type_=\"category\"),\n                data=[],\n                layout=\"vertical\",\n            ),\n            width=\"100%\",\n        ),\n        spacing=\"5\",\n        justify=\"center\",\n        min_height=\"85vh\",\n    )\n\n\napp = rx.App()\napp.add_page(index)\n```\n\n**Expected behavior**\nExporting the production build for the frontend should just work. It works fine with 0.7.x\n\n**Specifics:**\n\n- Python Version: 3.12.x\n- Reflex Version: 0.8.12\n- OS: Linux\n\n**Additional context**\n\n<details><summary>Full error log (with `--loglevel debug`)</summary>\n\n\n```\nDebug: Overriding config value loglevel with env var LOGLEVEL=debug\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── System Info ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\nDebug: Config file: '/home/marius/code/docker-tag-monitor/.venv/lib/python3.12/site-packages/reflex/config.py'\nDebug: Config: Config(app_name='temptest', app_module_import=None, loglevel=<LogLevel.DEBUG: 'debug'>, frontend_port=None, frontend_path='', backend_port=None, api_url='http://localhost:8000', deploy_url='http://localhost:3000', backend_host='0.0.0.0', \ndb_url='sqlite:///reflex.db', async_db_url=None, redis_url=None, telemetry_enabled=True, enable_pyleak_monitoring=False, pyleak_blocking_threshold=0.1, pyleak_thread_grace_period=0.2, pyleak_action=None, \nbun_path=PosixPath('/home/marius/.local/share/reflex/bun/bin/bun'), static_page_generation_timeout=60, cors_allowed_origins=('*',), react_strict_mode=True, frontend_packages=[], state_manager_mode=<StateManagerMode.DISK: 'disk'>, redis_lock_expiration=10000, \nredis_lock_warning_threshold=1000, redis_token_expiration=3600, _non_default_attributes={'app_name', 'plugins', 'loglevel'}, env_file=None, state_auto_setters=None, show_built_with_reflex=None, is_reflex_cloud=False, extra_overlay_function=None, \nplugins=[SitemapPlugin(), TailwindV4Plugin(config={'plugins': ['@tailwindcss/typography@0.5.16']})], disable_plugins=[])\nDebug: Running command: ['/home/marius/.local/share/reflex/bun/bin/bun', '-v']\nDebug: [Reflex 0.8.12 with Python 3.12.3 (PATH: /home/marius/code/docker-tag-monitor/.venv/bin/python)]\nDebug: [Node None (Minimum: 20.19.0) (PATH:None)]\nDebug: [Bun 1.2.22 (Minimum: 1.2.17) (PATH: /home/marius/.local/share/reflex/bun/bin/bun)]\nDebug: [OS Linux Ubuntu 24.04 LTS]\nDebug: Using package installer at: ['/home/marius/.local/share/reflex/bun/bin/bun']\nDebug: Using package executer at: [['/home/marius/.local/share/reflex/bun/bin/bun']]\nDebug: Unzip path: /usr/bin/unzip\n──────────────────────────────────────────────────────────────────────────────────────────────────────── Compiling production app and preparing for export. ────────────────────────────────────────────────────────────────────────────────────────────────────────\n[10:52:59] Compiling: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   0%  0/21 0:00:00Debug: Evaluating page: index\nDebug: Evaluating page: 404\nDebug: Slowest pages:\nindex: 13.8ms\n404: 0.2ms\nDebug: [timing] Evaluate Pages (Frontend): 0.02s\nDebug: [timing] Collect all imports and app wraps: 0.00s\nDebug: [timing] Auto-memoize StatefulComponents: 0.00s\nDebug: [timing] Copy assets: 0.00s\nDebug: [timing] Compile to Javascript: 0.00s\n[10:52:59] Compiling: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 21/21 0:00:00\nDebug: Running command: ['/home/marius/.local/share/reflex/bun/bin/bun', 'install', '--legacy-peer-deps']\nDebug: Installing base frontend packages\nDebug: bun install v1.2.22 (6bafe260)\nDebug: \nDebug: Checked 382 installs across 411 packages (no changes) [18.00ms]\nDebug: Running command: ['/home/marius/.local/share/reflex/bun/bin/bun', 'add', '--legacy-peer-deps', '-d', 'tailwindcss@4.1.13', '@tailwindcss/typography@0.5.16', '@tailwindcss/postcss@4.1.13']\nDebug: Installing frontend development dependencies\nDebug: bun add v1.2.22 (6bafe260)\nDebug: Saved lockfile\nDebug: \nDebug: installed tailwindcss@4.1.13\nDebug: installed @tailwindcss/typography@0.5.16\nDebug: installed @tailwindcss/postcss@4.1.13\nDebug: \nDebug: [17.00ms] done\nDebug: Running command: ['/home/marius/.local/share/reflex/bun/bin/bun', 'add', '--legacy-peer-deps', 'react-error-boundary@6.0.0', 'sonner@2.0.7', 'recharts@3.2.0', 'lucide-react@0.544.0', '@radix-ui/themes@3.2.1']\nDebug: Installing frontend packages from config and components\nDebug: bun add v1.2.22 (6bafe260)\nDebug: Saved lockfile\nDebug: \nDebug: installed react-error-boundary@6.0.0\nDebug: installed sonner@2.0.7\nDebug: installed recharts@3.2.0\nDebug: installed lucide-react@0.544.0\nDebug: installed @radix-ui/themes@3.2.1\nDebug: \nDebug: [17.00ms] done\nDebug: [timing] Install Frontend Packages: 0.30s\nDebug: [timing] Write to Disk: 0.00s\nDebug: Running command: ['/home/marius/.local/share/reflex/bun/bin/bun', 'run', 'export']\nDebug: Creating Production Build\nDebug: $ react-router build\nDebug: rolldown-vite v7.1.9 building for production...\nDebug: transforming...\nDebug: ✓ 2675 modules transformed.\nDebug: rendering chunks...\nDebug: computing gzip size...\nDebug: build/client/.vite/manifest.json                             4.61 kB │ gzip:   0.75 kB\nDebug: build/client/assets/__reflex_global_styles-D5uHXZgP.css    694.92 kB │ gzip:  83.64 kB\nDebug: build/client/assets/reflex-env-BZFBvKqB.js                   0.28 kB │ gzip:   0.18 kB\nDebug: build/client/assets/_404_._index-D3EJFV4z.js                 0.49 kB │ gzip:   0.33 kB\nDebug: build/client/assets/rolldown-runtime-BJDU5wuE.js             0.64 kB │ gzip:   0.39 kB\nDebug: build/client/assets/shim-a-InModS.js                         0.88 kB │ gzip:   0.47 kB\nDebug: build/client/assets/es6-onJ15w0-.js                          1.63 kB │ gzip:   0.80 kB\nDebug: build/client/assets/react-is-DLtcCZ7M.js                     2.00 kB │ gzip:   0.67 kB\nDebug: build/client/assets/_index-D5BIr1EB.js                       2.59 kB │ gzip:   1.34 kB\nDebug: build/client/assets/react-dom-CREGQyuG.js                    3.68 kB │ gzip:   1.37 kB\nDebug: build/client/assets/react-BNU6gDoq.js                        7.81 kB │ gzip:   2.90 kB\nDebug: build/client/assets/emotion-react.browser.esm-Ctn36Sde.js   18.75 kB │ gzip:   7.51 kB\nDebug: build/client/assets/root-BfZAug8h.js                        44.40 kB │ gzip:  13.49 kB\nDebug: build/client/assets/chunk-B7RQU5TL-Cvs7d-iD.js             107.23 kB │ gzip:  35.04 kB\nDebug: build/client/assets/entry.client-DyajL4yY.js               175.96 kB │ gzip:  55.51 kB\nDebug: build/client/assets/es6-BYkosEQG.js                        460.51 kB │ gzip: 125.06 kB\nDebug: build/client/assets/esm-nA62vs9z.js                        548.73 kB │ gzip: 124.95 kB\nDebug: \nDebug: (!) Some chunks are larger than 500 kB after minification. Consider:\nDebug: - Using dynamic import() to code-split the application\nDebug: - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks\nDebug: - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.\nDebug: [0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\nDebug:      [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:157:24 [0m[38;5;246m][0m[0m\nDebug:      [0m[38;5;246m│[0m[0m\nDebug:  [0m[38;5;246m157 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249ms[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249mm[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249mu[0m[0m[0m[38;5;249ml[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249m                                                                                                                                                                                                  \n[0m[0m[0m[38;5;249m=[0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mw[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mi[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m \n[0m[0meval[0m[38;5;249m([0m[0m[0m[38;5;249m`[0m[0m[0m[38;5;249mi[0m[0m[0m[38;5;249mm[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249mr[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m([0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mU[0m[0m[0m[38;5;249mr[0m[0m[0m[38;5;249mi[0m[0m[0m[38;5;249m)[0m[0m[0m[38;5;249m`[0m[0m[0m[                                                                                                                                                  \n38;5;249m)[0m[0m[0m[38;5;249m;[0m[0m\nDebug:  [0m[38;5;240m    │[0m[0m                        ──┬─  \nDebug:  [0m[38;5;240m    │[0m[0m                          ╰─── Use of `eval` function here.\nDebug: [0m[38;5;246m─────╯[0m[0m\nDebug: \nDebug: [0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\nDebug:      [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:275:16 [0m[38;5;246m][0m[0m\nDebug:      [0m[38;5;246m│[0m[0m\nDebug:  [0m[38;5;246m275 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mh[0m[0m[0m[38;5;249mr[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mf[0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m=[0m[0m[0m[38;5;249m                                                                                                                                                                                                  \n[0m[0meval[0m[38;5;249m?[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249m([0m[0m\nDebug:  [0m[38;5;240m    │[0m[0m                ──┬─  \nDebug:  [0m[38;5;240m    │[0m[0m                  ╰─── Use of `eval` function here.\nDebug: [0m[38;5;246m─────╯[0m[0m\nDebug: \nDebug: [0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\nDebug:      [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:338:15 [0m[38;5;246m][0m[0m\nDebug:      [0m[38;5;246m│[0m[0m\nDebug:  [0m[38;5;246m338 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m?[0m[0m[0m[38;5;249m                                                                                                                                                                                                                      \n[0m[0meval[0m[38;5;249m([0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mv[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249my[0m[0m[0m[38;5;249ml[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249ml[0m[0m[0m[                                                                                                                                                  \n38;5;249ml[0m[0m[0m[38;5;249mb[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249mk[0m[0m[0m[38;5;249m)[0m[0m\nDebug:  [0m[38;5;240m    │[0m[0m               ──┬─  \nDebug:  [0m[38;5;240m    │[0m[0m                 ╰─── Use of `eval` function here.\nDebug: [0m[38;5;246m─────╯[0m[0m\nDebug: \nDebug: [0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\nDebug:      [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:355:13 [0m[38;5;246m][0m[0m\nDebug:      [0m[38;5;246m│[0m[0m\nDebug:  [0m[38;5;246m355 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m?[0m[0m[0m[38;5;249m                                                                                                                                                                                                                                                              \n[0m[0meval[0m[38;5;249m([0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mv[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249my[0m[0m[0m[38;5;249ml[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mj[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mv[0m[0m[0m[                                                                                                                                                  \n38;5;249ma[0m[0m[0m[38;5;249ms[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249mr[0m[0m[0m[38;5;249mi[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m_[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249m)[0m[0m\nDebug:  [0m[38;5;240m    │[0m[0m             ──┬─  \nDebug:  [0m[38;5;240m    │[0m[0m               ╰─── Use of `eval` function here.\nDebug: [0m[38;5;246m─────╯[0m[0m\nDebug: \nDebug: [0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\nDebug:      [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:356:13 [0m[38;5;246m][0m[0m\nDebug:      [0m[38;5;246m│[0m[0m\nDebug:  [0m[38;5;246m356 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m:[0m[0m[0m[38;5;249m                                                                                                                                                                                                                                                              \n[0m[0meval[0m[38;5;249m([0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mv[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249my[0m[0m[0m[38;5;249ml[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mf[0m[0m[0m[38;5;249mu[0m[0m[0m[38;5;249mn[0m[0m[0m[                                                                                                                                                  \n38;5;249mc[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249mi[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249m)[0m[0m[0m[38;5;249m([0m[0m[0m[38;5;249m)[0m[0m[0m[38;5;249m;[0m[0m\nDebug:  [0m[38;5;240m    │[0m[0m             ──┬─  \nDebug:  [0m[38;5;240m    │[0m[0m               ╰─── Use of `eval` function here.\nDebug: [0m[38;5;246m─────╯[0m[0m\nDebug: \nDebug: [0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\nDebug:      [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:365:15 [0m[38;5;246m][0m[0m\nDebug:      [0m[38;5;246m│[0m[0m\nDebug:  [0m[38;5;246m365 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m?[0m[0m[0m[38;5;249m                                                                                                                                                                                                                      \n[0m[0meval[0m[38;5;249m([0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mv[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249my[0m[0m[0m[38;5;249ml[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249ml[0m[0m[0m[                                                                                                                                                  \n38;5;249ml[0m[0m[0m[38;5;249mb[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249mk[0m[0m[0m[38;5;249m)[0m[0m\nDebug:  [0m[38;5;240m    │[0m[0m               ──┬─  \nDebug:  [0m[38;5;240m    │[0m[0m                 ╰─── Use of `eval` function here.\nDebug: [0m[38;5;246m─────╯[0m[0m\nDebug: \nDebug: ✓ built in 3.81s\nDebug: rolldown-vite v7.1.9 building SSR bundle for production...\nDebug: transforming...\nDebug: ⚠️ Paths with dynamic/splat params cannot be prerendered when using `prerender: true`. You may want to use the `prerender()` API to prerender the following paths:\nDebug:   - *\nDebug: ✓ 20 modules transformed.\nDebug: rendering chunks...\nDebug: \nDebug: ✓ 1 asset cleaned from React Router server build.\nDebug: build/client/assets/__reflex_global_styles-D5uHXZgP.css\nDebug: \nDebug: ✗ Build failed in 724ms\nDebug: error: Build failed with 1 error:\nDebug: \nDebug: [plugin react-router]\nDebug: TypeError: Expected CommonJS module to have a function wrapper. If you weren't messing around with Bun's internals, this is a bug in Bun\nDebug:     at anonymous (native)\nDebug:     at /home/marius/code/docker-tag-monitor/temptest/.web/node_modules/@reduxjs/toolkit/dist/cjs/index.js:3:9\nDebug:     at anonymous (native)\nDebug:     at /home/marius/code/docker-tag-monitor/temptest/.web/node_modules/recharts/lib/state/layoutSlice.js:7:4\nDebug:     at anonymous (native)\nDebug:     at /home/marius/code/docker-tag-monitor/temptest/.web/node_modules/recharts/lib/context/chartLayoutContext.js:9:4\nDebug:     at anonymous (native)\nDebug:     at /home/marius/code/docker-tag-monitor/temptest/.web/node_modules/recharts/lib/component/Legend.js:16:4\nDebug:     at anonymous (native)\nDebug:     at /home/marius/code/docker-tag-monitor/temptest/.web/node_modules/recharts/lib/index.js:392:4\nDebug:       at anonymous (native:1:1)\nDebug: \nDebug: error: script \"export\" exited with code 1\nCreating Production Build:  ━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━  67% 2/3 0:00:05Creating Production Build failed with exit code 1\n$ react-router build\nrolldown-vite v7.1.9 building for production...\ntransforming...\n✓ 2675 modules transformed.\nrendering chunks...\ncomputing gzip size...\nbuild/client/.vite/manifest.json                             4.61 kB │ gzip:   0.75 kB\nbuild/client/assets/__reflex_global_styles-D5uHXZgP.css    694.92 kB │ gzip:  83.64 kB\nbuild/client/assets/reflex-env-BZFBvKqB.js                   0.28 kB │ gzip:   0.18 kB\nbuild/client/assets/_404_._index-D3EJFV4z.js                 0.49 kB │ gzip:   0.33 kB\nbuild/client/assets/rolldown-runtime-BJDU5wuE.js             0.64 kB │ gzip:   0.39 kB\nbuild/client/assets/shim-a-InModS.js                         0.88 kB │ gzip:   0.47 kB\nbuild/client/assets/es6-onJ15w0-.js                          1.63 kB │ gzip:   0.80 kB\nbuild/client/assets/react-is-DLtcCZ7M.js                     2.00 kB │ gzip:   0.67 kB\nbuild/client/assets/_index-D5BIr1EB.js                       2.59 kB │ gzip:   1.34 kB\nbuild/client/assets/react-dom-CREGQyuG.js                    3.68 kB │ gzip:   1.37 kB\nbuild/client/assets/react-BNU6gDoq.js                        7.81 kB │ gzip:   2.90 kB\nbuild/client/assets/emotion-react.browser.esm-Ctn36Sde.js   18.75 kB │ gzip:   7.51 kB\nbuild/client/assets/root-BfZAug8h.js                        44.40 kB │ gzip:  13.49 kB\nbuild/client/assets/chunk-B7RQU5TL-Cvs7d-iD.js             107.23 kB │ gzip:  35.04 kB\nbuild/client/assets/entry.client-DyajL4yY.js               175.96 kB │ gzip:  55.51 kB\nbuild/client/assets/es6-BYkosEQG.js                        460.51 kB │ gzip: 125.06 kB\nbuild/client/assets/esm-nA62vs9z.js                        548.73 kB │ gzip: 124.95 kB\n\n(!) Some chunks are larger than 500 kB after minification. Consider:\n- Using dynamic import() to code-split the application\n- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks\n- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.\n[0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\n     [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:157:24 [0m[38;5;246m][0m[0m\n     [0m[38;5;246m│[0m[0m\n [0m[38;5;246m157 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249ms[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249mm[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249mu[0m[0m[0m[38;5;249ml[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m=[0m[0m[0m[38;5;249m                                                                                                                                                                 \n[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mw[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mi[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m \n[0m[0meval[0m[38;5;249m([0m[0m[0m[38;5;249m`[0m[0m[0m[38;5;249mi[0m[0m[0m[38;5;249mm[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249mr[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m([0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mU[0m[0m[0m[38;5;249mr[0m[0m[0m[38;5;249mi[0m[0m[0m[38;5;249m)[0m[0m[0m[38;5;249m`[0m[0m[0m[                                                                                                                                                  \n38;5;249m)[0m[0m[0m[38;5;249m;[0m[0m\n [0m[38;5;240m    │[0m[0m                        ──┬─  \n [0m[38;5;240m    │[0m[0m                          ╰─── Use of `eval` function here.\n[0m[38;5;246m─────╯[0m[0m\n\n[0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\n     [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:275:16 [0m[38;5;246m][0m[0m\n     [0m[38;5;246m│[0m[0m\n [0m[38;5;246m275 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mh[0m[0m[0m[38;5;249mr[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mf[0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m=[0m[0m[0m[38;5;249m                                                                                                                                                                                                         \n[0m[0meval[0m[38;5;249m?[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249m([0m[0m\n [0m[38;5;240m    │[0m[0m                ──┬─  \n [0m[38;5;240m    │[0m[0m                  ╰─── Use of `eval` function here.\n[0m[38;5;246m─────╯[0m[0m\n\n[0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\n     [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:338:15 [0m[38;5;246m][0m[0m\n     [0m[38;5;246m│[0m[0m\n [0m[38;5;246m338 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m?[0m[0m[0m[38;5;249m                                                                                                                                                                                                                             \n[0m[0meval[0m[38;5;249m([0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mv[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249my[0m[0m[0m[38;5;249ml[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249ml[0m[0m[0m[                                                                                                                                                  \n38;5;249ml[0m[0m[0m[38;5;249mb[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249mk[0m[0m[0m[38;5;249m)[0m[0m\n [0m[38;5;240m    │[0m[0m               ──┬─  \n [0m[38;5;240m    │[0m[0m                 ╰─── Use of `eval` function here.\n[0m[38;5;246m─────╯[0m[0m\n\n[0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\n     [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:355:13 [0m[38;5;246m][0m[0m\n     [0m[38;5;246m│[0m[0m\n [0m[38;5;246m355 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m?[0m[0m[0m[38;5;249m \n[0m[0meval[0m[38;5;249m([0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mv[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249my[0m[0m[0m[38;5;249ml[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mj[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mv[0m[0m[0m[                                                                                                                                                  \n38;5;249ma[0m[0m[0m[38;5;249ms[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249mr[0m[0m[0m[38;5;249mi[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m_[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249m)[0m[0m\n [0m[38;5;240m    │[0m[0m             ──┬─  \n [0m[38;5;240m    │[0m[0m               ╰─── Use of `eval` function here.\n[0m[38;5;246m─────╯[0m[0m\n\n[0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\n     [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:356:13 [0m[38;5;246m][0m[0m\n     [0m[38;5;246m│[0m[0m\n [0m[38;5;246m356 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m:[0m[0m[0m[38;5;249m \n[0m[0meval[0m[38;5;249m([0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mv[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249my[0m[0m[0m[38;5;249ml[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mf[0m[0m[0m[38;5;249mu[0m[0m[0m[38;5;249mn[0m[0m[0m[                                                                                                                                                  \n38;5;249mc[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249mi[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249m)[0m[0m[0m[38;5;249m([0m[0m[0m[38;5;249m)[0m[0m[0m[38;5;249m;[0m[0m\n [0m[38;5;240m    │[0m[0m             ──┬─  \n [0m[38;5;240m    │[0m[0m               ╰─── Use of `eval` function here.\n[0m[38;5;246m─────╯[0m[0m\n\n[0m[33m[EVAL] Warning:[0m[0m Use of `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.\n     [0m[38;5;246m╭[0m[0m[0m[38;5;246m─[0m[0m[0m[38;5;246m[[0m[0m utils/state.js:365:15 [0m[38;5;246m][0m[0m\n     [0m[38;5;246m│[0m[0m\n [0m[38;5;246m365 │[0m[0m [0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m [0m[0m[0m[38;5;249m?[0m[0m[0m[38;5;249m                                                                                                                                                                                                                             \n[0m[0meval[0m[38;5;249m([0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mv[0m[0m[0m[38;5;249me[0m[0m[0m[38;5;249mn[0m[0m[0m[38;5;249mt[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mp[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249my[0m[0m[0m[38;5;249ml[0m[0m[0m[38;5;249mo[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249md[0m[0m[0m[38;5;249m.[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249ml[0m[0m[0m[                                                                                                                                                  \n38;5;249ml[0m[0m[0m[38;5;249mb[0m[0m[0m[38;5;249ma[0m[0m[0m[38;5;249mc[0m[0m[0m[38;5;249mk[0m[0m[0m[38;5;249m)[0m[0m\n [0m[38;5;240m    │[0m[0m               ──┬─  \n [0m[38;5;240m    │[0m[0m                 ╰─── Use of `eval` function here.\n[0m[38;5;246m─────╯[0m[0m\n\n✓ built in 3.81s\nrolldown-vite v7.1.9 building SSR bundle for production...\ntransforming...\n⚠️ Paths with dynamic/splat params cannot be prerendered when using `prerender: true`. You may want to use the `prerender()` API to prerender the following paths:\n  - *\n✓ 20 modules transformed.\nrendering chunks...\n\n✓ 1 asset cleaned from React Router server build.\nbuild/client/assets/__reflex_global_styles-D5uHXZgP.css\n\n✗ Build failed in 724ms\nerror: Build failed with 1 error:\n\n\nTypeError: Expected CommonJS module to have a function wrapper. If you weren't messing around with Bun's internals, this is a bug in Bun\n    at anonymous (native)\n    at /home/marius/code/docker-tag-monitor/temptest/.web/node_modules/@reduxjs/toolkit/dist/cjs/index.js:3:9\n    at anonymous (native)\n    at /home/marius/code/docker-tag-monitor/temptest/.web/node_modules/recharts/lib/state/layoutSlice.js:7:4\n    at anonymous (native)\n    at /home/marius/code/docker-tag-monitor/temptest/.web/node_modules/recharts/lib/context/chartLayoutContext.js:9:4\n    at anonymous (native)\n    at /home/marius/code/docker-tag-monitor/temptest/.web/node_modules/recharts/lib/component/Legend.js:16:4\nCreating Production Build:  ━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━  67% 2/3 0:00:05    at anonymous (native)\n    at /home/marius/code/docker-tag-monitor/temptest/.web/node_modules/recharts/lib/index.js:392:4\n      at anonymous (native:1:1)\n\nerror: script \"export\" exited with code 1\n```\n</details>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5832/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5830",
      "id": 3462463139,
      "node_id": "I_kwDOITROHc7OYP6j",
      "number": 5830,
      "title": "support redis sentinel for HA",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-28T20:05:13Z",
      "updated_at": "2025-09-28T20:07:20Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\n\nsupport configuring redis sentinel\n\n**What is the purpose of the feature?**\n\nHA/failover\n\n**Additional context**\n\nredis-py already supports this",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5830/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5820",
      "id": 3451246804,
      "node_id": "I_kwDOITROHc7NtdjU",
      "number": 5820,
      "title": "remove JSON5 dependency",
      "user": {
        "login": "adhami3310",
        "id": 27952765,
        "node_id": "MDQ6VXNlcjI3OTUyNzY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adhami3310",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-24T23:07:28Z",
      "updated_at": "2025-11-18T23:36:22Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The only reason we have as far as I can tell is `NaN`, `Infinity`, and `-Infinity` would not be parsed by JavaScript `JSON.parse`.\n\nOne potential solution is to make it such that the backend sends special strings for those values, that the frontend reinterpret those as their correct equivalence.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5820/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5812",
      "id": 3441754562,
      "node_id": "I_kwDOITROHc7NJQHC",
      "number": 5812,
      "title": "Setting the frontend_path breaks static 404 page generation, which breaks dynamic routes for prod builds.",
      "user": {
        "login": "joejoejoew",
        "id": 103395,
        "node_id": "MDQ6VXNlcjEwMzM5NQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/103395?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/joejoejoew",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-22T16:24:17Z",
      "updated_at": "2025-09-22T19:14:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nWhen setting the frontend_path, the path to the generated 404 page is not also updated, which breaks dynamic routes for 404 pages.\n\nTo fix our issue, we patched reflex with the following:\n```\ndiff --git a/reflex/constants/installer.py b/reflex/constants/installer.py\n--- a/reflex/constants/installer.py\n+++ b/reflex/constants/installer.py\n@@ -106,7 +106,7 @@ class PackageJson(SimpleNamespace):\n \n         DEV = \"react-router dev --host\"\n         EXPORT = \"react-router build\"\n-        PROD = \"sirv ./build/client --single 404.html --host\"\n+        PROD = \"sirv ./build/client --dev --single ./our-frontend-path/404.html --host\"\n \n     PATH = \"package.json\"\n```\n\n- Python Version: 3.12\n- Reflex Version: 0.8.11",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5812/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5809",
      "id": 3440094431,
      "node_id": "I_kwDOITROHc7NC6zf",
      "number": 5809,
      "title": "Database issues caused by '@ computed_field'",
      "user": {
        "login": "kuuuuy",
        "id": 83860407,
        "node_id": "MDQ6VXNlcjgzODYwNDA3",
        "avatar_url": "https://avatars.githubusercontent.com/u/83860407?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kuuuuy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-22T09:57:06Z",
      "updated_at": "2025-09-22T10:49:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Reflex: 0.8.11\nOS: windows 11\npython: 3.12\n\nI created the database model in the following way, But an error occurred, and I found that it was related to '@ computed_field', It seems to conflict with the '@ computed_field' feature\n\n```python\nclass Stock(rx.Model, table=True):\n    __tablename__ = 'stock'\n    id: int | None = Field(default=None, primary_key=True)\n    timestamp: date\n    code: str\n    open: float\n    high: float\n    low: float\n    close: float\n\n    @computed_field\n    def color(self) -> str:\n        if self.close > self.open:\n            return 'red'\n        else:\n            return 'green'\n```\n\nError Log\n```log\nProcess granian-worker:\nTraceback (most recent call last):\n  File \"C:\\Users\\root\\AppData\\Roaming\\uv\\python\\cpython-3.12.11-windows-x86_64-none\\Lib\\multiprocessing\\process.py\", line 314, in _bootstrap\n    self.run()\n  File \"C:\\Users\\root\\AppData\\Roaming\\uv\\python\\cpython-3.12.11-windows-x86_64-none\\Lib\\multiprocessing\\process.py\", line 108, in run\n    self._target(*self._args, **self._kwargs)\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\granian\\server\\mp.py\", line 65, in wrapped\n    callback = callback_loader()\n               ^^^^^^^^^^^^^^^^^\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\granian\\_internal.py\", line 65, in load_target\n    module = load_module(path)\n             ^^^^^^^^^^^^^^^^^\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\granian\\_internal.py\", line 47, in load_module\n    __import__(module_name)\n  File \"E:\\Works\\RedRedFireFire\\RedRedFireFire\\RedRedFireFire.py\", line 4, in <module>\n    from RedRedFireFire.backend.server import app as backend_app\n  File \"E:\\Works\\RedRedFireFire\\RedRedFireFire\\backend\\server.py\", line 8, in <module>\n    from RedRedFireFire.backend.stock import router\n  File \"E:\\Works\\RedRedFireFire\\RedRedFireFire\\backend\\stock.py\", line 82, in <module>\n    from RedRedFireFire.database.dbmanager import DBManager\n  File \"E:\\Works\\RedRedFireFire\\RedRedFireFire\\database\\dbmanager.py\", line 7, in <module>\n    from RedRedFireFire.database.tables import Stock\n  File \"E:\\Works\\RedRedFireFire\\RedRedFireFire\\database\\tables.py\", line 8, in <module>\n    class Stock(rx.Model, table=True):\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\sqlmodel\\main.py\", line 539, in __new__\n    new_cls = super().__new__(cls, name, bases, dict_used, **config_kwargs)\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\pydantic\\v1\\main.py\", line 221, in __new__\n    inferred = ModelField.infer(\n               ^^^^^^^^^^^^^^^^^\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\pydantic\\v1\\fields.py\", line 504, in infer\n    return cls(\n           ^^^^\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\pydantic\\v1\\fields.py\", line 434, in __init__\n    self.prepare()\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\pydantic\\v1\\fields.py\", line 544, in prepare\n    self._set_default_and_type()\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\pydantic\\v1\\fields.py\", line 568, in _set_default_and_type\n    default_value = self.get_default()\n                    ^^^^^^^^^^^^^^^^^^\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\pydantic\\v1\\fields.py\", line 437, in get_default\n    return smart_deepcopy(self.default) if self.default_factory is None else self.default_factory()\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\pydantic\\v1\\utils.py\", line 694, in smart_deepcopy\n    return deepcopy(obj)  # slowest way when we actually might need a deepcopy\n           ^^^^^^^^^^^^^\n  File \"C:\\Users\\root\\AppData\\Roaming\\uv\\python\\cpython-3.12.11-windows-x86_64-none\\Lib\\copy.py\", line 162, in deepcopy\n    y = _reconstruct(x, memo, *rv)\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"C:\\Users\\root\\AppData\\Roaming\\uv\\python\\cpython-3.12.11-windows-x86_64-none\\Lib\\copy.py\", line 260, in _reconstruct\n    if hasattr(y, '__setstate__'):\n       ^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\pydantic\\_internal\\_decorators.py\", line 210, in __getattr__\n    return getattr(self.wrapped, name)\n                   ^^^^^^^^^^^^\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\pydantic\\_internal\\_decorators.py\", line 210, in __getattr__\n    return getattr(self.wrapped, name)\n                   ^^^^^^^^^^^^\n  File \"E:\\Works\\RedRedFireFire\\.venv\\Lib\\site-packages\\pydantic\\_internal\\_decorators.py\", line 210, in __getattr__\n    return getattr(self.wrapped, name)\n                   ^^^^^^^^^^^^\n  [Previous line repeated 949 more times]\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5809/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5803",
      "id": 3436216433,
      "node_id": "I_kwDOITROHc7M0IBx",
      "number": 5803,
      "title": "Can't have periods '.' in dynamic routes in prod because they break sirv",
      "user": {
        "login": "bennidhamma",
        "id": 309808,
        "node_id": "MDQ6VXNlcjMwOTgwOA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/309808?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bennidhamma",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-19T23:38:05Z",
      "updated_at": "2025-09-22T19:05:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nWe have periods (like... /data/v1.2.3/foo) that work in dev mode, but break in production mode. It looks like this is due to sirv treating them like not found assets and having a different code path.\n\n**To Reproduce**\n1. Make a dynamic route ('/data/[version]/[prop]')\n2. run with --env prod\n3. navigate to that route with a value with a period in it ('curl http://localhost:3000/data/v1.2.3/foo')\n4. the 404.html fallback page is not loaded. just an empty 404 response directly from sirv.\n\n- Code/Link to Repo:\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.12\n- Reflex Version: 0.8.11\n- OS: Linux\n- Browser (Optional):\n\n**Additional context**\nAdd any other context about the problem here.\nhttps://github.com/lukeed/sirv/issues/132 describes the upstream bug that impacts reflex.\n\nand sirv's documentation reads:\n\n>Any asset requests (URLs that end with an extension) ignore --single behavior and will send a 404 response instead of the \"index.html\" fallback. To ignore additional paths, pass URL patterns to the --ignores argument.\n\n# Don't include \"/blog*\" or \"/portfolio*\" pages into SPA\n$ sirv public --single --ignores \"^/blog\" --ignores \"^/portfolio\"\nYou may pass a string to customize which file should be sent as fallback.\nIn other words, --single shell.html will send the directory's shell.html file instead of its index.html file.\n\nso it seems quite clear that this does not work in sirv.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5803/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5793",
      "id": 3419412205,
      "node_id": "I_kwDOITROHc7L0Bbt",
      "number": 5793,
      "title": "[ENTERPRISE] Leaflet - Marker on_click events don't fire",
      "user": {
        "login": "fr33tux",
        "id": 5955898,
        "node_id": "MDQ6VXNlcjU5NTU4OTg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5955898?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/fr33tux",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8288109053,
          "node_id": "LA_kwDOITROHc8AAAAB7gKB_Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enterprise",
          "name": "enterprise",
          "color": "FBCA04",
          "default": false,
          "description": "For issues related to `reflex-enterprise`"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-15T20:31:16Z",
      "updated_at": "2025-11-02T07:07:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "👋 \n\nI've been evaluating the reflex-enterprise package, especially the Leaflet.js integration. However I'm struggling to get events working on anything but the map itself: Markers, Popup or Tooltip don't fire events which makes it less useful to display interactive maps with user interaction with the Markers.\n\nI'm looking at displaying a text specific to a marker whenever its clicked on the map.\n\n...\n\n## Expected behavior\n\nWhen attaching an `on_click` event to a `Marker`, it should fire. Same for the Popup or Tooltip objects. Only the map object itself seems to fire the `on_click` event properly.\nThe event should contain the Marker id to be able to identify which Marker was clicked.\n\n...\n\n## Steps to reproduce (if applicable)\n\n1. Use this code snippet from the documentation: https://reflex.dev/docs/enterprise/map/#dynamic-markers\n2. Add a state, and a `@rx.event` handler that simply print whatever it receives.\n3. Observe that nothing gets emitted. Attach the same handler to the `on_click` event to the map, it works.\n\nIt looks like the `on_popupopen`, `on_popupclose`, `on_tooltipopen`, `on_tooltipclose` also don't fire.\n\n## Environment\n\n- Reflex Version: 0.8.9\n- Python Version: 3.13\n- OS: OSX\n- Browser: Firefox, Safari\n\n\nBy the way, thank you for Reflex, it's really awesome :) The Enterprise package looks super promising too!\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5793/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5780",
      "id": 3406744481,
      "node_id": "I_kwDOITROHc7LDsuh",
      "number": 5780,
      "title": "rx.Script causes UNSAFE_componentWillMount warning",
      "user": {
        "login": "tim-haselhoff",
        "id": 163506855,
        "node_id": "U_kgDOCb7qpw",
        "avatar_url": "https://avatars.githubusercontent.com/u/163506855?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tim-haselhoff",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-11T14:08:50Z",
      "updated_at": "2025-09-29T18:44:17Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nA clear and concise description of what the bug is.\n\nWhen using rx.script I get the Warning: \"Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code.\" Is this a mistake on my part or unintended behaviour?\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Make a reflex app\n2. Open it on the browser\n3. Check the browser console\n\n- Code/Link to Repo:\n```python\nimport reflex as rx\n\n\ndef index() -> rx.Component:\n    return rx.vstack(\n        rx.text(\"Hello, Reflex!\"), rx.script(\"console.log('inline javascript')\")\n    )\n\n\napp = rx.App()\napp.add_page(index)\n\n```\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\nNo Warning\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n<img width=\"617\" height=\"94\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/994c84cd-3fd9-4958-b9db-c24295880a07\" />\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13\n- Reflex Version: 0.8.8 / 0.8.10\n- OS: Linux\n- Browser (Optional): Chrome\n\n**Additional context**\nAdd any other context about the problem here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5780/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5767",
      "id": 3388955922,
      "node_id": "I_kwDOITROHc7J_10S",
      "number": 5767,
      "title": "A computed var \"B\" that accesses another computed var \"A\" with initial_value causes \"A\" to be computed at compile time",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-05T22:46:17Z",
      "updated_at": "2025-09-17T09:59:49Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\n```python\nclass MyState(rx.State):\n    @rx.var(initial_value=True)\n    def var1(self):\n        raise Exception(\"var1: This should never happen at compile time\")\n\n    @rx.var\n    def var2(self):\n        if not self.var1:\n            raise Exception(\"var2: This should never happen at compile time\")\n```\n\n```\nreflex export\n```\n\n**Expected behavior**\nSince `var1` has an initial_value, I would _expect_ that value to be used at compile time when computing the value of `var2`. Instead, when `var2` accesses `self.var1`, it causes it to be recomputed, even at compile time when determining the initial dict.\n\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13\n- Reflex Version: 0.8.10a1\n- OS: macOS\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5767/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5762",
      "id": 3383612046,
      "node_id": "I_kwDOITROHc7JrdKO",
      "number": 5762,
      "title": "[Question] How to communicate frontend with a background thread?",
      "user": {
        "login": "FrankSFLYS",
        "id": 10843159,
        "node_id": "MDQ6VXNlcjEwODQzMTU5",
        "avatar_url": "https://avatars.githubusercontent.com/u/10843159?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/FrankSFLYS",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-04T12:43:17Z",
      "updated_at": "2025-10-30T22:12:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I am new to reflex. I'm developing an app that runs a background thread, polling and processing emails independently.\nAfter processing, data is stored into database. This app is meant to be single-end, so different frontend sessions can share same states. I want the frontend to reload whenever a new email is processed, or be notified by the polling thread. \n\nThere are two problems about this.\n\n1. Using `app.register_lifespan_task(email_polling)` works, but there are two instances running at the same time, and every cycle it runs, the reflex will be triggered to compile.\n2. How do I notify frontend to reload or fetch the newly added item whenever processed. The major question is how to communicate between background threads and frontend, and how to notify every frontend to reload. Because there are multiple items to show in a page, it will be better if I can only reload the ones that needed.\n\nThanks a lot!\n\nFollowing is an MWE that shows how the first problem works:\n```python\n\"\"\"Welcome to Reflex! This file outlines the steps to create a basic app.\"\"\"\nimport asyncio\n\nimport reflex as rx\n\nfrom rxconfig import config\n\n\nclass Item(rx.Model, table=True):\n    name: str\n\n\nasync def polling_task():\n    \"\"\"This is the long-running polling task.\"\"\"\n    for i in range(100):\n        with rx.session() as session:\n            item = Item()\n            item.name = str(i)\n            session.add(item)\n            session.commit()\n            print(f'Task running - {item.name} added')\n        await asyncio.sleep(5)\n\n\nclass State(rx.State):\n    \"\"\"The app state.\"\"\"\n    offset: int\n    item: str\n\n    @rx.event\n    def load_items(self):\n        with rx.session() as session:\n            q = Item.select().offset(self.offset)\n            item = session.exec(q).first()\n            self.item = f'{self.offset} - {item.name}'\n            self.offset += 1\n\n\ndef index() -> rx.Component:\n    # Welcome Page (Index)\n    return rx.container(\n        rx.color_mode.button(position=\"top-right\"),\n        rx.vstack(\n            rx.heading(\n                State.item\n            ),\n            rx.button(\n                \"Load\",\n                on_click=State.load_items\n            ),\n            spacing=\"5\",\n            justify=\"center\",\n            min_height=\"85vh\",\n        ),\n    )\n\n\napp = rx.App()\napp.register_lifespan_task(polling_task)\napp.add_page(index)\n```\n\n\nAnd it runs:\n\n<img width=\"1434\" height=\"453\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1a1444e4-763c-4d9e-8ded-d834bf1adef2\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5762/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5760",
      "id": 3382479685,
      "node_id": "I_kwDOITROHc7JnItF",
      "number": 5760,
      "title": "Reference single dictionary state var key in nested rx.foreach",
      "user": {
        "login": "giacomochiarella",
        "id": 91246441,
        "node_id": "MDQ6VXNlcjkxMjQ2NDQx",
        "avatar_url": "https://avatars.githubusercontent.com/u/91246441?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/giacomochiarella",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-04T07:16:44Z",
      "updated_at": "2025-09-04T16:05:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\nIt would be a huge help in managing datasets if it would be possible to do the following:\n```\nclass MyState:\n    my_outer_list: list[list[Any]] = [[0, \"a\", \"b\"], [1, \"c\", \"d\"]]\n    my_inner_dict: dict[int, list[list[Any]]] = {0: [[\"e\", \"f\"]], 1: [[\"g\", \"h\"]]}\n```\n```\nrx.foreach(\n    SupersetState.my_outer_list,\n    lambda o: rx.foreach(\n        SupersetState.my_inner_dict[o[0]],\n        lambda i: rx.text(i[0])\n    )\n)\n```\nwhich, at the moment, it throws\nreflex.utils.exceptions.VarTypeError: Unsupported Operand type(s) for []: ObjectCastedVar, CustomVarOperation\n\nwhen there is one-to-many relation between datasets this makes the code clear by avoiding temporary state variables and triggers in the UI other than computational  efficiency.\nExample:\nwithout such a feature, to render a one-to-many relation I need:\n1. to use temporary state vars and/or UI triggers like buttons to keep track of what is the primary key\n2. when the trigger is triggered, save the filtered dataset in another state variable in order to render it\nthis makes the code messy in case of multilevel one-to-many (A-many-B, B-many-C, C-many-D) and it would help a lot especially when all the datasets have to be retrieved with one api call (unfortunately not always we have control on the api).\nWith such feature we could organise the datasets when the api call is made and keep it clean and ready to use in the state, in a dictionary, instead, without such feature it is needed to save the raw data and filter each time a trigger is triggered (by passing the primary keys).\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5760/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5750",
      "id": 3372841318,
      "node_id": "I_kwDOITROHc7JCXlm",
      "number": 5750,
      "title": "Initialize component state with value from another state",
      "user": {
        "login": "bmaisonneuve",
        "id": 134048734,
        "node_id": "U_kgDOB_1r3g",
        "avatar_url": "https://avatars.githubusercontent.com/u/134048734?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bmaisonneuve",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-01T14:05:14Z",
      "updated_at": "2025-12-02T16:30:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nI try to initialize an attribute of a ComponentState from the value of a global state but I have the error : `Objects are not valid as a React child (found: object with keys {_js_expr, _var_type, _var_data, _original}). If you meant to render a collection of children, use an array instead.`\n\nMaybe this is not supposed to work but I couldn't find a clear way to initialize the attribute of my ComponentState.\n\n**To Reproduce**\nUse code bellow. I use the example from the ComponentState example : https://reflex.dev/docs/state-structure/component-state/#passing-props\n\n\n**Code/Link to Repo**\n``` \nimport reflex as rx\n\nclass MainState(rx.State):\n\n    @rx.var\n    def initial_value(self) -> int:\n        return 7\n\n\nclass ReusableCounter(rx.ComponentState):\n    count: int = 0\n\n    @rx.event\n    def increment(self):\n        self.count += 1\n\n    @rx.event\n    def decrement(self):\n        self.count -= 1\n\n    @classmethod\n    def get_component(cls, **props):\n\n        initial_value = props.pop(\"initial_value\", None)\n        cls.__fields__[\"count\"].default = initial_value\n        return rx.hstack(\n            rx.button(\"Decrement\", on_click=cls.decrement),\n            rx.text(cls.count),\n            rx.button(\"Increment\", on_click=cls.increment),\n            **props\n        )\n\n\nreusable_counter = ReusableCounter.create\n\n\ndef render():\n    return reusable_counter(initial_value=MainState.initial_value)\n```\n\nNote that this is working if I call the reusable_counter with a constant : `reusable_counter(initial_value=7)`\n\n**Expected behavior**\nIs there a clean way to initialize the ComponentState from backend code ? I could use the frontend to pass the value back to backend (with the on_mount event for example) but this is not ideal.\n\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.10.12\n- Reflex Version: 0.8.8\n- OS: ubuntu\n\n**Additional context**\nGood job with reflex, this is really nice :) \n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5750/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5749",
      "id": 3371921731,
      "node_id": "I_kwDOITROHc7I-3FD",
      "number": 5749,
      "title": "[Question] How to use asynccontextmanager",
      "user": {
        "login": "bldev2473",
        "id": 34266212,
        "node_id": "MDQ6VXNlcjM0MjY2MjEy",
        "avatar_url": "https://avatars.githubusercontent.com/u/34266212?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bldev2473",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-01T09:18:56Z",
      "updated_at": "2025-10-30T00:05:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I am trying to globally initialize a DB instance using asynccontextmanager in my FastAPI backend server and access it during API requests. When I run the Reflex app, the lifespan code executes, but the value is not stored in the request's state. Is there a different way to execute the code correctly?\n\napp.py\n```python\nfrom app.backend import fastapi_app\nfrom app.backend import lifespan\n\napp = rx.App(\n    api_transformer=fastapi_app, \n)\n\napp.register_lifespan_task(lifespan)\n```\n\nbackend.py\n```python\n@asynccontextmanager\nasync def lifespan(app: FastAPI):\n    # app startup\n    app.state.db = get_firestore_client()\n\n    yield\n\n    # app teardown\n    pass\n\nfastapi_app = FastAPI(\n    lifespan=lifespan\n)\n...\n\n@fastapi_app.get(\"/api/posts/{post_id}\")\nasync def get_post(\n    post_id: str,\n    request: Request,\n):\n    # AttributeError: 'State' object has no attribute 'db'\n    client = request.app.state.db\n...\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5749/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5741",
      "id": 3357212190,
      "node_id": "I_kwDOITROHc7IGv4e",
      "number": 5741,
      "title": "Invalid JavaScript Code Generation with EventHandler args_spec Using rx.Var Expressions",
      "user": {
        "login": "LeoGrosjean",
        "id": 9574771,
        "node_id": "MDQ6VXNlcjk1NzQ3NzE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9574771?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/LeoGrosjean",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-08-26T21:44:46Z",
      "updated_at": "2025-11-14T21:06:04Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nReflex generates invalid JavaScript code when using a custom `args_spec` in an `EventHandler` that returns `rx.Var(f\"{event}?.formData\")`. The generated code places an expression `(_event?.formData)` in an argument list, causing a JavaScript syntax error during compilation.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n\n1. Create a custom event signature function:\n```python\nfrom reflex.vars import ObjectVar\nfrom reflex.event import JavascriptInputEvent\nfrom typing import Dict, Any\n\ndef submit_signature(\n    event: ObjectVar[JavascriptInputEvent],\n) -> tuple[Var[Dict[str, Any]], Var[str]]:\n    return (\n        rx.Var(f\"{event}?.formData\"),\n        rx.Var(f\"{event}?.retrievedSchema.title\"),\n    )\n```\n\n2. Create a component with the EventHandler:\n```python\nclass RjsfReflex(rx.Component):\n    # ... other component properties\n    on_submit: rx.EventHandler[submit_signature]\n    # ...\n```\n\n3. Use the component with ClientStateVar:\n```python\nvar_name = ClientStateVar.create(\"var_name_js\", \"dummy_data\")\n\n# This triggers the bug\nForm(\n    on_submit=lambda data: rx.call_function(ClientStateVar.set_value(data))\n)\n```\n\n4. Run `reflex run` and observe the JavaScript compilation error\n\n- **Code/Link to Repo**: https://github.com/LeoGrosjean/rjsf-reflex\n\n**Expected behavior**\nThe component should generate valid JavaScript code that properly handles form data extraction and submission without syntax errors. The `args_spec` should allow accessing nested properties like `formData` from the event object.\n\n**Screenshots**\nError output:\n```\n[plugin:vite:oxc] Expected `,` but found `=>`\n/Users/leoh/PycharmProjects/rjsf-reflex/rjsf_reflex_demo/.web/app/routes/_index.jsx:76:175\n`,` expected\n74 |    \n75 |    return (\n76 |      jsx(Form,{className:\"schema-form\",css:({ [\"maxWidth\"] : \"100%\" }),id:\"no\",onSubmit:((_event) => (addEvents([(Event(\"_call_function\", ({ [\"function\"] : ((_event?.formData) => (refs['_client_state_setResult'](_event?.formData))), [\"callback\"] : null }), ({  })))], [_event], ({  })))),ref:ref_no,schema:reflex___state____state__rjsf_reflex_demo___rjsf_reflex_demo____state.schema_rx_state_,validator:validator},)\n   |                                                                                                                                                                                 ^^\n77 |  \n```\n\n**Specifics (please complete the following information):**\n- **Python Version**: 3.12.8\n- **Reflex Version**: 0.8.8\n- **OS**: macOS sequoia\n\n**Additional context**\n- This occurs when trying to create a React JSON Schema Form (RJSF) wrapper component\n- The problem appears to be that Reflex treats `rx.Var(f\"{event}?.formData\")` as an expression but places it in a context where a parameter name is expected\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5741/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5721",
      "id": 3335017763,
      "node_id": "I_kwDOITROHc7GyFUj",
      "number": 5721,
      "title": "[BUG] StateManagerRedis token format error - Raw UUID passed instead of formatted key",
      "user": {
        "login": "sashanclrp",
        "id": 80922904,
        "node_id": "MDQ6VXNlcjgwOTIyOTA0",
        "avatar_url": "https://avatars.githubusercontent.com/u/80922904?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sashanclrp",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-19T16:40:59Z",
      "updated_at": "2025-08-20T01:11:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "# [BUG] StateManagerRedis token format error - Raw UUID passed instead of formatted key\n\n  ## Bug Description\n  StateManagerRedis fails with token format error when using `on_load` event handlers with Redis state management. The error occurs because the\n   framework passes raw UUID tokens instead of properly formatted `{token}_{state_full_name}` keys.\n\n  ## Error Message\n  RuntimeError: StateManagerRedis requires token to be specified in the form of {token}_{state_full_name}, but got\n  6cb8342f-a8f3-4add-913e-79f2da39551a\n\n  ## Environment\n  - **Reflex Version**: 0.8.5\n  - **Python Version**: 3.12.8\n  - **OS**: Linux WSL2 (Ubuntu)\n  - **Redis**: 6.x running on localhost:6379\n\n  ## Steps to Reproduce\n  1. Set up Reflex app with Redis state management:\n     ```python\n     # rxconfig.py\n     config = rx.Config(\n         app_name=\"test_app\",\n         redis_url=\"redis://localhost:6379\"\n     )\n\n  2. Create a State class with @rx.event method:\n  ```python\n  # state.py\n  class AuthState(rx.State):\n      @rx.event\n      def check_auth(self):\n          return rx.redirect(\"/login\") if not self.is_authenticated else None\n```\n  3. Use on_load with the event handler:\n```python\n  # main.py\n  @rx.page(route=\"/\", on_load=AuthState.check_auth)\n  def index():\n      return rx.text(\"Home\")\n```\n  4. Run the app and navigate to the root route\n  5. Error occurs during event processing\n\n  Expected Behavior\n\n  The app should work normally with Redis state management, properly formatting tokens as `{uuid}_{state_full_name}` for Redis key lookups.\n\n  Actual Behavior\n\n  RuntimeError is thrown because the framework attempts to access Redis with raw UUID token instead of formatted key.\n\n  Investigation Results\n\n  Redis Analysis\n\n  Redis contains properly formatted keys:\n  6cb8342f-a8f3-4add-913e-79f2da39551a_reflex___state____state.reflex_sra_system___domains___users___state____auth_state\n\n  But the error shows access attempt with raw token:\n  6cb8342f-a8f3-4add-913e-79f2da39551a\n\n  Code Analysis\n\n  The issue appears to be in the event processing pipeline where:\n  - _substate_key() function exists and works correctly for key creation\n  - Bug: event.substate_token contains raw UUID instead of formatted key\n  - Location: Likely in reflex/app.py line 1725 during modify_state(event.substate_token)\n\n  Stack Trace\n\n  File \"reflex/app.py\", line 1725, in process\n      async with app.state_manager.modify_state(event.substate_token) as state:\n  File \"reflex/istate/manager.py\", line 700, in modify_state\n      state = await self.get_state(token)\n  File \"reflex/istate/manager.py\", line 560, in get_state\n      raise RuntimeError(msg)\n\n  Root Cause\n\n  The bug is in event processing where event.substate_token should be formatted using _substate_key(client_token, state_full_name) but instead\n  contains the raw client_token.\n\n  Impact\n\n  - Severity: High - Blocks all Redis-based state management with event handlers\n  - Scope: Affects production deployments requiring Redis for session persistence\n  - Workaround: Disable Redis (not suitable for production)\n\n  Additional Context\n\n  - Redis state creation works correctly (keys are properly formatted)\n  - Issue is specifically in state lookup during event processing\n  - Affects applications using authentication or any on_load event handlers with Redis",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5721/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5689",
      "id": 3301090633,
      "node_id": "I_kwDOITROHc7EwqVJ",
      "number": 5689,
      "title": "The dynamic routing values of page URL is not added as query parameters of RouterData.url",
      "user": {
        "login": "TianyiLi10",
        "id": 147425306,
        "node_id": "U_kgDOCMmIGg",
        "avatar_url": "https://avatars.githubusercontent.com/u/147425306?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TianyiLi10",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-07T16:05:11Z",
      "updated_at": "2025-08-07T17:55:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nFor the deprecated \"RouterData.page\", it always add the dynamic routing values in the PageData.params.\n       Given this example, /page/[page_id], we can find the page_id in the PageData.params map\nHowever the ReflexURL.query_parameters, the \"page_id\" is not added in to the query parameters map any more.\n\n- Reflex Version: 0.8.5\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5689/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5686",
      "id": 3298635049,
      "node_id": "I_kwDOITROHc7EnS0p",
      "number": 5686,
      "title": "Please provide a tutorial to help integrate Sentry to debug front-end exceptions.",
      "user": {
        "login": "ChuanqiTan",
        "id": 1183649,
        "node_id": "MDQ6VXNlcjExODM2NDk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1183649?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ChuanqiTan",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-07T02:08:41Z",
      "updated_at": "2025-08-11T10:43:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Please provide a tutorial, which can be written in the official blog, to help integrate Sentry to debug frontend exceptions.\n\n- Which feature do you want to improve? (and what problem does it have)\nFrontend exception debug\n\n- What is the benefit of the enhancement?\nSentry is very important in the frontend exception debugging. Without the support of Sentry, we cannot quickly resolve the exceptions encountered by the frontend.\n\n\n# Detail:\nBecause frontend_exception_handler will handle all frontend exception, but we MUST go back to the Frontend to report the exception to Sentry.  How can I catch frontend exception by Sentry SDK?\n\n1. I tried to use return rx.run_script(...) in frontend_exception_handler to let the frontend report the exception. However, this did not work. I suspect that the frontend exception handler does not allow js code to be executed through the return value.\n\n2. I also tried to disable reflex's frontend exception handling in rx.App(frontend_exception_handler=None) and let Sentry take over. But an error occurred:\nValueError: Provided custom frontend exception handler NoneType is not a function.\n\nSo, how can I integrate Sentry into Reflex? Such front-end debugging tools are too important for us. And we must report exception to Sentry in frontend.\n\nThank you very much for help!\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5686/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5676",
      "id": 3291551536,
      "node_id": "I_kwDOITROHc7EMRcw",
      "number": 5676,
      "title": "Data Editor: Supporting Additional Cell Types",
      "user": {
        "login": "MatthewCollinsNZ",
        "id": 189672714,
        "node_id": "U_kgDOC04tCg",
        "avatar_url": "https://avatars.githubusercontent.com/u/189672714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MatthewCollinsNZ",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-05T04:50:34Z",
      "updated_at": "2025-08-05T04:50:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi All,\n\nCurrently the Data Editor does not support additional cell types such as dropdowns. Glide has a library which adds extra cells and is designed to plug into glide to allow lots of new types of cells for cool DataGrid rendering. It would be fantastic if reflex supported these as well.\n\nhttps://www.npmjs.com/package/@glideapps/glide-data-grid-cells\n\nIts worth noting that the library was recently pulled into the main glide repo, and it is unknown if these other types are currently being implemented as base options in the near future.\n\nRegards\n\nMatt\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5676/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5670",
      "id": 3291108223,
      "node_id": "I_kwDOITROHc7EKlN_",
      "number": 5670,
      "title": "`EventNamespace.emit_update` lost+found",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-04T23:58:02Z",
      "updated_at": "2025-08-04T23:58:06Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\nWhen `emit_update` tries to sent a ws message for a token that it does not manage the ws session for, instead of dropping it on the floor (which is what happens currently), it should put the message into a special `lost_and_found` space so the app instance which does manage that client_token's connection can send the delta by proxy.\n\n- What is the purpose of the feature?\n\nFacilitate true out of band state updates that work across app instances.\n\n- Show an example / use cases for the new feature.\n\nThe new `TokenManager` sets a precedent for storing session/token associations in redis. This implementation could be extended to store the generated app instance uuid instead of `\"1\"` in the `{client_token}_sid` key, which would allow for an API to determine which app instance has the socket for that token (if any).\n\nWhen the app instance creates the `TokenManager` it generates that \"instance id\" and sets up a pub/sub task to watch for `lost_and_found_{instance_id}*` keys to appear in redis. Any such keys are popped and the contents treated as a serialized StateUpdate object, the sid is looked up, and the message emitted verbatim on the associated socket.\n\nWhen another instance wants submit a message to lost and found, it looks up the owning instance id associated with that token and inserts the serialized `StateUpdate` under the key `lost_and_found_{owner_instance_id}_{timestamp}_{client_token}`.\n\n**Additional context**\nThis feature would finally allow the \"chatroom\" example to work in prod mode, and improve any real time notification system where actions in one state need to trigger updates in other states.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5670/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 1,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5669",
      "id": 3291061580,
      "node_id": "I_kwDOITROHc7EKZ1M",
      "number": 5669,
      "title": "Expose TokenManager with additional APIs",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-04T23:25:02Z",
      "updated_at": "2025-08-04T23:25:06Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\n* `rx.get_token_manager()` returns the current app's active `TokenManager` or raises an exception (no None checking)\n* New APIs for `TokenManager`:\n  * `session_is_connected(sid: str)` - iterator returns `client_token` until the given `sid` is no longer connected\n  * `token_is_connected(client_token: str)` - iterator returns `session_id` until the given `client_token` is no longer connected\n  * `when_session_disconnects(sid: str) -> asyncio.Event` - returns an event which is fired when the session disconnects\n  * `when_token_disconnects(client_token: str) -> asyncio.Event` - returns an event which is fired when the token disconnects\n  * `when_token_connects(client_token: str) -> asyncio.Event` - returns an event which is fired when the given client reconnects\n\n- What is the purpose of the feature?\n\nPublic API for handling client / session lifecycle within background events and elsewhere.\n\n- Show an example / use cases for the new feature.\n\n```python\n@rx.event(background=True)\nasync def thing_checker(self):\n    for _task_active in rx.get_token_manager().session_is_connected(\n        sid=self.router_data.session.session_id\n    ):\n        async with self:\n            if await self._check_thing():\n                await self._update_thing()\n        await asyncio.sleep(CHECK_INTERVAL)\n\n@rx.event(background=True)\nasync def expensive_setup(self):\n    async with self:\n        if self._is_setup:\n            return\n        self._is_setup = True\n    await self._setup_expensive_thing()\n    with contextlib.suppress(asyncio.CancelledError):\n        await rx.get_token_manager().when_token_disconnects(self.router.session.client_token).wait()\n    await self._tear_down_expensive_thing()\n```\n\n**Additional context**\nThis will deprecate `app.event_namespace.sid_to_token` and `app.event_namespace.token_to_sid` which have some limitations:\n1. they are mutable, so you can accidentally break reflex internal tracking of connections\n2. they are cumbersome, polling logic has to be written by hand\n3. getting a reference to `app` is not always straightforward and `rx.utils.prerequisites.get_app()` isn't really documented\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5669/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5664",
      "id": 3290204939,
      "node_id": "I_kwDOITROHc7EHIsL",
      "number": 5664,
      "title": "ReflexURL.path cannot be accessed as Var",
      "user": {
        "login": "abulvenz",
        "id": 14158137,
        "node_id": "MDQ6VXNlcjE0MTU4MTM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/abulvenz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-08-04T17:11:52Z",
      "updated_at": "2025-08-04T22:29:43Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nI wanted to remove the deprecation warning about `router.path` -> `router.url`.\n\n**To Reproduce**\n\n- Create empty app\n- Place `State.router.url.path`\n- See the error `reflex.utils.exceptions.VarAttributeError: The State var reflex.state.State.router[\"url\"] of type <class 'reflex.istate.data.ReflexURL'> has no attribute 'path' or may have been annotated wrongly.`\n\n**Expected behavior**\nNo error, because the deprecation message says, I should use `url` instead of `path`\n\n- Python Version: 3.13.5\n- Reflex Version: 0.8.?\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5664/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5651",
      "id": 3281234656,
      "node_id": "I_kwDOITROHc7Dk6rg",
      "number": 5651,
      "title": "rx.segmented_control.root() with more than 10x .item()",
      "user": {
        "login": "jumbi77",
        "id": 17503985,
        "node_id": "MDQ6VXNlcjE3NTAzOTg1",
        "avatar_url": "https://avatars.githubusercontent.com/u/17503985?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jumbi77",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-31T17:25:18Z",
      "updated_at": "2025-09-04T14:47:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\n\n If we exceed 10x `.item()` in the `rx.segmented_control.root()` the selected item is not highlighted anymore. In the attached screenshot, in both segmented_controls the last item is selected, but only in the first segment with <=10 items, it is visible.\n\n\n**To Reproduce**\n\n```\nclass SegmentedState(rx.State):\n    options: list[str] = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\"]\n    control: str = \"1\"\n    options2: list[str] = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\"]\n    control2: str = \"1\"\n\n...\nrx.segmented_control.root(\n    rx.foreach(\n        SegmentedState.options,\n        lambda label: rx.segmented_control.item(label, value=label.lower()),\n    ),\n    on_change=SegmentedState.setvar(\"control\"),\n    value=SegmentedState.control,\n),\n\nrx.segmented_control.root(\n    rx.foreach(\n        SegmentedState.options2,\n        lambda label: rx.segmented_control.item(label, value=label.lower()),\n    ),\n    on_change=SegmentedState.setvar(\"control2\"),\n    value=SegmentedState.control2,\n),\n....\n```\n\n**Screenshots**\n\n<img width=\"982\" height=\"95\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4c234305-df5d-4d67-8e6e-c4f7ede7d502\" />\n\n**Specifics (please complete the following information):**\n\n- Python Version:3.13\n- Reflex Version: 0.8.3\n- OS: macOS\n- Browser (Optional): Safari\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5651/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5597",
      "id": 3242584060,
      "node_id": "I_kwDOITROHc7BRef8",
      "number": 5597,
      "title": "Base path configuration issue in subpath deployments (Knative/Kubernetes)",
      "user": {
        "login": "Nedcius",
        "id": 12527536,
        "node_id": "MDQ6VXNlcjEyNTI3NTM2",
        "avatar_url": "https://avatars.githubusercontent.com/u/12527536?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Nedcius",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-18T09:31:26Z",
      "updated_at": "2025-07-30T02:37:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Problem Description\n\nWhen deploying a Reflex app in a subpath environment (like Knative Serving), the base path for assets and stylesheets is not correctly configured. The app serves assets from the root domain instead of the expected subpath.\n\n**Expected behavior:**\n- Assets served from: `https://example.com/subpath/assets/`\n- Stylesheets from: `https://example.com/subpath/_static/`\n\n**Actual behavior:**\n- Assets served from: `https://example.com/assets/`\n- Stylesheets from: `https://example.com/_static/`\n\n## Environment\n- **Reflex version**: 0.8.2\n- **Python version**: 3.12\n- **Deployment**: Knative Serving\n- **Base path**: `/engagement-id/app-name`\n- **Container setup**: Single port (8080) as per Docker examples\n\n## Current Configuration\n\n```python\n# rxconfig.py\nconfig = rx.Config(\n    app_name=\"app\",\n    base_path=\"/engagement-id/app-name\",\n    tailwind=True,\n    disable_plugins=['reflex.plugins.sitemap.SitemapPlugin']\n)\n```\n\n## Environment Variables\n```bash\nREFLEX_BASE_PATH=/engagement-id/app-name\nBASE_PATH=/engagement-id/app-name\nAPI_URL=https://example.com/engagement-id/app-name/api\n```\n\n## Steps to Reproduce\n1. Deploy a Reflex app in a Knative cluster with a subpath\n2. Configure `base_path` in `rxconfig.py`\n3. Build and deploy the app using the single-port Docker setup\n4. Check browser developer tools - assets are loaded from root domain instead of subpath\n\n## Questions\n1. Is there an environment variable where you can define a different base path for assets specifically?\n2. Is there a recommended way to handle subpath deployments in Reflex?\n3. Should `base_path` automatically configure all asset paths?\n4. Are there any best practices for deploying Reflex apps in Kubernetes/Knative environments?\n\n## Additional Context\nThis issue affects deployments in containerized environments where the app is served from a subpath rather than the root domain. It's particularly common in environments like Knative or similar container orchestration platforms. \n\nI used the simple-one-port docker container setup stated in the Docker examples where only one port is used (port 8080).",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5597/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5589",
      "id": 3237939039,
      "node_id": "I_kwDOITROHc7A_wdf",
      "number": 5589,
      "title": "Starting in 0.8 we can get: TypeError: useContext is not a function or its return value is not iterable",
      "user": {
        "login": "bertbarabas",
        "id": 17627242,
        "node_id": "MDQ6VXNlcjE3NjI3MjQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17627242?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bertbarabas",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-17T03:12:14Z",
      "updated_at": "2025-09-04T18:29:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\n\nForcing a recompile by just adding a blank line causes the exception below.\n\nThe exception never happened in 0.7.14\n\n```\n[Reflex Frontend Exception]\n TypeError: useContext is not a function or its return value is not iterable\n    at http://localhost:3000/utils/components.jsx?t=1752717277114:67:38\n    at react-stack-bottom-frame (http://localhost:3000/node_modules/.vite/deps/react-dom_client.js?v=03abd703:17424:20)\n    at renderWithHooks (http://localhost:3000/node_modules/.vite/deps/react-dom_client.js?v=03abd703:4206:24)\n    at updateFunctionComponent (http://localhost:3000/node_modules/.vite/deps/react-dom_client.js?v=03abd703:6619:21)\n    at updateSimpleMemoComponent (http://localhost:3000/node_modules/.vite/deps/react-dom_client.js?v=03abd703:6528:16)\n    at beginWork (http://localhost:3000/node_modules/.vite/deps/react-dom_client.js?v=03abd703:7923:20)\n    at runWithFiberInDEV (http://localhost:3000/node_modules/.vite/deps/react-dom_client.js?v=03abd703:1485:72)\n    at performUnitOfWork (http://localhost:3000/node_modules/.vite/deps/react-dom_client.js?v=03abd703:10868:98)\n    at workLoopSync (http://localhost:3000/node_modules/.vite/deps/react-dom_client.js?v=03abd703:10728:43)\n    at renderRootSync (http://localhost:3000/node_modules/.vite/deps/react-dom_client.js?v=03abd703:10711:13)\n```\n\n**To Reproduce**\nThe error only ever happened in a large project and not when I tried to create a small test case from scratch.\nTo get around that I started with my large project and kept removing stuff until the exception went away then restored the last remove and kept going with removing other stuff. Eventually I got down to the repo below which is valid but a bit non-sensical from a use perspective.\n\nTo reproduce:\n1. Clone the repo\n2. Setup venv and install requirements\n3. Reflex run\n4. Visit the web page\n5. Go to a python file like application.py\n6. Insert a blank line somewhere and wait for the recompile.\n7. You should get an exception but if not keep trying adding or removing a line and waiting for recompile and see if the exception appears after the recompile. If it still doesn't happen try restarting the app and doing that again.\n\nhttps://github.com/bertbarabas/test-reflex-regen#\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.12.3\n- Reflex Version: 0.8.2\n- OS: Ubuntu on WSL\n\n**Additional context*\nIt seems unrelated to any specific component, perhaps it is timing related. For instance I include a dummy project db on neon. When reproducing the bug a closer region didn't cause the bug so maybe you have to cause some kind of latency to get the timing just right. But it's not just the db, if I removed the @memo it went away. So like I said I don't think it's related to a specific component and it's more likely to show up in larger projects.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5589/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5578",
      "id": 3235160530,
      "node_id": "I_kwDOITROHc7A1KHS",
      "number": 5578,
      "title": "static images are cached during development",
      "user": {
        "login": "who52023",
        "id": 17609406,
        "node_id": "MDQ6VXNlcjE3NjA5NDA2",
        "avatar_url": "https://avatars.githubusercontent.com/u/17609406?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/who52023",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-16T09:22:05Z",
      "updated_at": "2025-08-13T08:41:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Describe the issue\n\nProvide details about the issue.\n\nI want to load an image from the \"assets\" folder and keep it updated. \n\n## Expected behavior\nrx.image(src = \"assets/aaa.jpg\") ，\n\nAfter I replaced aaa.jpg, refreshing the page still displayed the previous image. Is it necessary to disable caching to solve this problem?\n\n## Environment\n\n- Reflex Version:0.8.0\n- Python Version:3.12.3\n- OS: windows11\n- Browser: firefox、chrome\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5578/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5569",
      "id": 3226691286,
      "node_id": "I_kwDOITROHc7AU2bW",
      "number": 5569,
      "title": "event handlers are missing when components mutably statefull-ized",
      "user": {
        "login": "tim-haselhoff",
        "id": 163506855,
        "node_id": "U_kgDOCb7qpw",
        "avatar_url": "https://avatars.githubusercontent.com/u/163506855?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tim-haselhoff",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        },
        "1": {
          "id": 7507248755,
          "node_id": "LA_kwDOITROHc8AAAABv3eGcw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/workaround%20available",
          "name": "workaround available",
          "color": "E3CF20",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-13T17:47:40Z",
      "updated_at": "2025-07-15T19:05:02Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nA clear and concise description of what the bug is.\n\nWhen wrapping a button within a tooltip that is within a rx.cond it causes an on_click is not defined error while without the rx.cond it works perfectly fine.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n\n1. Create a reflex application with the code\n2. Run it and open the browser\n\n- Code/Link to Repo:\n```python\nimport reflex as rx\n\nclass State(rx.State):\n    @rx.event\n    def on_click_handler(self) -> None:\n        print(\"Button clicked! :)\")\n\ndef index() -> rx.Component:\n    content = \"Hello world!\"\n    button = rx.el.button(content, on_click=State.on_click_handler)\n    wrapped = rx.el.span(button)\n    tooltip = rx.Var.create(\"This is a tooltip\")\n    return rx.container(\n        # This breaks\n        rx.cond(\n            tooltip,\n            rx.tooltip(wrapped, content=tooltip),\n            button,\n        ),\n        # Without rx.cond it works\n        rx.tooltip(wrapped, content=tooltip)\n    )\n\n\napp = rx.App()\napp.add_page(index)\n\n```\n\n**Expected behavior**\nIt doesnt give an error\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n<img width=\"807\" height=\"1010\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4f487116-c724-495e-a040-e2666b96f291\" />\n\n<img width=\"741\" height=\"143\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/88a75e87-b2a1-4100-b219-611c72fb82ff\" />\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13\n- Reflex Version: 0.8.1\n- OS: linux\n- Browser (Optional): Chrome\n\n**Additional context**\nAdd any other context about the problem here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5569/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5561",
      "id": 3222281246,
      "node_id": "I_kwDOITROHc7AEBwe",
      "number": 5561,
      "title": "reflex-suneditor package incompatible with Reflex 0.8+ - forces downgrade to 0.6.2",
      "user": {
        "login": "ebonura-fastly",
        "id": 71339062,
        "node_id": "MDQ6VXNlcjcxMzM5MDYy",
        "avatar_url": "https://avatars.githubusercontent.com/u/71339062?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ebonura-fastly",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-11T09:45:05Z",
      "updated_at": "2025-08-15T01:25:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n**Describe the bug**\nThe external reflex-suneditor package is incompatible with newer versions of Reflex. The package has strict version constraints that prevent upgrading to modern Reflex versions, effectively locking projects to outdated Reflex versions.\n\n**To Reproduce**\n1. Create a new Reflex project with reflex-suneditor installed (currently locks to reflex==0.6.2)\n2. Try to upgrade to any modern Reflex version using `uv add reflex==0.8.1` or `uv add \"reflex>=0.8.0\"`\n3. Observe the dependency resolution error\n\n**Exact Error Messages**\nWhen attempting to upgrade to reflex 0.8.1:\n```\n× No solution found when resolving dependencies:\n  ╰─▶ Because only the following versions of reflex-suneditor are available:\n          reflex-suneditor==0.0.1\n          reflex-suneditor==0.0.2\n          reflex-suneditor==0.0.4\n          reflex-suneditor==0.0.5\n          reflex-suneditor==0.0.6\n          reflex-suneditor==0.0.7\n          reflex-suneditor==0.0.8\n          reflex-suneditor==0.0.9\n          reflex-suneditor==0.0.10\n          reflex-suneditor==0.0.11\n      and reflex-suneditor==0.0.1 depends on reflex<0.2.0, we can conclude\n      that reflex-suneditor<0.0.2 depends on reflex<0.2.0.\n      And because reflex-suneditor>=0.0.2,<=0.0.8 depends on reflex==0.1.34\n      and reflex==0.6.2, we can conclude that all versions of reflex-suneditor\n      depend on one of:\n          reflex<0.2.0\n          reflex==0.6.2\n\n      And because your project depends on reflex==0.8.1 and reflex-suneditor,\n      we can conclude that your project's requirements are unsatisfiable.\n```\n\n**Detailed Dependency Analysis**\nTesting revealed the following version constraints in reflex-suneditor:\n- `reflex-suneditor==0.0.1`: depends on `reflex<0.2.0`\n- `reflex-suneditor>=0.0.2,<=0.0.8`: depends on `reflex==0.1.34` and `reflex==0.6.2`\n- `reflex-suneditor>=0.0.9`: depends on `reflex==0.6.2`\n\n**Impact**\n- **Zero compatibility** with Reflex 0.7.x, 0.8.x, or any future versions\n- Projects using reflex-suneditor cannot receive security updates or bug fixes from newer Reflex versions\n- Forces teams to maintain legacy dependency versions\n- Prevents adoption of new Reflex features and performance improvements\n\n**Code/Link to Repo:**\nhttps://github.com/reflex-dev/reflex-suneditor\n\n**Expected behavior**\nThe reflex-suneditor package should support a reasonable range of Reflex versions (e.g., `reflex>=0.6.0,<1.0.0`) to allow for security updates and feature adoption.\n\n**Environment:**\n- Python Version: 3.13\n- Reflex Version: Locked to 0.6.2 (want to use 0.8.1+)\n- OS: macOS Darwin 24.5.0\n- Package Manager: uv\n\nThe current state makes reflex-suneditor effectively unusable in modern Reflex projects.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5561/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5551",
      "id": 3218383108,
      "node_id": "I_kwDOITROHc6_1KEE",
      "number": 5551,
      "title": "Configure special REFLEX_API_URL value when building Docker image.",
      "user": {
        "login": "unraiders",
        "id": 180220019,
        "node_id": "U_kgDOCr3wcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/180220019?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/unraiders",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-10T08:22:25Z",
      "updated_at": "2025-07-11T05:09:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\nWhere if the REFLEX_API_URL is set to some special value, then the frontend would always try to connect back on itself. maybe something like REFLEX_API_URL=:// could indicate \"reuse the schema and hostname of the frontend\"\n\n- What is the purpose of the feature?\nThe purpose of this is to be able to change the container's host port once the Docker image has been generated.\nWe are currently bound to the port specified in the Dockerfile.\n\n- Show an example / use cases for the new feature.\ndocker run -p 1234:8080  \n\n**Additional context**\nI understand that the Reflex framework can be perfectly used in homelab environments where it is common to have the host port customization available when launching a container.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5551/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5545",
      "id": 3211345030,
      "node_id": "I_kwDOITROHc6_aTyG",
      "number": 5545,
      "title": "Reflex Frontend Exception when re-compiling after code changes",
      "user": {
        "login": "thorsmann",
        "id": 122020952,
        "node_id": "U_kgDOB0XkWA",
        "avatar_url": "https://avatars.githubusercontent.com/u/122020952?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/thorsmann",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7511042430,
          "node_id": "LA_kwDOITROHc8AAAABv7Fpfg",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cannot%20repro",
          "name": "cannot repro",
          "color": "000000",
          "default": false,
          "description": "Need an example that can be copy/pasted to reproduce the issue immediately"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-07-08T07:16:40Z",
      "updated_at": "2025-08-06T17:22:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nFollow up to this one: https://github.com/reflex-dev/reflex/issues/5519\n\nReflex frontend errors are printed to command line when code is re-compiled after code changes. Killing and restaring process fixes the issue. Just happens during development when code changes are applied directly.\n\n```\n[Reflex Frontend Exception]\n Error:  No module update found for route routes/_index\n    at http://localhost:3000/@id/__x00__virtual:react-router/hmr-runtime:476:15\n\n\n```\n\n**To Reproduce**\n```\nimport reflex as rx\n\n\nclass State(rx.State):\n    count: int = 0\n\n    @rx.var\n    def count_plus_one(self) -> int:\n        \"\"\"Return the count plus one.\"\"\"\n        return self.count + 1\n    \n    @rx.event\n    def increment(self) -> int:\n        self.count += 1    \n\n\ndef index():\n    return rx.vstack(\n        rx.text(\"Hey\"),\n        rx.text(f\"Hello there! - {State.count}\", font_size=\".75em\"),\n        rx.button(\"Test\", on_click=State.increment)\n    )\n\n\ndef dynamic():\n    return rx.vstack(\n        \"dynamic contet\",\n        # launch app - than activate/deactivate below code to trigger react error\n        # rx.cond(\n        #     State.count_plus_one,\n        #     rx.text(\":)\")\n        # ),\n    )\n\n\napp = rx.App()\napp.add_page(index)\napp.add_page(dynamic, route=\"/dynamic\")\n```\nYou may have to comment in/out the code block in the dynamic() function a few times to trigger the exception. I was not able to find a fully deterministic way to provoke the issue.\n\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.12\n- Reflex Version: 0.8.1\n- OS: OSX\n- Browser (Optional): Chrome\n\n**Additional context**\nNot every change triggers the problem. Some do but it is hard to narrow down deterministically. Issue was introduced in 0.8.x release. Did not occur in 0.7.14\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5545/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5542",
      "id": 3209791725,
      "node_id": "I_kwDOITROHc6_UYjt",
      "number": 5542,
      "title": "Clarifying `.web/` writes in backend deployments",
      "user": {
        "login": "clemlesne",
        "id": 10001945,
        "node_id": "MDQ6VXNlcjEwMDAxOTQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/10001945?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/clemlesne",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-07T17:37:02Z",
      "updated_at": "2025-07-07T17:45:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "### 1. **Problem Statement**\n- When the backend server runs in a read-only container (frontend pre-built and served from a CDN), it still attempts to write to the root-level **`.web/`** directory, `Permission denied: '.web'`\n- This triggers permission errors after container hardening and raises three key questions:  \n  1. **What** is being written (cache vs. build artifacts) and **how large/frequent** are these writes?  \n  2. If the data is *cache*, why is it persisted to disk instead of the already-configured state manager (Redis)?  \n  3. If the data is *not* cache (i.e., build output), does this break the intended *stateless* nature of the API and complicate horizontal scaling?\n\n```log\n2025-07-07T17:30:42.9413271Z stderr F   File \"/app/.venv/lib/python3.13/site-packages/reflex/app.py\", line 1219, in _compile\n2025-07-07T17:30:42.9413284Z stderr F     self._write_stateful_pages_marker()\n2025-07-07T17:30:42.9413297Z stderr F     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^\n2025-07-07T17:30:42.9413310Z stderr F   File \"/app/.venv/lib/python3.13/site-packages/reflex/app.py\", line 1556, in _write_stateful_pages_marker\n2025-07-07T17:30:42.9413707Z stderr F     stateful_pages_marker.parent.mkdir(parents=True, exist_ok=True)\n2025-07-07T17:30:42.9413750Z stderr F     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2025-07-07T17:30:42.9413771Z stderr F   File \"/usr/local/lib/python3.13/pathlib/_local.py\", line 726, in mkdir\n2025-07-07T17:30:42.9413790Z stderr F     self.parent.mkdir(parents=True, exist_ok=True)\n2025-07-07T17:30:42.9413802Z stderr F     ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2025-07-07T17:30:42.9413829Z stderr F   File \"/usr/local/lib/python3.13/pathlib/_local.py\", line 722, in mkdir\n2025-07-07T17:30:42.9413842Z stderr F     os.mkdir(self, mode)\n2025-07-07T17:30:42.9413855Z stderr F     ~~~~~~~~^^^^^^^^^^^^\n2025-07-07T17:30:42.9413867Z stderr F PermissionError: [Errno 13] Permission denied: '.web'\n2025-07-07T17:30:42.9945896Z stdout F [17:30:42] Reflex app stopped.                                    console.py:213\n```\n\n### 2. **Questions & Possible Approaches (for discussion)**\n- **A · Disable local writes entirely**\n  - *Benefits:* Backend remains fully stateless; no writable volume or security exception required\n  - *Drawbacks:* Potential latency if components expect a warm cache\n- **B · Reuse existing Redis StateManager for any cache data**  \n  - *Benefits:* Single source of truth; infrastructure already in place; avoids disk writes\n  - *Drawbacks:* Adds network calls; may require (de)serialization adjustments\n- **C · Pre-bake or externalize build artifacts**\n  - *Benefits:* Artifacts become immutable; can be shipped inside the container image or stored on an object store\n  - *Drawbacks:* Slightly more complex build pipeline; less flexibility for runtime dynamic assets\n\n### 3. **Technical Implications (depending on the answer)**\n- **If writes are purely cache**  \n  - Use the state manager backend redis, local, object?)\n  - Fall back to `$XDG_CACHE_HOME/preflex` or `$TMPDIR` when only a temp filesystem is writable\n- **If writes are build artifacts**  \n  - Document that the backend is not fully stateless and recommend mounting a shared volume or pre-generating `.web/`\n  - Provide expected artifact size and write frequency so operators can size volumes and plan clean-up\n- **Shared need**  \n  - Add a concise doc section explaining *why* `.web/` writes occur and what permissions are required\n\n*I may be misunderstanding part of framework’s design—any clarification on the above would be greatly appreciated.  \nHappy to test patches or share more logs if that helps.*",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5542/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5539",
      "id": 3209555700,
      "node_id": "I_kwDOITROHc6_Te70",
      "number": 5539,
      "title": "[ENTERPRISE]  Issue after upgrade 0.8.0 for ag-grid components",
      "user": {
        "login": "ozgulkah",
        "id": 77301420,
        "node_id": "MDQ6VXNlcjc3MzAxNDIw",
        "avatar_url": "https://avatars.githubusercontent.com/u/77301420?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ozgulkah",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7511042430,
          "node_id": "LA_kwDOITROHc8AAAABv7Fpfg",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cannot%20repro",
          "name": "cannot repro",
          "color": "000000",
          "default": false,
          "description": "Need an example that can be copy/pasted to reproduce the issue immediately"
        },
        "1": {
          "id": 8288109053,
          "node_id": "LA_kwDOITROHc8AAAAB7gKB_Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enterprise",
          "name": "enterprise",
          "color": "FBCA04",
          "default": false,
          "description": "For issues related to `reflex-enterprise`"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-07-07T16:06:52Z",
      "updated_at": "2025-09-01T17:34:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "##\n\n[3.15_test.txt](https://github.com/user-attachments/files/21106346/3.15_test.txt)\n[3.11_test.txt](https://github.com/user-attachments/files/21106345/3.11_test.txt)\n\nWe have upgraded  reflex to 0.8.0 and using reflex-enterprise 0.3.0. Suddenly, it started to get an error message and it looks like because of ag-grid components. \n\n\nTypeError: Subscripted generics cannot be used with class and instance checks\nTraceback root is in:\nFile \".../ag_grid/resources/base.py\", line 80\nelif not isinstance(return_dict[key], js_types):\n\nAnd this is triggered through Reflex’s serialization chain:\nLiteralVar.create(element)._get_all_var_data() → .serialize(value) → .dict() → _process_js_expressions()\n\n## Expected behavior\n\nWhat should have happened?\n\n\nAttached errors occurs when run the code. Grid solution does not work as expected. Especially drop down in the grid line is not shown as expected.\n\n## Steps to reproduce (if applicable)\n\nExample usage:\n\n```\ncolumn_defs_detail_create = [\n....\n    ag_grid.column_def(\n        field=\"code\",\n        header_name=\"Code\",\n        filter=ag_grid.filters.text,\n        editable=True,\n        cell_data_type=\"select\",\n        cell_editor=ag_grid.editors.select,\n        cellEditorParams={\"values\": State.codeids}, # id list\n        refData=State.codes, # dict for id and codes\n    ),\n    ag_grid.column_def(\n        field=\"name\",\n        header_name=\"Name\",\n        editable=False,\n        filter=ag_grid.filters.text,\n        cell_editor=ag_grid.editors.text,\n    ),....]\n\nag_grid(\n                id=\"ag_grid_detail\",\n                row_data=State.detaillist,\n                column_defs=column_defs_detail,\n                theme=\"quartz\",\n                row_selection=\"multiple\",\n                pagination=True,\n                pagination_page_size=5,\n                pagination_page_size_selector=[5, 10, 15],\n                on_cell_value_changed=State.handle_detail_grid_cell_value_changed,\n                on_selection_changed=State.handle_detail_grid_selection,\n                width=\"100%\",  # Ensure full width\n                height=\"37vh\",  # Allow grid to fill available height\n            ),\n```\n\n## Environment\n\n- Reflex Version:\n      Reflex Enterprise: 0.3.0\n      Reflex: 0.8.0\n      Reflex-Ag-Grid: latest (0.0.11)\n\n- Python Version:\n    - Python versions tested: 3.11.13 & 3.13.5\n- OS:\n       OS: macOS ARM (Apple Silicon)\n\n- Browser:\n    - Tried with:\n       Safari\n       Google Chrome\n       Zen Browser\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5539/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5536",
      "id": 3206625970,
      "node_id": "I_kwDOITROHc6_ITqy",
      "number": 5536,
      "title": "Image for docker and host port",
      "user": {
        "login": "unraiders",
        "id": 180220019,
        "node_id": "U_kgDOCr3wcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/180220019?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/unraiders",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-06T14:39:15Z",
      "updated_at": "2025-07-10T04:47:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nFollowing the example of the repo in [/reflex/docker-example/simplen-one-port](https://github.com/reflex-dev/reflex/tree/main/docker-example/simple-one-port) everything works fine as long as you don't change the host port when doing a docker run or docker compose.\n\nIf you change the host port you receive a:\n\nCannot connect to server: websocket error.\nCheck if server is reachable at ws://localhost:8000/_event\n\n**To Reproduce**\nRun a: docker run -p 9999:8080 reflex-simple-one-port\n\n**Expected behavior**\nThe idea is to be able to have the frontend and backend in the Docker image and be able to change the host port at will when starting the container with a Docker run since the backend is not going to be used externally.\n\n**Specifics (please complete the following information):**\n\n- Python Version: Python 3.13.5\n- Reflex Version: 0.8.0\n- OS: Any OS\n- Browser (Optional): Any browser\n\n**Additional context**\nThe test was performed with an empty reflex init, and installing the example from https://reflex.dev/docs/getting-started/introduction/ to have the states.\n\nThanks\n\nOdón\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5536/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5534",
      "id": 3202098218,
      "node_id": "I_kwDOITROHc6-3CQq",
      "number": 5534,
      "title": "Notify the user / reload the app on version upgrade to avoid data corruption and bugs",
      "user": {
        "login": "clemlesne",
        "id": 10001945,
        "node_id": "MDQ6VXNlcjEwMDAxOTQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/10001945?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/clemlesne",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-04T10:09:53Z",
      "updated_at": "2025-07-04T10:11:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Enhancement you want**\n\nWhen backend and front end are running different app version, operations can be corrupted, stucked or ignored (current behavior reflex version missmatch).\n\nThis is notably present when:\n\n- Upgrading Reflex (not often)\n- Updating the state (very often)\n- CI/CD deploy, missmatch for a few minutes (backend is deployed before to get the backend URL from the infrastructure as code)\n\nReflex framework should either:\n\n- If front end version is lower than backend\n  - Warn the user of a necessity for a reload?\n  - Force-reload the front end?\n- Alert for potential bugs (in console?) if front end version is higher than backend\n\n**Additional information**\n\n- Reflex v0.7.x\n- Python 3.13\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5534/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5481",
      "id": 3164364584,
      "node_id": "I_kwDOITROHc68nF8o",
      "number": 5481,
      "title": "Upload progress bar has a huge lag when uploading a large file (>200 MB)",
      "user": {
        "login": "nivetaiyer",
        "id": 22581900,
        "node_id": "MDQ6VXNlcjIyNTgxOTAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/22581900?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nivetaiyer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-06-20T21:00:01Z",
      "updated_at": "2025-06-21T22:17:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nI have my app deployed on the reflex servers via reflex deploy. When I try to upload a large-ish file (~220 MB), the screen just freezes with no activity for ~ 1 minute. It then shows the progress bar relatively quickly. This behavior confuses my app users because there's no indication of whether the upload has started. I was told the issue would get resolved if the app is deployed via reflex (I raised the same issue when I self-hosted previously) but looks like that's not the case. How do I get an immediate progress bar to show up as soon as the file is dropped in the drop box?\n\n**To Reproduce**\nreflex deploy\n\n- Code/Link to Repo:\n```\n    @rx.event\n    async def handle_upload(\n        self, files: list[rx.UploadFile]\n    ):\n        \"\"\"Handle the file upload to S3 using multipart upload.\"\"\"\n        if not files:\n            yield rx.toast.error(\n                \"No files selected for upload.\"\n            )\n            return\n        self.is_uploading = True\n        yield\n        s3_client = boto3.client(\n            \"s3\",\n            aws_access_key_id=AWS_ACCESS_KEY_ID,\n            aws_secret_access_key=AWS_SECRET_ACCESS_KEY,\n            region_name=AWS_REGION,\n            config=Config(signature_version=\"s3v4\"),\n        )\n        \n        auth_state = await self.get_state(AuthState)\n        user_email = auth_state.email\n        user_name = auth_state.username\n        if not user_email:\n            yield rx.toast.error(\n                \"User information not found. Please log in again.\"\n            )\n            return\n        try:\n            timestamp = datetime.datetime.now(datetime.UTC).strftime(\"%Y-%m-%d_%H-%M-%S\")\n            self.s3_path = f\"{user_name}/{timestamp}\"\n            for file in files:\n                try:\n                    s3_key = f\"{user_name}/{timestamp}/input/{file.name}\"\n                    upload_data = await file.read()\n                    file_obj = io.BytesIO(upload_data)\n                    s3_client.upload_fileobj(\n                        file_obj,\n                        S3_BUCKET_NAME,\n                        s3_key,\n                        ExtraArgs={\n                            \"ContentType\": file.content_type\n                        },\n                    )\n                    file_url = f\"https://{S3_BUCKET_NAME}.s3.{AWS_REGION}.amazonaws.com/{s3_key}\"\n                    self.s3_file_urls.append(file_url)\n                    yield rx.toast.success(\n                        f\"Successfully uploaded {file.name}\"\n                    )\n                except ClientError as e:\n                    yield rx.toast.error(\n                        f\"Upload failed for {file.name}: {e}\"\n                    )\n                except Exception as e:\n                    yield rx.toast.error(\n                        f\"An unexpected error occurred for {file.name}: {e}\"\n                    )\n        finally:\n            self.is_uploading = False\n            yield\n            yield rx.clear_selected_files(\"upload_area\")\n```\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\nI would like the progress bar to show up immediately after user selects a file to upload. The upload itself can take long that's okay, but the progress bar needs to show immediately for a clear UX.\n\n**Screenshots**\nhttps://github.com/user-attachments/assets/0a4221c8-e24b-4e1f-8593-1424033dccff\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.12\n- Reflex Version: 0.7.13\n- OS: Linux\n- Browser (Optional): Chrome\n\n**Additional context**\nAdd any other context about the problem here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5481/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5477",
      "id": 3161955238,
      "node_id": "I_kwDOITROHc68d5um",
      "number": 5477,
      "title": "data_table doesn't respect rx.theme(appearance=\"dark\")",
      "user": {
        "login": "cs-1",
        "id": 12844146,
        "node_id": "MDQ6VXNlcjEyODQ0MTQ2",
        "avatar_url": "https://avatars.githubusercontent.com/u/12844146?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/cs-1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-20T05:19:55Z",
      "updated_at": "2025-06-20T20:24:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nWhen creating an app with `rx.theme(appearance=\"dark\")`, a data_table's appearance doesn't change. It stays the same as with `rx.theme(appearance=\"light\")` except for the font color in the pagination and search areas which turns white and makes the font unreadable on white background.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n\n- Create an app with the following parameters:\n\n```python\napp = rx.App(\n    ...\n    theme=rx.theme(\n        appearance=\"dark\",\n    ),\n)\n```\n- Add a page that contains a data_table and has search and pagination enabled.\n\n**Expected behavior**\nWhen changing the appearance to \"dark\", a data_table should also switch to a dark appearance.\n\n**Screenshots**\n\n<img width=\"291\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d477c99d-613a-4643-b7ed-682837dbdcb6\" />\n\nLight appearance: search bar\n\n\n\n<img width=\"352\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/7ae28a53-95c9-44bc-af2c-9d20dc80bbe4\" />\n\nLight appearance: pagination\n\n\n\n<img width=\"257\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e25b6f5a-d208-4cce-adf5-95e730fd32b9\" />\n\nDark appearance: search bar\n\n\n\n<img width=\"353\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4868fce1-dd5d-4086-beba-cca23e99ee43\" />\n\nDark appearance: pagination\n\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13.5\n- Reflex Version: 0.7.14\n- OS: macOS, Linux\n- Browser (Optional):\n\n**Additional context**\nN/A\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5477/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5467",
      "id": 3156264240,
      "node_id": "I_kwDOITROHc68IMUw",
      "number": 5467,
      "title": "FastAPI (backend) to serve static files (single Dockerfile)",
      "user": {
        "login": "johschmidt42",
        "id": 74831750,
        "node_id": "MDQ6VXNlcjc0ODMxNzUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/74831750?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/johschmidt42",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-18T10:05:48Z",
      "updated_at": "2025-06-18T10:05:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Currently, the Dockerfiles for non-production apps in this repository showcase examples where static files are served via a web server such as Nginx or Caddy.\n\nHowever, since FastAPI/Starlette natively supports serving static files, adding an example where the backend directly handles these routes would streamline the setup and reduce unnecessary complexity. This would provide an alternative approach for users who prefer a more self-contained solution without relying on an additional web server.\n\nExample:\n\n```python\n# app.py\n\nstatic_files_path: Path = some_pathlib_path / \".web\" / \"_static\"\n\nfastapi_app = FastAPI(title=\"Demo\")\nfastapi_app.mount(\n    \"/_next\", StaticFiles(directory=static_files_path / \"_next\"), name=\"_next\"\n)\nfastapi_app.mount(\n    \"/404\", StaticFiles(directory=static_files_path / \"404\"), name=\"404\"\n)\nfastapi_app.mount(\n    \"/page\", StaticFiles(directory=static_files_path / \"page\"), name=\"page\"\n)\n\n@fastapi_app.get(\"/{full_path:path}\")\nasync def serve_index(full_path: str):\n    return FileResponse(static_files_path / \"index.html\")\n\napp = rx.App(api_transformer=fastapi_app)\napp.add_page(page, route=\"index\")\n```\n\nThen the static files can be compiled with (e.g. a builder step in the Dockerfile)\n\n```bash\nREFLEX_API_URL=http://localhost:9000 reflex export --frontend-only --no-zip\n```\n\nand the files will copied over to the backend step in the Dockerfile\n\n```dockerfile\n# Dockerfile\n...\nCOPY --from=builder /app/.web/_static\n\nCMD [\"sh\", \"-c\", \"reflex run --env prod --backend-only --loglevel debug\"]\n```\n\n**Additional context**\n\nCurrently, the compiled files are organized such that each page is placed in its own directory within .web/_static. This setup requires mounting each directory individually to ensure the href links in index.html function correctly.\nWhile this approach likely doesn't pose a significant issue, I’d be interested in hearing your perspective on this whole topic.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5467/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5443",
      "id": 3142269985,
      "node_id": "I_kwDOITROHc67Szwh",
      "number": 5443,
      "title": "No error is raised when EventSpec is used as a Component child",
      "user": {
        "login": "j-bennet",
        "id": 637013,
        "node_id": "MDQ6VXNlcjYzNzAxMw==",
        "avatar_url": "https://avatars.githubusercontent.com/u/637013?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/j-bennet",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        },
        "1": {
          "id": 5857676110,
          "node_id": "LA_kwDOITROHc8AAAABXSULTg",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/error%20message",
          "name": "error message",
          "color": "C2377C",
          "default": false,
          "description": "Improve error message"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-06-13T05:05:14Z",
      "updated_at": "2025-06-13T16:53:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\n\nI'm getting a `TypeError: Class constructor Event cannot be invoked without 'new'` on the frontend.\n\n**To Reproduce**\n\nI'm not very sure what's happening, but here is the stack:\n\n```\nTypeError: Class constructor Event cannot be invoked without 'new'\n    at Box_4b732d969094035c599769db3dd6fba2 (webpack-internal:///(pages-dir-node)/./pages/index.js:27:14)\n    at react-stack-bottom-frame (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:9251:18)\n    at renderWithHooks (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:4898:19)\n    at renderElement (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5333:23)\n    at retryNode (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6092:31)\n    at renderNodeDestructive (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6042:11)\n    at renderNode (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6499:18)\n    at renderChildrenArray (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6375:9)\n    at retryNode (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6116:13)\n    at renderNodeDestructive (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6042:11)\n    at renderElement (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5512:13)\n    at retryNode (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6092:31)\n    at renderNodeDestructive (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:6042:11)\n    at finishFunctionComponent (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:4942:13)\n    at renderElement (file:///Users/jbennet/src/flaire-pulse-ai/.web/node_modules/react-dom/cjs/react-dom-server.edge.development.js:5384:11)\n```\n\nThis is my first time using Reflex. I'm good with Python, but not good with anything frontend.\n\n- Code/Link to Repo:\n\nThe index page triggering the error looks like this:\n\n```python\nimport reflex as rx\n\nfrom ..state import State\n\n\ndef index() -> rx.Component:\n    \"\"\"The index page that redirects to home if logged in, otherwise to login.\"\"\"\n    return rx.box(\n        rx.cond(State.is_authenticated, rx.redirect(\"/home\"), rx.redirect(\"/login\"))\n    )\n\n```\n\n**Expected behavior**\n\nNo error?\n\n**Screenshots**\n\n\n<img width=\"977\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b2be7f65-f9bf-4f74-93bc-492d7f73c75e\" />\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.12\n- Reflex Version: 0.7.14\n- OS: MacOS\n- Browser (Optional): Chrome\n\n**Additional context**\nAdd any other context about the problem here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5443/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5442",
      "id": 3141657802,
      "node_id": "I_kwDOITROHc67QeTK",
      "number": 5442,
      "title": "Database Relationship error",
      "user": {
        "login": "stefanfoulis",
        "id": 14330,
        "node_id": "MDQ6VXNlcjE0MzMw",
        "avatar_url": "https://avatars.githubusercontent.com/u/14330?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/stefanfoulis",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5013964135,
          "node_id": "LA_kwDOITROHc8AAAABKtsFZw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/needs%20investigation",
          "name": "needs investigation",
          "color": "E7099D",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-12T21:57:43Z",
      "updated_at": "2025-06-13T16:54:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm not sure this is a bug... maybe I'm just doing something wrong :-/ \n\n**Describe the bug**\n\nTroubles with database relationships. Whenever I define models with relationships I get a error at startup:\n```\nsqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of \nother mappers. Triggering mapper: 'Mapper[Plan(plan)]'. Original exception was: When initializing mapper \nMapper[Plan(plan)], expression \"relationship(\"List['PlanMeal']\")\" seems to be using a generic class as the argument to \nrelationship(); please state the generic argument using an annotation, e.g. \"meals: Mapped[List['PlanMeal']] = \nrelationship()\"\n```\n\n**To Reproduce**\nSteps to reproduce the behavior (simplified):\n```\nclass Plan(rx.Model, table=True):\n    name: str = \"\"\n\n    meals: List[\"PlanMeal\"] = sqlmodel.Relationship(back_populates=\"plan\")\n\n\nclass PlanMeal(rx.Model, table=True):\n    plan_id: int = sqlmodel.Field(foreign_key=\"plan.id\")\n    plan: \"Plan\" = sqlmodel.Relationship(back_populates=\"meals\")\n```\n\n\n**Expected behavior**\nNo exception at startup.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Specifics (please complete the following information):**\n\n- Python Version: `3.13.0`\n- Reflex Version: `0.7.14`\n- OS: `Fedora Linux 42`\n- sqlalchemy: `2.0.41`\n- sqlmodel: `0.0.24`\n\n**Additional context**\nI tried debugging with the reflex docs AI. It suggested to use \"old style\" type hints and string representations for the classes for sqlalchemy (so `List[\"PlanMeal\"]` rather than `list[PlanMeal]`. And to make sure `reflex` is imported before `sqlmodel`. I did all these things.\nThe AI also told me that I should not define `sqlalchemy.orm.Mapped`, since apparently that is a newer notation in newer sqlalchemy, which reflex/sqlmodel don't use yet.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5442/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5440",
      "id": 3139676553,
      "node_id": "I_kwDOITROHc67I6mJ",
      "number": 5440,
      "title": "Persist and retry background events across instances with a distributed tasks queue",
      "user": {
        "login": "clemlesne",
        "id": 10001945,
        "node_id": "MDQ6VXNlcjEwMDAxOTQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/10001945?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/clemlesne",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-06-12T10:15:08Z",
      "updated_at": "2025-06-14T00:15:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the enhancement you want**\n\nBackground tasks are an easy way to perform background processing (transactions, intelligence, ...). All state tasks are stateless and concurrent-safe as access to state is locked (`async with state` pattern) with a shared Redis database.\n\nWhen application upgrades or restart, background processing is lost and pages are in an intermediate state (like infinite loaders if background task was managing a loading indicator).\n\nMature projects exists to manage task queues, notably https://github.com/celery/celery, https://github.com/rq/rq, https://github.com/coleifer/huey, https://github.com/agronholm/apscheduler, https://github.com/taskforcesh/bullmq/tree/master/python.\n\nOverhead should be minimal from the Reflex perspective and dev APIs shouldn't change.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5440/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5428",
      "id": 3130095898,
      "node_id": "I_kwDOITROHc66kXka",
      "number": 5428,
      "title": "State object not found",
      "user": {
        "login": "PasqualePuzio",
        "id": 7646303,
        "node_id": "MDQ6VXNlcjc2NDYzMDM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/PasqualePuzio",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7511042430,
          "node_id": "LA_kwDOITROHc8AAAABv7Fpfg",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cannot%20repro",
          "name": "cannot repro",
          "color": "000000",
          "default": false,
          "description": "Need an example that can be copy/pasted to reproduce the issue immediately"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-06-09T12:01:26Z",
      "updated_at": "2025-07-10T17:52:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nThe state object cannot be found in the javascript application\n\n**To Reproduce**\nAs you can see from the screenshot, the app_state object is correctly sent to the client as expected, however the javascript application is crashing because it can't find it. I have no idea why this is happening.\nTo give you more context, we have a global state called AppState from which many child states are inheriting.\nIn the frontend code, in this case we have a simple rx.cond which does the following\n\n`rx.cond(AppState.show_mobile_menu,rx.lucide.icon(tag='x',color=colors.WHITE),rx.lucide.icon(tag='menu',color=colors.WHITE))`\n\nwhich gets compiled to\n\n`reflex___state____state__fantacalcio_frontend_web___appstate____app_state.show_mobile_menu ?  ...`\n\nMaybe a dot is missing and mistakenly replaced with an underscore? Not sure.\n\nEverything used to work fine on Reflex 0.5.x (and on other projects running on Reflex 0.6.x the same architecture works well too).\n\n**Expected behavior**\nThe state object should be accessible by the javascript application\n\n**Screenshots**\n\n![Image](https://github.com/user-attachments/assets/806dc1df-e8ae-4931-9452-ba91639676ef)\n\n![Image](https://github.com/user-attachments/assets/e67282c0-df0c-442a-92e2-3a1036137721)\n\n**Specifics:**\n\n- Python Version: 3.12.4\n- Reflex Version: 0.7.14\n- OS: Mac OS\n- Browser: Chrome\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5428/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5418",
      "id": 3126200949,
      "node_id": "I_kwDOITROHc66Vgp1",
      "number": 5418,
      "title": "Exception: \"ReferenceError: refs is not defined\"",
      "user": {
        "login": "bertbarabas",
        "id": 17627242,
        "node_id": "MDQ6VXNlcjE3NjI3MjQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17627242?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bertbarabas",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-07T00:53:27Z",
      "updated_at": "2025-06-07T14:23:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nWhen submitting a form the exception \"ReferenceError: refs is not defined\" is raised.\n\n![Image](https://github.com/user-attachments/assets/41ce6e65-c8b6-4c35-830e-7ba10a30c30e)\n\n**To Reproduce**\nSteps to reproduce the behavior:\n\nBring up the app in the included python file below with:\n`reflex run --env prod`\n\n![Image](https://github.com/user-attachments/assets/620bb4d0-c4e2-459e-96bc-d356cc8acbe1)\n\nClick the Login link and enter any email and password:\n\n![Image](https://github.com/user-attachments/assets/7da43a25-4fa2-4652-8fa3-dcda9f240235)\n\nPress the \"Log in\" button\n\nException will appear.\n\nRunning the same test but launching with:\n`reflex run`\nDoes not produce the exception\n\nFor consistent results, I ran\n`reflex init`\nbefore each test but not positive this was necessary.\n\nThe core element to the test case is having two forms on different pages/routes but each with a field that has the same id string. In this test case it is id=\"UserEmailAddress\".\n\n- Code/Link to Repo:\n[reflex_issue_refs_is_not_defined.zip](https://github.com/user-attachments/files/20635986/reflex_issue_refs_is_not_defined.zip)\n\n**Expected behavior**\nNo exception should occur.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13.3\n- Reflex Version: 0.7.14\n- OS: Ubuntu 24.04.1\n- Browser (Optional): Brave",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5418/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5417",
      "id": 3125988498,
      "node_id": "I_kwDOITROHc66UsyS",
      "number": 5417,
      "title": "StringVar.strip() takes 1 positional argument but 2 were given",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-06T22:19:10Z",
      "updated_at": "2025-06-06T22:19:14Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\n\n`StringVar.strip` should behave more like `str.strip` with regard to its optional argument [[1]](https://docs.python.org/3.13/library/stdtypes.html#str.strip)\n\n```\n  File \"/home/user/app/app/components/system_info.py\", line 97, in system_info\n    rx.foreach(\n    ~~~~~~~~~~^\n        DashboardState.dependencies.to_string().split(\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    ...<23 lines>...\n        ),\n        ^^\n    )\n    ^\n  File \"/usr/local/lib/python3.13/site-packages/reflex/components/core/foreach.py\", line 109, in create\n    component.children = [component._render().render_component()]\n                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^\n  File \"/usr/local/lib/python3.13/site-packages/reflex/components/tags/iter_tag.py\", line 120, in render_component\n    component = self.render_fn(arg)\n  File \"/home/user/app/app/components/system_info.py\", line 107, in <lambda>\n    .strip(\n     ~~~~~^\n        \"'\\\"\"\n        ^^^^^\n    ),\n    ^\nTypeError: StringVar.strip() takes 1 positional argument but 2 were given\nHappened while evaluating page 'index'\n```\n\n- What is the purpose of the feature?\n\nConsistency.\n\nHeck also consider adding rstrip and lstrip while we're at it *finger guns*",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5417/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5398",
      "id": 3109269689,
      "node_id": "I_kwDOITROHc65U7C5",
      "number": 5398,
      "title": "Reflex should terminate when a lifespan task fails",
      "user": {
        "login": "luator",
        "id": 9333121,
        "node_id": "MDQ6VXNlcjkzMzMxMjE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9333121?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luator",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-06-02T09:03:45Z",
      "updated_at": "2025-06-05T15:29:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Enhancement you want**\nAs suggested in [this discussion](https://github.com/orgs/reflex-dev/discussions/5320#discussioncomment-13281876), I'm proposing the following enhancement:\n\nWhen a lifespan task raises an exception, the whole reflex application should terminate.\n\nMy usecase: I'm using a lifespan task for some initialization (e.g. loading some configuration from a file).  If this fails, the whole application is in an unusable state, so ideally it should just terminate completely.  Then it would also be easy to auto-detect the failure.\n\nCurrently an exception just seems to result in the task being stopped but not affecting the application as a whole.  Even using `sys.exit()` seems to only kill the backend with the frontend still running (so the `reflex run` process does not terminate, which makes it difficult to automatically detect the failure).\n\nAlternatively, if termination is not always desired, adding some function to shut down the application would also be an option (e.g. `rx.shutdown()`).  Then one would catch the Exception in the lifespan task and explicitly terminate reflex.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5398/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5394",
      "id": 3106686011,
      "node_id": "I_kwDOITROHc65LEQ7",
      "number": 5394,
      "title": "Frontend/Backend version conflict detection and resolution",
      "user": {
        "login": "mtln",
        "id": 56423500,
        "node_id": "MDQ6VXNlcjU2NDIzNTAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/56423500?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mtln",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-06-01T06:05:41Z",
      "updated_at": "2025-06-05T15:34:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nOften, if I have made changes to my reflex app and still have it open in a browser tab, the browser continues to run the old version. Of course, if I reload it with F5 or Shift-Ctrl-R, I get the updated version. But normal users don't know about the recent deployment, so  I guess there should be a mechanism to proactively push/force a full client reload or at least inform the users that their version is outdated and they should close or reload the tab.\nIn DEV mode, this is elegantly solved. But what about PROD builds / deployments?\n\nI imagine having a property like app_version=\"0.1.0\" inside the rx.Config and having this version number baked into the client code at build time and then for example having a periodic task detects if the version running in the browser is not the same as the one currently deployed and bring up a modal \"Please hit F5 to reload\"-dialog. \n\n**To Reproduce**\nRun reflex app in PROD mode. Open App in browser. Stop reflex. Modify something in the UI and re-start in PROD mode. While the server was down, there's a warning in the client because the websocket connection is interrupted. It disappears as soon as the server is back up. When reconnecting, the client should be able to detect that the server runs a new version.\n\n**Expected behavior**\nIf technically possible, the browser should be programmatically forced to re-load all frontend code. If not, the user should be informed to do so (by hitting Shift-Ctrl-R of F5).\n\n**Additional context**\n(https://discord.com/channels/1029853095527727165/1377190240745164850)\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5394/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5341",
      "id": 3091994058,
      "node_id": "I_kwDOITROHc64TBXK",
      "number": 5341,
      "title": "get_event_triggers logic is inconsistent with the rest of the component public API. ",
      "user": {
        "login": "Lendemor",
        "id": 4015177,
        "node_id": "MDQ6VXNlcjQwMTUxNzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4015177?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lendemor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-05-26T20:14:52Z",
      "updated_at": "2025-05-31T06:27:52Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "# Repro snippet\n\n```python\nfrom reflex.components.component import Component\n\n# Custom component hierarchy for testing\nclass Child(Component):\n    \"\"\"A child component inheriting from Component.\"\"\"\n\n    tag = \"div\"\n\n    def get_event_triggers(self):\n        \"\"\"Return custom event triggers for Child.\"\"\"\n        return {\n            \"on_child_click\": rx.event.no_args_event_spec,\n            \"on_child_hover\": rx.event.no_args_event_spec,\n        }\n\n\nclass GrandChild(Child):\n    \"\"\"A grandchild component inheriting from Child.\"\"\"\n\n    tag = \"span\"\n\n    on_grandchild_special: rx.EventHandler[rx.event.no_args_event_spec]\n\n\n# Test the component hierarchy\nchild_instance = Child.create()\ngrandchild_instance = GrandChild.create()\n\nprint(\"Child event triggers:\", list(child_instance.get_event_triggers().keys()))\nprint(\n    \"GrandChild event triggers:\", list(grandchild_instance.get_event_triggers().keys())\n)\n```\n\n## Current result\n\n> Child event triggers: ['on_child_click', 'on_child_hover']\n> GrandChild event triggers: ['on_child_click', 'on_child_hover']\n\n## Expected result\n\n> Child event triggers: ['on_child_click', 'on_child_hover']\n> GrandChild event triggers: ['on_child_click', 'on_child_hover', ''on_grandchild_special']\n\n# Reasoning\n\nIn this case, child component intentionally omit the `super().get_event_triggers()` because default events are not wanted for that component.\n\nThis is the correct way to remove inherited event triggers, but it also remove the event triggers defined in the grandchild component (because 'on_grandchild_special' is usually pushed via `super().get_event_triggers()` which doesn't quite make sense.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5341/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5290",
      "id": 3060391555,
      "node_id": "I_kwDOITROHc62ad6D",
      "number": 5290,
      "title": "Cannot pass additional arguments to rx.upload on_drop handler",
      "user": {
        "login": "elliottsj",
        "id": 2177366,
        "node_id": "MDQ6VXNlcjIxNzczNjY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2177366?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/elliottsj",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-05-13T15:03:32Z",
      "updated_at": "2025-05-26T22:43:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nI want to pass an additional argument to the `on_drop` handler so that I can determine which field is uploaded into:\n\n```\non_drop=State.handle_upload(rx.upload_files(upload_id=str(field)), field),\n```\n\nHowever, an error occurs:\n\n```\nTypeError: State.handle_upload() missing 1 required positional argument: 'field'\n```\n\n**To Reproduce**\nSteps to reproduce the behavior:\n\n- Code/Link to Repo:\n\n```python\nclass State(rx.State):\n    fields: rx.Field[list[str]] = rx.field([\"field1\", \"field2\"])\n    \n    @rx.event\n    async def handle_upload(self, files: list[rx.UploadFile], field: str) -> None:\n        print(\"field\", field)\n        for file in files:\n            print(\"file\", file)\n\ndef index() -> rx.Component:\n    return rx.foreach(\n        State.fields,\n        lambda field: rx.fragment(\n            rx.text(field),\n            rx.upload(\n                rx.text(\n                    \"Drag and drop files here or click to select files\"\n                ),\n                id=str(field),\n                multiple=False,\n                max_files=1,\n                on_drop=State.handle_upload(rx.upload_files(upload_id=str(field)), field),\n            )\n        )\n    )\n```\n\n**Expected behavior**\nNo error.\n\n**Screenshots**\n\n![Image](https://github.com/user-attachments/assets/379a75eb-432d-42b5-8b61-6dcbf56ad3a0)\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.11.12\n- Reflex Version: 0.7.11\n- OS: macOS\n- Browser (Optional):\n\n**Additional context**\nRelated discussion: https://github.com/orgs/reflex-dev/discussions/5266\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5290/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5274",
      "id": 3049746743,
      "node_id": "I_kwDOITROHc61x3E3",
      "number": 5274,
      "title": "Allow to pass more SQLAlchemy Engine options to `create_engine()`",
      "user": {
        "login": "larsblumberg",
        "id": 5980316,
        "node_id": "MDQ6VXNlcjU5ODAzMTY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5980316?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/larsblumberg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-05-08T18:14:59Z",
      "updated_at": "2025-05-26T14:33:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Enhancement you want**\n\nAllow more sql engine parameters such as connection pool or max overflow size or to be set.\n\n**Which feature do you want to improve? (and what problem does it have)**\n\nCurrently `relfex.model.get_engine_args()` only reads echo und pool pre-ping options from env vars, but SQLAlchemy provides more engine options such as pool size or max overflow size.\n\n**What is the benefit of the enhancement?**\n\nThe pool size can be increased to allow for more parallel sql connections.\n\n**Show an example/usecase were the improvement are needed.**\n\nApplications with a demand for higher concurrent connections\n\n**Additional context**\n\nhttps://docs.sqlalchemy.org/en/20/core/engines.html#engine-creation-api\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5274/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5273",
      "id": 3048321805,
      "node_id": "I_kwDOITROHc61sbMN",
      "number": 5273,
      "title": "VS Code Python Debugger: losing the ability to \"step over\" in a Reflex app (>=0.7.9)",
      "user": {
        "login": "kapgit",
        "id": 27729016,
        "node_id": "MDQ6VXNlcjI3NzI5MDE2",
        "avatar_url": "https://avatars.githubusercontent.com/u/27729016?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kapgit",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        },
        "1": {
          "id": 7507248755,
          "node_id": "LA_kwDOITROHc8AAAABv3eGcw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/workaround%20available",
          "name": "workaround available",
          "color": "E3CF20",
          "default": false,
          "description": ""
        },
        "2": {
          "id": 7507304446,
          "node_id": "LA_kwDOITROHc8AAAABv3hf_g",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/upstream",
          "name": "upstream",
          "color": "721089",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-05-08T09:06:19Z",
      "updated_at": "2025-05-16T18:34:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nIn VS Code Python Debugger, losing the ability to \"step over\" in a Reflex app (>=0.7.9). \"Step over\" (`F10`) behaves like \"Continue\" (`F5`)\n\n**To Reproduce**\n\nFirst setup the environment:\n\n1. Install VS Code (tested on Windows 10 Pro)\n2. In VS Code, \n\n    1. install the following extensions:\n\n        - Dev Containers (`ms-vscode-remote.remote-containers`)\n        - Remote - SSH (`ms-vscode-remote.remote-ssh`) - needed in my case to connect from Windows to a Linux host; probably not needed if developing on Linux \n        - Remote Explorer (`ms-vscode.remote-explorer`) - needed in my case to connect from Windows to a Linux host; probably not needed if developing on Linux\n\n    2. Create a dev container for python 3.12.10 (see `devcontainer.json` below)\n    3. Create a VS Code debug configuration (see `launch.json` below).\n    4. Start the dev container and open a terminal in the dev container\n    5. `pip install -U pip` \n    6. `pip install reflex`\n    7. `reflex init`\n    8. Create the Reflex app as `test/test.py` (see code below)\n\nTo reproduce the failure:\n\n1. `pip install 'reflex>=0.7.9'`\n2. Set a breakpoint on line 8 in test.py (see below) \n3. Start debugging using the launch.json configuration\n4. In the Reflex app, click on the 'Increment' button. The debugger stops on line 8\n5. In VS Code, click on \"Step over\" (F10) to step over to line 9\n6. **FAILURE: VS Code DOES NOT stop on line 9, but continues the execution of the Reflex app**\n\nHowever, \"step over\" behaves as expected when using Reflex < 0.7.9: \n\n1. `pip install 'reflex<0.7.9'`\n2. Set a breakpoint on line 8 in `test/test.py` (see below) \n3. Start debugging using the `launch.json` configuration\n4. In the Reflex app, click on the 'Increment' button. The debugger stops on line 8\n5. In VS Code, click on \"Step over\" (F10) to step over to line 9\n6. **SUCCESS: now VS Code stops on line 9**\n\n**Expected behavior**\nWhen pressing \"step over\" (F10) in VS Code once the breakpoint is reached, VSC should stop on the next line (In this example: should stop on line 9 when the breakpoint is on line 8); \ninstead, VSC just continues execution without further stopping in the code.\n\n**Screenshots**\nNot applicable.\n\n**Specifics (please complete the following information):**\n\n- VS Code: 1.99.3 (user setup)\n- VS Code extensions:\n\n    - Dev Containers (`ms-vscode-remote.remote-containers` 0.409.0)\n    - Remote - SSH (`ms-vscode-remote.remote-ssh` 0.119.0)\n    - Remote Explorer (`ms-vscode.remote-explorer` 0.4.3)\n\n- Python Version: 3.12.10 (MS provided image: `mcr.microsoft.com/devcontainers/python:1-3.12-bookworm`)\n- Reflex Version: <0.7.9 (success) and >=0.7.9 (failure)\n- OS: \n\n    - development host: Windows 10 Pro (connecting through SSH to the docker host); \n    - docker host: Debian GNU/Linux 12;\n    - dev container, running on docker host: Debian GNU/Linux 12.\n\n- Browser (Optional): Brave v1.78.94\n\n**Additional context**\n\n`.devcontainer/devcontainer.json`:\n```json\n{\n\t\"name\": \"Python 3\",\n\t\"image\": \"mcr.microsoft.com/devcontainers/python:1-3.12-bookworm\"\n}\n```\n\n`.vscode/launch.json`:\n```json\n{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Reflex\",\n            \"type\": \"debugpy\",\n            \"request\": \"launch\",\n            \"module\": \"reflex\",\n            \"args\": [\n                \"run\"\n            ],\n            \"justMyCode\": false\n        }\n    ]\n}\n```\n\n`test/test.py` (https://reflex.dev/docs/getting-started/introduction/, with additional `self.count += 1` to better illustrate the \"step over\" issue):\n```python\nimport reflex as rx\n\n\nclass State(rx.State):\n    count: int = 0\n\n    def increment(self):\n        self.count += 1 # LINE 8 <- Set a breakpoint here\n        self.count += 1\n        self.count += 1\n        self.count += 1\n        self.count += 1\n\n    def decrement(self):\n        self.count -= 1\n\n\ndef index():\n    return rx.hstack(\n        rx.button(\n            \"Decrement\",\n            color_scheme=\"ruby\",\n            on_click=State.decrement,\n        ),\n        rx.heading(State.count, font_size=\"2em\"),\n        rx.button(\n            \"Increment\",\n            color_scheme=\"grass\",\n            on_click=State.increment,\n        ),\n        spacing=\"4\",\n    )\n\n\napp = rx.App()\napp.add_page(index)\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5273/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5220",
      "id": 3032053588,
      "node_id": "I_kwDOITROHc60uXdU",
      "number": 5220,
      "title": "Optimize lifespan middleware",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-04-30T17:54:15Z",
      "updated_at": "2025-10-15T05:37:08Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nInstead of creating a new \"top_level_asgi\" Starlette instance to handle the lifespan tasks after applying `api_transformer`, we could use a lighterweight and more generic middleware at the top level who's only purpose in life is to handle the lifespan.\n\nRelated to #5218 \n\nThe current fix is general and workable, but not efficient as it could be.\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13\n- Reflex Version: 0.7.9",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5220/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5216",
      "id": 3030402360,
      "node_id": "I_kwDOITROHc60oEU4",
      "number": 5216,
      "title": "`rx.form.control` usage can trigger an infinite loop in the frontend trying to `reconnectPassiveEffects`",
      "user": {
        "login": "tartansandal",
        "id": 3327775,
        "node_id": "MDQ6VXNlcjMzMjc3NzU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3327775?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tartansandal",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-04-30T07:30:34Z",
      "updated_at": "2025-04-30T18:50:06Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\n\nI discovered a reasonable seeming using of `rx.form.control` that triggers an infinite loop while attempting to `reconnectPassiveEffects` in the frontend.\n\nThe usage involves an `input` field where the value is control by a state **and** the page containing the form requires different state to be hydrated.\n\n**To Reproduce**\n\nHere's a minimal app to reproduce the issue and (possibly) isolate `form.control` as the culprit: \n\n```python\nimport reflex as rx\n\n\nclass GlobalState(rx.State):  # noqa: D101\n    pass\n\n\nclass FormState(rx.State):  # noqa: D101\n    estimate: rx.Field[str] = rx.field(\"\")\n\n    @rx.event\n    def set_estimate(self, value: str):  # noqa: D102\n        self.estimate = value\n\n    @classmethod\n    def bad_widget(cls):  # noqa: D102\n        return rx.form.field(\n            rx.form.control(\n                rx.input(\n                    value=cls.estimate,\n                    on_change=cls.set_estimate,\n                ),\n                as_child=True,\n            ),\n        )\n\n    @classmethod\n    def good_widget(cls):  # noqa: D102\n        return rx.form.field(\n            rx.input(\n                value=cls.estimate,\n                on_change=cls.set_estimate,\n            ),\n        )\n\n\n@rx.page(route=\"/\")\ndef page():  # noqa: D103\n    return rx.fragment(\n        rx.cond(\n            GlobalState.is_hydrated,\n            rx.form(\n                FormState.bad_widget(),\n                # FormState.good_widget(),\n            ),\n            rx.spinner(),\n        )\n    )\n\n\napp = rx.App()\n``` \n\nUsing the `bad_widget()` causes the frontend to generate the following exception:\n\n```\n[Reflex Frontend Exception]\n TypeError: control.addEventListener is not a function\n    at eval \n(webpack-internal:///(pages-dir-browser)/./node_modules/@radix-ui/react-form/dist/index.mjs:256:17)\n    at react-stack-bottom-frame \n(webpack-internal:///(pages-dir-browser)/./node_modules/react-dom/cjs/react-dom-client.development.j\ns:22510:20)\n    at runWithFiberInDEV \n(webpack-internal:///(pages-dir-browser)/./node_modules/react-dom/cjs/react-dom-client.development.j\ns:544:16)\n    at commitHookEffectListMount \n(webpack-internal:///(pages-dir-browser)/./node_modules/react-dom/cjs/react-dom-client.development.j\ns:10759:29)\n    at commitHookPassiveMountEffects \n(webpack-internal:///(pages-dir-browser)/./node_modules/react-dom/cjs/react-dom-client.development.j\ns:10879:11)\n    at commitPassiveMountOnFiber \n(webpack-internal:///(pages-dir-browser)/./node_modules/react-dom/cjs/react-dom-client.development.j\ns:12654:13)\n    at recursivelyTraversePassiveMountEffects \n(webpack-internal:///(pages-dir-browser)/./node_modules/react-dom/cjs/react-dom-client.development.j\ns:12628:11)\n    at commitPassiveMountOnFiber \n(webpack-internal:///(pages-dir-browser)/./node_modules/react-dom/cjs/react-dom-client.development.j\ns:12756:11)\n    at recursivelyTraversePassiveMountEffects \n(webpack-internal:///(pages-dir-browser)/./node_modules/react-dom/cjs/react-dom-client.development.j\ns:12628:11)\n    at commitPassiveMountOnFiber \n...\n```\n\nRepeating for several pages until (I think) the stack depth protections kick in.\n\nThe frontend exception gives no indication of what the issue is or how to resolve it.\n \nSwitching to the `good_widget()` which does not use `form.control`, renders the page without error.\n\n**Expected behavior**\n\nI would expect `rx.form.control` to either not cause this issue or raise a warning if this usage was problematic.\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13\n- Reflex Version: 0.7.8\n- OS: Linux (Fedora 42)\n- Browser (Optional): Chrome\n\n**Additional context**\n\nThe usage may seem obscure, and a simple fix is to just not use `form.control`, however the issue was discovered the context of a much larger and more complex app, and tracking down a fix took a very long time.  😅 \n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5216/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5199",
      "id": 3027631078,
      "node_id": "I_kwDOITROHc60dfvm",
      "number": 5199,
      "title": "Python 3.14 compatibility issue: Boolean negation using ~ operator will break due to __invert__ deprecation",
      "user": {
        "login": "ebonura-fastly",
        "id": 71339062,
        "node_id": "MDQ6VXNlcjcxMzM5MDYy",
        "avatar_url": "https://avatars.githubusercontent.com/u/71339062?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ebonura-fastly",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474964,
          "node_id": "LA_kwDOITROHc8AAAABGT421A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/documentation",
          "name": "documentation",
          "color": "89BFF8",
          "default": true,
          "description": "Improvements or additions to documentation"
        },
        "1": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-04-29T09:18:53Z",
      "updated_at": "2025-05-02T18:25:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nReflex's requirement to use the `~` operator (invert) for negating boolean vars conflicts with Python 3.14's deprecation of the `__invert__` method for booleans. This creates a catch-22 where:\n1. Reflex requires using `~` for negating boolean vars in conditions\n2. Python 3.14 will throw an error when using `~` on booleans\n3. Reflex explicitly prevents using `not` which is the Python-recommended alternative\n\n**To Reproduce**\nSteps to reproduce the behavior:\n- Code:\n```python\nrx.button(\n    \"Example Button\",\n    background=rx.cond(\n        ~State.is_template_mode,  # Using ~ as recommended by Reflex\n        \"var(--blue-4)\",\n        \"transparent\",\n    ),\n)\n```\n\n**Expected behavior**\nPython 3.14 compatibility without breaking existing Reflex applications. Either:\n1. Reflex should support the Python-recommended `not` operator for boolean negation, or\n2. Provide an alternative method for negating boolean vars that doesn't rely on the deprecated `__invert__` method\n\n**Screenshots**\nPylance warning:\n```\nThe method \"__invert__\" in class \"bool\" is deprecated   Will throw an error in Python 3.14. Use `not` for logical negation of bools instead.\n```\n\nError when trying to use `not` as suggested:\n```\nreflex.utils.exceptions.VarTypeError: Cannot convert Var 'reflex___state____state.is_template_mode' to bool for use with `if`, `and`, `or`, and `not`. Instead use `rx.cond` and bitwise operators `&` (and), `|` (or), `~` (invert).\n```\n\n**Specifics (please complete the following information):**\n- Python Version: 3.12.2 (but issue will affect Python 3.14+)\n- Reflex Version: 0.7.9 (also confirmed in 0.7.5)\n- OS: MacOS\n\n**Additional context**\nThis is a forward-compatibility issue that will affect all Reflex applications when Python 3.14 is released. The deprecation warning is already appearing in current Python versions with Pylance. This needs to be addressed to ensure Reflex applications continue to work when Python 3.14 becomes widely used.\n\nI just wanted to put this under your radar. You may already have test coverage for this scenario, but I thought it was important to bring to your attention since it creates a conflict between Reflex's current API requirements and Python's future behavior.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5199/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5168",
      "id": 3015346384,
      "node_id": "I_kwDOITROHc6zuojQ",
      "number": 5168,
      "title": "Unify generic frontend/backend exception handler API",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "adhami3310",
        "id": 27952765,
        "node_id": "MDQ6VXNlcjI3OTUyNzY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adhami3310",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "adhami3310",
          "id": 27952765,
          "node_id": "MDQ6VXNlcjI3OTUyNzY1",
          "avatar_url": "https://avatars.githubusercontent.com/u/27952765?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/adhami3310",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 2,
      "created_at": "2025-04-23T21:59:02Z",
      "updated_at": "2025-05-26T01:01:58Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nCurrently `rx.App` accepts `frontend_exception_handler` and `backend_exception_handler` to customize how the app responds to uncaught exceptions.\n\nThere are a few problems:\n* The exception handler has no way of accessing the state of the client that caused the exception\n* The exception handler chaining other events is inconsistent (frontend never, backend only when caught in State -- not when caught in App)\n\n**Expected behavior**\n`frontend_exception_handler` and `backend_exception_handler` may either be a plain function (with existing validation) or an EventHandler / EventSpec.\n\nIf an EventHandler / EventSpec is provided, it will be processed directly in the same event context as the original exception, using `State.process`. The state associated with the event handler and the token will be used. Any updates will be yielded to the frontend including chained events.\n\nIf a plain function is used, it must NOT return anything. Chaining will no longer be permitted from plain functions. If you want to chain, then you must pass an EventHandler -- this will raise a warning until 0.8.0 for backend handlers.\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13\n- Reflex Version: 0.7.8",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5168/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5141",
      "id": 3001896585,
      "node_id": "I_kwDOITROHc6y7U6J",
      "number": 5141,
      "title": "Allow calling background tasks from unit tests",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-04-17T09:06:52Z",
      "updated_at": "2025-04-17T09:06:59Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5141/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5130",
      "id": 2995409609,
      "node_id": "I_kwDOITROHc6yilLJ",
      "number": 5130,
      "title": "[BUG] Infinite redirect loop when set frontend_path in rxconfig.py",
      "user": {
        "login": "trungkien210493",
        "id": 43126932,
        "node_id": "MDQ6VXNlcjQzMTI2OTMy",
        "avatar_url": "https://avatars.githubusercontent.com/u/43126932?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/trungkien210493",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-04-15T07:14:47Z",
      "updated_at": "2025-08-12T09:50:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nWhen I set frontend_path (e.g. /app) in rxconfig and try to open a non-existent endpoint. It show the 404 page and infinite redirect loop\n\n**To Reproduce**\nSteps to reproduce the behavior:\n\n- Create new project by reflex init\n- Add frontend_path to rxconfig\n- Start with: reflex run\n\n**Expected behavior**\nIt should show the 404 page and does not redirect as frontend_path is None.\n\n**Screenshots**\n\n![Image](https://github.com/user-attachments/assets/47f3ba7c-7be7-4d95-9e1b-345c90283bf6)\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.12.8\n- Reflex Version: 0.7.5\n- OS: Pop! OS\n- Browser (Optional): Firefox\n\n**Additional context**\nAdd any other context about the problem here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5130/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5114",
      "id": 2987233311,
      "node_id": "I_kwDOITROHc6yDZAf",
      "number": 5114,
      "title": "[BUILD] `reflex component build` -- module not found error -- reflex 0.7.6+",
      "user": {
        "login": "TimChild",
        "id": 48571510,
        "node_id": "MDQ6VXNlcjQ4NTcxNTEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/48571510?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TimChild",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-04-11T00:22:51Z",
      "updated_at": "2025-11-21T03:43:29Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Describe the issue\n\nRunning `reflex component build` I'm getting `ModuleNotFoundError: No module named 'clerk_api_demo'`.\n\nOnly occurs on `0.7.6+` (including 0.8.x)\n\nAlso was occurring because of a \"scripts\" dir I had with some `.py` files in.\n\n## Expected behavior\n\nWhat should have happened?\n\nNo errors...\n\n## Steps to reproduce (if applicable)\n\n1. Try to build a reflex component that includes a demo (the standard layout) with reflex 0.7.6\n\n\n## Environment\n\n- Reflex Version: 0.7.6\n- Python Version: 3.13\n- OS: Linux\n\n\n## Thoughts on solution:\n\nSeems to be related to the `.pyi` stubs generation[^*]. Looks like you're scanning all directories at the root of the project and only skipping them if they have \"__pycache__\" in the name (custom_components.py:408).  Then deeper in you're trying to import python files (pyi_generator.py:1124).\n\nI think you either want to be more careful about filtering which dirs to scan (do you need to look in more than just \"custom_components\"?) or add a try catch on the module import (although it's probably best not to try importing files that don't have anything to do with the component, e.g. scripts that have some other purpose, just in case they are somehow in the path, and aren't set up to only run if called directly).\n\nDidn't feel comfortable submitting a PR for this, because I'm not sure what exactly the intentions are of the top level directory walk in the first place.\n\nAlso, introducing  `path.walk` in custom_components.py:407 requires python >= 3.12, whereas everything else is python >= 3.10 compatible afaik.\n\n[^*]: is stubs generation for custom components new btw? I've been wondering if it was there but hadn't got around to checking yet...",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5114/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5108",
      "id": 2982314384,
      "node_id": "I_kwDOITROHc6xwoGQ",
      "number": 5108,
      "title": "Allow custom toast message for socket disconnection errors",
      "user": {
        "login": "lcastiglione",
        "id": 44210609,
        "node_id": "MDQ6VXNlcjQ0MjEwNjA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/44210609?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lcastiglione",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-04-09T10:08:08Z",
      "updated_at": "2025-11-08T16:19:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Enhancement you want**\nA clear and concise description of what the improvement does.\n\nThe enhancement allows customizing the message displayed in the toast notification when a socket disconnection error occurs. Currently, the error message is hardcoded or generic, which limits the ability to provide more user-friendly or context-specific feedback.\n\n![Image](https://github.com/user-attachments/assets/0383c3d6-b7f4-4462-bc7b-c9e0b8788918)\n\n- Which feature do you want to improve? (and what problem does it have)\n\nThe feature to improve is the toast error notification system related to socket disconnections. The current implementation does not support editing or overriding the default error message, making it less informative or potentially confusing for end users.\n\n- What is the benefit of the enhancement?\n\nThis enhancement provides greater flexibility and control over user-facing messages. It enables developers to tailor error feedback based on the application’s context, improving UX and making debugging easier for end users.\n\n- Show an example/usecase were the improvement are needed.\n\nIn a chat application, when the socket connection fails, the current message might be: \"Socket error occurred.\"  \nWith this improvement, it can be customized to: \"Connection lost. Trying to reconnect...\" or \"You have been disconnected. Please check your internet connection.\"\n\n**Additional context**\nIt could be added as a configuration parameter in rx.App or rx.Config.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5108/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5099",
      "id": 2979119459,
      "node_id": "I_kwDOITROHc6xkcFj",
      "number": 5099,
      "title": "Web app doesn't reconnect quick enough after loosing connexion",
      "user": {
        "login": "clemlesne",
        "id": 10001945,
        "node_id": "MDQ6VXNlcjEwMDAxOTQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/10001945?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/clemlesne",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-04-08T09:07:05Z",
      "updated_at": "2025-05-30T17:25:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\n\nIf the user browser loose connection to the backend, a notification is displayed: `Cannot connect to server: websocket error`. But if the connexion technically come back few seconds after, the page keeps in this \"stopped\" state.\n\n**To Reproduce**\n\n- Open a reflex app\n- Loose connexion few secs\n- See that notification\n- Get back the connexion right after\n- See that the page stays in an errored state\n\n**Expected behavior**\n\n- The app would try quicker to reconnect (for example exponential back off caped to 5 secs, starting at 500 ms with a 1 sec timeout)\n- The app would inform that it tries to reconnect (something explicit, like `reconnection in progress`)\n\n**Context**\n\n- Python Version: v3.13\n- Reflex Version: v0.7.0\n- OS: iOS\n- Browser: Safari",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5099/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5094",
      "id": 2974586833,
      "node_id": "I_kwDOITROHc6xTJfR",
      "number": 5094,
      "title": "CSS files in custom components are deleted during build in Reflex >= 0.7.4, breaking style import",
      "user": {
        "login": "lcastiglione",
        "id": 44210609,
        "node_id": "MDQ6VXNlcjQ0MjEwNjA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/44210609?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lcastiglione",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-04-06T00:27:38Z",
      "updated_at": "2025-04-30T19:01:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**  \nSince Reflex version 0.7.4, when compiling the app, `.css` files (such as `styles.module.css`) inside the custom component folder are deleted from the `.web` folder, causing import errors in the JavaScript files that depend on them. This behavior didn’t occur in version 0.7.3.\n\n**To Reproduce**  \nSteps to reproduce the behavior:\n1. Create a custom component using a `.js` file and a corresponding `styles.module.css` file.\n2. Place them in the `assets/custom/components/ComponentName/` folder.\n3. Use the component in your app.\n4. Compile the app using Reflex version 0.7.4 or 0.7.5.\n5. Observe that the CSS file is briefly copied to `.web`, then deleted.\n6. The browser console shows an error due to the missing CSS import.\n\n- Code/Link to Repo:  \n\n```python\nfrom typing import Union\nimport reflex as rx\n\nclass DragDrop(rx.Component):\n    library = \"/public/custom/components/DragDrop/DragDrop.js\"\n    tag = \"DragDrop\"\n\n    # This parameter must be named onFileDrop in the JavaScript code\n    on_file_drop: rx.EventHandler[lambda files: [files]]\n\n    background_color: rx.Var[Union[str, rx.constants.colors.Color]]\n\ndrag_drop = DragDrop.create\n```\n\nAnd the folder structure where the component is located is as follows:\n\n```bash\nproject/\n├─ assets/\n│  ├─ custom/\n│  │  ├─ components/\n│  │  │  ├─ DragDrop/\n│  │  │  │  ├─ DragDrop.js\n│  │  │  │  ├─ styles.module.css\n```\n\n**Expected behavior**  \nThe CSS file should be preserved and properly copied to the `.web` folder during the build process, so the JavaScript component can import and apply the styles without error.\n\n**Screenshots**  \nN/A (CSS file disappears silently, causing module not found errors)\n\n**Specifics (please complete the following information):**\n- Python Version: 3.11.8  \n- Reflex Version: Working in 0.7.3, broken in 0.7.4 and 0.7.5  \n- OS: Windows 11 using WSL2 with Debian  \n- Browser (Optional): Any modern browser (error occurs during build)\n\n**Additional context**  \nTried using `add_imports()` in the custom component to manually include the CSS file, but it didn’t solve the issue. The file is still deleted after appearing momentarily in `.web`.\n\nI’m also leaving the Discord link with the answers Ask Inkeep gave me, although none of them worked for me. [Discord query link.](https://discord.com/channels/1029853095527727165/1070050045870751744/threads/1358232007812976743)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5094/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5093",
      "id": 2974279418,
      "node_id": "I_kwDOITROHc6xR-b6",
      "number": 5093,
      "title": "RecursionError in Reflex app when using Pydantic field_serializers and field_validators with rx.Model",
      "user": {
        "login": "cstromblad",
        "id": 2206621,
        "node_id": "MDQ6VXNlcjIyMDY2MjE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2206621?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/cstromblad",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-04-05T15:20:52Z",
      "updated_at": "2025-05-17T07:33:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nAttempting to run Reflex app I get some recursion error while attempting to launch the application.\n\n**To Reproduce**\nuv run reflex run\n\nI believe I've managed to narrow this down to my usage of field_serializers and field_validators. I don't understand why and not quite sure how to proceed with further debugging.\n\nWhen I comment out field_serializers and validators things run and appear to be working, but when I include them I get the recursion error. It also doesn't appear to matter which of the methods I comment out, all fail.\n\n**Code**\n```python\n    @field_serializer(\"first_seen\", \"published_on\")\n    def convert_datetime_to_string(self, date_obj: datetime):\n        return date_obj.isoformat()\n\n    @field_serializer(\"uid\")\n    def convert_uid_to_str(self, uid: UUID4):\n        return str(uid)\n\n    @field_validator(\"ai_analysis\", mode=\"before\")\n    @classmethod\n    def convert_dict_to_str(cls, analysis: dict) -> str:\n        if isinstance(analysis, dict):\n            return json.dumps(analysis)\n        return analysis\n\n    @field_validator(\"uid\", mode=\"before\")\n    @classmethod\n    def convert_str_uid_to_uuid(cls, uid: str | UUID4) -> UUID4:\n        if isinstance(uid, str):\n            return uuid.UUID(uid)\n        else:\n            return uid\n```\n\n**Expected behavior**\nI expect the app to run.\n\n**Screenshots**\n```bash\nTraceback (most recent call last):\n  File \"/path/to/project/.venv/lib/python3.12/site-packages/reflex/utils/prerequisites.py\", line 509, in compile_or_validate_app\n    compile_app()\n  File \"/path/to/project/.venv/lib/python3.12/site-packages/reflex/utils/prerequisites.py\", line 453, in compile_app\n    get_compiled_app(reload=reload, export=export)\n  File \"/path/to/project/.venv/lib/python3.12/site-packages/reflex/utils/prerequisites.py\", line 438, in get_compiled_app\n    app, app_module = get_and_validate_app(reload=reload)\n                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/path/to/project/.venv/lib/python3.12/site-packages/reflex/utils/prerequisites.py\", line 410, in get_and_validate_app\n    app_module = get_app(reload=reload)\n                 ^^^^^^^^^^^^^^^^^^^^^^\n  File \"/path/to/project/.venv/lib/python3.12/site-packages/reflex/utils/prerequisites.py\", line 377, in get_app\n    __import__(module, fromlist=(constants.CompileVars.APP,))\n  File \"/path/to/project/webapp/webapp.py\", line 8, in <module>\n    from .state import FeedState\n  File \"/path/to/project/webapp/state.py\", line 4, in <module>\n    from espresso.services.feed import FeedService\n  File \"/path/to/project/src/espresso/services/feed.py\", line 12, in <module>\n    from espresso.models.article import Article\n  File \"/path/to/project/src/espresso/models/article.py\", line 15, in <module>\n     class Article(rx.Model, table=True):\n  File \"/path/to/venv/lib/python3.12/site-packages/sqlmodel/main.py\", line 536, in __new__\n    new_cls = super().__new__(cls, name, bases, dict_used, **config_kwargs)\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/path/to/venv/lib/python3.12/site-packages/pydantic/v1/main.py\", line 221, in __new__\n    inferred = ModelField.infer(\n               ^^^^^^^^^^^^^^^^^\n  File \"/path/to/venv/lib/python3.12/site-packages/pydantic/v1/fields.py\", line 504, in infer\n    return cls(\n           ^^^^\n  File \"/path/to/venv/lib/python3.12/site-packages/pydantic/v1/fields.py\", line 434, in __init__\n    self.prepare()\n  File \"/path/to/venv/lib/python3.12/site-packages/pydantic/v1/fields.py\", line 544, in prepare\n    self._set_default_and_type()\n  File \"/path/to/venv/lib/python3.12/site-packages/pydantic/v1/fields.py\", line 568, in _set_default_and_type\n    default_value = self.get_default()\n                    ^^^^^^^^^^^^^^^^^^\n  File \"/path/to/venv/lib/python3.12/site-packages/pydantic/v1/fields.py\", line 437, in get_default\n    return smart_deepcopy(self.default) if self.default_factory is None else self.default_factory()\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/path/to/venv/lib/python3.12/site-packages/pydantic/v1/utils.py\", line 694, in smart_deepcopy\n    return deepcopy(obj)  # slowest way when we actually might need a deepcopy\n           ^^^^^^^^^^^^^\n  File \"/path/to/python/lib/python3.12/copy.py\", line 162, in deepcopy\n    y = _reconstruct(x, memo, *rv)\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/path/to/python/lib/python3.12/copy.py\", line 260, in _reconstruct\n    if hasattr(y, '__setstate__'):\n       ^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/path/to/venv/lib/python3.12/site-packages/pydantic/_internal/_decorators.py\", line 208, in __getattr__\n    return getattr(self.wrapped, __name)\n                   ^^^^^^^^^^^^\n  File \"/path/to/venv/lib/python3.12/site-packages/pydantic/_internal/_decorators.py\", line 208, in __getattr__\n    return getattr(self.wrapped, __name)\n                   ^^^^^^^^^^^^\n  File \"/path/to/venv/lib/python3.12/site-packages/pydantic/_internal/_decorators.py\", line 208, in __getattr__\n    return getattr(self.wrapped, __name)\n                   ^^^^^^^^^^^^\n  [Previous line repeated 944 more times]\nRecursionError: maximum recursion depth exceeded\n\n```\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.12.7\n- Reflex Version: 0.7.5\n- OS: Fedora 41\n- Browser (Optional): \n\n**Additional context**\nUpdate: Apologies for the incorrect title, I have managed to \"isolate\" the problem which appears to be related to field_serializers and validators.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5093/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5087",
      "id": 2970974873,
      "node_id": "I_kwDOITROHc6xFXqZ",
      "number": 5087,
      "title": "[Q] How to create cookies with dynamic `name` (name of the cookie on client side)",
      "user": {
        "login": "rozeappletree",
        "id": 45640029,
        "node_id": "MDQ6VXNlcjQ1NjQwMDI5",
        "avatar_url": "https://avatars.githubusercontent.com/u/45640029?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rozeappletree",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-04-04T00:22:41Z",
      "updated_at": "2025-04-30T19:01:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi. I am trying to create cookies using [`rx.Cookie`](https://reflex.dev/docs/api-reference/browser-storage/#rx.cookie). So far, I have **not** faced any issues with cookies that have fixed `name` parameter value while initializing `rx.Cookie` as a state variable.\n\n```py\n\n# Working code\n\nclass MyState(rx.State):\n    ....\n    x: str = rx.Cookie(\n        max_age=config.cookies_max_age,\n        name=\"x\", # fixed `name` parameter\n        secure=True,\n        same_site=\"strict\",\n        path=\"/\",\n    )\n    ....\n```\n\nBut if I try to do this with dynamic / changing cookie `name` (the name at client side), cookie keys and values are *not* being written to `document.cookie`.\n\n```py\n# Buggy code\n\nclass MyState(rx.State):\n\n    x: Optional[str] = None\n\n    def create_cookie(self, cookie_name: str) -> None:\n        # this code will run one time only (if x is `None` or if `cookie_name` doesn't exist in client side\n\n        my_cookie_name = f\"x_{cookie_name}\"\n\n        self.x: str = rx.Cookie(\n            max_age=config.cookies_max_age,\n            name=my_cookie_name ,\n            secure=True,\n            same_site=\"strict\",\n            path=\"/\",\n        )\n\n\n# Handles google login callback\nclass MyGoogleLoginCallbackHandlerState(MyState):\n    ....\n    ....\n    ....\n    \n    def handle_callback(self):\n        ....\n        ....\n        ....\n\n        if not self.x:\n            cookie_name = \"page1_cookie\" # I NEED to set different cookie name for different pages / routes  \n            self.create_cookie(cookie_name)\n       \n       self.x= jwt.encode(...)\n ```\n\nIf I use above code, I can see that jwt string is written `MyState.x` (confirmed by displaying it in `rx.Component`) but it is not being written to `document.cokkies` in the browser i.e if I reload the page, the jwt string disappears.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5087/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5078",
      "id": 2966458004,
      "node_id": "I_kwDOITROHc6w0I6U",
      "number": 5078,
      "title": "Push notifications support in PWAs",
      "user": {
        "login": "clemlesne",
        "id": 10001945,
        "node_id": "MDQ6VXNlcjEwMDAxOTQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/10001945?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/clemlesne",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-04-02T13:49:28Z",
      "updated_at": "2025-04-04T11:52:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\n\nAllow backend to push notifications to a user.\n\nIt would allow users to receive async notifications from the website.\n\nIt would be consumed in two ways by the end-user:\n\n- User opened the website in a browser, notifications are displayed in the bottom right when opening the app\n- User opened the website in a browser, accepted the “allow notifications” request, notifications are sent as native system notifications, from a background worker who send them\n- User installed the app as PWA (attach to dock, pin to start, depends to the OS), notifications are seen as system notifications plus a counter is displayed near the icon, from a service worker who send them and expose the counter\n\n**Additional context**\n\nAs PWA system integration matured, some companies are completely ditching their native app for it. Example with Basecamp (https://x.com/dhh/status/1907088525322809765).\n\n**Implementation**\n\nEach app state would have a notifications list the developer can push into with a structured object model.\n\nWhen rendering, the framework natively expose a JS service worker responsible for fetching the notifications.\n\nProtocol would be Web Push Protocol (https://developer.mozilla.org/en-US/docs/Web/API/Push_API). Web Push Python SDK is provided for example at https://github.com/web-push-libs/pywebpush.\n\nWeb Push server would be managed by the ops choice (Apple, Firebase, Microsoft, OSS, …).\n\n**Related**\n\n- https://github.com/reflex-dev/reflex/issues/3931\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5078/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5049",
      "id": 2954570484,
      "node_id": "I_kwDOITROHc6wGyr0",
      "number": 5049,
      "title": "Make it easier to exit a background task when the socket disconnects",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-03-27T22:37:47Z",
      "updated_at": "2025-04-08T18:58:54Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\nFor some use cases, I want to have an infinite loop that runs while the page is active and connected. Currently this can be accomplished via\n\n```python\n@rx.event(background=True)\nasync def my_infinite_task(self):\n        from app.app import app\n\n        task_sid = self.router.session.session_id\n\n        while task_sid == (\n            app._event_namespace.token_to_sid.get(self.router.session.client_token, None)\n        ):\n            # do stuff\n            await asyncio.sleep(5)\n\n        # do cleanup\n```\n\n- What is the purpose of the feature?\n\nI want to write that same thing as\n\n```python\n@rx.event(background=True, cancel=rx.Cancel.ON_DISCONNECT)\nasync def my_infinite_task(self):\n    try:\n        while True:\n            # do stuff\n            await asyncio.sleep(5)\n    except asyncio.CancelledError:\n        # do cleanup\n```\n\n**Additional context**\nAlthough there are more event driven ways to accomplish this (like rx.moment), this method is probably the most familiar approach (and common in llm generated code)\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5049/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5042",
      "id": 2952546161,
      "node_id": "I_kwDOITROHc6v_Edx",
      "number": 5042,
      "title": "hover_card doesn't work when the trigger is an rx.memo'd component",
      "user": {
        "login": "SheldonHolmgren",
        "id": 116484297,
        "node_id": "U_kgDOBvFoyQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/116484297?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SheldonHolmgren",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        },
        "1": {
          "id": 7507248755,
          "node_id": "LA_kwDOITROHc8AAAABv3eGcw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/workaround%20available",
          "name": "workaround available",
          "color": "E3CF20",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-03-27T11:11:44Z",
      "updated_at": "2025-04-30T19:02:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**To Reproduce**\nThis works:\n```python\n@rx.page(route=\"/test_hover/\")\ndef test_hover():\n    return rx.hover_card.root(\n        rx.hover_card.trigger(\n            rx.text(\"hover me\")\n        ),\n        rx.hover_card.content(\n            rx.text(\"Hello, world!\")\n        )\n    )\n```\n\nBut this doesn't (nothing happens when the trigger is hovered over):\n\n```python\n@rx.memo\ndef hover_trigger():\n            return rx.text(\"hover me\")\n\n@rx.page(route=\"/test_hover/\")\ndef test_hover():\n    return rx.hover_card.root(\n        rx.hover_card.trigger(\n            hover_trigger()\n        ),\n        rx.hover_card.content(\n            rx.text(\"Hello, world!\")\n        )\n    )\n```\n\nEdit: It works again if I remove the `@rx.memo` decorator.\n\n**Expected behavior**\nBoth code snippets should work the same.\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.10.15\n- Reflex Version: 0.7.2\n\n**Additional context**\nThe workaround from another issue https://github.com/reflex-dev/reflex/issues/3278#issuecomment-2109014489 doesn't work here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5042/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5035",
      "id": 2949372927,
      "node_id": "I_kwDOITROHc6vy9v_",
      "number": 5035,
      "title": "Accordion items made with foreach don't operate separately",
      "user": {
        "login": "wardy3",
        "id": 15006782,
        "node_id": "MDQ6VXNlcjE1MDA2Nzgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/15006782?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wardy3",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-03-26T12:14:45Z",
      "updated_at": "2025-03-31T22:01:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nWhen creating rx.accordion.item elements, the accordion operates as one item. This is similar to #2663 but seems to have re-appeared\n\n**To Reproduce**\nJust make an accordion.root and use foreach to make the items\n\n- Code/Link to Repo:\n\n```python\n\"\"\"Welcome to Reflex! This file outlines the steps to create a basic app.\"\"\"\n\nimport reflex as rx\n\n\ndef show_activity_no_uniq(activity: str) -> rx.Component:\n    \"\"\"Show activity as an Accordion item.\"\"\"\n    return rx.accordion.item(header=activity, content=\"activity with no uniq value\")\n\n\ndef show_activity_uniq(activity: str) -> rx.Component:\n    \"\"\"Show activity as an Accordion item but add a unique value.\"\"\"\n    return rx.accordion.item(\n        header=activity, content=\"activity with uniq value\", value=activity\n    )\n\n\nclass State(rx.State):\n    \"\"\"Basic state.\"\"\"\n\n    activity: list[str]\n\n\ndef index() -> rx.Component:\n    \"\"\"Try out Reflex stuff.\"\"\"\n    return rx.container(\n        rx.accordion.root(rx.foreach(State.activity, show_activity_no_uniq)),\n        rx.divider(),\n        rx.accordion.root(rx.foreach(State.activity, show_activity_uniq)),\n    )\n\n\napp = rx.App()\napp.add_page(index, on_load=State.set_activity([\"Activity 1\", \"Activity 2\", \"Activity 3\"]))  # pyright: ignore[reportAttributeAccessIssue]\n```\n\n**Expected behavior**\nAccordion items should operate independently \n\n**Screenshots**\n\n<img width=\"901\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/a0bba204-b5e8-4382-b3c7-a0c7f0b8feef\" />\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13.2\n- Reflex Version: 0.7.4\n- OS: Mac OS 15.3.2\n- Browser (Optional): Safari 18.3.1\n\n**Additional context**\nAdd any other context about the problem here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5035/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5002",
      "id": 2936765475,
      "node_id": "I_kwDOITROHc6vC3wj",
      "number": 5002,
      "title": "rx.select not working properly inside rx.drawer",
      "user": {
        "login": "TimChild",
        "id": 48571510,
        "node_id": "MDQ6VXNlcjQ4NTcxNTEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/48571510?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TimChild",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7507248755,
          "node_id": "LA_kwDOITROHc8AAAABv3eGcw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/workaround%20available",
          "name": "workaround available",
          "color": "E3CF20",
          "default": false,
          "description": ""
        },
        "1": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-03-20T22:13:34Z",
      "updated_at": "2025-03-26T20:37:10Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nA clear and concise description of what the bug is.\n\nSince reflex 0.7 the `rx.select` component does not work properly within an `rx.drawer` popver. The behavior has changed a few times since 0.7 (see examples below), so I'd guess it's related to the react 19 update.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n```python\nimport reflex as rx\n\n\n@rx.page(route=\"/drawer_select_issue\", title=\"Select not working in drawer\")\ndef index() -> rx.Component:\n    return rx.container(\n        rx.drawer.root(\n            rx.drawer.trigger(rx.button(\"Open Drawer\")),\n            rx.drawer.overlay(z_index=\"5\"),\n            rx.drawer.portal(\n                rx.drawer.content(\n                    rx.flex(\n                        rx.drawer.close(rx.box(rx.button(\"Close\"))),\n                        rx.select([\"a\", \"b\", \"c\"]),\n                    ),\n                    background_color=\"#FFF\",\n                    width=\"20em\",\n                ),\n            ),\n            direction=\"left\",\n        ),\n    )\n```\n\n- Code/Link to Repo:\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\nExpect the `rx.select` component to work normally within the `rx.drawer` popover.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\nThe links are short videos (unfortunately my mouse isn't captured in the videos, but in each case I try to hover over each selection before selecting one).\n\nreflex==0.7.0 -- Sometimes see a recursion error when clicking a few times on different selections.\n![Image](https://github.com/user-attachments/assets/b103451f-cdee-4551-9624-0cc4a875b942)\n\nreflex==0.7.1\nHighlighting of the select options only works the first time after the drawer is opened.\nhttps://github.com/user-attachments/assets/de94334e-d1ec-4f4f-8b65-fa1eda165fcc\n\nreflex==0.7.2 - 0.7.3\nOnly works if the very top of the selection is clicked, otherwise just blinks up for a second then disappears.\nhttps://github.com/user-attachments/assets/b88ab4a8-29d7-47b0-84c8-ca9f92c5a8aa\n\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.13\n- Reflex Version: 0.7+\n- OS: Linux\n- Browser (Optional): Firefox\n\n**Additional context**\nAdd any other context about the problem here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/5002/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4999",
      "id": 2935955646,
      "node_id": "I_kwDOITROHc6u_yC-",
      "number": 4999,
      "title": "A lot of wrong typing hints?",
      "user": {
        "login": "larsblumberg",
        "id": 5980316,
        "node_id": "MDQ6VXNlcjU5ODAzMTY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5980316?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/larsblumberg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-03-20T15:54:42Z",
      "updated_at": "2025-05-30T17:23:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nUsing a LSP server with a Reflex app gives a lot of typing errors although all code is correct.\n\n**To Reproduce**\nEnable a LSP such as [`pylsp-mypy`](https://pypi.org/project/pylsp-mypy/) in a Reflex project.\n\n- Code/Link to Repo: n/a\n\n**Expected behavior**\nLSP does not show typing errors when Relfex is used correctly.\n\n**Screenshots**\n\n![Image](https://github.com/user-attachments/assets/9b37120a-f543-47bf-88a9-8c2d49363771)\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.11\n- Reflex Version: 0.7.3\n- OS: Pop_OS\n\n**Additional context**\n\nUsing these LSP dependencies:\n\n```toml\n[tool.poetry.group.dev.dependencies]\npylsp-mypy = \">=0.7.0\"\npython-lsp-ruff = \">=2.2.2\"\npython-lsp-server = \">=1.12.2\"\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4999/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4991",
      "id": 2930156599,
      "node_id": "I_kwDOITROHc6upqQ3",
      "number": 4991,
      "title": "Calling background events from other background events and events",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-03-19T01:08:06Z",
      "updated_at": "2025-03-19T01:26:15Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\nA clear and concise description of what the features does.\n\nYou would technically get any parallelism (We may want to just through warning about this) but this is a common use case people would want\n\n- What is the purpose of the feature?\n\n- Show an example / use cases for the new feature.\n\n```python \nclass LandingState(rx.State):\n     .... \n\n    @rx.event(background=true)\n    def mark_reminder_read(self, reminder_id: str):\n        ...\n\n    @rx.event(background=true)\n    def toggle_reminder_modal(self):\n        await  LandingState.mark_reminder_read(reminder_id= \"test\")\n\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4991/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4969",
      "id": 2922266617,
      "node_id": "I_kwDOITROHc6uLj_5",
      "number": 4969,
      "title": "CRUD Example",
      "user": {
        "login": "GirishKumarSharma",
        "id": 8468582,
        "node_id": "MDQ6VXNlcjg0Njg1ODI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8468582?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/GirishKumarSharma",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-03-15T16:34:48Z",
      "updated_at": "2025-03-31T13:03:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I am looking a full fledged CRUD (Add/Delete/Update/Next/Previous/Search) records with any database in reflex. The repository should have all dependencies and a very cool example using reflex power. In the example, there should be use of text box, combo box, check box, option buttons etc. I don't know how good/right I am asking here but if you got my idea what I am asking for, I hope we can have in few hour/days for sure!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4969/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4955",
      "id": 2914842507,
      "node_id": "I_kwDOITROHc6tvPeL",
      "number": 4955,
      "title": "Better Error Message for Invalid Colors",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        },
        "1": {
          "id": 5857676110,
          "node_id": "LA_kwDOITROHc8AAAABXSULTg",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/error%20message",
          "name": "error message",
          "color": "C2377C",
          "default": false,
          "description": "Improve error message"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-12T18:33:50Z",
      "updated_at": "2025-03-12T18:34:10Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "If an invalid color is passed into a color prop throw an invalid color trackback \n\nhttps://developer.mozilla.org/en-US/docs/Web/CSS/named-color\n\nPlotly has quite a nice error message\n\n```\nValueError: \n    Invalid value of type 'builtins.str' received for the 'paper_bgcolor' property of layout\n        Received value: 'transparent'\n\n    The 'paper_bgcolor' property is a color and may be specified as:\n      - A hex string (e.g. '#ff0000')\n      - An rgb/rgba string (e.g. 'rgb(255,0,0)')\n      - An hsl/hsla string (e.g. 'hsl(0,100%,50%)')\n      - An hsv/hsva string (e.g. 'hsv(0,100%,100%)')\n      - A named CSS color:\n            aliceblue, antiquewhite, aqua, aquamarine, azure,\n            beige, bisque, black, blanchedalmond, blue,\n            blueviolet, brown, burlywood, cadetblue,\n            chartreuse, chocolate, coral, cornflowerblue,\n            cornsilk, crimson, cyan, darkblue, darkcyan,\n            darkgoldenrod, darkgray, darkgrey, darkgreen,\n            darkkhaki, darkmagenta, darkolivegreen, darkorange,\n            darkorchid, darkred, darksalmon, darkseagreen,\n            darkslateblue, darkslategray, darkslategrey,\n            darkturquoise, darkviolet, deeppink, deepskyblue,\n            dimgray, dimgrey, dodgerblue, firebrick,\n            floralwhite, forestgreen, fuchsia, gainsboro,\n            ghostwhite, gold, goldenrod, gray, grey, green,\n            greenyellow, honeydew, hotpink, indianred, indigo,\n            ivory, khaki, lavender, lavenderblush, lawngreen,\n            lemonchiffon, lightblue, lightcoral, lightcyan,\n            lightgoldenrodyellow, lightgray, lightgrey,\n            lightgreen, lightpink, lightsalmon, lightseagreen,\n            lightskyblue, lightslategray, lightslategrey,\n            lightsteelblue, lightyellow, lime, limegreen,\n            linen, magenta, maroon, mediumaquamarine,\n            mediumblue, mediumorchid, mediumpurple,\n            mediumseagreen, mediumslateblue, mediumspringgreen,\n            mediumturquoise, mediumvioletred, midnightblue,\n            mintcream, mistyrose, moccasin, navajowhite, navy,\n            oldlace, olive, olivedrab, orange, orangered,\n            orchid, palegoldenrod, palegreen, paleturquoise,\n            palevioletred, papayawhip, peachpuff, peru, pink,\n            plum, powderblue, purple, red, rosybrown,\n            royalblue, rebeccapurple, saddlebrown, salmon,\n            sandybrown, seagreen, seashell, sienna, silver,\n            skyblue, slateblue, slategray, slategrey, snow,\n            springgreen, steelblue, tan, teal, thistle, tomato,\n            turquoise, violet, wheat, white, whitesmoke,\n            yellow, yellowgreen\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4955/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4947",
      "id": 2912064369,
      "node_id": "I_kwDOITROHc6tkpNx",
      "number": 4947,
      "title": "AttributeError: type object 'StateProxy' has no attribute 'my_event_handler'",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-03-11T22:58:36Z",
      "updated_at": "2025-09-12T20:55:19Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nIn a background task, `type(self)` cannot be used for chaining events\n\n**WORKAROUND**\n\nUsing `self.__class__` seems to work for now!\n\n**To Reproduce**\n```python\nimport reflex as rx\n\nclass State(rx.State):\n        event_order: list[str] = []\n\n        @rx.event\n        def event_arg(self, arg):\n            self.event_order.append(f\"event_arg:{arg}\")\n\n        @rx.event(background=True)\n        async def yield_chain_referential_background(self):\n            async with self:\n                self.event_order.append(\"yield_chain_referential_background\")\n            yield type(self).event_arg(4)\n            yield type(self).event_arg(5)\n            yield type(self).event_arg(6)\n\napp = rx.App()\napp.add_page(lambda: rx.text(State.event_order.to_string()), route=\"/\", on_load=State.yield_chain_referential_background)\n```\n\n**Expected behavior**\nChaining the event from a background event with `type(self)` works like a normal event.\n\n**Specifics (please complete the following information):**\n - Python Version: 3.13\n - Reflex Version: 0.7.1",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4947/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4936",
      "id": 2909194164,
      "node_id": "I_kwDOITROHc6tZse0",
      "number": 4936,
      "title": "MiddlewareMixin._preprocess is not called when processing upload requests",
      "user": {
        "login": "n0r1z0",
        "id": 176360068,
        "node_id": "U_kgDOCoMKhA",
        "avatar_url": "https://avatars.githubusercontent.com/u/176360068?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/n0r1z0",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-11T05:37:06Z",
      "updated_at": "2025-03-11T16:51:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nBoth `MiddlewareMixin._preprocess ` and `MiddlewareMixin._postprocess` are called when processing events.\nhttps://github.com/reflex-dev/reflex/blob/5c8104ff5bdc6c39f5f2ef499365331f1a2af541/reflex/app.py#L1616-L1617\nhttps://github.com/reflex-dev/reflex/blob/5c8104ff5bdc6c39f5f2ef499365331f1a2af541/reflex/app.py#L1631-L1632\nhttps://github.com/reflex-dev/reflex/blob/5c8104ff5bdc6c39f5f2ef499365331f1a2af541/reflex/app.py#L1449-L1450\n\nOn the other hand, only `MiddlewareMixin._postprocess` is called when processing upload requests.\nhttps://github.com/reflex-dev/reflex/blob/5c8104ff5bdc6c39f5f2ef499365331f1a2af541/reflex/app.py#L1795\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4936/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4927",
      "id": 2903567878,
      "node_id": "I_kwDOITROHc6tEO4G",
      "number": 4927,
      "title": "Cloud: Otel + Prometheus support",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        },
        "1": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-03-07T17:33:01Z",
      "updated_at": "2025-04-08T12:54:17Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Target Period: Q3 2025 (Stretch) \nDescription:\nInternally we use Opentelemetry (Otel) and Prometheus (metrics) to help us monitor our sites. We believe these things help all developers better understand how their app is working and ways to improve it. So we want to provide this service to our users. \nThe goal is to provide an endpoint your can export your traces to and have a UI to view them in Cloud. \nAs well as being able to enable your site to be scraped by our blackbox exporter and then allowing you to view your metrics over time and create custom dashboards.\n\nThis is a lofty goal of ours but we believe it should help provided increase visibility in to all our users apps! ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4927/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4926",
      "id": 2903567618,
      "node_id": "I_kwDOITROHc6tEO0C",
      "number": 4926,
      "title": "Cloud: Custom Roles",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        },
        "1": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T17:32:53Z",
      "updated_at": "2025-03-08T00:10:34Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Target Period: Q3 2025 \nDescription:\nAllow Team and Enterprise tier project admins to create custom roles based off permission granularity. \nThis will allow admins to create read only roles or other such roles that only have certain permissions. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4926/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4925",
      "id": 2903567566,
      "node_id": "I_kwDOITROHc6tEOzO",
      "number": 4925,
      "title": "Cloud: Custom Alerts",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        },
        "1": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T17:32:52Z",
      "updated_at": "2025-03-10T12:54:19Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Target Period: Q3 2025\nDescription:\nReflex Cloud will support custom alerts.\nWhat does this mean: \nYou will be able to create alerts based of saved log searches or metrics results. These alerts will be able to email you when it gets triggered ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4925/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4924",
      "id": 2903567461,
      "node_id": "I_kwDOITROHc6tEOxl",
      "number": 4924,
      "title": "Cloud: Improved Log Searching",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        },
        "1": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "Kastier1",
          "id": 40179067,
          "node_id": "MDQ6VXNlcjQwMTc5MDY3",
          "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Kastier1",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T17:32:49Z",
      "updated_at": "2025-03-08T00:10:33Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Target Period: Q3 2025 \nDescription:\nReflex Cloud provides logs of users applications. These logs have a very basic search capability where it does a simple string search. \nWe want provide a more structured querying language to help search logs by fields. This should help later with implimenting [Alerts](https://github.com/reflex-dev/reflex/issues/4925)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4924/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4922",
      "id": 2903555397,
      "node_id": "I_kwDOITROHc6tEL1F",
      "number": 4922,
      "title": "Strategies for Improving Hot Reload Time",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T17:26:38Z",
      "updated_at": "2025-03-08T00:10:33Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hot reload in development mode takes longer than it should, here are some ideas for reducing the time from saving the file in the editor to seeing the change in the browser:\n\n* Optimize compilation of components to JS code\n  * Instantiate components faster\n  * Roll up imports, hooks, and custom code in a single pass\n* Cache the result of unchanged pages and components",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4922/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4921",
      "id": 2903541060,
      "node_id": "I_kwDOITROHc6tEIVE",
      "number": 4921,
      "title": "Reduce External Dependencies",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-03-07T17:18:39Z",
      "updated_at": "2025-04-21T01:20:11Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Reflex has traditionally been an opinionated, \"batteries-included\" framework, that strives to provide an easy out of the box experience for new users. However, some design decisions have limited the flexibility of the framework and where it can be deployed while also increasing the maintenance burden for the development team.\n\nFor 0.8 and subsequent releases, the plan is to pare down non-critical dependencies and move features with less usage out of the core package into separate installable pieces. This will allow the team to focus more effort on keeping the core framework stable, light, and fast.\n\n## Backend Dependencies\n\n### FastAPI\n\nReflex should provide the `/_event` endpoint as a mountable ASGI app that can be used with a multitude of ASGI servers, including fastapi and sanic and others. This will allow Reflex to drop into an existing app architecture more easily.\n\n### Pydantic\n\nPydantic will remain supported by Reflex and can be used in State, however by moving to stdlib `dataclasses` based objects, the core framework will get a speed boost and be simpler to maintain and interoperate with other tools.\n\nReflex being stuck on Pydantic V1 has proven to be a maintenance burden over the past year, but fully moving everything to Pydantic V2 has not yet happened due to the framework's reliance on certain introspection and access to pydantic internals.\n\nSince the team will have to invest the time to rearchitect away from pydantic v1, it makes more sense for us to target the stable and built in dataclasses library in the process. _You'll still be able to use pydantic, including the built in support for wrapping dataclasses_\n\n### SQLModel / SQLAlchemy / Alembic\n\nUsing these libraries with Reflex will of course remain supported, but they will be decoupled from the core framework to enable users of other databases, like mongo or supabase to skip installation of dependencies they will never use. Reflex will focus on improved support for SQLAlchemy DeclarativeBase models and will provide documentation and hints for using standardized practices and tooling rather than Reflex-wrapped interfaces. This will expose downstream users to some potential churn as these libraries develop, but will move compatibility concerns from the main development team to avoid blocking users or forcing them into library upgrades or forced pins.\n\n### reflex-hosting-cli / custom component publishing\n\nSome already-existing Reflex add-ons will be removed from the base package and available as a separate installation\n\n## Frontend\n\n### NextJS\n\nNextJS is a large, powerful server-side javascript framework, of which Reflex uses a small portion. The team expects to move toward a vanilla React frontend with a customized and pared down build system with our own file-based routing.\n\n### Radix\n\nThe core component library used in Reflex has been Radix Themes, and will continue to be maintained outside of the core library, which will provide base HTML elements with tailwind support.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4921/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4920",
      "id": 2903531848,
      "node_id": "I_kwDOITROHc6tEGFI",
      "number": 4920,
      "title": "Cloud: One-Click Auth / User Management",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        },
        "1": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "Kastier1",
          "id": 40179067,
          "node_id": "MDQ6VXNlcjQwMTc5MDY3",
          "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Kastier1",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T17:13:51Z",
      "updated_at": "2025-03-08T00:10:32Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Target Period: Q2 2025 (stretch goal)\nDescription:\nReflex Cloud provides auth for its self as well as Reflex.Build. We see spots where we could improve this, but why just improve it for us! \nOur goal here is to create a unified Authentication and User Management platform that our users can use on their own applications. By just adding a few lines of standard code to your application you could have authentication enabled on your app with no headache. As well as a centralized location for you to have an admin view of all your users.\nThis is a lofty goal for us but something we are very interested in providing not only for our users but for us to use as well. \n\nKey Features:\n* Easy onboarding: one or two lines of copy paste code\n* One click auth\n* Admin portal to manage users\n* Zero headaches ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4920/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4919",
      "id": 2903528021,
      "node_id": "I_kwDOITROHc6tEFJV",
      "number": 4919,
      "title": "Cloud: Improve Billing Usage Display",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        },
        "1": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "Kastier1",
          "id": 40179067,
          "node_id": "MDQ6VXNlcjQwMTc5MDY3",
          "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Kastier1",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T17:12:06Z",
      "updated_at": "2025-03-08T00:10:32Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Target Period: Q2 2025\nDescription:\nReflex Cloud is where all the billing for both Cloud and Reflex.Build takes place. To provided an improved experience as to what a user's usage is and why is a goal. We want to provide full transparence into what we are billing so that a user is never confused.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4919/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4918",
      "id": 2903501724,
      "node_id": "I_kwDOITROHc6tD-uc",
      "number": 4918,
      "title": "Cloud: Improved Package visibility",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        },
        "1": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "Kastier1",
          "id": 40179067,
          "node_id": "MDQ6VXNlcjQwMTc5MDY3",
          "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Kastier1",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T17:00:20Z",
      "updated_at": "2025-03-08T00:10:31Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Target Period: Q2 2025\nDescription:\nReflex Cloud will display the pip packages installed as well as the apt packages installed on your running applications. \nThis will include versions. This should help users better understand the circumstancing in which their application is running in and should be them better debug and build apps.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4918/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4917",
      "id": 2903500515,
      "node_id": "I_kwDOITROHc6tD-bj",
      "number": 4917,
      "title": "Cloud: Improvements to CLI",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        },
        "1": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "Kastier1",
          "id": 40179067,
          "node_id": "MDQ6VXNlcjQwMTc5MDY3",
          "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Kastier1",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T16:59:45Z",
      "updated_at": "2025-03-08T00:10:31Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Target Period: Q2 2025\nDescription:\nReflex Cloud has a CLI `reflex cloud ...`. This CLI has a bunch of legacy code and old spider webs in it. We want to clean it up to improve the user experience as well as cut down on any weirdness that comes with old code. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4917/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4916",
      "id": 2903500061,
      "node_id": "I_kwDOITROHc6tD-Ud",
      "number": 4916,
      "title": "Cloud: Improved Integration with Reflex.Build",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        },
        "1": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "Kastier1",
          "id": 40179067,
          "node_id": "MDQ6VXNlcjQwMTc5MDY3",
          "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Kastier1",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T16:59:31Z",
      "updated_at": "2025-03-08T00:10:30Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Target Period: Q2 2025\nDescription:\nReflex Cloud and Reflex.Build current share auth. We want to expand their integration so that users can more easily build, deploy, and iterate on their applications. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4916/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4915",
      "id": 2903499395,
      "node_id": "I_kwDOITROHc6tD-KD",
      "number": 4915,
      "title": "Cloud: Support for Team and Enterprise tiers",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259512257,
          "node_id": "LA_kwDOITROHc8AAAAB7E4nwQ",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cloud",
          "name": "cloud",
          "color": "FBCA04",
          "default": false,
          "description": "https://cloud.reflex.dev/"
        },
        "1": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "Kastier1",
          "id": 40179067,
          "node_id": "MDQ6VXNlcjQwMTc5MDY3",
          "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Kastier1",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T16:59:10Z",
      "updated_at": "2025-03-08T00:10:30Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Target Period: Q2 2025\nDescription: \nReflex Cloud has support for Free and Pro Tiers. We will be expanding this support to include two new tiers:\n- Team\n- Enterprise\nThese tiers will have some additional features that Free and Pro do not, such as the ability to have team members ( collaborators ) on a Cloud project. \n\nA full list of differences shall be posted here in the future as well as being outlined on https://reflex.dev ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4915/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4894",
      "id": 2892817501,
      "node_id": "I_kwDOITROHc6sbORd",
      "number": 4894,
      "title": "Cannot pass an EventHandler through an EventHandler",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-04T03:22:19Z",
      "updated_at": "2025-03-04T03:22:22Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nIt seems trying to pass an EventHandler or EventSpec through another EventHandler as a parameter causes it to not work. Needs more investigation.\n\n**To Reproduce**\n```python\n\"\"\"Welcome to Reflex! This file outlines the steps to create a basic app.\"\"\"\n\nimport reflex as rx\n\nfrom rxconfig import config\n\n\nclass State(rx.State):\n    \"\"\"The app state.\"\"\"\n    location: str\n\n    @rx.event\n    def trigger0(self):\n        return State.trigger1(State.set_location)\n\n    @rx.event\n    def trigger1(self, callback: rx.EventHandler):\n        return State.trigger2(callback)\n\n    @rx.event\n    def trigger2(self, callback: rx.EventHandler):\n        return State.trigger3(callback)\n    \n    @rx.event\n    def trigger3(self, callback: rx.EventHandler):\n        return rx.call_script(\"window.location.href\", callback=callback)\n\n\ndef index() -> rx.Component:\n    # Welcome Page (Index)\n    return rx.container(\n        rx.color_mode.button(position=\"top-right\"),\n        rx.vstack(\n            rx.text(State.location),\n            rx.button(\"Trigger0\", on_click=State.trigger0),\n            rx.button(\"Trigger1\", on_click=State.trigger1(State.set_location)),\n            rx.button(\"Trigger2\", on_click=State.trigger2(State.set_location)),\n            rx.button(\"Trigger3\", on_click=State.trigger3(State.set_location)),\n            rx.button(\"Direct\", on_click=rx.call_script(\"window.location.href\", callback=State.set_location)),\n        ),\n        rx.logo(),\n    )\n\n\napp = rx.App()\napp.add_page(index)\n```\n\n**Expected behavior**\nAll of these buttons should cause the `window.location.href` to get set.\n\nInstead an exception is raised because the generated code references the event handler as a str.\n\n**Specifics (please complete the following information):**\n - Python Version: 3.13\n - Reflex Version: 0.7.2dev\n - OS: macOS\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4894/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4891",
      "id": 2890524216,
      "node_id": "I_kwDOITROHc6sSeY4",
      "number": 4891,
      "title": "build-in components support international languages",
      "user": {
        "login": "Walk4Muscle",
        "id": 14989270,
        "node_id": "MDQ6VXNlcjE0OTg5Mjcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/14989270?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Walk4Muscle",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-03-03T08:32:14Z",
      "updated_at": "2025-05-17T02:12:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "there are many fantasic build-in components in reflex can help us quickly build sites. But is there any way to config the language we need when using these build-in components? \nE.G.  The theme_panel appear like this, with English, is there anyother language I can choose like Chinese?\n\n![Image](https://github.com/user-attachments/assets/2af81e3e-0d68-4439-837d-d6bbb0dff127)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4891/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4865",
      "id": 2873134012,
      "node_id": "I_kwDOITROHc6rQIu8",
      "number": 4865,
      "title": "Optimize production CSS to avoid the browser to download dead code",
      "user": {
        "login": "clemlesne",
        "id": 10001945,
        "node_id": "MDQ6VXNlcjEwMDAxOTQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/10001945?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/clemlesne",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-02-23T11:54:24Z",
      "updated_at": "2025-02-23T11:54:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the enhancement you want**\n\nReduce unused rules from stylesheets and defer CSS not used to decrease bytes consumed by network activity.\n\n[PurgeCSS](https://www.npmjs.com/package/purgecss) can be used for that. Next.js is supported [out of the box](https://purgecss.com/guides/next.html#customize-postcss-configuration-next-js-9-3).\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4865/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4815",
      "id": 2850903331,
      "node_id": "I_kwDOITROHc6p7VUj",
      "number": 4815,
      "title": "Inside tabs.content tree multiselect does not get assigned values",
      "user": {
        "login": "sumanth-dhanya",
        "id": 86840115,
        "node_id": "MDQ6VXNlcjg2ODQwMTE1",
        "avatar_url": "https://avatars.githubusercontent.com/u/86840115?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sumanth-dhanya",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-02-13T12:29:36Z",
      "updated_at": "2025-05-30T17:25:48Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Describe the bug\nTabs not getting processing events correctly\n\nTo Reproduce\n\n```python\n      class TabsState(rx.State):\n          \"\"\"The app state.\"\"\"\n      \n          tab_value: str = \"test\"\n          tab_selected: str = \"\"\n      \n          @rx.event\n          def change_value(self, val: str):\n              self.tab_selected = f\"{val} clicked!\"\n              self.tab_value = val\n      \n      \n      def show_hierarchy_table_plot_tabs() -> rx.Component:\n          return rx.tabs.root(\n              rx.tabs.list(\n                  rx.tabs.trigger(\"Test\", value=\"test\"),\n              ),\n              rx.tabs.content(\n                  gpt_index4(),\n                  value=\"test\",\n              ),\n              default_value=\"test\",\n              value=TabsState.tab_value,\n              on_change=[lambda x: TabsState.change_value(x),\n                         ],\n              width=\"100%\"\n          )\n\n```\nCode/Link to Repo:\nCustom component\n\n```python\nclass DropdownTreeSelectComponent(rx.Component):\n    \"\"\"React Dropdown Tree Select wrapper.\"\"\"\n\n    library: str = \"react-dropdown-tree-select\"\n    tag: str = \"DropdownTreeSelect\"\n    is_default = True\n\n    # Props\n    data: rx.Var[Union[dict, list[dict]]] = []\n    className: rx.Var[str] = \"dropdown-tree\"\n    clear_search_on_change: rx.Var[bool] = True\n    keep_tree_on_search: rx.Var[bool] = True\n    keep_children_on_search: rx.Var[bool] = True\n    inline_search_input: rx.Var[bool] = True\n    mode: rx.Var[str] = \"multi_select\"\n    texts: rx.Var[dict] = {'placeholder': 'Select'}\n    style: dict = {}\n\n    def get_event_triggers(self) -> dict[str, Any]:\n        \"\"\"Define the event triggers for the component.\"\"\"\n        return {\n            **super().get_event_triggers(),\n            \"on_change\": lambda e0, e1: [e0, e1],\n            \"on_node_toggle\": lambda e0: [e0],\n            \"on_action\": lambda e0, e1: [e0, e1],\n        }\n\n    def add_imports(self):\n        \"\"\"Add necessary imports for the component.\"\"\"\n        return {\n            \"\": [\n                \"react-dropdown-tree-select/dist/styles.css\",\n            ]\n        }\n\n\n# Define the state for managing component interactions\nclass DropdownTreeSelectComponentState(rx.ComponentState):\n    \"\"\"State for managing DropdownTreeSelect interactions.\"\"\"\n\n    # State variables\n    current_node: Optional[dict] = None\n    selected_nodes: List[dict] | dict = []\n    action: Optional[dict] = None\n\n    @classmethod\n    def get_component(cls, *children, **props) -> rx.Component:\n        \"\"\"Create the component with its props and event handlers.\"\"\"\n        on_change = props.pop(\"on_change\", [])\n        if not isinstance(on_change, list):\n            on_change = [on_change]\n\n        on_node_toggle = props.pop(\"on_node_toggle\", [])\n        if not isinstance(on_node_toggle, list):\n            on_node_toggle = [on_node_toggle]\n\n        on_action = props.pop(\"on_action\", [])\n        if not isinstance(on_action, list):\n            on_action = [on_action]\n\n        return DropdownTreeSelectComponent.create(\n            *children,\n            data=props.get(\"data\", []),\n            className=props.get(\"className\", \"dropdown-tree\"),\n            clear_search_on_change=props.get(\"clear_search_on_change\", True),\n            keep_tree_on_search=props.get(\"keep_tree_on_search\", True),\n            keep_children_on_search=props.get(\"keep_children_on_search\", True),\n            inline_search_input=props.get(\"inline_search_input\", True),\n            mode=props.get(\"mode\", \"multi_select\"),\n            on_change=[cls.set_current_node, cls.set_selected_nodes, *on_change],\n            on_node_toggle=[cls.set_current_node, *on_node_toggle],\n            on_action=[cls.set_action, *on_action],\n            style=props.get(\"style\", {}),\n        )\n\n    @classmethod\n    def set_selected_nodes(cls, selected_nodes: Union[List[dict], dict]):\n        \"\"\"Update the selected nodes.\"\"\"\n        cls.selected_nodes = selected_nodes\n\n    @classmethod\n    def set_current_node(cls, current_node: dict):\n        \"\"\"Update the current node.\"\"\"\n        cls.current_node = current_node\n\n    @classmethod\n    def set_action(cls, action: dict):\n        \"\"\"Update the action.\"\"\"\n        cls.action = action\n\n\nclass DB4DropdownTreeSelectState(rx.State):\n    \"\"\"State to manage dropdown tree select.\"\"\"\n\n    selected_nodes: List[dict] = []\n    current_node: Optional[dict] = None\n    last_action: Optional[dict] = None\n\n    @rx.var(cache=True)\n    def selected_values(self) -> str:\n        \"\"\"Get selected values as a comma-separated string.\"\"\"\n        if len(self.selected_nodes) == 1 and self.selected_nodes[0]['label'] == 'ALL':\n            return 'All selected'\n        _collector = [i_dict['_children'] for i_dict in self.selected_nodes if '_children' in i_dict] + [\n            [i_dict['value'] for i_dict in self.selected_nodes if '_children' not in i_dict]]\n        return \", \".join(sum(_collector, []))\n\n    @rx.event\n    def set_selected_nodes(self, node: dict, nodes2: List[dict]):\n        \"\"\"Update selected nodes.\"\"\"\n        print(\"node 1 CURRENT\")\n        print(node)\n        print(\"nodes2 SELECTED\")\n        print(nodes2)\n        self.current_node = node\n        self.selected_nodes = nodes2\n\n    @rx.event\n    def set_current_node(self, node: dict):\n        \"\"\"Update the current node.\"\"\"\n        print(f\"Enter node toggle {node}\")\n        self.current_node = node\n\n    @rx.event\n    def set_action(self, action: dict):\n        \"\"\"Update the last action performed.\"\"\"\n        self.last_action = action\n\n\ndef demo_index4() -> rx.Component:\n    \"\"\"Page for the dropdown tree select demo.\"\"\"\n    o2_dropdown_tree_select = DropdownTreeSelectComponentState.create\n    return rx.container(\n        o2_dropdown_tree_select(\n            data=top_40_country_flags,\n            on_change=DB4DropdownTreeSelectState.set_selected_nodes,\n            on_node_toggle=DB4DropdownTreeSelectState.set_current_node,\n            on_action=DB4DropdownTreeSelectState.set_action,\n            inline_search_input=True,\n        ),\n        rx.text(f\"Selected values: {DB4DropdownTreeSelectState.selected_values}\"),\n    )\n\n```\nExpected behavior\nOutside of the tabs component, on different pages, the data selection view updates correctly. However, inside the tabs component, it does not update as expected.\n\nScreenshots\n![Image](https://github.com/user-attachments/assets/fa870102-3dd9-4c43-94f4-cccdfa6604e8)\n\nSpecifics (please complete the following information):\n\nPython Version: 3.12\nReflex Version: 0.7.0\nOS: Windows\nBrowser (Optional): Edge\nAdditional context\nA different multi-select (non-tree-based) works correctly, but this tree-based component fails to update when used inside the tabs.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4815/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4797",
      "id": 2844201266,
      "node_id": "I_kwDOITROHc6phxEy",
      "number": 4797,
      "title": "Support for anywidget",
      "user": {
        "login": "peekxc",
        "id": 11429028,
        "node_id": "MDQ6VXNlcjExNDI5MDI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/11429028?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/peekxc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-02-11T03:43:21Z",
      "updated_at": "2025-02-11T03:43:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Features**\nA lot of libraries (e.g. plotly, leaflet, shiny) are moving towards a standard interface for representing jupyter widgets, documented [here](https://anywidget.dev/en/afm/)\n \n\nIt would be nice if there was an `rx.anywidget` or simply `rx.widget` to the [other charts](https://reflex.dev/docs/library/graphing/other-charts/) page ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4797/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4786",
      "id": 2843103761,
      "node_id": "I_kwDOITROHc6pdlIR",
      "number": 4786,
      "title": "Tooltips Not Opening on Mobile – Missing onclick Support",
      "user": {
        "login": "sorousch9",
        "id": 78909837,
        "node_id": "MDQ6VXNlcjc4OTA5ODM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/78909837?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sorousch9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-02-10T17:14:55Z",
      "updated_at": "2025-02-11T01:21:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "#### **Describe the Bug**  \nTooltips created with `rx.tooltip()` do not open on mobile devices. Since mobile screens do not support `hover`, tooltips should at least be triggered on `click/tap`.  \n\n#### **To Reproduce**  \n1. Create a tooltip using `rx.tooltip()` as shown below:  \n   ```python\n   rx.tooltip(\n       rx.button(\"Hover over me\"),\n       content=\"This is the tooltip content.\",\n   )\n   ```\n2. Open the application on a mobile device or in a browser's mobile simulation mode.  \n3. Tap the button that has a tooltip.  \n4. Notice that the tooltip does not appear.  \n\n#### **Expected Behavior**  \nOn mobile devices, tooltips should open when tapping the trigger element (e.g., a button or an icon). Since `hover` is not possible on touchscreens, `onclick` should be supported as a fallback.  \n\n#### **Specifics (please complete the following information):**  \n- **Python Version: 3.13.1\n- **Reflex Version:0.6.8\n- **OS:WSL2\n- **Browser (Optional):All\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4786/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4783",
      "id": 2841614632,
      "node_id": "I_kwDOITROHc6pX5ko",
      "number": 4783,
      "title": "[BUG] Cannot write in dialogue modal when drawer is open",
      "user": {
        "login": "theripnono",
        "id": 119405797,
        "node_id": "U_kgDOBx385Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/119405797?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/theripnono",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-02-10T07:54:02Z",
      "updated_at": "2025-04-30T19:05:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, does anyone know why I can't write in a dialogue modal when I open from a drawer component?\n\nHere is my code:\n\n```\ndef form_field(\n    label: str, placeholder: str, type: str, name: str) -> rx.Component:\n    return rx.form.field(\n        rx.flex(\n            rx.form.label(label),\n            rx.form.control(\n                rx.input(\n                    placeholder=placeholder, type=type,\n                ),\n                as_child=True,\n            ),\n            direction=\"column\",\n            spacing=\"1\",\n        ),\n        name=name,\n        width=\"100%\",\n    )\n\n\ndef event_form() -> rx.Component:\n    return rx.card(\n        rx.flex(\n            rx.hstack(\n                rx.badge(\n                    rx.icon(tag=\"calendar-plus\", size=32),\n                    color_scheme=\"mint\",\n                    radius=\"full\",\n                    padding=\"0.65rem\",\n                ),\n                rx.vstack(\n                    rx.heading(\n                        \"Create an event\",\n                        size=\"4\",\n                        weight=\"bold\",\n                    ),\n                    rx.text(\n                        \"Fill the form to create a custom event\",\n                        size=\"2\",\n                    ),\n                    spacing=\"1\",\n                    height=\"100%\",\n                    align_items=\"start\",\n                ),\n                height=\"100%\",\n                spacing=\"4\",\n                align_items=\"center\",\n                width=\"100%\",\n            ),\n            rx.form.root(\n                rx.flex(\n                    form_field(\n                        \"Event Name\",\n                        \"Event Name\",\n                        \"text\",\n                        \"event_name\",\n                    ),\n                    rx.flex(\n                        form_field(\n                            \"Date\", \"\", \"date\", \"event_date\"\n                        ),\n                        form_field(\n                            \"Time\", \"\", \"time\", \"event_time\"\n                        ),\n                        spacing=\"3\",\n                        flex_direction=\"row\",\n                    ),\n                    form_field(\n                        \"Description\",\n                        \"Optional\",\n                        \"text\",\n                        \"description\",\n                    ),\n                    direction=\"column\",\n                    spacing=\"2\",\n                ),\n                rx.form.submit(\n                    rx.button(\"Create\"),\n                    as_child=True,\n                    width=\"100%\",\n                ),\n                on_submit=lambda form_data: rx.window_alert(\n                    form_data.to_string()\n                ),\n                reset_on_submit=False,\n            ),\n            width=\"100%\",\n            direction=\"column\",\n            spacing=\"4\",\n        ),\n        size=\"3\",\n    )\n#####\n\n\ndef open_dialog(button:rx.Component,date:str)->rx.Component:\n\n    return rx.dialog.root(\n            rx.dialog.trigger(button),\n            rx.dialog.content(\n                event_form()\n                ),\n            # rx.dialog.close(\n            #     rx.button(\"Add\", size=\"3\",color_scheme=\"mint\",padding_top=\"2px\"),\n            # ),\n            spacing=\"3\",\n            justify=\"end\",\n        ),\n\n\ndef open_drawer(link:rx.Component, day:int)->rx.Component:\n\n    render_text = rx.text(f'{day}-{State.current_month}-{State.current_year}')\n\n    return rx.drawer.root(\n                rx.drawer.trigger(link),\n                rx.drawer.overlay(z_index=\"5\"),\n                rx.drawer.portal(\n                    rx.drawer.content(                 \n                            rx.vstack(\n                                rx.box(\n                                    rx.drawer.close(\n                                        rx.button(\"Close\",color_scheme=\"mint\")\n                                    )\n                                ),\n                                rx.box(open_dialog(rx.button(\n                                                    \"+ Add Schedule\",\n                                                    color_scheme=\"mint\",\n                                                    width=\"10em\"),render_text)\n                                    ),\n                            ),\n      \n                        top=\"auto\",\n                        right=\"auto\",\n                        height=\"100%\",\n                        width=\"15em\",\n                        padding=\"2em\",\n                        background_color=\"#F7F9F2\"\n                    ),\n                    \n                ),\n                direction=\"left\",\n            )\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4783/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4770",
      "id": 2837364804,
      "node_id": "I_kwDOITROHc6pHsBE",
      "number": 4770,
      "title": "Add a way to disable hydration Errors",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-02-07T06:39:36Z",
      "updated_at": "2025-02-07T06:41:34Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Largely these error are out of the control of the user\n\nif they are something like p in a p tag we should catch this by setting invalid children in the component so ideally no one hits this \n\n\nSome wrap like so - \n```js\nimport React from 'react';\n\nfunction MyComponent() {\n  return (\n    <div suppressHydrationWarning={true}>\n      {/* Content that might cause hydration mismatch */}\n    </div>\n  );\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4770/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4757",
      "id": 2832833845,
      "node_id": "I_kwDOITROHc6o2Z01",
      "number": 4757,
      "title": "External redirects in background events are not working in Safari",
      "user": {
        "login": "clemlesne",
        "id": 10001945,
        "node_id": "MDQ6VXNlcjEwMDAxOTQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/10001945?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/clemlesne",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-02-05T12:37:41Z",
      "updated_at": "2025-03-12T01:22:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\n\nWith Safari and background events, external redirects never open a new tab. It is working on all other Chromium based browsers.\n\n**Expected behavior**\n\nA tab opens.\n\n**Specifics**\n\n- Python Version: 3.13\n- Reflex Version: 0.6.8\n- OS: Alpine Linux\n- Browser (Optional): Safari\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4757/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4748",
      "id": 2831098208,
      "node_id": "I_kwDOITROHc6ovyFg",
      "number": 4748,
      "title": "Rx Vars can return empty state, framework fails to force page reload",
      "user": {
        "login": "scottpersinger",
        "id": 80947,
        "node_id": "MDQ6VXNlcjgwOTQ3",
        "avatar_url": "https://avatars.githubusercontent.com/u/80947?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/scottpersinger",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-02-04T19:19:18Z",
      "updated_at": "2025-02-04T21:00:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nThere is logic to detect if a state has expired from Redis when handling an event, and to force a page reload in that case:\n\nhttps://github.com/reflex-dev/reflex/blob/c3ac051bbb4098b7cebb7cd269fc961fb7155dda/reflex/app.py#L1403\n\nHowever this logic is not triggered simply from rendering an @rx.var like this:\n\n```\n    @rx.var\n    def user_can_edit_agent(self) -> bool:\n        return self.editable\n```\n\nSo it can happen that the state which defines `editable` has expired, been recreated blank, and the frontend has re-rendered that rx.var but now it is showing blank data (in this case the \"edit\" panel disappears).\n\nVarious frontend events like clicking a tab can force the rx.var re-render (that is the case for our app).\n\n**To Reproduce**\nRender an rx.var inside a tabbed component. Now expire the Redis state backing the Var and then change the tab view so that Var value is re-rendered. Now it will show the initial state.\n\n**Expected behavior**\nIt seems like forcing the page reload is the only \"fix\" for the expired state. Ultimately it seems like the framework should force reload pages _before_ their states expire if the tab is still open. Or that could be an electable behavior.\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4748/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4735",
      "id": 2828334842,
      "node_id": "I_kwDOITROHc6olPb6",
      "number": 4735,
      "title": "Some events are missed when chained",
      "user": {
        "login": "clemlesne",
        "id": 10001945,
        "node_id": "MDQ6VXNlcjEwMDAxOTQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/10001945?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/clemlesne",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        },
        "1": {
          "id": 7511042430,
          "node_id": "LA_kwDOITROHc8AAAABv7Fpfg",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/cannot%20repro",
          "name": "cannot repro",
          "color": "000000",
          "default": false,
          "description": "Need an example that can be copy/pasted to reproduce the issue immediately"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-02-03T19:20:57Z",
      "updated_at": "2025-05-02T18:30:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug:**\n\nWhen chaining events, some are missed.\n\nIt is notably often when:\n\n- User opens multiple tabs in a short time (multiple /sec)\n- User navigates across multiple pages quickly (3-10 secs /page) which are all using chained events\n\n**To reproduce:**\n\nI didn't yet have a reproduction.\n\n**Expected behavior:**\n\nEvents are properly loading.\n\n**Specifics:**\n\n- Python Version: 3.13\n- Reflex Version: 0.6.8\n- OS: Alpine Linux 3.21\n- Browser (Optional): Safari 18.3 (20620.2.4.11.5)\n\n**Related:**\n\n- https://github.com/reflex-dev/reflex/issues/1309\n- https://github.com/reflex-dev/reflex/issues/1422\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4735/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4733",
      "id": 2827945184,
      "node_id": "I_kwDOITROHc6ojwTg",
      "number": 4733,
      "title": "Make `reflex-hosting-cli` optional, to lower the dependency count on standalone installs",
      "user": {
        "login": "clemlesne",
        "id": 10001945,
        "node_id": "MDQ6VXNlcjEwMDAxOTQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/10001945?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/clemlesne",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-02-03T16:10:37Z",
      "updated_at": "2025-07-22T00:38:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the enhancement you want**\n\nIt would be better as a dependency management perspective to make `reflex-hosting-cli` optional in the deps.\n\nAll Reflex PaaS/SaaS dependencies could go into an `hosting` optional dependency group, we could install with `reflex[hosting]`.\n\nAs a context, as of v0.1.34, `reflex-hosting-cli` has those dependencies:\n\n- charset-normalizer\n- httpx\n- platformdirs\n- pydantic\n- pyyaml (not shared with `reflex`)\n- rich (not shared with `reflex`)\n- tabulate (not shared with `reflex`)\n- typer\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4733/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4713",
      "id": 2818519167,
      "node_id": "I_kwDOITROHc6n_zB_",
      "number": 4713,
      "title": "Toast Not Visible When Dialog is Open",
      "user": {
        "login": "sorousch9",
        "id": 78909837,
        "node_id": "MDQ6VXNlcjc4OTA5ODM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/78909837?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sorousch9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-01-29T15:19:21Z",
      "updated_at": "2025-01-29T21:12:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nWhen an alert_dialog is open in Reflex, the toast message is not visible. The toast should appear above all elements, but it seems to be blocked by the dialog overlay.\n\n**To Reproduce**\n\n> Open the alert dialog by clicking the button.\n> Click the \"Show Toast\" button inside the dialog.\n> The toast should appear, but it is not visible.\n\n**Expected behavior**\nThe toast should appear above the alert dialog and remain visible.\n\n```python\nimport reflex as rx\n\ndef app():\n    return rx.container(\n        rx.toast.provider(),\n        rx.alert_dialog.root(\n            rx.alert_dialog.trigger(\n                rx.button(\"Test Toast and Alert Dialog\"),\n            ),\n            rx.alert_dialog.content(\n                rx.alert_dialog.title(\"Revoke access\"),\n                rx.alert_dialog.description(\n                    \"Are you sure? This application will no longer be accessible and any existing sessions will be expired.\",\n                ),\n                rx.flex(\n                    rx.alert_dialog.cancel(\n                        rx.button(\"Cancel\"),\n                    ),\n                    rx.button(\n                        \"Show Toast\",\n                        on_click=rx.toast(\n                            \"Hello, World!\", duration=5000, close_button=True\n                        ),\n                    ),\n                    spacing=\"3\",\n                ),\n            ),\n        ),\n    )\n\napp = rx.App()\napp.add_page(app)\n\n```\n\n**Specifics (please complete the following information):**\n - Python Version: 3.13.1\n - Reflex Version:6.8\n - OS: wsl2\n - Browser (Optional):\n \n**Additional context**\nAdd any other context about the problem here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4713/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4693",
      "id": 2811371873,
      "node_id": "I_kwDOITROHc6nkiFh",
      "number": 4693,
      "title": "on page unload event",
      "user": {
        "login": "moatboy",
        "id": 193733147,
        "node_id": "U_kgDOC4wiGw",
        "avatar_url": "https://avatars.githubusercontent.com/u/193733147?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/moatboy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-01-26T07:28:40Z",
      "updated_at": "2025-06-10T11:07:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "In react there is a `beforeunload` event which can be triggered when user closes browser window, how to do this in reflex? Went through `reflex/page.py`...would it be added here?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4693/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4643",
      "id": 2790678721,
      "node_id": "I_kwDOITROHc6mVmDB",
      "number": 4643,
      "title": "FunctionStringVar generates JavaScript exception when provided via a State attribute ",
      "user": {
        "login": "bertbarabas",
        "id": 17627242,
        "node_id": "MDQ6VXNlcjE3NjI3MjQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17627242?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bertbarabas",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-01-15T19:36:36Z",
      "updated_at": "2025-01-30T18:42:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nWhen using a FunctionStringVar to provide a function to the value_formatter of an ag_grid column_def via a **State attribute**, the value_formatter is ignored and there is a JavaScript exception of:\r\n\r\nAG Grid: value should be either a string or a function\r\n\r\nIf the column_def containing the value_formatter of type FunctionStringVar is instead defined directly in the ag_grid configuration, then the exception doesn't occur and the value_formatter works.\r\n\r\n**To Reproduce**\r\nJust run the following code: \r\n[test_reflex_ag_grid.zip](https://github.com/user-attachments/files/18429450/test_reflex_ag_grid.zip)\r\n\r\nThere is a button called \"Set columns\" which sets the state var and causes the columns to be displayed after the ag_grid is built. You'll see the JavaScript exception in the Browser and you'll note the formatting didn't get applied.\r\n\r\n**Expected behavior**\r\nNo exception, and the formatting specified by value_formatter should be applied.\r\n\r\n**Screenshots**\r\nWhen you first run the code you see:\r\n![image](https://github.com/user-attachments/assets/9c635cfd-1132-4acb-a252-905082f19614)\r\n\r\nThen you press the \"Set columns\" button and you see:\r\n![image](https://github.com/user-attachments/assets/3d7aa779-ff9f-4c77-b929-831331824b5f)\r\n\r\nNote how the Size column does not have the proper formatting (it should have KB and MB suffix as appropriate) and the JavaScript exception on the right.\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.13\r\n - Reflex Version: reflex=0.6.8 & reflex-ag-grid=0.0.10\r\n - OS: Windows\r\n - Browser (Optional): Brave\r\n \r\n**Additional context**\r\nThe code provided above was adapted from the working example code below of using a FunctionStringVar to provide a function to the value_formatter of an ag_grid column_def that was provided by @masenf\r\n[repro_ag_grid_value_formatter.zip](https://github.com/user-attachments/files/18429438/repro_ag_grid_value_formatter.zip)\r\n",
      "closed_by": {
        "login": "adhami3310",
        "id": 27952765,
        "node_id": "MDQ6VXNlcjI3OTUyNzY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adhami3310",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4643/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4596",
      "id": 2771682902,
      "node_id": "I_kwDOITROHc6lNIZW",
      "number": 4596,
      "title": "When on mobile, clicking a value in a rx.select, also clicks the button underneath",
      "user": {
        "login": "lrAppsDevelopment",
        "id": 184999771,
        "node_id": "U_kgDOCwbfWw",
        "avatar_url": "https://avatars.githubusercontent.com/u/184999771?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lrAppsDevelopment",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-01-07T00:47:07Z",
      "updated_at": "2025-01-29T21:16:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nWhen on mobile (android, chrome), clicking a value in a rx.select, also clicks the button underneath.\r\n\r\n**To Reproduce**\r\nCreate a rx.select and a rx.button in a rx.vstack, open on mobile\r\n\r\n**Expected behavior**\r\nNo activation of the underling button\r\n\r\n**Screenshots**\r\nVideo: https://discord.com/channels/1029853095527727165/1325976201407238154\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12.3\r\n - Reflex Version: 0.6.7\r\n - OS: Android\r\n - Browser (Optional): Chrome\r\n \r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4596/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4589",
      "id": 2769492278,
      "node_id": "I_kwDOITROHc6lExk2",
      "number": 4589,
      "title": "Can't set certain cookie value, weird behavior",
      "user": {
        "login": "dentroai",
        "id": 135163019,
        "node_id": "U_kgDOCA5siw",
        "avatar_url": "https://avatars.githubusercontent.com/u/135163019?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dentroai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-01-05T23:03:55Z",
      "updated_at": "2025-01-05T23:04:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nTrying to use supabase with their inbuilt cookie store.\r\nIt almost works. The only problem is, that a certain cookie variable can't be set in a certain setting.\r\n\r\nWhen using password based log in, the `supabase.auth.token` value can be correctly set alongside the `supabase.auth.token-code-verifier` value:\r\n![image](https://github.com/user-attachments/assets/a51562c8-3bfa-46fc-a7f1-8e33e3286e23)\r\n\r\nHowever, when using Google OAuth login, the `supabase.auth.token` value never gets reflected in the cookie:\r\n![image](https://github.com/user-attachments/assets/fb3613f9-514d-4d47-8fc8-cfd091427e13)\r\n\r\n\r\nThe weird thing is, when logging the value of `auth_storage`, it actually DOES log that `supabase.auth.token` is set. \r\n\r\nBut it's never reflected in the actual cookie that can be seen via the browser dev tools.\r\n\r\nIt's driving me crazy that I can't fcking set a cookie var, even though the logs say it does get set.\r\n\r\nAny help figuring out why it's not reflected in the actual cookie value is very much appreciated! 🙏🏼\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n - Code/Link to Repo: https://github.com/dentroai/supabase_auth_X_reflex\r\n\r\nIt's quite a lot of work to set up, cause you need a supabase project AND a google app. \r\nCan screenshare with my setup during office hours to mitigate anybody having to set up those two services themselves.\r\n\r\n**Expected behavior**\r\nSet the cookie `supabase.auth.token` during google oauth just like during password auth - I mean it's just a string like all other values\r\n\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12\r\n - Reflex Version: 0.6.7\r\n - OS: linux\r\n - Browser (Optional): firefox and chrome\r\n \r\n**Additional context**\r\n\r\nExplanation about inbuilt cookie store of supabase: https://discord.com/channels/839993398554656828/1323027147929030746/1323035611703283733\r\n\r\nInitial discord thread: https://discord.com/channels/1029853095527727165/1324480797687677020/1324488478410412144",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4589/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4580",
      "id": 2765687965,
      "node_id": "I_kwDOITROHc6k2Qyd",
      "number": 4580,
      "title": "Dynamic Page Meta",
      "user": {
        "login": "jdbranham",
        "id": 2660839,
        "node_id": "MDQ6VXNlcjI2NjA4Mzk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2660839?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jdbranham",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-01-02T09:19:57Z",
      "updated_at": "2025-10-17T13:28:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'd like to dynamically provide the page metadata values.\r\n\r\n- Which feature do you want to improve? (and what problem does it have). \r\n\r\nSpecifically I have dynamic page routes like `/page/[slug]` \r\nSince the page meta only allows `str` values, it prevents accurate meta data when the page is dynamic.\r\n\r\n- What is the benefit of the enhancement?\r\n\r\nImproves page previews in social feeds and better SEO  \r\n\r\n- Show an example/usecase were the improvement are needed.\r\n\r\nUsing the state would be great -   \r\n\r\n```python\r\n@rx.page(\r\n    route=\"/page/[slug]/\",\r\n    on_load=State.load_page,\r\n    meta=[\r\n        {\r\n            \"name\": \"og:image\",\r\n            \"content\": State.image,\r\n        },\r\n        {\r\n            \"name\": \"title\",\r\n            \"content\": State.name,\r\n        },\r\n    ],\r\n)\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4580/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4542",
      "id": 2740002546,
      "node_id": "I_kwDOITROHc6jUR7y",
      "number": 4542,
      "title": "Check if server is reachable at wss://fruity-games-tan.loca.lt/_event",
      "user": {
        "login": "sugizo",
        "id": 2418295,
        "node_id": "MDQ6VXNlcjI0MTgyOTU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2418295?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sugizo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-12-14T17:18:11Z",
      "updated_at": "2024-12-18T00:03:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nCheck if server is reachable at wss://fruity-games-tan.loca.lt/_event\r\nwhen test it on \r\ngoogle colab \r\nwith \r\nlocaltunnel (npm install localtunnel)\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1 open https://colab.research.google.com\r\n2 execute the code on colab : \r\n`!npm install localtunnel`\r\n\r\n`pip install -U reflex`\r\n\r\n```\r\n!mkdir app\r\n!cd app && reflex init\r\n```\r\n\r\n```\r\n%%writefile app/app/app.py\r\nimport reflex as rx \r\nclass State(rx.State):\r\n    count: int = 0\r\n\r\n    def increment(self):\r\n        self.count += 1\r\n\r\n    def decrement(self):\r\n        self.count -= 1\r\n\r\ndef index():\r\n    return rx.hstack(\r\n        rx.button(\r\n            \"Decrement\",\r\n            color_scheme=\"ruby\",\r\n            on_click=State.decrement,\r\n        ),\r\n        rx.heading(State.count, font_size=\"2em\"),\r\n        rx.button(\r\n            \"Increment\",\r\n            color_scheme=\"grass\",\r\n            on_click=State.increment,\r\n        ),\r\n        spacing=\"4\",\r\n    )\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\n```\r\nimport urllib\r\nprint(\"Password/Enpoint IP for localtunnel is:\", urllib.request.urlopen('https://ipv4.icanhazip.com').read().decode('utf8').strip(\"\\n\") )\r\n```\r\n\r\n`!cd app && reflex run --backend-host 0.0.0.0 --backend-port 8000 --frontend-port 3000 &>/content/logs.txt & npx localtunnel --port 3000`\r\n\r\n**Expected behavior**\r\nwebsocket can work and update the value on the google colab site \r\nlike the reflex example on it's website [reflex.dev](https://reflex.dev/docs/getting-started/introduction)\r\n\r\n**Screenshots**\r\n![image](https://github.com/user-attachments/assets/3415b0e2-92e9-449a-a9c4-4273b3324940)\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: Python 3.10.12\r\n - Reflex Version: reflex-0.6.6.post3\r\n - OS: ubuntu jammy (on google colab)\r\n - Browser (Optional): chrome\r\n \r\n**Additional context**\r\nstreamlit, shiny and dash can work well in google colab with localtunnel\r\n\r\nthanks and best regards",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4542/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4532",
      "id": 2736681431,
      "node_id": "I_kwDOITROHc6jHnHX",
      "number": 4532,
      "title": "Getting relayout parameters from Plotly figures",
      "user": {
        "login": "teristam",
        "id": 3406709,
        "node_id": "MDQ6VXNlcjM0MDY3MDk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3406709?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/teristam",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-12-12T19:07:58Z",
      "updated_at": "2024-12-12T19:08:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Currently the `on_relayout` callback of Plotly figure doesn't return any argument, especially the current zoom-in axis coordinates. Plotly.js does remit these values as far as I know (https://plotly.com/javascript/plotlyjs-events/#update-data)\r\nHaving these information is important for efficiency reason, e.g. the backend may down-sample the data before sending it over to Plotly. I hope this feature can be added.\r\n\r\nThank you!\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4532/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4487",
      "id": 2720594904,
      "node_id": "I_kwDOITROHc6iKPvY",
      "number": 4487,
      "title": "Do not mark dependent vars dirty if value did not change",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-12-05T14:38:54Z",
      "updated_at": "2025-02-03T19:13:32Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```python\r\nimport reflex as rx\r\n\r\n\r\nclass State(rx.State):\r\n    _bcount: int = 0\r\n    count: int = 0\r\n\r\n    def increase(self):\r\n        self._bcount += 1\r\n        self.count += 1\r\n\r\n    def touch(self):\r\n        self._bcount = self._bcount\r\n        self.count = self.count\r\n\r\n    @rx.var(cache=True)\r\n    def computed_bcount(self) -> str:\r\n        return f\"bcount: {self._bcount}\"\r\n\r\n    @rx.var(cache=True)\r\n    def computed_count(self) -> str:\r\n        return f\"count: {self.count}\"\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        rx.text(State.computed_bcount),\r\n        rx.text(State.computed_count),\r\n        rx.button(\"Touch\", on_click=State.touch),\r\n        rx.button(\"Increase\", on_click=State.increase),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4487/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4481",
      "id": 2718804160,
      "node_id": "I_kwDOITROHc6iDajA",
      "number": 4481,
      "title": "Show password option for password input",
      "user": {
        "login": "dentroai",
        "id": 135163019,
        "node_id": "U_kgDOCA5siw",
        "avatar_url": "https://avatars.githubusercontent.com/u/135163019?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dentroai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-12-04T21:16:37Z",
      "updated_at": "2024-12-14T18:48:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Custom Component**\r\nthere should be an inbuilt option of rx.input with type=password to display some eye which shows the password in plaintext when clicked on.\r\n\r\nE.g.:\r\n\r\n![image](https://github.com/user-attachments/assets/d401a3f4-c341-454c-9a35-9005c06ac30a)\r\n\r\n\r\n\r\n\r\nthen:\r\n\r\n![image](https://github.com/user-attachments/assets/672cc5b1-5fb2-4a69-b887-b2856df3699d)\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4481/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4468",
      "id": 2715504347,
      "node_id": "I_kwDOITROHc6h207b",
      "number": 4468,
      "title": "Dataeditor images support",
      "user": {
        "login": "alexander-potemkin",
        "id": 2323840,
        "node_id": "MDQ6VXNlcjIzMjM4NDA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2323840?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/alexander-potemkin",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-12-03T16:40:42Z",
      "updated_at": "2024-12-05T11:58:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Custom Component**\r\nIt would be of great help, if dataeditor component would support images on it.\r\n\r\n- What is the purpose of the custom component?\r\nDisplay images inside the grid alongside with text content.\r\n\r\n- What is the expected behavior of the custom component?\r\nDisplay an image, like AirTable or other solutions.\r\n\r\n- What are the use cases for the custom component?\r\nPlace visual description or an actual image to the table.\r\n\r\n**Specifics (please complete the following information):**\r\n - Do you have a specific react package in mind? (Optional): it seems like an underlining library already supports the functionality required, it's just not implemented at Reflex side.\r\n \r\n**Additional context**\r\nN/A\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4468/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4458",
      "id": 2708741866,
      "node_id": "I_kwDOITROHc6hdB7q",
      "number": 4458,
      "title": "FRONTEND_PATH is not applied for assets URLs",
      "user": {
        "login": "juangon",
        "id": 1306127,
        "node_id": "MDQ6VXNlcjEzMDYxMjc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1306127?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/juangon",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2024-12-01T07:48:11Z",
      "updated_at": "2024-12-09T14:27:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nWhen using frontend_path parameter (in my case used as env variable), when referencing assets in /assets folder, frontend_path is not added, throwing 404 errors for those resources\r\n\r\n**To Reproduce**\r\nExecute reflex populating FRONTEND_PATH env variable. Add some assets in /assets folder and reference them as stated in documents (prefixing them with slash '/').\r\n\r\n**Expected behavior**\r\nAssets path should add FRONTEND_PATH to the referenced resources.\r\n\r\n**Screenshots**\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version:3.12\r\n - Reflex Version: 0.6.5\r\n - OS: Linux\r\n - Browser (Optional):\r\n \r\n**Additional context**\r\nAdd any other context about the problem here.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4458/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4454",
      "id": 2705046219,
      "node_id": "I_kwDOITROHc6hO7rL",
      "number": 4454,
      "title": "Replace darglint with ruff DOC rules.",
      "user": {
        "login": "Lendemor",
        "id": 4015177,
        "node_id": "MDQ6VXNlcjQwMTUxNzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4015177?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lendemor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-11-29T12:58:29Z",
      "updated_at": "2025-04-15T20:24:15Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Darglint is not maintained anymore, and is very slow.\n\nAlternative to covers the docstring checks:\n- pydoclint: Is actively maintained and the rules mostly make sense, but they are not selectable, so it's all or nothing.\n- ruff DOC rules: These rules are inspired by `pydoclint` but will give us the flexibility of ruff in selecting the rules we want to apply.\n    - need to track the progress on this issue before we can use this however: https://github.com/astral-sh/ruff/issues/12434\n\nSubset of the rules we need enabled in ruff, before we can remove darglint:\n- [ ] DOC101\n- [ ] DOC102\n- [ ] DOC103\n- [ ] DOC104\n- [ ] DOC111\n- [x] DOC201\n- [x] DOC202\n- [x] DOC402\n- [x] DOC403\n- [x] DOC501\n- [x] DOC502",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4454/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4452",
      "id": 2703094016,
      "node_id": "I_kwDOITROHc6hHfEA",
      "number": 4452,
      "title": "rx.upload error handling",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-11-28T19:26:48Z",
      "updated_at": "2024-12-12T07:34:48Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Nginx with default config returns 413 and an error page if the payload is too big:\r\n```html\r\n<html>\r\n<head><title>413 Request Entity Too Large</title></head>\r\n<body>\r\n<center><h1>413 Request Entity Too Large</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n```\r\n\r\nReflex frontend exception handler shows this:\r\n```\r\nSyntaxError: JSON5: invalid character '<' at 1:1\r\n    at ev (https://testing.com/_next/static/chunks/pages/_app-461f214d5ad5a26a.js:1:49927)\r\n    at eh (https://testing.com/_next/static/chunks/pages/_app-461f214d5ad5a26a.js:1:49316)\r\n    at Object.value (https://testing.com/_next/static/chunks/pages/_app-461f214d5ad5a26a.js:1:43558)\r\n    at er (https://testing.com/_next/static/chunks/pages/_app-461f214d5ad5a26a.js:1:41963)\r\n    at Object.parse (https://testing.com/_next/static/chunks/pages/_app-461f214d5ad5a26a.js:1:50081)\r\n    at https://testing.com/_next/static/chunks/pages/_app-461f214d5ad5a26a.js:19:46786\r\n    at https://testing.com/_next/static/chunks/pages/_app-461f214d5ad5a26a.js:19:47241\r\n    at Array.map (<anonymous>)\r\n    at https://testing.com/_next/static/chunks/pages/_app-461f214d5ad5a26a.js:19:47233\r\n    at Array....\r\n```\r\n\r\nMaybe we should check for the response code instead of directly parsing the input. And raise a more readable error for the frontend exception handler.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4452/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4440",
      "id": 2694974815,
      "node_id": "I_kwDOITROHc6gog1f",
      "number": 4440,
      "title": "Redirect State update on background task",
      "user": {
        "login": "Ernelene",
        "id": 158453922,
        "node_id": "U_kgDOCXHQog",
        "avatar_url": "https://avatars.githubusercontent.com/u/158453922?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Ernelene",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-11-26T14:52:20Z",
      "updated_at": "2024-11-27T18:39:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I am using breadcrumbs to navigate between my pages. \r\n\r\nI would like to clear/reset the state when i redirect back to my home(projects page) or just leave the current page. \r\n\r\nCurrently i have the reset state implemented on my on_load function of the project page but it takes too long to fetch and clear all prev states: \r\n```\r\n\r\n@rx.background\r\n    async def fetch_data(self):\r\n        async with self:\r\n            self.eda_wf_status = \"\"\r\n            self.project_name = \"\"\r\n            self.fetching_list = True\r\n            if self.workspace_id == \"\":\r\n                return rx.redirect(\"/workspaces\")\r\n\r\n            projects = await self.fetch_files()\r\n            datasources = await self.fetch_datasources()\r\n\r\n            for projects in projects:\r\n                self._projects.append(projects)\r\n\r\n            for ds in datasources:\r\n                if ds.type != \"Geo Set\":\r\n                    self._datasources.append(ds)\r\n            self.fetching_list = False\r\n            self.fetching = False\r\n# Here i am reseting all the prev states\r\n            print(\" reset state\")\r\n            del_eda = (await self.get_state(VariableState)).reset()\r\n            del_ms = (await self.get_state(SelectionState)).reset()\r\n            del_eval = (await self.get_state(EvalState)).reset()\r\n\r\n    \r\n    def on_load(self):\r\n        return ProjectState.fetch_data\r\n```\r\n\r\nI would like to reset the specific previous page when i navigate with the breadcrumbs. So I implemented the code below:\r\n```\r\n @rx.background\r\n    async def reset_state(self, url):\r\n        # async with self:\r\n         #   print(\"1\",self.current_url)\r\n          #  yield rx.redirect(url)\r\n          #  print(\"2\",self.current_url)\r\n        async with self:\r\n            print(\"3\",self.current_url)\r\n            match url:\r\n                case \"/projects/\":\r\n                    print(\" in here\")\r\n                    (await self.get_state(VariableState)).reset()\r\n            print(\"done\")\r\n      \r\n\r\n    def back_to_page(self,url):\r\n        self.fetching = True\r\n        self.project_progress = 0\r\n        if url == \"/projects/\" or url == \"/workspaces/\":\r\n            self.project_name = \"\"\r\n            self.eda_tab_value= \"tab1\"\r\n            self.eval_selected_tag_id = \"\"\r\n            self._variables= []\r\n        yield rx.redirect(url)\r\n        return NavBarState.reset_state(url)\r\n    \r\n@rx.memo\r\ndef navbar():\r\n    \"\"\"The navbar.\"\"\"\r\n    return rx.box(\r\n        rx.flex(\r\n            rx.grid(\r\n                rx.flex(\r\n                    rx.match(\r\n                        NavBarState.current_url,\r\n                        (\r\n                            \"/projects/\",\r\n                            rc.breadcrumb(\r\n                                rc.breadcrumb_item(\r\n                                    rc.breadcrumb_link(\r\n                                       \"Workspaces\",\r\n                                         href=\"\"\r\n                                    ),\r\n                                    on_click=NavBarState.back_to_page(\"/workspaces/\"),\r\n                                ),\r\n                                rc.breadcrumb_item(\r\n                                    rc.breadcrumb_link(\r\n                                        \"Projects\", href=\"\"\r\n                                    ),\r\n                                ),\r\n                            ),\r\n                        ),\r\n                        (\r\n                            \"/eda/\",\r\n                            rc.breadcrumb(\r\n                                rc.breadcrumb_item(\r\n                                    rc.breadcrumb_link(\r\n                                         \"Workspaces\",href=\"\"\r\n                                    ),\r\n                                    on_click=NavBarState.back_to_page(\"/workspaces/\"),\r\n                                ),\r\n                                rc.breadcrumb_item(\r\n                                    rc.breadcrumb_link( \"Projects\", href=\"\"),\r\n                                    on_click=NavBarState.back_to_page(\"/projects/\"),\r\n                                ),\r\n                                rc.breadcrumb_item(\r\n                                    rc.breadcrumb_link(\r\n                                         \"EDA\",href=\"\", is_current_page=True\r\n                                    )\r\n                                ),\r\n                            ),\r\n                        ),)\r\n                        .....\r\n```\r\nWhat happens is the state resets which is what i want, but because the redirect has not yet updated the state (the current url is still the previous one) the previous page loads again (filling the state again) and then it redirects back to project page with the full state. \r\n\r\nAs you can see from the commented out code i tried a few different ways to update the state to the redirected url before reseting the state.\r\n\r\nAny help would be appreciated",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4440/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4429",
      "id": 2686837147,
      "node_id": "I_kwDOITROHc6gJeGb",
      "number": 4429,
      "title": "Reflex Components Integration Error: Invalid Element Type 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render method of `ForwardRef(LoadableComponent)`.'",
      "user": {
        "login": "YvanKOB",
        "id": 94498036,
        "node_id": "U_kgDOBaHs9A",
        "avatar_url": "https://avatars.githubusercontent.com/u/94498036?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/YvanKOB",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5013964135,
          "node_id": "LA_kwDOITROHc8AAAABKtsFZw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/needs%20investigation",
          "name": "needs investigation",
          "color": "E7099D",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-11-24T00:05:14Z",
      "updated_at": "2024-12-09T15:36:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I encountered an error while integrating Reflex components. Here are the details of the error:\r\n- **Error Message**: `Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render method of ForwardRef(LoadableComponent).`\r\n- **Context**: The error occurs when trying to render custom components using `react-swapy` in a Reflex application. The affected components are `SwapyContainer`, `SwapySlot`, `SwapyItem`, and `SwapyHandle`.\r\n- **Relevant Code**:\r\n\r\n```python\r\n import reflex as rx\r\n from reflex.components.component import NoSSRComponent\r\n from reflex.event import EventHandler\r\n from reflex import Component, Var\r\n from dataclasses import dataclass\r\n from typing import List, Dict, Any, Optional\r\n\r\n # Définition des composants Swapy\r\n\r\n class SwapyContainer(NoSSRComponent):\r\n     \"\"\"Container for Swapy components.\"\"\"\r\n     library = \"react-swapy\"\r\n     tag = \"Container\"\r\n     is_default = True  \r\n\r\n     # Props\r\n     #enable: Var[bool] = Var(True)\r\n     enable: rx.Var[bool] = Var.create(True)  # Instead of Var(True)\r\n     config: Var[Dict[str, Any]] = Var({\"animation\": \"dynamic\"})\r\n     onSwap: EventHandler = EventHandler(\"handle_swap\")\r\n\r\n     lib_dependencies: list[str] = [\r\n         \"react\",\r\n         \"react-dom\",\r\n     ]\r\n\r\n     def add_imports(self):\r\n         return {\r\n             \"react-swapy\": [\"SwapyContainer\"],\r\n         }\r\n\r\n\r\n class SwapySlot(NoSSRComponent):\r\n     \"\"\"Slot component for Swapy.\"\"\"\r\n     library = \"react-swapy\"\r\n     tag = \"Slot\"\r\n     is_default = True  \r\n\r\n     # Props\r\n     id: Var[int]\r\n     name: Var[str]\r\n\r\n     lib_dependencies: list[str] = [\r\n         \"react\",\r\n         \"react-dom\",\r\n     ]\r\n\r\n     def add_imports(self):\r\n         return {\r\n             \"react-swapy\": [\"SwapySlot\"],\r\n         }\r\n\r\n\r\n class SwapyItem(NoSSRComponent):\r\n     \"\"\"Item component for Swapy.\"\"\"\r\n     library = \"react-swapy\"\r\n     tag = \"Item\"\r\n     is_default = True  \r\n\r\n     # Props\r\n     name: Var[str]\r\n\r\n     lib_dependencies: list[str] = [\r\n         \"react\",\r\n         \"react-dom\",\r\n     ]\r\n\r\n     def add_imports(self):\r\n         return {\r\n             \"react-swapy\": [\"SwapyItem\"],\r\n         }\r\n\r\n\r\n class SwapyHandle(NoSSRComponent):\r\n     \"\"\"Handle component for Swapy.\"\"\"\r\n     library = \"react-swapy\"\r\n     tag = \"Handle\"\r\n     is_default = True\r\n\r\n     lib_dependencies: list[str] = [\r\n        \"react\",\r\n        \"react-dom\",\r\n     ]\r\n\r\n     def add_imports(self):\r\n         return {\r\n             \"react-swapy\": [\"SwapyHandle\"],\r\n         }\r\n\r\n\r\n # Création des fonctions de création pour les composants\r\n container = SwapyContainer.create\r\n slot = SwapySlot.create\r\n item = SwapyItem.create\r\n handle = SwapyHandle.create\r\n\r\n\r\n def handle_swap(swap_data: Dict[str, Any]):\r\n     \"\"\"Gérer les événements de swap.\"\"\"\r\n     print(\"Swap event:\", swap_data)\r\n     # Ici, vous pouvez mettre à jour l'état ou effectuer d'autres actions nécessaires\r\n     MapState.on_swap(swap_data)\r\n\r\n\r\n @dataclass\r\n class Country:\r\n     name: str\r\n     initials: str\r\n     lat: float\r\n     lng: float\r\n\r\n\r\n class MapState(rx.State):\r\n     \"\"\"État pour gérer les positions des éléments dans les slots.\"\"\"\r\n     slot_items: Dict[str, Optional[str]] = {\r\n         \"1\": \"a\",\r\n         \"2\": \"b\",\r\n         \"3\": \"c\",\r\n         \"4\": \"d\"\r\n     }\r\n\r\n     @rx.event\r\n     def handle_swap(self, data: Dict[str, Any]) -> None:\r\n     #def handle_swap(self, data: Dict[str, Any]):\r\n         \"\"\"Mettre à jour l'état après un swap.\"\"\"\r\n         print(\"Swap Data:\", data)\r\n         self.slot_items = data.get('object', self.slot_items)\r\n\r\n\r\n # Fonction pour créer un item avec un handle\r\n def create_item(item_id: str, initials: str) -> rx.Component:\r\n     return rx.box(\r\n         rx.hstack(\r\n             handle(\r\n                 rx.icon(\"dribbble\"),\r\n                 cursor=\"move\",\r\n                 mr=2,  # margin right\r\n             ),\r\n             rx.text(initials, font_weight=\"bold\"),\r\n         ),\r\n         bg=\"white\",\r\n         p=2,\r\n         border_radius=\"md\",\r\n         shadow=\"sm\",\r\n         draggable=True,\r\n         data_swapy_item=item_id,\r\n     )\r\n\r\n\r\n # Exemple amélioré d'intégration de Swapy\r\n def swapy_example() -> rx.Component:\r\n     return rx.vstack(\r\n         rx.heading(\"Swapy Integration Test\", size=\"lg\", mb=4),\r\n         rx.box(\r\n             container(\r\n                 slot(\r\n                     create_item(\"a\", \"NO\"),\r\n                     id=Var.create(1),\r\n                     name=Var.create(\"Norvège\"),\r\n                     bg=\"gray.100\",\r\n                     p=4,\r\n                     border_radius=\"lg\",\r\n                     min_h=\"200px\",\r\n                 ),\r\n                 slot(\r\n                     create_item(\"b\", \"US\"),\r\n                     id=Var.create(2),\r\n                     name=Var.create(\"USA\"),\r\n                     bg=\"gray.100\",\r\n                     p=4,\r\n                     border_radius=\"lg\",\r\n                     min_h=\"200px\",\r\n                 ),\r\n                 slot(\r\n                     create_item(\"c\", \"PT\"),\r\n                     id=Var.create(3),\r\n                     name=Var.create(\"Portugal\"),\r\n                     bg=\"gray.100\",\r\n                     p=4,\r\n                     border_radius=\"lg\",\r\n                     min_h=\"200px\",\r\n                 ),\r\n                 slot(\r\n                     create_item(\"d\", \"IN\"),\r\n                     id=Var.create(4),\r\n                     name=Var.create(\"Inde\"),\r\n                     bg=\"gray.100\",\r\n                     p=4,\r\n                     border_radius=\"lg\",\r\n                     min_h=\"200px\",\r\n                 ),\r\n                 config={\r\n                     \"animation\": \"dynamic\",\r\n                     \"autoScrollOnDrag\": True,\r\n                     \"continuousMode\": True,\r\n                 },\r\n                 #onSwap=handle_swap,  # Assure que handle_swap accepte les arguments définis\r\n                 onSwap=lambda: MapState.handle_swap({}),  # Provide empty dict as default\r\n                 spacing=\"4\",\r\n                 width=\"100%\",\r\n                 max_w=\"800px\",\r\n             ),\r\n         ),\r\n         rx.text(\r\n             \"Drag and drop tasks between slots to test the Swapy integration\",\r\n             color=\"gray.600\",\r\n             mt=4,\r\n         ),\r\n         align=\"center\",\r\n         spacing=\"6\",\r\n         py=8,\r\n     )\r\n```\r\n\r\n- **Steps to Reproduce**:\r\n  1. Create a Reflex application with the custom components above.\r\n  2. Attempt to render the components in the application.\r\n  3. Observe the error mentioned above.\r\n\r\nThank you in advance for your assistance and suggestions to resolve this issue.\r\nIt's my first time I post an issue, sorry guys",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4429/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4425",
      "id": 2684671171,
      "node_id": "I_kwDOITROHc6gBNTD",
      "number": 4425,
      "title": "Style and imports error when using Material UI",
      "user": {
        "login": "lcastiglione",
        "id": 44210609,
        "node_id": "MDQ6VXNlcjQ0MjEwNjA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/44210609?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lcastiglione",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        },
        "1": {
          "id": 7507248755,
          "node_id": "LA_kwDOITROHc8AAAABv3eGcw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/workaround%20available",
          "name": "workaround available",
          "color": "E3CF20",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-11-22T21:33:41Z",
      "updated_at": "2024-12-09T15:39:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nHere’s how the CircularProgress component is being loaded:\r\n\r\n```python\r\nimport reflex as rx\r\n\r\n\r\nclass CircularProgress(rx.Component):\r\n    library = \"@mui/material@6.1.8\" \r\n\r\n    tag = \"CircularProgress\" \r\n\r\n    value: rx.Var[int]\r\n    determinate: rx.Var[str]\r\n    size: rx.Var[str]\r\n\r\n\r\ncircular_progress = CircularProgress.create\r\n```\r\n\r\nAnd it's being used like this:\r\n\r\n```python\r\ncircular_progress(\r\n    value=State.progress,\r\n    variant=\"determinate\",\r\n    size=\"30px\"\r\n)\r\n```\r\n\r\nWhen the application is loaded in the browser, the following error message appears:\r\n\r\n```bash\r\nModule not found: Can't resolve '@emotion/styled'\r\n\r\nhttps://nextjs.org/docs/messages/module-not-found\r\n\r\nImport trace for requested module:\r\n./node_modules/@mui/system/esm/index.js\r\n./node_modules/@mui/material/zero-styled/index.js\r\n./node_modules/@mui/material/CircularProgress/CircularProgress.js\r\n./node_modules/@mui/material/CircularProgress/index.js\r\n__barrel_optimize__?names=CircularProgress!=!./node_modules/@mui/material/index.js\r\n./pages/index.js\r\n```\r\n\r\nAfter installing @emotion/styled as indicated in the error message, the circular loading bar appears, but it disrupts the styles across the entire application. Issues include:\r\n\r\n- Background colors are added to buttons that were supposed to be transparent.\r\n- Components separated by rx.desktop_only and rx.mobile_and_tablet are displayed simultaneously, overlapping regardless of the device type.\r\n\r\nThis indicates that adding @emotion/styled is causing style conflicts, likely due to mismatched dependencies or unexpected overrides in the styling system.\r\n\r\n\r\n**To Reproduce**\r\n\r\n**Expected behavior**\r\nThe styles of Material UI components should not affect the styles of other components in the application (Radix)\r\n\r\n**Screenshots**\r\nBefore adding CircularProgress from Material UI:\r\n\r\nDesktop:\r\n![1](https://github.com/user-attachments/assets/597eafb1-5028-423b-abdc-4d890d764dff)\r\n\r\nMobile:\r\n![responsive](https://github.com/user-attachments/assets/cd1463ae-a160-4402-a271-988432f305c6)\r\n\r\nAfter adding CircularProgress from Material UI\r\n![2](https://github.com/user-attachments/assets/1d80f14e-ffab-4d49-a50d-9309ed29e296)\r\n\r\n\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.11.8\r\n - Reflex Version: 0.6.4\r\n - OS: WSL2 Debian - Windows 11\r\n - Browser (Optional): Chrome/Firefox\r\n \r\n**Additional context**\r\n- Happens with any Material UI component. \r\n- The blue circle with the \"Upload\" label should appear only when a file is dragged into the window, but after adding a Material UI component, it remains fixed as shown in the images.\r\n\r\nThanks!!\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4425/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4423",
      "id": 2684546700,
      "node_id": "I_kwDOITROHc6gAu6M",
      "number": 4423,
      "title": "Let top level theming for class_name work.",
      "user": {
        "login": "hjpr",
        "id": 28852695,
        "node_id": "MDQ6VXNlcjI4ODUyNjk1",
        "avatar_url": "https://avatars.githubusercontent.com/u/28852695?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hjpr",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-11-22T20:52:56Z",
      "updated_at": "2024-12-09T14:32:16Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When doing top level styling at the rx.App level, passing class_name to a component as part of a style library doesn't work. I enjoy the coloring and theming of tailwind so I'd like to be able to say\r\n```\r\nstyle = {\r\n    rx.flex: {\r\n        \"class_name\": \"bg-white dark:bg-zinc-700\"\r\n    },\r\n    rx.text: {\r\n        \"class_name\": \"text-zinc-700 dark:text-zinc-50\"\r\n    }\r\n}\r\n\r\napp = rx.App(style=style)\r\n```\r\n\r\nDon't have the reflex know-how to understand where the css interpretation is happening and create a conditional for tailwind prop.\r\nThanks!\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4423/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4314",
      "id": 2639061687,
      "node_id": "I_kwDOITROHc6dTOK3",
      "number": 4314,
      "title": "renovate/dependabot support",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-11-06T19:44:19Z",
      "updated_at": "2024-12-09T12:51:53Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Reflex allows to specify npm deps via `library` and `lib_dependencies` string attributes of a Component.\r\n\r\nRenovate and Dependabot will not parse such versions without additional plugins or configurations. It would be awesome if we could implement/document such config/plugins for reflex users and maybe even reflex-internal usage.\r\n\r\nMy team only uses renovate, I can be a bit more specific about that:\r\n- Renovate is highly configurable, I could write a (complicated and error-prone) regex manager to parse the versions from python files (https://docs.renovatebot.com/modules/manager/regex/). This one will probably be easy, and I will raise a PR documenting those regexes if @reflex-dev is interested.\r\n- For best support, we could later implement our own reflex manager for renovate (in TypeScript)\r\n\r\nWe could also implement a fancy approach where reflex (alternatively) allows setting `library` and `lib_dependencies` to a Path with a `package.json`. One big advantage is that this approach will probably add support for all dependency management tools. One disadvantage is that we have to leave python to adjust the versions.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4314/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4293",
      "id": 2632029845,
      "node_id": "I_kwDOITROHc6c4ZaV",
      "number": 4293,
      "title": "Recharts component should let Cartesian carry data too",
      "user": {
        "login": "kaihsin",
        "id": 21331401,
        "node_id": "MDQ6VXNlcjIxMzMxNDAx",
        "avatar_url": "https://avatars.githubusercontent.com/u/21331401?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kaihsin",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-11-04T07:17:13Z",
      "updated_at": "2024-11-14T04:11:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nCurrently, for Cartesian related Recharts components, `data` can only be assign at the \"chart\" level. However, this force all the data point to be in a grid (i.e. they need to have same x data values and/or y data values) and thus limit the usage. For related issue please see: https://github.com/recharts/recharts/issues/1167\r\n\r\n**Expected behavior**\r\nAll the Cartesian derived classes should have field `data`. For example: \r\n`rx.rechards.line(... data=...)`\r\n\r\nThanks!\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4293/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4272",
      "id": 2625063619,
      "node_id": "I_kwDOITROHc6cd0rD",
      "number": 4272,
      "title": "Popovers don’t work when the trigger is an rx.avatar and doesn’t have a valid URL in the src.",
      "user": {
        "login": "juandaherrera",
        "id": 44278965,
        "node_id": "MDQ6VXNlcjQ0Mjc4OTY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/44278965?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/juandaherrera",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-10-30T19:03:17Z",
      "updated_at": "2025-03-12T01:13:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nI have some code to show users a popover when they click on their profile photo. Sometimes this photo has a URL that doesn’t exist or becomes inaccessible due to multiple requests. In those cases, there's a fallback that displays the first initial of the user’s name. However, when this fallback is triggered, the popover stops working.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n```python\r\nimport reflex as rx\r\n\r\nfrom .. import styles\r\nfrom ..backend.states import ProfileState\r\n\r\ndef _avatar() -> rx.Component:\r\n    return rx.popover.root(\r\n        rx.popover.trigger(\r\n            rx.avatar(\r\n                src=ProfileState.profile.picture,\r\n                fallback=ProfileState.profile.name[0],\r\n                size=\"2.5em\",\r\n                margin_left=\"auto\",\r\n                _hover={\r\n                    \"cursor\": \"pointer\",\r\n                    \"filter\": \"brightness(0.8)\",\r\n                },\r\n            ),\r\n        ),\r\n        rx.popover.content(\r\n            rx.vstack(\r\n                rx.data_list.root(\r\n                    rx.data_list.item(\r\n                        rx.data_list.label(\"Name\"),\r\n                        rx.data_list.value(ProfileState.profile.name),\r\n                    ),\r\n                    rx.data_list.item(\r\n                        rx.data_list.label(\"Email\"),\r\n                        rx.data_list.value(ProfileState.profile.email),\r\n                    ),\r\n                    rx.data_list.item(\r\n                        rx.data_list.label(\"Session Exp. Date\"),\r\n                        rx.data_list.value(ProfileState.session_exp_date),\r\n                    ),\r\n                ),\r\n                rx.button(\r\n                    \"Sign out\",\r\n                    on_click=ProfileState.logout,\r\n                    color_scheme=\"red\",\r\n                    variant=\"outline\",\r\n                    width=\"100%\",\r\n                    _hover={\"cursor\": \"pointer\"},\r\n                ),\r\n                align=\"center\",\r\n                spacing=\"5\",\r\n            ),\r\n        ),\r\n        size=\"1\",\r\n    )\r\n```\r\n\r\n**Expected behavior**\r\nThe popover should appear regardless of whether the image loads or the fallback is displayed.\r\n\r\n**Screenshots**\r\nThis is when the image url works fine:\r\n\r\nhttps://github.com/user-attachments/assets/a088437c-9062-461d-b1ce-0a93a5fd525b\r\n\r\n\r\n\r\nThis is when the fallback is called:\r\n\r\nhttps://github.com/user-attachments/assets/78325fa8-0c36-483e-96fe-53e03d2717d8\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12.3\r\n - Reflex Version: 0.6.4\r\n - OS: MacOS\r\n - Browser (Optional): Google Chrome\r\n \r\n**Additional context**\r\nN/A\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4272/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4221",
      "id": 2606390827,
      "node_id": "I_kwDOITROHc6bWl4r",
      "number": 4221,
      "title": "form.submit() fails if using dialog.close()",
      "user": {
        "login": "mistamun",
        "id": 9771762,
        "node_id": "MDQ6VXNlcjk3NzE3NjI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9771762?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mistamun",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2024-10-22T20:10:39Z",
      "updated_at": "2025-08-06T01:21:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nform.submit() fails if using dialog.close()\r\n\r\n**To Reproduce**\r\n```python\r\nimport reflex as rx\r\n\r\nclass FormState(rx.State):\r\n    form_data: dict = {}\r\n\r\n    def handle_submit(self, form_data: dict):\r\n        \"\"\"Handle the form submit.\"\"\"\r\n        self.form_data = form_data\r\n\r\napp = rx.App()\r\n\r\n@rx.page()\r\ndef index():\r\n    return rx.dialog.root(\r\n        rx.dialog.trigger(\r\n            rx.button(\r\n                rx.icon(\"plus\", size=26),\r\n                rx.text(\"Test Form in Dialog\", size=\"4\", display=[\"none\", \"none\", \"block\"]),\r\n                size=\"3\",\r\n            ),\r\n        ),\r\n        rx.dialog.content(\r\n            rx.dialog.title(\r\n                \"Simple Form\",\r\n                weight=\"bold\",\r\n                margin=\"0\",\r\n            ),\r\n            rx.form.root(\r\n                rx.form.field(\r\n                    rx.flex(\r\n                        rx.form.label(\"Email\"),\r\n                        rx.form.control(\r\n                            rx.input(\r\n                                placeholder=\"Email Address\",\r\n                                # type attribute is required for \"typeMismatch\" validation\r\n                                type=\"email\",\r\n                            ),\r\n                            as_child=True,\r\n                        ),\r\n                        rx.form.message(\r\n                            \"Please enter a valid email\",\r\n                            match=\"typeMismatch\",\r\n                        ),\r\n                        rx.flex(\r\n                            rx.dialog.close(\r\n                                rx.button(\r\n                                    \"Cancel\",\r\n                                    variant=\"soft\",\r\n                                    color_scheme=\"gray\",\r\n                                ),\r\n                            ),\r\n                            rx.form.submit(\r\n                                rx.dialog.close(\r\n                                    rx.button(\"Submit And Close\"),  # Form submission cancelled\r\n                                ),\r\n                                as_child=True,\r\n                            ),\r\n                            rx.form.submit(\r\n                                rx.button(\"Submit Without Closing\"),  # Works as expected\r\n                                as_child=True,\r\n                            ),\r\n                            padding_top=\"2em\",\r\n                            spacing=\"3\",\r\n                            mt=\"4\",\r\n                            justify=\"end\",\r\n                        ),\r\n                        direction=\"column\",\r\n                        spacing=\"2\",\r\n                        align=\"stretch\",\r\n                    ),\r\n                    name=\"email\",\r\n                ),\r\n                on_submit=FormState.handle_submit,\r\n                reset_on_submit=True,\r\n            ),\r\n            max_width=\"450px\",\r\n            padding=\"1.5em\",\r\n            border=f\"2px solid {rx.color('accent', 7)}\",\r\n            border_radius=\"25px\",\r\n        ),\r\n    )\r\n\r\n```\r\n**Expected behavior**\r\nThe above is taken from one of the standard templates, I get a console error `Form submission canceled because the form is not connected`\r\n\r\nI couldn't find a workaround.\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12.3\r\n - Reflex Version: 0.6.1+\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4221/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4215",
      "id": 2605536183,
      "node_id": "I_kwDOITROHc6bTVO3",
      "number": 4215,
      "title": "`id` and `name` have different behaviours with the range slider when used in a form",
      "user": {
        "login": "ElijahAhianyo",
        "id": 19895635,
        "node_id": "MDQ6VXNlcjE5ODk1NjM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/19895635?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ElijahAhianyo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "ramizik",
        "id": 97925851,
        "node_id": "U_kgDOBdY62w",
        "avatar_url": "https://avatars.githubusercontent.com/u/97925851?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ramizik",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "ramizik",
          "id": 97925851,
          "node_id": "U_kgDOBdY62w",
          "avatar_url": "https://avatars.githubusercontent.com/u/97925851?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ramizik",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 3,
      "created_at": "2024-10-22T13:54:10Z",
      "updated_at": "2025-03-12T01:07:51Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\r\n\r\n\r\n```python\r\n\r\nimport reflex as rx\r\n\r\nclass FormState(rx.State):\r\n    form_data: dict = {}\r\n    slider_values: list[float] = [20, 80]\r\n\r\n    def handle_submit(self, form_data: dict):\r\n        \"\"\"Handle the form submit.\"\"\"\r\n        self.form_data = form_data\r\n\r\napp = rx.App()\r\n\r\n@rx.page()\r\ndef index():\r\n    return rx.vstack(\r\n        rx.form(\r\n            rx.vstack(\r\n                rx.slider(\r\n                    default_value=FormState.slider_values,\r\n                    min=0,\r\n                    max=100,\r\n                    step=1,\r\n                    name=\"slider-1\"\r\n                ),\r\n                rx.slider(\r\n                    default_value=FormState.slider_values,\r\n                    min=0,\r\n                    max=100,\r\n                    step=1,\r\n                    id=\"slider-2\"\r\n                ),\r\n                rx.button(\"Submit\", type=\"submit\"),\r\n\r\n            ),\r\n            on_submit=FormState.handle_submit,\r\n            reset_on_submit=True,\r\n        ),\r\n        rx.divider(),\r\n        rx.heading(\"Results\"),\r\n        rx.text(FormState.form_data.to_string()),\r\n    )\r\n    \r\n  ```\r\n    \r\n    \r\n<img width=\"1470\" alt=\"Screenshot 2024-10-22 at 1 47 33 PM\" src=\"https://github.com/user-attachments/assets/0f6b5d17-3ad2-433d-a6f0-0408622ea5a9\">\r\n\r\nLooking at the screenshot, using `name` reports the end value while `id` reports the start value on submission. The \r\n\r\nAlso looking at the case with `name`, the resulting name value in the form data differs from that specified on the component(`slider-1` instead of `slider-1[]`\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4215/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4214",
      "id": 2605494555,
      "node_id": "I_kwDOITROHc6bTLEb",
      "number": 4214,
      "title": "setting `id` on `rx.select` in a form does not update the form data on form submission",
      "user": {
        "login": "ElijahAhianyo",
        "id": 19895635,
        "node_id": "MDQ6VXNlcjE5ODk1NjM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/19895635?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ElijahAhianyo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-10-22T13:40:15Z",
      "updated_at": "2025-03-12T00:59:23Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\r\n```python\r\nimport reflex as rx\r\n\r\nclass FormState(rx.State):\r\n    form_data: dict = {}\r\n\r\n    def handle_submit(self, form_data: dict):\r\n        \"\"\"Handle the form submit.\"\"\"\r\n        self.form_data = form_data\r\n\r\napp = rx.App()\r\n\r\n@rx.page()\r\ndef index():\r\n    return rx.vstack(\r\n        rx.form(\r\n            rx.vstack(\r\n                rx.select(\r\n                    [\"apple\", \"grape\", \"pear\"],\r\n                    id=\"select\",\r\n                ),\r\n                rx.button(\"Submit\", type=\"submit\"),\r\n            ),\r\n            on_submit=FormState.handle_submit,\r\n            reset_on_submit=True,\r\n        ),\r\n        rx.divider(),\r\n        rx.heading(\"Results\"),\r\n        rx.text(FormState.form_data.to_string()),\r\n    )\r\n\r\n```\r\n\r\nWhen a value is selected, the form data is not updated on submission.\r\na workaround is to use the `name` prop\r\n\r\nRelated radix issue: https://github.com/radix-ui/primitives/issues/2590",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4214/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4200",
      "id": 2598343983,
      "node_id": "I_kwDOITROHc6a35Uv",
      "number": 4200,
      "title": "Cannot `.mark_dirty` a ComputedVar directly in 0.6.0+",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        },
        "1": {
          "id": 7507248755,
          "node_id": "LA_kwDOITROHc8AAAABv3eGcw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/workaround%20available",
          "name": "workaround available",
          "color": "E3CF20",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-10-18T20:34:23Z",
      "updated_at": "2025-07-01T22:26:02Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nBecause the computed var assigned to the State class isn't really a ComputedVar, but actually a ToOperation with a `_js_expr` based on the state, when `_cache_attr` is accessed to delete it (in `mark_dirty`), it returns the wrong attribute and doesn't actually clear the cache.\r\n\r\n**To Reproduce**\r\n```python\r\nimport datetime\r\n\r\nimport reflex as rx\r\n\r\n\r\nclass State(rx.State):\r\n    @rx.var(cache=True)\r\n    def dt(self) -> datetime.datetime:\r\n        return datetime.datetime.now()\r\n\r\n    def dt_reset(self):\r\n        type(self).dt.mark_dirty(self)\r\n        self.dirty_vars.add(\"dt\")\r\n        self._mark_dirty()\r\n\r\n\r\ndef index() -> rx.Component:\r\n    # Welcome Page (Index)\r\n    return rx.container(\r\n        rx.color_mode.button(position=\"top-right\"),\r\n        rx.vstack(\r\n            rx.heading(State.dt),\r\n            rx.button(\"Reset Cache\", on_click=State.dt_reset),\r\n        ),\r\n        rx.logo(),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\n**Expected behavior**\r\nIn reflex 0.5.10, each time the Reset Cache button is clicked, the timestamp updates.\r\n\r\nIn reflex 0.6.0, nothing happens.\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12\r\n - Reflex Version: 0.6.0+\r\n - OS: \r\n - Browser (Optional):\r\n \r\n**Additional context**\r\nI think the `_cache_attr` should be based on some data intrinsic to the `ComputedVar`, not something that could be changed downstream by some operation",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4200/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4184",
      "id": 2592036625,
      "node_id": "I_kwDOITROHc6af1cR",
      "number": 4184,
      "title": "Make `rx.debounce_input` Work with `rx.el.input` for Flexible Input Styling",
      "user": {
        "login": "sorousch9",
        "id": 78909837,
        "node_id": "MDQ6VXNlcjc4OTA5ODM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/78909837?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sorousch9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-10-16T14:14:59Z",
      "updated_at": "2025-05-30T01:25:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the Custom Component**\r\nHey there! So, I've been playing around with a custom component, and I've run into a hiccup that I need help with. Basically, I'm trying to use `rx.debounce_input` with `rx.el.input` instead of the usual `rx.input` because I want to tweak the styles a bit more.\r\nA clear and concise description of what the custom component does.\r\n\r\n- **Why Am I Doing This?**\r\n  I want more control over how my input fields look and behave. Right now, `rx.input` adds some default styles and a div that I don’t really want, so using `rx.el.input` seems like the way to go.\r\n\r\n- **What Should Happen?**\r\n  Ideally, `rx.debounce_input` should work just as well with `rx.el.input` as it does with `rx.input`, allowing me to debounce my input without running into any errors.\r\n\r\n- **When Does This Come in Handy?**\r\n  For anyone who wants to customize their input fields beyond the default styling—this would be super helpful!\r\n\r\n**Extra Info:**\r\nRight now, trying to use `rx.el.input` like this throws a frontend error: `ReferenceError: input is not defined`. Here’s a quick peek at the code causing the headache:\r\n\r\n```python\r\ndef input_field() -> rx.Component:\r\n    return rx.el.div(\r\n        rx.debounce_input(\r\n            rx.el.input(\"test\", ),\r\n            debounce_timeout=300,\r\n        ),\r\n    )\r\n```\r\n\r\nWould love for `rx.debounce_input` to recognize and handle `rx.el.input` without freaking out. Thanks a bunch!\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4184/reactions",
        "total_count": 2,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 1,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4156",
      "id": 2581240855,
      "node_id": "I_kwDOITROHc6Z2pwX",
      "number": 4156,
      "title": "Incremental state updates resend entire state",
      "user": {
        "login": "dodslaser",
        "id": 2969909,
        "node_id": "MDQ6VXNlcjI5Njk5MDk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2969909?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dodslaser",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-10-11T12:14:48Z",
      "updated_at": "2025-04-27T12:10:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nI'm trying to adapt some of the example code in the docs to fit my needs. Essentially, I want to live-stream text line by line into a code block. From what I've understood, I should be able to append to a state variable (a `list`) in a background handler, and use `yield` each time a new line is added to send the state changes incrementally to the frontend.\r\n\r\nWhen I try this approach, each time state is updated, the full state is sent to the frontend, including the previously sent lines (as part of the 'delta' section in the JSON). From what I understood, only the newly added (or removed) lines should be sent (i.e. incremental updates).\r\n\r\nIn my full scale application, I would potentially be appending to a list of thousands or more lines.  It would pretty quickly get out of hand if the whole state had to be sent each time. Am I missing something obvious here? Is there a better way of achieving this?\r\n\r\n**To Reproduce**\r\n\r\n```python\r\nimport reflex as rx\r\nimport asyncio as aio\r\n\r\nclass LiveState(rx.State):\r\n    data: list[str] = []\r\n    _counter: int = 0\r\n    _n_tasks: int = 0\r\n\r\n    @rx.background\r\n    async def update_data(self):\r\n        async with self:\r\n            if self._n_tasks > 0:\r\n                return\r\n            self._n_tasks += 1\r\n\r\n        while True:\r\n            async with self:\r\n                self.data.append(f\"Message #{self._counter}\")\r\n                self._counter += 1\r\n                yield\r\n            await aio.sleep(1)\r\n\r\n@rx.page(on_load=LiveState.update_data)\r\ndef index():\r\n    return rx.code_block(LiveState.data.join(\"\\n\"))\r\n```\r\n\r\n**Expected behavior**\r\nOnly the changes in state are sent, not the whole thing.\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12\r\n - Reflex Version: 0.6.1\r\n - OS: macOS Sequoia 15.0 (M1 Max)\r\n - Browser (Optional): Firefox 131.02\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4156/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4069",
      "id": 2567606755,
      "node_id": "I_kwDOITROHc6ZCpHj",
      "number": 4069,
      "title": "Expected Hstack/Vstack behavior ",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-10-05T02:37:52Z",
      "updated_at": "2025-05-30T02:00:44Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I consider the stack component to have some magic in terms of formatting where as flex give you more of a customizable experience low level experience. \r\n\r\n![Screenshot 2024-10-04 at 7 34 14 PM](https://github.com/user-attachments/assets/a6cfdc6a-29bd-4235-aba1-8b1ffa44235d)\r\n\r\n```python\r\nrx.hstack(\r\n    rx.button(\"Submit\", width=\"50%\"),\r\n    rx.button(\"Submit\", width=\"50%\"),\r\n    width=\"100%\"\r\n)\r\n```\r\n\r\nSetting width to 50% I would expect it to not spill and account for the default padding between the components. Here I don't think there is an easy way to have it stretch 100% without spilling  as the user doesn't know how to account for padding.\r\n\r\nIdeally I would want the two button too stretch the full way and not spill outside the container, and just stop where the separator stop on the right",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4069/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4067",
      "id": 2567567309,
      "node_id": "I_kwDOITROHc6ZCffN",
      "number": 4067,
      "title": "Change behavior of switch, checkbox",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-10-05T00:47:37Z",
      "updated_at": "2025-11-02T18:14:08Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```python\r\nclass FormSwitchState(rx.State):\r\n    form_data: dict = {}\r\n\r\n    def handle_submit(self, form_data: dict):\r\n        \"\"\"Handle the form submit.\"\"\"\r\n        self.form_data = form_data\r\n\r\n\r\ndef switch_form_example():\r\n    return rx.card(\r\n        rx.vstack(\r\n            rx.heading(\"Example Form\"),\r\n            rx.form.root(\r\n                rx.hstack(\r\n                    rx.switch(name=\"switch\"),\r\n                    rx.button(\"Submit\", type=\"submit\"),\r\n                    width=\"100%\",\r\n                ),\r\n                on_submit=FormSwitchState.handle_submit,\r\n                reset_on_submit=True,\r\n            ),\r\n            rx.divider(),\r\n            rx.hstack(\r\n                rx.heading(\"Results:\"),\r\n                rx.badge(\r\n                    FormSwitchState.form_data.to_string()\r\n                ),\r\n            ),\r\n            align_items=\"left\",\r\n            width=\"100%\",\r\n        ),\r\n        width=\"50%\",\r\n    )\r\n ```\r\n\r\nOdd behaviour in switch I would expect it {\"switch\":\"off\"} or false but its empty in a form\r\n\r\nhttps://github.com/user-attachments/assets/aa5eb99a-cf02-4304-bbc8-262f03a23d80\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4067/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4017",
      "id": 2553561249,
      "node_id": "I_kwDOITROHc6YNECh",
      "number": 4017,
      "title": "Dynamic components that depend on react fail to evaluate",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-09-27T19:03:32Z",
      "updated_at": "2024-09-27T19:03:32Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nThe CDN appears to be referencing dependent libs from the CDN as well, which can cause conflicts with the version of React that the local app is running. I don't think it's allowed to have two different reacts\r\n\r\n**To Reproduce**\r\n```python\r\nimport reflex as rx\r\n\r\n\r\nclass Confetti(rx.Component):\r\n    library = \"react-confetti\"\r\n    tag = \"Confetti\"\r\n    is_default = True\r\n\r\n\r\nclass HexColorPicker(rx.Component):\r\n    library = \"react-colorful\"\r\n    tag = \"HexColorPicker\"\r\n\r\n    color: rx.Var[str]\r\n\r\n\r\nclass State(rx.State):\r\n    conf: rx.Component = Confetti.create()\r\n    cp: rx.Component = HexColorPicker.create(color=\"#f00\")\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        rx.color_mode.button(position=\"top-right\"),\r\n        rx.vstack(\r\n            rx.heading(\"Welcome to Reflex!\", size=\"9\"),\r\n            State.conf, \r\n            # Uncomment folloring line and we get \"Cannot read properties of null (reading 'useRef')\"\r\n            # State.cp,\r\n            # Appears due to loading React again from the CDN, as opposed to the window object\r\n        ),\r\n        rx.logo(),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\n```\r\nUnhandled Runtime Error\r\nTypeError: Cannot read properties of null (reading 'useRef')\r\n\r\nCall Stack\r\nt.useRef\r\nhttps://cdn.jsdelivr.net/npm/react@18.2.0/+esm (7:6179)\r\nU\r\nhttps://cdn.jsdelivr.net/npm/react-colorful/+esm (7:8765)\r\n```\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.11\r\n - Reflex Version: `main`\r\n - OS: macOS 14.5\r\n - Browser (Optional):\r\n \r\n**Additional context**\r\nAdd any other context about the problem here.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/4017/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3989",
      "id": 2546329551,
      "node_id": "I_kwDOITROHc6XxefP",
      "number": 3989,
      "title": "Cached var are not busted on hot reload",
      "user": {
        "login": "Lendemor",
        "id": 4015177,
        "node_id": "MDQ6VXNlcjQwMTUxNzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4015177?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lendemor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        },
        "1": {
          "id": 7507248755,
          "node_id": "LA_kwDOITROHc8AAAABv3eGcw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/workaround%20available",
          "name": "workaround available",
          "color": "E3CF20",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-09-24T20:26:50Z",
      "updated_at": "2025-01-27T15:49:39Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nCached var are not busted when you change some values inside the var (only when there is no dependency that could trigger the cachebust)\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Run the snippet\r\n```python\r\nimport reflex as rx\r\n\r\nclass MyState(rx.State):\r\n    @rx.var(cache=True)\r\n    def main_data(self) -> list[dict]:\r\n        return [\r\n            {\"id\": \"2\"},\r\n            {\"id\": \"3\"},\r\n        ]\r\n\r\n@rx.page(route=\"/mypage\", title=\"My Page\")\r\ndef mypage() -> rx.Component:\r\n    return rx.vstack(\r\n        rx.foreach(MyState.main_data, main_data_component),\r\n        spacing=\"0\",\r\n    )\r\n```\r\n2. Remove one of the two entry in the list in `main_data`\r\n3. Wait for reload\r\n4. The page still display the initial cached value (2 items) instead of the new one (1 item)\r\n\r\n**Expected behavior**\r\nCached var value should be busted on hot-reload.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3989/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3944",
      "id": 2532367724,
      "node_id": "I_kwDOITROHc6W8N1s",
      "number": 3944,
      "title": "Document the defaults for all props",
      "user": {
        "login": "elviskahoro",
        "id": 29553206,
        "node_id": "MDQ6VXNlcjI5NTUzMjA2",
        "avatar_url": "https://avatars.githubusercontent.com/u/29553206?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/elviskahoro",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-09-17T23:21:54Z",
      "updated_at": "2025-04-30T19:05:03Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "From Bert via discourse\nThe defaults for all props should be clearly specified in the API reference section for all components.\n\nE.g. for the rx.progress component the “default” column is not filled in. The interactive column will keep whatever I change it too even after refresh so that’s not a good guide for the default even assuming it was the default to start.\n\n<img src=\"https://front.com/assets/img/favicons/favicon-32x32.png\" height=\"16\" width=\"16\" alt=\"Front logo\" /> [Front conversations](https://app.frontapp.com/open/top_9icnbv)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3944/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": {
        "id": 407524,
        "client_id": "Iv1.5daa61c26aaefdb0",
        "slug": "front-integration",
        "node_id": "A_kwHOAC4rhc4ABjfk",
        "owner": {
          "login": "frontapp",
          "id": 3025797,
          "node_id": "MDEyOk9yZ2FuaXphdGlvbjMwMjU3OTc=",
          "avatar_url": "https://avatars.githubusercontent.com/u/3025797?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/frontapp",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "name": "Front Integration",
        "description": "The simplest way to work with team inboxes.",
        "created_at": "2023-10-12T23:24:05Z",
        "updated_at": "2024-10-09T17:45:59Z",
        "permissions": {
          "issues": "write",
          "members": "read",
          "metadata": "read"
        },
        "events": {
          "0": "issues"
        }
      },
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3938",
      "id": 2529747729,
      "node_id": "I_kwDOITROHc6WyOMR",
      "number": 3938,
      "title": "Free standing dialog",
      "user": {
        "login": "Kastier1",
        "id": 40179067,
        "node_id": "MDQ6VXNlcjQwMTc5MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40179067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kastier1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "Wei-HaiMing",
        "id": 152235816,
        "node_id": "U_kgDOCRLvKA",
        "avatar_url": "https://avatars.githubusercontent.com/u/152235816?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Wei-HaiMing",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "Wei-HaiMing",
          "id": 152235816,
          "node_id": "U_kgDOCRLvKA",
          "avatar_url": "https://avatars.githubusercontent.com/u/152235816?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Wei-HaiMing",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 4,
      "created_at": "2024-09-17T01:05:58Z",
      "updated_at": "2025-03-11T23:56:45Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nA clear and concise description of what the bug is.\r\nWhen creating a dialog, then has its `open` prop set to a state var, and its the state var is set by a button within a menu, the dialog behaves in an unexpected mannor\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n - Code/Link to Repo:\r\n```python\r\n\r\nclass DashboardState(rx.State):\r\n    @staticmethod\r\n    def obtain_categories() -> List:\r\n        cats = getAllCategories()\r\n        dcats = {cat[0]: cat[1] for cat in cats}\r\n        clean_cats = []\r\n        for cat in cats:\r\n            if cat[2] and cat[2] in dcats:\r\n                clean_cats.append((cat[0], cat[1], dcats[cat[2]], cat[3], cat[4]))\r\n            else:\r\n                clean_cats.append(cat)\r\n        return clean_cats\r\n\r\n    categories: List[Tuple[str]] = obtain_categories()\r\n    cat_map:Dict[str,str] =  {cat[0]: cat[1] for cat in categories}\r\n    edit_category_dialog: bool = False\r\n    delete_category_dialog: bool = False\r\n    parent_value: str = \"\"\r\n\r\n    def activate_edit_category_dialog(self, value:bool):\r\n        self.edit_category_dialog = value\r\n\r\ndef show_category_row(category: tuple):\r\n    return rx.table.row(\r\n        rx.table.cell(category[1]),\r\n        rx.table.cell(category[3]),\r\n        rx.table.cell(category[2]),\r\n        rx.table.cell(category_menu(category)),\r\n    )\r\n\r\ndef category_menu(component) -> rx.Component:\r\n    return rx.box(\r\n        rx.menu.root(\r\n        rx.menu.trigger(rx.icon(\"ellipsis-vertical\")),\r\n        rx.menu.content(rx.menu.item(edit_category_button(component))),\r\n        ),\r\n\r\n    rx.dialog.root( \r\n        rx.dialog.content(\r\n            rx.vstack(\r\n                rx.dialog.title(f\"Edit Category: \"),\r\n                rx.dialog.description(\"Edit the categorys's info\"),\r\n            ),\r\n            rx.flex(\r\n                rx.form.root(\r\n                    rx.flex(\r\n                        form_field_filled(\"Name\", component[1], \"text\", \"name\"),\r\n                        form_field_filled(\"Description\", component[3], \"text\", \"description\"),\r\n                        rx.form.field(\r\n                            rx.flex(\r\n                                rx.form.label(\"id\"),\r\n                                rx.form.control(\r\n                                    rx.input(value=component[0]),\r\n                                    as_child=True,\r\n                                ),\r\n                                direction=\"column\",\r\n                                spacing=\"1\",\r\n                            ),\r\n                            width=\"100%\",\r\n                            name=\"id\",\r\n                            hidden=True,\r\n                        ),\r\n                        rx.form.field(\r\n                            rx.form.label(\"Select Parent Category\"),\r\n                            rx.select.root(\r\n                                rx.select.trigger(),\r\n                                rx.select.content( \r\n                                    rx.select.group(\r\n                                        rx.foreach(\r\n                                            DashboardState.categories, show_select\r\n                                        ),\r\n                                    ),\r\n                                ), \r\n                                default_value=component[2],\r\n                                name=\"parent_id\",\r\n                                direction=\"column\",\r\n                                spacing=1,\r\n                            ),\r\n                            width=\"100%\",\r\n                        ),\r\n                        direction=\"column\",\r\n                    ),\r\n                    rx.flex(\r\n                        rx.dialog.close(rx.button(\"Cancel\", on_click=DashboardState.activate_edit_category_dialog(False))),\r\n                        rx.form.submit(\r\n                            rx.dialog.close(rx.button(\"Update category\")),\r\n                            as_child=True,\r\n                        ),\r\n                    ),\r\n                    on_submit=DashboardState.edit_category,\r\n                    reset_on_submit=False,\r\n                ),\r\n            ),\r\n        ),\r\n        open=DashboardState.edit_category_dialog,\r\n        # on_open_change=DashboardState.activate_edit_category_dialog,\r\n    )\r\n    )\r\n\r\n\r\ndef edit_category_button(component) -> rx.Component:\r\n    return rx.button(rx.text(\"Edit\"), on_click=DashboardState.activate_edit_category_dialog(True))\r\n\r\n```\r\n\r\n\r\n**Expected behavior**\r\nA clear and concise description of what you expected to happen.\r\nThe dialog should appear and work as normal (ie background visible; dialog intractable normally) \r\n\r\n\r\n\r\n\r\n**Screenshots**\r\nIf applicable, add screenshots to help explain your problem.\r\nhttps://github.com/user-attachments/assets/7b9b0405-4473-4742-9cea-58d71dae48ea\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version:Python 3.12.6\r\n - Reflex Version: reflex-0.6.0a1 / reflex-0.5.10\r\n - OS: macOS 14.6.1 (23G93)\r\n - Browser (Optional): Safari / Brave (Chromium) \r\n \r\n**Additional context**\r\nAdd any other context about the problem here.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3938/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3931",
      "id": 2529327541,
      "node_id": "I_kwDOITROHc6Wwnm1",
      "number": 3931,
      "title": "PWA - First class support for Progressive Web App development",
      "user": {
        "login": "elviskahoro",
        "id": 29553206,
        "node_id": "MDQ6VXNlcjI5NTUzMjA2",
        "avatar_url": "https://avatars.githubusercontent.com/u/29553206?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/elviskahoro",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-09-16T19:44:30Z",
      "updated_at": "2025-03-11T23:53:36Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "From greg via Discourse:\r\nhttps://forum.reflex.dev/t/pwa-progressive-web-app-development/382\r\n\r\nIs there a working method to fully apply on reflex webapp to convert it to PWA in particular to enable push notifications (on any device)?\r\n\r\nAs far as I know to convert a webapp to pwa and enabling push notifications include these steps:\r\n\r\n(1) Creating manifest.json file (metadata about the app)\r\n-(a) app_name, icon, start_url …\r\n(2) Service Worker (cache assets - and this is responsible to push notifications)\r\n(a) register service worker\r\n(3) Event Listener (handling notification):\r\n-(a) request permission from the user\r\n-(b) add the event listener to show notification\r\nIs there a working method that would enable my reflex webapp to convert into PWA with enabled push notification on any user device such as: PC/Tablet/iphone/Android?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3931/reactions",
        "total_count": 8,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 3
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3914",
      "id": 2521064215,
      "node_id": "I_kwDOITROHc6WRGMX",
      "number": 3914,
      "title": "Confusing Breakpoint Logic/Syntax",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-09-12T00:32:17Z",
      "updated_at": "2024-09-24T00:29:46Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Passing in a list allows for responsive breakpoint on css props but not for regular props. Since it doesn't look like we can support the list syntax for regular props I think we should only support rx.breakpoint for responsiveness. \r\n\r\nI dont think we need to yank it. But in docs we should always use rx.breakpoint from now on",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3914/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3879",
      "id": 2505103889,
      "node_id": "I_kwDOITROHc6VUNoR",
      "number": 3879,
      "title": "Barchart Bar clicking",
      "user": {
        "login": "naprsa",
        "id": 24567354,
        "node_id": "MDQ6VXNlcjI0NTY3MzU0",
        "avatar_url": "https://avatars.githubusercontent.com/u/24567354?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/naprsa",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-09-04T11:41:43Z",
      "updated_at": "2024-10-01T21:40:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Can't get data of the bar when I click on it(x_axis and y_axis data)\r\n\r\n**Expected behavior**\r\nNeet somehow to provide data of the bar in barchart to the on_click handle func\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12\r\n - Reflex Version: 0.5.9\r\n - OS: macos\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3879/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3838",
      "id": 2487880705,
      "node_id": "I_kwDOITROHc6USgwB",
      "number": 3838,
      "title": "rx.Image should have a fallback prop",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-08-26T22:14:47Z",
      "updated_at": "2025-07-14T21:42:05Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "If the src image isn't present rx.image can result in a fallback image\r\n\r\nthe prob fallback would be a path to where that asset is, str\r\n\r\nhttps://vercel.com/templates/next.js/image-fallback",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3838/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3820",
      "id": 2481536628,
      "node_id": "I_kwDOITROHc6T6T50",
      "number": 3820,
      "title": "Allow substates to redefine/overwrite vars",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-08-22T19:14:33Z",
      "updated_at": "2025-05-17T01:00:28Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Quote from @masenf in #3805 \r\n\r\n> The other big problem I see in state.py is that substates cannot redefine or override fields from a parent state. Maybe this restriction doesn't make sense anymore... if a substate redefines a field, then it should be a different value than the same-named field in a parent state, but that's just not how the code is written today.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3820/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3809",
      "id": 2472966063,
      "node_id": "I_kwDOITROHc6TZnev",
      "number": 3809,
      "title": "How to use rx.radio to achieve this html effect",
      "user": {
        "login": "lpdswing",
        "id": 20874036,
        "node_id": "MDQ6VXNlcjIwODc0MDM2",
        "avatar_url": "https://avatars.githubusercontent.com/u/20874036?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lpdswing",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474964,
          "node_id": "LA_kwDOITROHc8AAAABGT421A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/documentation",
          "name": "documentation",
          "color": "89BFF8",
          "default": true,
          "description": "Improvements or additions to documentation"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-08-19T10:03:59Z",
      "updated_at": "2025-04-30T18:41:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\r\n<form action=\"\">\r\n  <input type=\"radio\" id=\"apple\" name=\"fruit\" value=\"apple\">\r\n  <label for=\"apple\">苹果</label><br>\r\n  <input type=\"radio\" id=\"orange\" name=\"fruit\" value=\"orange\">\r\n  <label for=\"orange\">橙子</label><br>\r\n  <input type=\"radio\" id=\"banana\" name=\"fruit\" value=\"banana\">\r\n  <label for=\"banana\">香蕉</label><br>\r\n  <input type=\"submit\" value=\"提交\">\r\n</form>\r\n```\r\n\r\nI want the text shown on the radio to be different from the actual value.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3809/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3801",
      "id": 2468775832,
      "node_id": "I_kwDOITROHc6TJoeY",
      "number": 3801,
      "title": "Custom component implementation into forms",
      "user": {
        "login": "jrremyuptick",
        "id": 177958790,
        "node_id": "U_kgDOCptvhg",
        "avatar_url": "https://avatars.githubusercontent.com/u/177958790?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jrremyuptick",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-08-15T19:25:02Z",
      "updated_at": "2024-08-20T19:22:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Trying to implement a select box that has a search bar attached to it that narrows down the select options as you type. I'm aware of [dynoselect](https://github.com/woernerm/dynoselect), but I can't figure out a way to use it as a field in a form, since currently there's a limited selection of components that can be used as form controls (rx.input, rx.checkbox, rx.slider, rx.textarea, rx.radio_group, rx.select or rx.switch). Would be nice if we could use custom components as form controls - or at least something like dynoselect.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3801/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3779",
      "id": 2460114993,
      "node_id": "I_kwDOITROHc6SomAx",
      "number": 3779,
      "title": "Switching tabs in rx.tabs does not retain the exact rendering when returning to original tab",
      "user": {
        "login": "bertbarabas",
        "id": 17627242,
        "node_id": "MDQ6VXNlcjE3NjI3MjQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17627242?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bertbarabas",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-08-12T06:07:32Z",
      "updated_at": "2025-02-05T02:26:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\n\r\nWhen I switch tabs in the rx.tabs widget, the contents are not the same when I return to the starting tab. For instance the scroll position of the rx.dataeditor is back at the top. Is there a way to return to a tab exactly how it was before?\r\n\r\nPerhaps the tab is being re-rendered rather than hidden/unhidden so things like scroll position of a widget like rx.dataeditor are lost?\r\n\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12.4\r\n - Reflex Version: 0.5.9\r\n - OS: Ubuntu 22.04.3 on Windows 11 WSL 2\r\n - Browser (Optional):\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3779/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3778",
      "id": 2459766359,
      "node_id": "I_kwDOITROHc6SnQ5X",
      "number": 3778,
      "title": "Consider protobuf",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-08-11T21:20:51Z",
      "updated_at": "2024-08-13T14:39:06Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Introduce a protobuf based protocol for websocket communication.\r\nThis is useful to differentiate messages sent over the wire in a type-safe and performant way.\r\n[buf](https://github.com/bufbuild/buf) could be used to streamline the js and python code generation.\r\nCould be used to differentiate var types f.e. for #3732 and #3340 \r\n\r\nA first implementation could mostly rely on json strings or protobuf structs.\r\nBecause reflex already knows var types at compile time, we could later add a feature to dynamically create a protobuf spec for a computed var like this:\r\n\r\n```python\r\nclass State(rx.State):\r\n  @rx.var(protobuf=True)\r\n  def proto_int(self) -> int:\r\n      return 5\r\n```\r\n\r\nProtobuf could also be interesting for StateManagerRedis.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3778/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3776",
      "id": 2459601611,
      "node_id": "I_kwDOITROHc6SmorL",
      "number": 3776,
      "title": "Allow to disable frontend exception handler with None",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-08-11T13:47:10Z",
      "updated_at": "2024-08-18T12:09:50Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "@maximvlah ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3776/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3772",
      "id": 2458767006,
      "node_id": "I_kwDOITROHc6Sjc6e",
      "number": 3772,
      "title": "rx.var/property setters",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-08-09T22:58:51Z",
      "updated_at": "2024-08-13T14:43:28Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```python\r\nclass State(rx.State):\r\n    _test: str = \"hi\"\r\n\r\n    @rx.var\r\n    def test(self) -> str:\r\n        return self._test\r\n\r\n    @test.setter\r\n    def test(self, value: str):\r\n        self._test = value\r\n\r\n    def other_handler(self):\r\n        self.test = \"hello\"\r\n```\r\n\r\nWith this example, `State.test` would be a `BaseVar` or `EventHandler` depending on where it is used",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3772/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3771",
      "id": 2458711768,
      "node_id": "I_kwDOITROHc6SjPbY",
      "number": 3771,
      "title": "Support setting values at ComponentState creation time in `get_component`",
      "user": {
        "login": "TimChild",
        "id": 48571510,
        "node_id": "MDQ6VXNlcjQ4NTcxNTEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/48571510?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TimChild",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-08-09T21:57:12Z",
      "updated_at": "2024-08-14T14:01:36Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'd like to be able to create re-usable components, but providing some initial default values when I create them. \r\n\r\nFor example:\r\n```\r\ndef AppFunc():\r\n    import reflex as rx\r\n\r\n    class Counter(rx.ComponentState):\r\n        # Define vars that change.\r\n        count: int = 0\r\n\r\n        # Define event handlers.\r\n        def increment(self):\r\n            self.count += 1\r\n\r\n        def decrement(self):\r\n            self.count -= 1\r\n\r\n        @classmethod\r\n        def get_component(cls, start_value: int = 1, **props):\r\n            cls.count = start_value\r\n            return rx.hstack(\r\n                rx.button(\"Decrement\", on_click=cls.decrement,\r\n                          id=\"button-decrement\"),\r\n                rx.text(cls.count, id=\"counter-value\"),\r\n                rx.button(\"Increment\", on_click=cls.increment,\r\n                          id=\"button-increment\"),\r\n                **props,\r\n            )\r\n\r\n    app = rx.App(state=rx.State)\r\n\r\n    @rx.page()\r\n    def index() -> rx.Component:\r\n        return rx.container(\r\n            Counter.create(start_value = 5),\r\n        )    \r\n```\r\n\r\nThis would ideally create a counter that has a starting value of 5, but otherwise would work like a normal counter. \r\n\r\nAt the moment, while the counter does show 5, it also stops working. \r\n\r\nI'm pretty sure this is because cls.count is actually an rx.Var, and it is being replaced with just an integer. So then the layout is being created with a fixed integer rather than the Var instance. \r\n\r\nI think the solution to this will also relate to #3711 << Which is also something I would like to be able to do. \r\n\r\nAs a sort of workaround, you can instead do:\r\n```\r\n\t\t...\r\n\t\tdef handle_load(self):\r\n\t\t    self.count = self._initial_value\r\n        \r\n        @classmethod\r\n        def get_component(cls, start_value: int = 1, **props):\r\n            cls._initial_value = start_value\r\n            \r\n     \t...\r\n     \tcounter = Counter.create(start_value=5)\r\n     \t\r\n     \t@rx.page(on_load=counter.State.handle_load)\r\n     \tdef index() ...\r\n```\r\n\r\nWhich then does have the desired behaviour.\r\n\r\nBut, that's a lot of work to achieve something relatively simple.\r\n\r\n\r\nIs there a different way of looking at this?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3771/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3765",
      "id": 2458137110,
      "node_id": "I_kwDOITROHc6ShDIW",
      "number": 3765,
      "title": "Configure Tailwind Via Wrapped Components 👾",
      "user": {
        "login": "itsmeadarsh2008",
        "id": 71959210,
        "node_id": "MDQ6VXNlcjcxOTU5MjEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/71959210?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/itsmeadarsh2008",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-08-09T15:07:43Z",
      "updated_at": "2024-08-14T14:16:20Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I need support for tailwind.config.js editing because the concept is based on just installation and use. You are editing Tailwind Config Manually and it may be hard For Python Developers. It means you must paste tailwind.config.js lines every time you install the package to ensure the component library works. \r\nAdding something like a tailwind config updater function may reduce extra efforts so anyone can wrap out any UI library based on the tailwind and install and use it.\r\n\r\nIt takes all tailwind configs from individual reflex-wrapped components merges them into a dictionary (union) and exports them to tailwind.config.js in `.web` as translated dictionaries to javascript objects.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3765/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3759",
      "id": 2456255943,
      "node_id": "I_kwDOITROHc6SZ33H",
      "number": 3759,
      "title": "pass additional commands to wrapping react.",
      "user": {
        "login": "itsmeadarsh2008",
        "id": 71959210,
        "node_id": "MDQ6VXNlcjcxOTU5MjEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/71959210?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/itsmeadarsh2008",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-08-08T17:02:50Z",
      "updated_at": "2025-04-30T07:48:14Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Example**\r\n```python\r\nimport reflex as rx\r\n\r\n\r\nclass Spline(rx.Component):\r\n    \"\"\"Spline component.\"\"\"\r\n\r\n    # The name of the npm package.\r\n    library = \"@splinetool/react-spline\"\r\n\r\n    # Any additional libraries needed to use the component.\r\n    lib_dependencies: list[str] = [\r\n        \"@splinetool/runtime@1.5.5\"\r\n    ]\r\n\r\n\r\n    # HERE!!!\r\n    additional_commands: list[str] = ['npm install some-package --save-dev', '<a command that downloads an asset from a link>']\r\n\r\n\r\n\r\n    # The name of the component to use from the package.\r\n    tag = \"Spline\"\r\n\r\n    # Spline is a default export from the module.\r\n    is_default = True\r\n\r\n    # Any props that the component takes.\r\n    scene: rx.Var[str]\r\n\r\n\r\n# Convenience function to create the Spline component.\r\nspline = Spline.create\r\n\r\n\r\n# Use the Spline component in your app.\r\ndef index():\r\n    return spline(\r\n        scene=\"https://prod.spline.design/joLpOOYbGL-10EJ4/scene.splinecode\"\r\n    )\r\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3759/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3751",
      "id": 2451365016,
      "node_id": "I_kwDOITROHc6SHNyY",
      "number": 3751,
      "title": "Unable to set connection arguments for db connection",
      "user": {
        "login": "ibigpapa",
        "id": 694054,
        "node_id": "MDQ6VXNlcjY5NDA1NA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/694054?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ibigpapa",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-08-06T17:24:44Z",
      "updated_at": "2024-08-07T19:35:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/reflex-dev/reflex/blob/3309c0e53356256268294286c44ea09f50014e0a/reflex/model.py#L27\r\n\r\nReviewing the code it looks like you cannot specify connection arguments in the config file.  For instance I need to change the timeout of the ODBC connection.   Unless I'm missing how to set this up doesn't look like it's available.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3751/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3745",
      "id": 2449577335,
      "node_id": "I_kwDOITROHc6SAZV3",
      "number": 3745,
      "title": "Add Load Tests Using Locust",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4930607534,
          "node_id": "LA_kwDOITROHc8AAAABJeMZrg",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/testing",
          "name": "testing",
          "color": "F1DF47",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "sksDonni",
        "id": 53624363,
        "node_id": "MDQ6VXNlcjUzNjI0MzYz",
        "avatar_url": "https://avatars.githubusercontent.com/u/53624363?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sksDonni",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "sksDonni",
          "id": 53624363,
          "node_id": "MDQ6VXNlcjUzNjI0MzYz",
          "avatar_url": "https://avatars.githubusercontent.com/u/53624363?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/sksDonni",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 8,
      "created_at": "2024-08-05T22:24:28Z",
      "updated_at": "2024-09-02T21:53:14Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "We are looking to add load tests to Reflex, to show how many connections we can handle and what this does cpu utilization. Will use this library https://github.com/locustio/locust. This will probably need some plugin like https://github.com/SvenskaSpel/locust-plugins/blob/master/examples/socketio_ex.py to handle websocket interactions since it's all pretty vanilla http out of the box.\r\n\r\nSome things we want to test for: \r\n- idle websocket connections\r\n- rps events handled (no state modification)\r\n- rps state modifications with delta (probably router_data)\r\n- rps (small) substate modifications\r\n\r\nThese probably need to be with and without redis (but that shouldn't affect how the tests are written)\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3745/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3711",
      "id": 2432792008,
      "node_id": "I_kwDOITROHc6RAXXI",
      "number": 3711,
      "title": "Support for custom event triggers in ComponentStates",
      "user": {
        "login": "TheRideout",
        "id": 42011554,
        "node_id": "MDQ6VXNlcjQyMDExNTU0",
        "avatar_url": "https://avatars.githubusercontent.com/u/42011554?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TheRideout",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2024-07-26T18:42:50Z",
      "updated_at": "2025-06-16T03:55:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I would like to be able to define custom event triggers inside a ComponentState that I can use to drive events in other states.\r\n\r\nAs an example using ReusableCounter, I define an event trigger called \"on_over_ten\" that I can pass a value through, and then emit this whenever the counter changes and the value is over 10. I then connect the trigger to a simple MyState \"over_ten\" event to execute something. Pseudocode without much understanding of how the system fundamentally works:\r\n\r\n```\r\nclass ReusableCounter(rx.ComponentState):\r\n    count: int = 0\r\n\r\n    on_over_ten: lambda value: [value]??\r\n\r\n    def increment(self):\r\n        self.count += 1\r\n        if self.count > 10:\r\n            self.on_over_ten.emit(self.count)\r\n\r\n    def decrement(self):\r\n        self.count -= 1\r\n        if self.count > 10:\r\n            self.on_over_ten.emit(self.count)\r\n\r\n    @classmethod\r\n    def get_component(cls, **props):\r\n        return rx.hstack(\r\n            rx.button(\"Decrement\", on_click=cls.decrement),\r\n            rx.text(cls.count),\r\n            rx.button(\"Increment\", on_click=cls.increment),\r\n            **props,\r\n        )\r\n\r\nreusable_counter = ReusableCounter.create\r\n\r\nclass MyState(rx.State):\r\n    def over_ten(self, value):\r\n        return rx.console_log(value)\r\n\r\ndef example():\r\n    return rx.vstack(\r\n        reusable_counter(on_over_ten=MyState.over_ten),\r\n    )\r\n```\r\n\r\nUltimately I think this could get us functionally closer to being able to build our own React components inside of Reflex.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3711/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3718",
      "id": 2436363919,
      "node_id": "I_kwDOITROHc6RN_aP",
      "number": 3718,
      "title": "Custom components with ComponentState not compatible with rx.foreach",
      "user": {
        "login": "MarcoTuc",
        "id": 83081728,
        "node_id": "MDQ6VXNlcjgzMDgxNzI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/83081728?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MarcoTuc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2024-07-25T20:47:16Z",
      "updated_at": "2025-06-27T21:12:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When a Custom component is created with a custom state, if declared via rx.foreach, then all the created components will share the same state. Below an example that works as I explained on reflex 0.5.7\r\n```\r\nclass ReusableCounter(rx.ComponentState):\r\n    count: int = 0\r\n\r\n    def increment(self):\r\n        self.count += 1\r\n\r\n    def decrement(self):\r\n        self.count -= 1\r\n\r\n    @classmethod\r\n    def get_component(cls, **props):\r\n        return rx.hstack(\r\n            rx.button(\"Decrement\", on_click=cls.decrement),\r\n            rx.text(cls.count),\r\n            rx.button(\"Increment\", on_click=cls.increment),\r\n            **props,\r\n        )\r\n\r\n\r\nreusable_counter = ReusableCounter.create\r\n\r\n\r\ndef multiple_counters():\r\n    return rx.foreach(\r\n        rx.Var.range(3),\r\n        lambda i: rx.hstack(\r\n            rx.text(f\"Counter {i}\"),\r\n            reusable_counter(),\r\n        )\r\n    )\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3718/reactions",
        "total_count": 8,
        "+1": 8,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3690",
      "id": 2419271347,
      "node_id": "I_kwDOITROHc6QMyaz",
      "number": 3690,
      "title": "[REF-3333] Toast title sometimes disappear. ",
      "user": {
        "login": "Lendemor",
        "id": 4015177,
        "node_id": "MDQ6VXNlcjQwMTUxNzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4015177?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lendemor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-07-19T16:05:06Z",
      "updated_at": "2025-06-03T01:53:37Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Using the following snippet, on first toast it show up properly.\r\n\r\nIf you click the button again, the title of the toast disappear for some reason, but description is still there.\r\n```python\r\nrx.button(\r\n    on_click=rx.toast(\r\n        level=\"error\",\r\n        title=\"Test Title\",\r\n        description=\"Test Description\",\r\n        id=\"test\",\r\n    )\r\n)\r\n```\n\n<sub>[REF-3333](https://linear.app/reflex-dev/issue/REF-3333/toast-title-sometimes-disappear)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3690/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3686",
      "id": 2416562051,
      "node_id": "I_kwDOITROHc6QCc-D",
      "number": 3686,
      "title": "[REF-3344] Can't paste in big files",
      "user": {
        "login": "dentroai",
        "id": 135163019,
        "node_id": "U_kgDOCA5siw",
        "avatar_url": "https://avatars.githubusercontent.com/u/135163019?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dentroai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-07-18T14:27:16Z",
      "updated_at": "2025-05-30T01:14:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nCould it be that it isn't possible to paste very big files?\r\n\r\nI got a screenshot that's 2.8 MB.\r\n\r\nI can upload it using the \"normal\" file upload functionality, but when I try to upload this big image, the on_paste handler isn't even triggered.\r\n\r\nI do not use max_size of the file_upload component.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n - Code/Link to Repo:\r\n\r\n**Expected behavior**\r\nBeing able to upload the same files using the on_drop or paste handler\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12\r\n - Reflex Version: 0.5.7\r\n - OS:  linux\r\n - Browser (Optional): firefox, chrome\r\n \r\n**Additional context**\r\nHere the screenshot for reference, inside a zip archive to make sure it doesn't get compressed when uploaded to github:\r\n[big_image.zip](https://github.com/user-attachments/files/16284665/big_image.zip)\r\n\r\nRelated PR https://github.com/reflex-dev/reflex/pull/3513\r\n\n\n<sub>[REF-3344](https://linear.app/reflex-dev/issue/REF-3344/cant-paste-in-big-files)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3686/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3685",
      "id": 2416549038,
      "node_id": "I_kwDOITROHc6QCZyu",
      "number": 3685,
      "title": "[REF-3343] Can't paste in more than 1 file at the same time",
      "user": {
        "login": "dentroai",
        "id": 135163019,
        "node_id": "U_kgDOCA5siw",
        "avatar_url": "https://avatars.githubusercontent.com/u/135163019?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dentroai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-07-18T14:24:35Z",
      "updated_at": "2025-06-03T01:51:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nNot sure if I'm doing something wrong, but it seems to me as if I'm only able to paste in a single file.\r\nWhen I select multiple files on my laptop, copy them and then paste them into the reflex app, only the first file is pasted.\r\n\r\nWhen inspecting my event handler in debug mode, it seems like data is always an array of length 1, even though I pasted e.g. 3 files\r\n\r\n```\r\nasync def on_paste(self, data):\r\n        for type, content in data:\r\n```\r\n\r\nIs this something you are aware of?\r\n\r\n\r\n**To Reproduce**\r\nTry to paste in multiple files\r\n\r\n**Expected behavior**\r\nExpected behavior would be that I can paste in as many files as I want.\r\n\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12\r\n - Reflex Version: 0.5.7\r\n - OS: linux\r\n - Browser (Optional): firefox, chrome\r\n \r\n**Additional context**\r\npaste event handler of this PR https://github.com/reflex-dev/reflex/pull/3513\r\n\n\n<sub>[REF-3343](https://linear.app/reflex-dev/issue/REF-3343/cant-paste-in-more-than-1-file-at-the-same-time)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3685/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3681",
      "id": 2414689076,
      "node_id": "I_kwDOITROHc6P7Ts0",
      "number": 3681,
      "title": "[REF-3342] Factor router[_data] out of BaseState",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-07-17T22:04:28Z",
      "updated_at": "2025-07-10T21:08:40Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "During some testing for #2771 @abulvenz and I discovered that it's pretty annoying to have `router` and `router_data` in `BaseState`. Router stuff does not really make sense in a shared/global State context. Hence, a good implementation of shared/global State would require us to factor out the router vars from `BaseState` to `State`/`RouterState`\r\n\r\n<sub>[REF-3342](https://linear.app/reflex-dev/issue/REF-3342/factor-router[-data]-out-of-basestate)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3681/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 1,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3661",
      "id": 2403937741,
      "node_id": "I_kwDOITROHc6PSS3N",
      "number": 3661,
      "title": "[REF-3296] Paste handler should paste in only the file object and not the path",
      "user": {
        "login": "dentroai",
        "id": 135163019,
        "node_id": "U_kgDOCA5siw",
        "avatar_url": "https://avatars.githubusercontent.com/u/135163019?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dentroai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-07-11T19:32:06Z",
      "updated_at": "2025-06-03T01:51:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nWhen using the new paste handler, I can't set up the event handler so that if a file is pasted we only handle the file but do not paste in the file path as text into the input field / text area.\r\n\r\nWhen I use prevent_default the file path isn't displayed when I paste a file, but then I also can't paste in normal text.\r\nIf I don't use prevent_default, the file path is always pasted in along\r\n\r\n**Expected behavior**\r\nIf a file is pasted, the paste handler should paste in only the file object and not the path as text in the input field.\r\nIf plain text is pasted, do paste it in the input field.\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12\r\n - Reflex Version: 0.5.6\r\n \r\n**Additional context**\r\nConversation already started here: https://github.com/reflex-dev/reflex/pull/3513\r\n\n\n<sub>[REF-3296](https://linear.app/reflex-dev/issue/REF-3296/paste-handler-should-paste-in-only-the-file-object-and-not-the-path)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3661/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3653",
      "id": 2400814697,
      "node_id": "I_kwDOITROHc6PGYZp",
      "number": 3653,
      "title": "`rx.input(value=State.nested.var)` is not updated when `nested` is set to a new object containing the same content.",
      "user": {
        "login": "abulvenz",
        "id": 14158137,
        "node_id": "MDQ6VXNlcjE0MTU4MTM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/abulvenz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        },
        "1": {
          "id": 7507304446,
          "node_id": "LA_kwDOITROHc8AAAABv3hf_g",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/upstream",
          "name": "upstream",
          "color": "721089",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-07-10T13:45:39Z",
      "updated_at": "2025-02-05T01:45:31Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nWe have some validation checks in setters that do not let through some changes from the frontend. Unfortunately the reload button does not reset the UI. \r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n- Use below app\r\n- Type an \"a\" into the input\r\n- Because your input is invalid, the state is not updated in the setter.\r\n- Click \"Create new Object\". This will overwrite the object in the state.  # Here I would expect an update in the input.\r\n- The input still shows the old value, containing the \"a\".\r\n- Click \"Create other Object\". This time the input changes to \"12345\"\r\n\r\n```python\r\nimport reflex as rx\r\n\r\nclass Object(rx.Base):\r\n    name: str = \"1234\"\r\n\r\n\r\nclass State(rx.State):\r\n    \"\"\"The app state.\"\"\"\r\n    message: str = \"Default\"\r\n    object: Object = Object()\r\n\r\n    def create_new_object(self):\r\n        self.object = Object()\r\n        self.message = self.object.name\r\n        print(self.object.name)\r\n    \r\n    def create_new_object_2(self):\r\n        self.object = Object(name=\"12345\")\r\n        self.message = self.object.name\r\n        print(self.object.name)\r\n\r\n    def set_name(self, value: str):\r\n        if not \"a\" in value:\r\n            self.object.name = value\r\n            self.message = \"\"\r\n        else:\r\n            self.message=\"You can't use the letter 'a' in the name\"\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        rx.text(f\"Your message: \", State.message), \r\n        rx.text(f\"Object name: \", State.object.name),\r\n        rx.input(value=State.object.name, on_change=State.set_name),\r\n        rx.button(\"Create new object\", on_click=State.create_new_object),\r\n        rx.button(\"Create other object\", on_click=State.create_new_object_2),\r\n    )\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\n\r\n\r\n**Expected behavior**\r\nThe input should show the variable value after pressing the button.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3653/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3622",
      "id": 2391270615,
      "node_id": "I_kwDOITROHc6Oh-TX",
      "number": 3622,
      "title": "Authorization System",
      "user": {
        "login": "raayu83",
        "id": 2895122,
        "node_id": "MDQ6VXNlcjI4OTUxMjI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2895122?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/raayu83",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2024-07-04T17:39:31Z",
      "updated_at": "2024-08-07T11:22:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi @Alek99,\r\n\r\nas discussed in Discord, I'm writing down some ideas about an Authorization system (as opposed to Authentication System, though I'd love to see a standards based pluggable integration there too).\r\n\r\nPersonally, I'd be happy with something along the lines of Django, including the Django Admin section that provides a User Interface for administration of the permissions. I don't have any experience with more recent tooling in this aspect, so what I'm going to write might be a bit outdated and should be taken with a grain of salt.\r\n\r\nFor this kind of Authorization, there are mainly the following Models needed:\r\n- Users\r\n- Permissions\r\n- Groups\r\n- Mapping of Permissions to Groups\r\n- Mapping of Permissions to Users\r\n\r\n1. User are just that - physical Users. At the very least User ID and Name or E-Mail would be required here, though it probably would make sense to do something bigger that integrates well with First Party and Third Party Authentication Modules\r\n2. Permissions contains the information which kind of permissions exist. This should support both referencing a Model whose permission you want to set as well as custom permissions.  For each permission, there should be variants for \"View\", \"Change\", \"Add\" and \"Delete\" actions by default, but it should be possible to define your own instead. \r\nFor assignment of Permissions to Models, maybe decorators could be used?\r\nIf possible (might be for a later stage), there should also be a system in place for how to handle changes in referenced models (e.g. model is renamed) and cleaning up unused permissions (e.g. model is deleted completely.\r\n3. Groups can be assigned to users. When a User has multiple groups, a Union of the permissions of all these groups defines the effective permissions. Additionally, a user can be assigned individual permissions, which will be added to the Union of permissions.\r\n\r\nAs far as applying the permissions is concerned... I think for Models that have a permission assigned it would be great if corresponding permissions would be checked automatically when doing operation on the models (with an option to override). \r\nAs for how to do that, I'm unsure. As a foundation, it might be worth using exceptions. However catching exceptions every time you try to save an object seems like a hassle. I wonder if it is possible to add some abstraction layer on top of permission exceptions that allows to handle this more globally and automatically show nicely formatted errors  in the User interface....\r\n\r\nAdditionally, it would love if there was an Row based Authorization system, but I don't know enough about these to write here.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3622/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3564",
      "id": 2373018821,
      "node_id": "I_kwDOITROHc6NcWTF",
      "number": 3564,
      "title": "[REF-3190] Add testing to verify props propagation of all reflex components",
      "user": {
        "login": "Lendemor",
        "id": 4015177,
        "node_id": "MDQ6VXNlcjQwMTUxNzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4015177?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lendemor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4930607534,
          "node_id": "LA_kwDOITROHc8AAAABJeMZrg",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/testing",
          "name": "testing",
          "color": "F1DF47",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2024-06-25T15:42:01Z",
      "updated_at": "2025-07-14T21:42:18Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Creating this issue to track an idea suggested in #3541.\r\n\r\n\n\n<sub>[REF-3190](https://linear.app/reflex-dev/issue/REF-3190/add-testing-to-verify-props-propagation-of-all-reflex-components)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3564/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3549",
      "id": 2370909881,
      "node_id": "I_kwDOITROHc6NUTa5",
      "number": 3549,
      "title": "`rx.select(position=\"item-aligned\")` propagates click events on mobile",
      "user": {
        "login": "abulvenz",
        "id": 14158137,
        "node_id": "MDQ6VXNlcjE0MTU4MTM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/abulvenz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-06-24T19:05:50Z",
      "updated_at": "2025-02-05T01:24:06Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nA clear and concise description of what the bug is.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n- Use the app below.\r\n- Navigate to it using either a real mobile device or \"touch mode\" using developer tools, e.g. in Chromium or Firefox\r\n- Open the select and chose the item that is above the \"Submit\"-button.\r\n- The background is red :zap: \r\n\r\n```python\r\nimport reflex as rx\r\nfrom rxconfig import config\r\n\r\n\r\nclass State(rx.State):\r\n    background = \"white\"\r\n\r\n    def set_background(self) -> None:\r\n        self.background = \"red\"\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.vstack(\r\n        rx.select(\r\n            [str(e) for e in [5, 10, 15, 20, 25, 30]],\r\n            label=\"Select a number\",\r\n            placeholder=\"Select a number\",\r\n            position=\"item-aligned\",\r\n        ),\r\n        rx.button(\"Submit\", on_click=State.set_background),\r\n        background_color=State.background,\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\n**Expected behavior**\r\nIt should not propagate the event. So maybe it is even a radix bug.\r\n\r\n**Specifics:**\r\n - Python Version: 3.12.4\r\n - Reflex Version: 0.5.4\r\n - Browser (Optional): Mobile Chrome on Android, Mobile Developer View (Firefox, Chromium)\r\n \r\n**Additional context**\r\nThe workaround is to use `position=\"popper\"`. Then it works as expected.\r\n\r\nThat is why I say it is **low prio**.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3549/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3517",
      "id": 2360975583,
      "node_id": "I_kwDOITROHc6MuaDf",
      "number": 3517,
      "title": "File upload appears to hold everything in memory until the end",
      "user": {
        "login": "bertbarabas",
        "id": 17627242,
        "node_id": "MDQ6VXNlcjE3NjI3MjQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17627242?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bertbarabas",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2024-06-19T00:41:11Z",
      "updated_at": "2025-06-03T01:51:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\n1. For large files, memory upload consumes significant memory and it grows even more when writing out the file iobuffer.\r\n2. Upload is very slow and consumes significant CPU when everything is on the same host (both reflex and the browser). Uploading files shouldn't really consume much CPU at all...\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n - Just use the standard upload example and upload a multi-gigabyte file.\r\n\r\n**Expected behavior**\r\nVery little memory should be used because the data should be incrementally written to a file.\r\nTo avoid re-writing the file after upload, I'd expect to be able to specify the target or if you choose to write to a temporary file I'd expect to be able to rename the temporary file to it's final home.\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12.4\r\n - Reflex Version: 0.5.4\r\n - OS: WSL Ubuntu 22.04.4 LTS  on Windows 11 pro \r\n - Browser (Optional): Brave 1.67.116 ( Chromium 126.0.6478.71)\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3517/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3505",
      "id": 2356836369,
      "node_id": "I_kwDOITROHc6MengR",
      "number": 3505,
      "title": "Redis does not reconnect as expected.",
      "user": {
        "login": "abulvenz",
        "id": 14158137,
        "node_id": "MDQ6VXNlcjE0MTU4MTM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/abulvenz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-06-17T09:17:34Z",
      "updated_at": "2024-06-17T17:17:00Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nReflex does not reconnect to redis when connection was lost.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n- Start app using redis\r\n- Stop redis\r\n- Immediately restart redis\r\n- When doing some state changes you only see `redis.exceptions.ConnectionError: Connection closed by server.`\r\n- The frontend is dead by now.\r\n- Restart app, everything works again.\r\n\r\n**Expected behavior**\r\nReflex should automatically try to reconnect on connection errors and log a warning.\r\n\r\nAre there any configuration options that I missed?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3505/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3493",
      "id": 2353154202,
      "node_id": "I_kwDOITROHc6MQkia",
      "number": 3493,
      "title": "How to add a custom tooltip to Recharts components?",
      "user": {
        "login": "nogaini",
        "id": 22312557,
        "node_id": "MDQ6VXNlcjIyMzEyNTU3",
        "avatar_url": "https://avatars.githubusercontent.com/u/22312557?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nogaini",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-06-14T11:20:49Z",
      "updated_at": "2025-05-23T02:10:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have a `CustomTooltip` local component stored in `assets/customtooltip.js`. How can I include this tooltip inside a recharts component?\r\n\r\nI tried this:\r\n\r\n```python\r\nclass CustomTooltip(rx.Component):\r\n    library = \"/public/customtooltip\"\r\n\r\nrx.recharts.line_chart(\r\n                        rx.recharts.x_axis(data_key=\"name\"),\r\n                        rx.recharts.y_axis(),\r\n                        CustomTooltip(),\r\n                        rx.recharts.legend(),\r\n                        data=State.data,\r\n                    ) \r\n```\r\n\r\nBut this gives me the error: \r\n\r\n```\r\nValueError: The component `LineChart` only allows the components: `XAxis`, `YAxis`, `ReferenceArea`, `ReferenceDot`, `ReferenceLine`, `Brush`, `CartesianGrid`, `Legend`, `GraphingTooltip`, `Line` as children. Got `CustomTooltip` instead.\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3493/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3489",
      "id": 2351966283,
      "node_id": "I_kwDOITROHc6MMChL",
      "number": 3489,
      "title": "[REF-3107] Dynamic domain in sitemap",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "TG199",
        "id": 56020538,
        "node_id": "MDQ6VXNlcjU2MDIwNTM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/56020538?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TG199",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "TG199",
          "id": 56020538,
          "node_id": "MDQ6VXNlcjU2MDIwNTM4",
          "avatar_url": "https://avatars.githubusercontent.com/u/56020538?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/TG199",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 6,
      "created_at": "2024-06-13T20:08:13Z",
      "updated_at": "2025-06-14T00:54:22Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Currently, reflex generates sitemaps with a static domain. If you want to deploy the same codebase to 2 different domains, one would need to build 2 different docker images.\r\n\r\nPossible Solutions:\r\n- Set a placeholder domain during `next-sitemap` generation and replace it at runtime\r\n- Generate the whole sitemap with python instead of `next-sitemap`\r\n\r\nBoth solutions would require us to move the sitemap serving from frontend to backend. Maybe there is a solution via nextjs which does not require this.\n\n<sub>[REF-3107](https://linear.app/reflex-dev/issue/REF-3107/dynamic-domain-in-sitemap)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3489/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3487",
      "id": 2351550716,
      "node_id": "I_kwDOITROHc6MKdD8",
      "number": 3487,
      "title": "Removing Rich",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-06-13T16:17:03Z",
      "updated_at": "2024-06-13T16:17:17Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "### Discussed in https://github.com/orgs/reflex-dev/discussions/3479\r\n\r\n<div type='discussions-op-text'>\r\n\r\n<sup>Originally posted by **itsmeadarsh2008** June 11, 2024</sup>\r\nRich is too heavy with bloatware in the dependency. Would it be a better idea to make a progress bar using `tqdm` only because using rich doesn't make any sense with web apps in the production? It will be a good idea if we replace it with them and keep it simple. You can convert it to an issue if you want. Here are some example sentences. (No Boxes, Just Logs And These Sentences)\r\n1.  ⚡ Compiling ETA: `{seconds}`\r\n2. 🚧 Stopping the server\r\n3. 🏓 Frontend is playing ping-pong on `{port}`\r\n4. 🖥 Backend is serving food on `{port}` \r\n5. Your server is ready to go 🚀</div>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3487/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3407",
      "id": 2326683622,
      "node_id": "I_kwDOITROHc6Krl_m",
      "number": 3407,
      "title": "I can't change width on popover",
      "user": {
        "login": "jcardosorios",
        "id": 105686879,
        "node_id": "U_kgDOBkynXw",
        "avatar_url": "https://avatars.githubusercontent.com/u/105686879?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jcardosorios",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7507304446,
          "node_id": "LA_kwDOITROHc8AAAABv3hf_g",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/upstream",
          "name": "upstream",
          "color": "721089",
          "default": false,
          "description": ""
        },
        "1": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-05-30T23:15:59Z",
      "updated_at": "2025-02-05T00:05:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nWhen I open a popover with a image, it is wider than I expect and I can't fix it\r\n\r\n**To Reproduce**\r\n``` python\r\nclass PhotoState(rx.State):\r\n    pic_number: int = 1\r\n\r\n    def change_pic(self):\r\n        if self.pic_number == 3:\r\n            self.pic_number = 1\r\n        else:\r\n            self.pic_number += 1\r\n\r\ndef header_title() -> rx.Component:\r\n    return rx.box(\r\n        rx.popover.root(\r\n            rx.popover.trigger(\r\n                rx.box(\r\n                    rx.text(\r\n                        \"Joaquin\",\r\n                        as_='span',\r\n                        style= {'color':Color.PRIMARY.value},\r\n                        on_click=PhotoState.change_pic\r\n                    ),\r\n                    f\" Cardoso\",\r\n                    style=header_title_styles,\r\n                    \r\n                ),\r\n            ),\r\n            rx.popover.content(\r\n                rx.box(\r\n                    rx.image(src=f'me/{PhotoState.pic_number}.jpg', width='70px', height='auto', border_radius='10%'),\r\n                ),\r\n                width='70px'\r\n            ),\r\n            direction='rtl',\r\n            width='70px'\r\n        ),\r\n        rx.list('Estudiante de Ciencia de Datos', style=header_tags_style),\r\n        rx.list('Analista Programador', style=header_tags_style),\r\n        rx.list('Licenciado en Ciencias de la Ingenieria', style=header_tags_style),\r\n        rx.list('Alma errante', style=header_tags_style),\r\n        style={'width':'100%'}\r\n    )\r\n```\r\n\r\n**Expected behavior**\r\nThe width of the popover should be the same than the image\r\n\r\n**Screenshots**\r\n![image](https://github.com/reflex-dev/reflex/assets/105686879/ac812a1d-7ce1-404b-b111-75835ed3782e)\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.10.12\r\n - Reflex Version: 0.5.2a1\r\n - OS: Windows 11\r\n - Browser (Optional): Chrome\r\n \r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3407/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3391",
      "id": 2321081780,
      "node_id": "I_kwDOITROHc6KWOW0",
      "number": 3391,
      "title": "The by_alias=True parameter for the dict() and model_dump() functions is not selecting the alias in a class derived from rx.Model correctly.",
      "user": {
        "login": "aden-collector",
        "id": 9436785,
        "node_id": "MDQ6VXNlcjk0MzY3ODU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9436785?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/aden-collector",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5013964135,
          "node_id": "LA_kwDOITROHc8AAAABKtsFZw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/needs%20investigation",
          "name": "needs investigation",
          "color": "E7099D",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-05-28T13:32:19Z",
      "updated_at": "2024-06-24T15:40:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "### Discussed in https://github.com/orgs/reflex-dev/discussions/3358\r\n\r\n<div type='discussions-op-text'>\r\n\r\n<sup>Originally posted by **aden-collector** May 21, 2024</sup>\r\nWe are using reflex version 0.5.0post1.  Our code used the dict() function with by_alias=True to get a dictionary from an object of a data class.  The data class inherited from rx.Base and has a few field names.  This is a sample field definition: name: str = Field(alias=\"Name\").  Function dict() worked in the past but stopped working recently.  The key value in the resulting dictionary was \"name\" instead of the alias \"Name\".  We heard that function dict() was deprecated so we tried using the model_dump() function with the parameter by_alias=True.  We changed the data class to inherit from rx.Model instead of rx.Base.  The dictionary returned by model_dump() doesn't use the alias.  We have the same issue as using the dict() function (key name \"name\" in the dictionary instead of the alias \"Name\")</div>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3391/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3376",
      "id": 2311723301,
      "node_id": "I_kwDOITROHc6Jyhkl",
      "number": 3376,
      "title": "rx.select lose their scroll on scroll down or scroll up",
      "user": {
        "login": "PlutarcoII",
        "id": 15706449,
        "node_id": "MDQ6VXNlcjE1NzA2NDQ5",
        "avatar_url": "https://avatars.githubusercontent.com/u/15706449?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/PlutarcoII",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-05-23T00:43:13Z",
      "updated_at": "2025-02-05T00:04:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nwhen you have several items on rx.select the component lose their scroll\r\n\r\n\r\n![select](https://github.com/reflex-dev/reflex/assets/15706449/3671d206-7454-406b-9760-969f3ae88be1)\r\n\r\n\r\n**To Reproduce**\r\nopen select and then scroll down or scroll up\r\n - Code/Link to Repo:\r\n\r\n**Expected behavior**\r\nThen component don't should lose their scroll \r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.10\r\n - Reflex Version: 0.5.1\r\n - OS: linux\r\n - Browser (Optional): Chrome\r\n \r\n**Additional context**\r\nAdd any other context about the problem here.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3376/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3373",
      "id": 2311323996,
      "node_id": "I_kwDOITROHc6JxAFc",
      "number": 3373,
      "title": "[REF-2917] `rx.select` jumps page content to an anchor after selecting.",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-05-22T19:28:39Z",
      "updated_at": "2025-02-05T00:01:42Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nIn reflex-web, there appears to be some jumping when a select is used on a page with an anchor in the URL\r\n\r\n**To Reproduce**\r\nI tried to repro with this code, but it doesn't repro because the select portal/viewport thing is working properly\r\n\r\n```python\r\nimport reflex as rx\r\n\r\n\r\ndef index() -> rx.Component:\r\n    # Welcome Page (Index)\r\n    return rx.container(\r\n        rx.color_mode.button(position=\"top-right\"),\r\n        rx.vstack(\r\n            *[\r\n                rx.section(\r\n                    rx.el.a(rx.heading(f\"Heading {ix}\"), id=f\"heading-{ix}\"),\r\n                    *[rx.text(f\"Text {jx}\") for jx in range(30)],\r\n                )\r\n                for ix in range(10)\r\n            ],\r\n            rx.select(items=[\"foo\", \"bar\"]),\r\n            spacing=\"5\",\r\n            justify=\"center\",\r\n            min_height=\"85vh\",\r\n        ),\r\n        rx.logo(),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\n\n<sub>[REF-2917](https://linear.app/reflex-dev/issue/REF-2917/rxselect-jumps-page-content-to-an-anchor-after-selecting)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3373/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3279",
      "id": 2291630474,
      "node_id": "I_kwDOITROHc6Il4GK",
      "number": 3279,
      "title": "about use rx.memo with children",
      "user": {
        "login": "seewindcn",
        "id": 2747944,
        "node_id": "MDQ6VXNlcjI3NDc5NDQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2747944?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/seewindcn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-05-13T01:34:49Z",
      "updated_at": "2025-04-30T18:40:01Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nI am trying use memo for website's layout, like this:\r\n```\r\n@rx.memo\r\ndef layout1(children: rx.Component) -> rx.Component:\r\n  from antd_demo.components import footer, navbar, header, subnav, content\r\n  return layout.layout(\r\n        header(),\r\n        layout.layout(\r\n            navbar(),\r\n            layout.layout(\r\n                subnav(),\r\n                content(\r\n                    children,\r\n                )\r\n            )\r\n       )\r\n```\r\nit work; but the js like below:\r\n```\r\n<Layout1\r\n            children={[xxxxxxxxxxxxxxxxxxx............]}>\r\n            <RadixThemesFlex css={{\"display\": \"flex\"}}>\r\n                <RadixThemesFlex align={`start`} css={{\"height\": \"81vh\", \"width\": \"100%\"}} >\r\n                    <Reactmarkdown_6c4d2df3472374f2de5b35860d0c49c3/>\r\n                    <RadixThemesFlex css={{\"flex\": 2, \"justifySelf\": \"stretch\", \"alignSelf\": \"stretch\"}}/>\r\n                </RadixThemesFlex>\r\n            </RadixThemesFlex>\r\n        </Layout1>\r\n```\r\nmy question is: \r\n1. why layout1 has children property?  it is very long and useless. children is a special property in jsx.\r\n2. not doc for memo's usage;\r\n3. style of memo component isn't support;\r\n\r\n\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.11\r\n - Reflex Version: 0.4.9\r\n - OS: ubuntu22.04\r\n - Browser (Optional):\r\n \r\n**Additional context**\r\nAdd any other context about the problem here.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3279/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3230",
      "id": 2279237436,
      "node_id": "I_kwDOITROHc6H2mc8",
      "number": 3230,
      "title": "[REF-2761] Create `backend.Dockerfile` example",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-05-04T23:33:15Z",
      "updated_at": "2024-05-07T14:18:10Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "We need an example dockerfile that just runs the backend with redis for use on container hosting platforms, like Azure\n\n<sub>[REF-2761](https://linear.app/reflex-dev/issue/REF-2761/create-backenddockerfile-example)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3230/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3210",
      "id": 2274284510,
      "node_id": "I_kwDOITROHc6HjtPe",
      "number": 3210,
      "title": "[REF-2745] rx.form handle_submit lambda cannot reference foreach vars",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        },
        "1": {
          "id": 7507248755,
          "node_id": "LA_kwDOITROHc8AAAABv3eGcw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/workaround%20available",
          "name": "workaround available",
          "color": "E3CF20",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-05-01T22:18:23Z",
      "updated_at": "2025-07-10T21:11:38Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nWhen rendering a form inside an `rx.foreach`, the value and index of the loop are not available to an `on_submit` lambda function.\n\n**To Reproduce**\n\n```python\nimport reflex as rx\n\n\nclass State(rx.State):\n    def handle_submit(self, index, form_data):\n        print(f\"Form data for index {index}: {form_data}\")\n\n\ndef index() -> rx.Component:\n    return rx.vstack(\n        rx.foreach(\n            rx.Var.range(3),\n            lambda index: rx.form(\n                rx.hstack(\n                    rx.input(name=\"input\", placeholder=f\"Input {index}\"),\n                    rx.button(\"Submit\"),\n                ),\n                on_submit=lambda form_data: State.handle_submit(index, form_data),\n            ),\n        ),\n    )\n\n\napp = rx.App()\napp.add_page(index)\n```\n\n**Expected behavior**\nThe event handler is called with the appropriate loop index.\n\nInstead I get a frontend error.\n\n**Screenshots**\n\n![image](https://uploads.linear.app/9513bc1c-787d-499b-8c86-46952ab7013c/a47f2d40-2d89-4809-b82a-6c09dab20bbb/6843ff13-0502-475a-a9cf-1b9518fcfa16?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzk1MTNiYzFjLTc4N2QtNDk5Yi04Yzg2LTQ2OTUyYWI3MDEzYy9hNDdmMmQ0MC0yZDg5LTQ4MDktYjgyYS02YzA5ZGFiMjBiYmIvNjg0M2ZmMTMtMDUwMi00NzVhLWE5Y2YtMWI5NTE4ZmNmYTE2IiwiaWF0IjoxNzE0NjAxOTExLCJleHAiOjE3MTQ2ODgzMTF9.i0nBV5L95mAL-bU-C2csUwE9TYiO1AnGBld7T_YR7h4)\n\n```console\nUnhandled Runtime Error\nReferenceError: index is not defined\n\nSource\npages/index.js (47:61) @ index\n\n  45 | const form_data = {...Object.fromEntries(new FormData($form).entries()), ...{}}\n  46 |\n> 47 | addEvents([Event(\"state.state.handle_submit\", {index:index,form_data:form_data})])\n     |                                                     ^\n  48 |\n  49 | if (false) {\n  50 |     $form.reset()\n```\n\nThe following JS is generated\n\n```javascript\nexport function Flex_b1f247bd60753a6b989f5a0a615461c8 () {\n  const [addEvents, connectErrors] = useContext(EventLoopContext);\n\n\n  \n    const handleSubmit_a38fe166b30dfd298368c2a885298234 = useCallback((ev) => {\n        const $form = ev.target\n        ev.preventDefault()\n        const form_data = {...Object.fromEntries(new FormData($form).entries()), ...{}}\n\n        addEvents([Event(\"state.state.handle_submit\", {index:index,form_data:form_data})])\n\n        if (false) {\n            $form.reset()\n        }\n    })\n    \n\n  return (\n    <RadixThemesFlex align={`start`} className={`rx-Stack`} direction={`column`} gap={`3`}>\n  {Array.from(range(3, undefined, 1)).map((index, index_a81095fb6a95165312c0dc2039761a49) => (\n  <RadixFormRoot className={`Root`} key={index_a81095fb6a95165312c0dc2039761a49} onSubmit={handleSubmit_a38fe166b30dfd298368c2a885298234}>\n  <RadixThemesFlex align={`start`} className={`rx-Stack`} direction={`row`} gap={`3`}>\n  <RadixThemesTextField.Root name={`input`} placeholder={`Input ${index}`}/>\n  <RadixThemesButton>\n  {`Submit`}\n</RadixThemesButton>\n</RadixThemesFlex>\n</RadixFormRoot>\n))}\n</RadixThemesFlex>\n  )\n}\n```\n\nAs you can see, the `index` var is out of scope in the externalized `handleSubmit_a38fe166b30dfd298368c2a885298234` callback.\n\n**Specifics (please complete the following information):**\n\n* Python Version: 3.11.8\n* Reflex Version: 0.4.9 / `main`\n* OS:\n* Browser (Optional):\n\n## Workaround\n\nCreating an `rx.el.input(type=\"hidden\")` and pass the value via the `form_data` does work, but it's less clean.\n\n<sub>From [SyncLinear.com](https://synclinear.com) | [REF-2745](https://linear.app/reflex-dev/issue/REF-2745/rxform-handle-submit-lambda-cannot-reference-foreach-vars)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3210/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3207",
      "id": 2273907984,
      "node_id": "I_kwDOITROHc6HiRUQ",
      "number": 3207,
      "title": "Compile time check to see if Wrapping React Package is Valid",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        },
        "1": {
          "id": 5857676110,
          "node_id": "LA_kwDOITROHc8AAAABXSULTg",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/error%20message",
          "name": "error message",
          "color": "C2377C",
          "default": false,
          "description": "Improve error message"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-05-01T17:44:25Z",
      "updated_at": "2024-05-28T19:19:11Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Right now in the wrapping react API a user can provide an invalid package name and get a run time error in the terminal for bun/npm about trying to download a package that doesn't exist\r\n\r\nI think we can check this at compile time to see if the wrapping react package/version is valid by running the library through this API `https://api.npms.io/v2/package/{packageName}` where {packageName} is the name of the npm package you want to check. And then provide a more concise error message that can better help the user.\r\n\r\nSee the example here with chakra https://api.npms.io/v2/package/chakra-ui",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3207/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3189",
      "id": 2270253372,
      "node_id": "I_kwDOITROHc6HUVE8",
      "number": 3189,
      "title": "[REF-2716] Cannot pass an icon component to high level rx.callout icon prop",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-04-30T00:15:49Z",
      "updated_at": "2025-07-10T21:11:38Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nTrying to pass an rx.match icon to rx.callout and it gives an error\r\n\r\n```python\r\nicon = rx.match(\r\n    type,\r\n    (0, rx.icon(\"info\")),\r\n    (1, rx.icon(\"triangle_alert\")),\r\n    (3, rx.icon(\"octagon_x\")),\r\n    rx.icon(\"info\"),  # default\r\n)\r\n```\r\n\r\n**To Reproduce**\r\n```python\r\n    return rx.callout(\r\n        message,\r\n        icon=icon,\r\n        size=\"3\",\r\n        variant=\"surface\",\r\n        color_scheme=color\r\n    )\r\n```\r\n\r\n--> `ValueError: Invalid icon tag: <Fragment>`\r\n\r\n**Expected behavior**\r\nIt should render the icon as a component is given\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.11\r\n - Reflex Version: 0.4.9\r\n - OS: \r\n - Browser (Optional):\r\n \r\n**Additional context**\r\nhttps://discord.com/channels/1029853095527727165/1232526649786896414/1232526649786896414\n\n<sub>[REF-2716](https://linear.app/reflex-dev/issue/REF-2716/cannot-pass-an-icon-component-to-high-level-rxcallout-icon-prop)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3189/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3137",
      "id": 2257222800,
      "node_id": "I_kwDOITROHc6GinyQ",
      "number": 3137,
      "title": "[REF-2625] Use rx.markdown to render mermaid diagrams",
      "user": {
        "login": "picklelo",
        "id": 6270214,
        "node_id": "MDQ6VXNlcjYyNzAyMTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6270214?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/picklelo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-04-22T18:38:54Z",
      "updated_at": "2025-09-06T07:40:49Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "### Discussed in [https://github.com/orgs/reflex-dev/discussions/3125](https://github.com/orgs/reflex-dev/discussions/3125)\n\n<div type='discussions-op-text'>\n\n<sup>Originally posted by **hragbalian** April 20, 2024</sup>\nHi there,\n\nI would like to be able to add mermaid diagrams to my markdown but the rx.markdown doesn't render it.\n\nFor example, the following code:\n\n```\n```mermaid\n    graph TD\n        A[Start] -->|Get books| B[Go to library]\n        B --> C{Books available?}\n        C -->|Yes| D[Borrow books]\n        C -->|No| E[Reserve books]\n        D --> F[Read books]\n        E --> F\n        F --> G[Return books]\n        G --> H[Finish]\n```\n\nshould yield:\n\n```mermaid\n    graph TD\n        A[Start] -->|Get books| B[Go to library]\n        B --> C{Books available?}\n        C -->|Yes| D[Borrow books]\n        C -->|No| E[Reserve books]\n        D --> F[Read books]\n        E --> F\n        F --> G[Return books]\n        G --> H[Finish]\n```\n\nbut instead it's rendering as\n\n![image](https://uploads.linear.app/9513bc1c-787d-499b-8c86-46952ab7013c/74ea83a2-558a-4a93-98fa-1bea6f6525c6/0f61474e-4440-48ba-8f4e-c804a42c72e1?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzk1MTNiYzFjLTc4N2QtNDk5Yi04Yzg2LTQ2OTUyYWI3MDEzYy83NGVhODNhMi01NThhLTRhOTMtOThmYS0xYmVhNmY2NTI1YzYvMGY2MTQ3NGUtNDQ0MC00OGJhLThmNGUtYzgwNGE0MmM3MmUxIiwiaWF0IjoxNzEzODExMTQxLCJleHAiOjE3MTM4OTc1NDF9.YSw-\\_ZhTDgZiUyDNP5_Zn8GTv6rDkjbjMlXBlfPAvOg)\n\nThanks!</div>\n\n<sub>From [SyncLinear.com](https://synclinear.com) | [REF-2625](https://linear.app/reflex-dev/issue/REF-2625/use-rxmarkdown-to-render-mermaid-diagrams)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3137/reactions",
        "total_count": 6,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 2
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3109",
      "id": 2249638964,
      "node_id": "I_kwDOITROHc6GFsQ0",
      "number": 3109,
      "title": "Bitdefender reports malicious command line detected during Bun install",
      "user": {
        "login": "m4thfr34k",
        "id": 5551337,
        "node_id": "MDQ6VXNlcjU1NTEzMzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5551337?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/m4thfr34k",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-04-18T03:02:10Z",
      "updated_at": "2025-04-30T18:39:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nBitdefender reports malicious command line detected during Bun install of 'pip install reflect' on Windows 10.\r\n\r\nNotification from Bitdefender\r\nThe app C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe was passed a malicious command line and has been blocked. Your device is now safe.\r\n\r\nCommand line: \"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" powershell  -c \"irm https://bun.sh/install.ps1|iex\"\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n\r\n1. Create a new python virtual env\r\n2. pip install reflex\r\n3. Wait for Bitdefender to complain\r\n\r\n - Code/Link to Repo:\r\n\r\n**Expected behavior**\r\nInstallation without notification from Bitdefender\r\n\r\n**Screenshots**\r\nIf applicable, add screenshots to help explain your problem.\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.12.2\r\n - Reflex Version: 0.4.8\r\n - OS: Windows 10\r\n - Browser (Optional):\r\n \r\n**Additional context**\r\nI can successfully run the command 'powershell -c \"irm bun.sh/install.ps1 | iex\"' without issue so not sure if Bitdefender just doesn't like it coming from the 'pip install reflex'. \r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3109/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3098",
      "id": 2248552060,
      "node_id": "I_kwDOITROHc6GBi58",
      "number": 3098,
      "title": "Inline style inheritance",
      "user": {
        "login": "TimChild",
        "id": 48571510,
        "node_id": "MDQ6VXNlcjQ4NTcxNTEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/48571510?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TimChild",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474964,
          "node_id": "LA_kwDOITROHc8AAAABGT421A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/documentation",
          "name": "documentation",
          "color": "89BFF8",
          "default": true,
          "description": "Improvements or additions to documentation"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-04-17T15:17:15Z",
      "updated_at": "2025-04-30T06:59:50Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nDocs on https://reflex.dev/docs/styling/overview/#styling say that \r\n>Children components inherit inline styles unless they are overridden by their own inline styles.\r\nBut, that doesn't seem to be the case in the example given\r\n\r\n**To Reproduce**\r\nProblem occurs in reflex docs\r\n\r\n**Expected behavior**\r\nExpect \"Default Button\" text to be `blue`\r\n\r\n**Screenshots**\r\n![image](https://github.com/reflex-dev/reflex/assets/48571510/335761f0-6552-4e8f-9f7a-7a1ba9782d7d)\r\n\r\n**Specifics (please complete the following information):**\r\n - Browser (Optional): Chrome\r\n \r\n**Additional context**\r\nThis might be a change in behaviour from the recent move to `radix`, but I'm not sure. Either way, the docs should be updated to whatever is correct now :) \r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3098/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3069",
      "id": 2236618492,
      "node_id": "I_kwDOITROHc6FUBb8",
      "number": 3069,
      "title": "[REF-2567] rx.accordion hardcodes a tiny font size",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-04-10T23:58:24Z",
      "updated_at": "2025-07-10T21:11:30Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nThe text inside an accordion inherits a tiny font size from the `.AccordionContent` CSS rule.\n\n**To Reproduce**\nCreate any accordion item; the text is small\n\n**Expected behavior**\nAccordion doesn't impose typographic opinions on its contents.\n\n**Screenshots**\nWhy is the text so small?\n\n![image](https://uploads.linear.app/9513bc1c-787d-499b-8c86-46952ab7013c/e0fe65f8-05fc-4a24-b436-ec7a52cfc17a/35f00e4b-2291-4c48-812c-dee8dc201abd?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzk1MTNiYzFjLTc4N2QtNDk5Yi04Yzg2LTQ2OTUyYWI3MDEzYy9lMGZlNjVmOC0wNWZjLTRhMjQtYjQzNi1lYzdhNTJjZmMxN2EvMzVmMDBlNGItMjI5MS00YzQ4LTgxMmMtZGVlOGRjMjAxYWJkIiwiaWF0IjoxNzEyNzkzNTEzLCJleHAiOjE3MTI4Nzk5MTN9.bDz-XbjWmWit44OK9yUOqeVTKSd5FvFE6s1cEQ_uBIY)\n\nIf i remove the font-size css rule:\n\n![image](https://uploads.linear.app/9513bc1c-787d-499b-8c86-46952ab7013c/777dd706-1219-4b9f-b041-980f1296ed63/c6af5794-d580-419a-ae92-e5f0bdd7a958?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzk1MTNiYzFjLTc4N2QtNDk5Yi04Yzg2LTQ2OTUyYWI3MDEzYy83NzdkZDcwNi0xMjE5LTRiOWYtYjA0MS05ODBmMTI5NmVkNjMvYzZhZjU3OTQtZDU4MC00MTlhLWFlOTItZTVmMGJkZDdhOTU4IiwiaWF0IjoxNzEyNzkzNTEzLCJleHAiOjE3MTI4Nzk5MTN9.WmstnYUN0Sbwf6Pws2eQc0KF_HWefngiBlfjrTujxv0)\n\n**Specifics (please complete the following information):**\n\n* Python Version: 3.12\n* Reflex Version: 0.4.7\n* OS: macOS 14.4.1\n* Browser (Optional): chrome\n\n<sub>From [SyncLinear.com](https://synclinear.com) | [REF-2567](https://linear.app/reflex-dev/issue/REF-2567/rxaccordion-hardcodes-a-tiny-font-size)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3069/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3038",
      "id": 2231111910,
      "node_id": "I_kwDOITROHc6E_BDm",
      "number": 3038,
      "title": "rx.debounce_input() does not work with rx.slider()",
      "user": {
        "login": "straygar",
        "id": 11258646,
        "node_id": "MDQ6VXNlcjExMjU4NjQ2",
        "avatar_url": "https://avatars.githubusercontent.com/u/11258646?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/straygar",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        },
        "1": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-04-08T12:42:10Z",
      "updated_at": "2025-02-04T02:56:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\n\r\nWhen using a controlled `rx.slider()`, I want the `on_change` handler to be de-bounced, to have both:\r\n1. a responsive UI\r\n2. protect the backend from spam\r\n\r\nI have tried using `on_value_commit`, but it is pretty flakey. See Radix UI issue: https://github.com/radix-ui/primitives/issues/1760 \r\n\r\nInstead, I opted to try `rx.debounced_input()`, but it is not compatible with `rx.slider()`.\r\n\r\nI suspect `debounce_input()` is intended to work with semantic `<input>` HTML elements, but Radix UI opted for their own funky implementation (a bunch of `span/p/divs`). 🤷‍♀️\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n```\r\nvalue = State.my_values[name]\r\nmin_val = 0\r\nmax_val = 100\r\nrx.debounce_input(\r\n    rx.slider(\r\n        value=[value],\r\n        on_change=lambda val: State.update_my_value(name, val, True),\r\n        min=min_val,\r\n        max=max_val,\r\n        step=1,\r\n    ),\r\n    debounce_timeout=2_000,\r\n)\r\n```\r\n \r\nIf I specify a `value` on `rx.slider()`, I get:\r\n```\r\nTypeError: Invalid var passed for prop value, expected type <class 'str'>, got value [state__state.my_values[name]] of type <class 'list'>.\r\n```\r\n\r\nIf I omit it, I get a react compilation error:\r\n```\r\nUnhandled Runtime Error\r\nTypeError: (intermediate value).map is not a function\r\nCall Stack\r\nSlider<\r\nnode_modules/@radix-ui/themes/dist/esm/components/slider.js (14:0)\r\nrenderWithHooks\r\nnode_modules/react-dom/cjs/react-dom.development.js (16305:0)\r\nupdateForwardRef\r\nnode_modules/react-dom/cjs/react-dom.development.js (19226:0)\r\nbeginWork\r\nnode_modules/react-dom/cjs/react-dom.development.js (21636:0)\r\ncallCallback\r\nnode_modules/react-dom/cjs/react-dom.development.js (4164:0)\r\ninvokeGuardedCallbackDev\r\nnode_modules/react-dom/cjs/react-dom.development.js (4213:0)\r\ninvokeGuardedCallback\r\nnode_modules/react-dom/cjs/react-dom.development.js (4277:0)\r\nbeginWork$1\r\nnode_modules/react-dom/cjs/react-dom.development.js (27451:0)\r\nperformUnitOfWork\r\nnode_modules/react-dom/cjs/react-dom.development.js (26557:0)\r\nworkLoopSync\r\nnode_modules/react-dom/cjs/react-dom.development.js (26466:0)\r\nrenderRootSync\r\nnode_modules/react-dom/cjs/react-dom.development.js (26434:0)\r\nperformConcurrentWorkOnRoot\r\nnode_modules/react-dom/cjs/react-dom.development.js (25738:0)\r\nworkLoop\r\nnode_modules/scheduler/cjs/scheduler.development.js (266:0)\r\nflushWork\r\nnode_modules/scheduler/cjs/scheduler.development.js (239:0)\r\nperformWorkUntilDeadline\r\nnode_modules/scheduler/cjs/scheduler.development.js (533:0)\r\n```\r\n\r\n**Expected behavior**\r\nEither:\r\n- `on_value_commit` is not flakey\r\n- `debounce_input` works with a slider\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.10\r\n - Reflex Version: 0.4.5\r\n - OS: MacOS\r\n - Browser (Optional): Firefox\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3038/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3034",
      "id": 2229788598,
      "node_id": "I_kwDOITROHc6E59-2",
      "number": 3034,
      "title": "Minify js code in rx.script tags",
      "user": {
        "login": "macmoritz",
        "id": 49832924,
        "node_id": "MDQ6VXNlcjQ5ODMyOTI0",
        "avatar_url": "https://avatars.githubusercontent.com/u/49832924?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/macmoritz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-04-07T14:09:33Z",
      "updated_at": "2025-05-01T00:21:11Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Yes, js code is not the best solution, but for some frontend related time critical topics it is great to use.\nA possible improvement is to minify the js code. Tbh it would not make a huge difference, but perfomance is a key feature of this project.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3034/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3021",
      "id": 2228451838,
      "node_id": "I_kwDOITROHc6E03n-",
      "number": 3021,
      "title": "[REF-2503] Memory StateManager should have some sort of expiration",
      "user": {
        "login": "picklelo",
        "id": 6270214,
        "node_id": "MDQ6VXNlcjYyNzAyMTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6270214?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/picklelo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 21,
      "created_at": "2024-04-05T16:51:52Z",
      "updated_at": "2025-07-10T21:11:30Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The state manager is essentially a dictionary mapping between a user token (browser tab) and their state.\r\n\r\nWhen using Redis as a state manager (by setting the `redis_url` in the `rxconfig.py`) there is a configurable expiration time (by default 30 mins). However when using the in memory state manager, states will accumulate until eventually there is an OOM error. \r\n\r\nWe should implement some sort of expiration or LRU caching on the memory state manager to make this usable in production.\n\n<sub>[REF-2503](https://linear.app/reflex-dev/issue/REF-2503/memory-statemanager-should-have-some-sort-of-expiration)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3021/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2958",
      "id": 2214519943,
      "node_id": "I_kwDOITROHc6D_uSH",
      "number": 2958,
      "title": "rx.cond in style does not transform key from snake_case to camelCase or kebab-case",
      "user": {
        "login": "Alek99",
        "id": 38776361,
        "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Alek99",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-03-29T02:55:52Z",
      "updated_at": "2025-02-04T02:48:35Z",
      "closed_at": null,
      "author_association": "MEMBER",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nA clear and concise description of what the bug is.\r\n\r\nSeems like having a cond in _hover does quite work. When trying the following code below the hover style is not being applied.\r\n\r\nWas using th template with the following:\r\n```python\r\nactive = (rx.State.router.page.path == f\"/{text.lower()}\") | (\r\n        (rx.State.router.page.path == \"/\") & text == \"Home\"\r\n    )\r\n    \r\n```\r\n \r\n UI\r\n```python\r\n_hover=rx.cond(\r\n    active,\r\n    {\r\n        \"background_color\": rx.color(\"accent\", 2),\r\n        \"border_color\": rx.color(\"accent\", 6),\r\n    },\r\n    {\r\n        \"background_color\": rx.color(\"gray\", 2),\r\n        \"border_color\": rx.color(\"gray\", 6),\r\n    },\r\n)\r\n ```\r\n\r\n\r\nIts compiling to the following\r\n```js\r\n \"&:hover\": isTrue((((state.router.page.path) === (\"/dashboard\")) || ((((state.router.page.path) === (\"/\")) && (\"Dashboard\")) === (\"Home\")))) ? {\"background_color\": \"var(--accent-2)\", \"border_color\": \"var(--accent-6)\"} : {\"background_color\": \"var(--gray-2)\", \"border_color\": \"var(--gray-6)\"},\r\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2958/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3754",
      "id": 2454155590,
      "node_id": "I_kwDOITROHc6SR3FG",
      "number": 3754,
      "title": "font_size doesn't work in accordion.item",
      "user": {
        "login": "jq6l43d1",
        "id": 110377310,
        "node_id": "U_kgDOBpQ5Xg",
        "avatar_url": "https://avatars.githubusercontent.com/u/110377310?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jq6l43d1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-03-27T17:57:21Z",
      "updated_at": "2025-04-30T04:04:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://reflex.dev/docs/library/disclosure/accordion/ uses 'font_size=\"3em\"' extensively as a prop of rx.accordion.item Like this:\r\n\r\n```\r\nrx.accordion.item(\r\n    header=\"First Item\",\r\n    content=\"The first accordion item's content\",\r\n    font_size=\"3em\",\r\n),\r\n```\r\n\r\nHowever this has no effect on the font size of the header or the content. Here is an example of changing the font size of the header and the content that works:\r\n\r\n```\r\nrx.accordion.item(\r\n    header=rx.text(\r\n        \"First Item\", \r\n        font_size=\"3em\"\r\n    ),\r\n    content=rx.text(\r\n        \"The first accordion item's content\",\r\n        font_size=\"4em\"\r\n    ),\r\n),\r\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/3754/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2847",
      "id": 2182408180,
      "node_id": "I_kwDOITROHc6CFOf0",
      "number": 2847,
      "title": "rx.color_mode_cond() does not work with rx.theme_panel()",
      "user": {
        "login": "tgberkeley",
        "id": 64492814,
        "node_id": "MDQ6VXNlcjY0NDkyODE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/64492814?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tgberkeley",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-03-12T18:29:38Z",
      "updated_at": "2025-05-30T01:27:39Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When using `rx.theme_panel()` to change between light and dark mode on an app, the `rx.color_mode_cond()` does not change between the light and dark images. \r\n\r\nAn example below only ever shows the `reflex_black.svg` even when toggling to dark mode with the `rx.theme_panel`.\r\n\r\n```\r\nrx.theme_panel(),\r\nrx.container(\r\n    rx.color_mode_cond(\r\n        rx.image(src=\"reflex_black.svg\", height=\"4em\"),\r\n        rx.image(src=\"reflex_white.svg\", height=\"4em\"),\r\n    ),\r\n)\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2847/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2832",
      "id": 2178041088,
      "node_id": "I_kwDOITROHc6B0kUA",
      "number": 2832,
      "title": "Move stateful_components to .web/components",
      "user": {
        "login": "Lendemor",
        "id": 4015177,
        "node_id": "MDQ6VXNlcjQwMTUxNzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4015177?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lendemor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-03-11T01:34:12Z",
      "updated_at": "2025-05-30T01:17:51Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Reusable components should be compiled in the folder `.web/components` instead of `.web/utils`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2832/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2805",
      "id": 2173015802,
      "node_id": "I_kwDOITROHc6BhZb6",
      "number": 2805,
      "title": "Scroll to section after click a link inside a drawer don't work",
      "user": {
        "login": "Valdes-Tresanco-MS",
        "id": 36672242,
        "node_id": "MDQ6VXNlcjM2NjcyMjQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/36672242?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Valdes-Tresanco-MS",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7507304446,
          "node_id": "LA_kwDOITROHc8AAAABv3hf_g",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/upstream",
          "name": "upstream",
          "color": "721089",
          "default": false,
          "description": ""
        },
        "1": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-03-07T05:54:03Z",
      "updated_at": "2025-04-30T02:40:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nI created a sidebar menu using the drawer component. After clicking any link inside it, the menu closes, but the scroll to the section doesn't work.\r\n\r\n**To Reproduce**\r\n```python\r\nimport reflex as rx\r\n\r\nclass DrawerState(rx.State):\r\n    is_open: bool = False\r\n\r\n    def toggle_drawer(self):\r\n        self.is_open = not self.is_open\r\n\r\ndef drawer_content():\r\n    return rx.drawer.content(\r\n        rx.flex(\r\n            rx.drawer.close(rx.button(\"Close\", on_click=DrawerState.toggle_drawer)),\r\n            rx.link(\"Link 1\", href=\"#test1\", on_click=DrawerState.toggle_drawer),\r\n            rx.link(\"Link 2\", href=\"#test2\", on_click=DrawerState.toggle_drawer),\r\n            align_items=\"start\",\r\n            direction=\"column\",\r\n        ),\r\n        top=\"auto\",\r\n        right=\"auto\",\r\n        height=\"100%\",\r\n        width=\"100%\",\r\n        padding=\"2em\",\r\n        background_color=\"#FFF\"\r\n    )\r\n\r\n\r\ndef lateral_menu():\r\n    return rx.drawer.root(\r\n        rx.drawer.trigger(rx.button(\"Open Drawer\", on_click=DrawerState.toggle_drawer)),\r\n        rx.drawer.overlay(),\r\n        rx.drawer.portal(drawer_content()),\r\n        open=DrawerState.is_open,\r\n        direction=\"left\",\r\n    )\r\n\r\ndef index():\r\n    return rx.vstack(\r\n        lateral_menu(),\r\n        rx.section(\r\n            rx.heading(\"Test1\", size=\"8\"),\r\n            id='test1',\r\n            height=\"900px\",\r\n        ),\r\n        rx.section(\r\n            rx.heading(\"Test2\", size=\"8\"),\r\n            id='test2',\r\n            height=\"900px\",\r\n        )\r\n    )\r\n\r\napp = rx.App()\r\napp.add_page(index, route=\"/\")\r\n```\r\n\r\n**Expected behavior**\r\nAfter clicking any link in the menu do scroll to the proper section\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.11.7\r\n - Reflex Version: 0.4.2\r\n - OS: Zorin OS (Ubuntu-based)\r\n - Browser (Optional): Google Chrome\r\n \r\n---\r\n- Is there any other options better than a drawer for this purpose? \r\n- I tried changing the drawer component parameters like preventScrollRestoration, and it doesn't work.\r\n- Also, I tried to replicate the reflex-web sidebar menu. Curiously, after clicking any link that redirects to a different page, it works, although with a slight delay\r\n\r\nThank you in advance",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2805/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2771",
      "id": 2166373862,
      "node_id": "I_kwDOITROHc6BID3m",
      "number": 2771,
      "title": "Feature Request: Shared/Scoped State",
      "user": {
        "login": "abulvenz",
        "id": 14158137,
        "node_id": "MDQ6VXNlcjE0MTU4MTM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/abulvenz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-03-04T09:28:21Z",
      "updated_at": "2024-07-14T01:57:04Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "As already proposed on [discord](https://discord.com/channels/1029853095527727165/1207983555540557844), we see many good point to have something like shared state or state that is bound to a specific identifier. The use cases reach from user scope for authentication/settings over chat groups or collaborative list views to news feeds and on-the-fly application settings.\r\n\r\nJust to illustrate the idea\r\n```python\r\nclass AppState(rx.State):  \r\n  @rx.var\r\n  def user_id(self) -> UUID:\r\n     ...\r\n   ...\r\n\r\n@rx.scope(var=AppState.user_id)\r\nclass UserState(AppState):\r\n  mySettings: ...\r\n  \r\n@rx.scope(var=AppState.group_id)\r\nclass ListState(AppState):\r\n  @rx.cached_var\r\n  def elements(self):\r\n    with rx.session() as session:\r\n      return load_objects_with_group_id(session, AppState.group_id)\r\n\r\n# Maybe inheritance from AppState is not needed anymore #2678\r\n```\r\nFrom my current understanding of the framework I see e.g. this implementation strategy:\r\n- Add a `scoped_token`property to Event, that calculates from the scope-var (i.e. `AppState.user_id` or `AppState.group_id` in above examples).\r\n- When also the `StateManagerMemory` implements the same sharding mechanism as `StateManagerRedis` no further changes have to be made here.\r\n- In `App.process` the resulting events have to be sent to `socket.io`-rooms.\r\n- Socket room management has to be done on changes to the scope-var.\r\n- On connect and disconnect have to restore the subscriptions to the rooms.\r\n- For the case of multiple running app instances redis pubsub has to be implemented, where the `scoped-token` value can be used as topic name. On events in the subscribed topics those can be sent to the targeted rooms.\r\n- Events coming from the frontend need to have the `scoped-token` set by their respective frontend handlers.\r\n\r\nWhen thinking about it, maybe the current state handling is only a special case, so no `@rx.scope` means the socket/tab scope. Maybe that is a better way to view this architecturally.\r\n\r\nThere might be many implications that I haven't thought through in detail, yet. E.g. what about `@rx.background` in those scoped states.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2771/reactions",
        "total_count": 10,
        "+1": 6,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 2,
        "eyes": 2
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2727",
      "id": 2155516086,
      "node_id": "I_kwDOITROHc6AepC2",
      "number": 2727,
      "title": "Reflex Roadmap",
      "user": {
        "login": "picklelo",
        "id": 6270214,
        "node_id": "MDQ6VXNlcjYyNzAyMTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6270214?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/picklelo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8259517499,
          "node_id": "LA_kwDOITROHc8AAAAB7E48Ow",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/roadmap",
          "name": "roadmap",
          "color": "B60205",
          "default": false,
          "description": "https://github.com/reflex-dev/reflex/issues/2727"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "picklelo",
        "id": 6270214,
        "node_id": "MDQ6VXNlcjYyNzAyMTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6270214?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/picklelo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "picklelo",
          "id": 6270214,
          "node_id": "MDQ6VXNlcjYyNzAyMTQ=",
          "avatar_url": "https://avatars.githubusercontent.com/u/6270214?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/picklelo",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "1": {
          "login": "Alek99",
          "id": 38776361,
          "node_id": "MDQ6VXNlcjM4Nzc2MzYx",
          "avatar_url": "https://avatars.githubusercontent.com/u/38776361?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Alek99",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 34,
      "created_at": "2024-02-27T02:23:00Z",
      "updated_at": "2025-10-19T16:01:59Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This page is a living document outlining the major projects we're working on next for reflex 0.8.0, as well as for our AI and Enterprise features.\n\nFeel free to comment to leave feedback or upvote any issues you'd like to see prioritized, and we welcome outside contributions for any issues.\n\n## Key Focus Areas\n\n**Stability**: As we approach our 1.0 release, we're focused on making our core API stable and limiting breaking changes so Reflex can be a solid foundation for long-term projects.\n\n**Simplicity**: We want to improve the out of the box experience so users can focus on their ideas rather than implementation. This includes building a 3rd party component ecosystem, as well as simplifying the APIs for many of our core components. \n\n**Speed**: Reflex apps should be fast, both for the end user and for the developer. We have projects to make sure apps stay fast as they grow in size, and to improve the compile / hot-reload times so devs can iterate quickly when building.\n\n## Core Open Source\n\nOur core focus for 0.8.0 is making the framework faster and more robust. Most new features and components will be added as third-party modules - our goal is to keep the core of Reflex slim and easy to adapt over time.\n\n- [x] Migrate fully to Bun #4906\n- [x] Upgrade to Tailwind V4 #4694 \n- [x] Improve hot reload times\n- [x] Reduce external dependencies #4921 \n\n## Reflex.Build AI App Builder\n\nAs of March 2025, our top priority is building out https://reflex.build our AI app building tool.\n\n- [x] **Reflex.Build MVP**: Create reflex apps through prompting\n- [x] **Basic Web IDE**: Edit their app directly in the browser\n- [x] **Secrets integration**: Hook up apps to 3rd party packages like OpenAI\n- [x] **One Click Deploy to Reflex Cloud**:Build and deploy an app all in the web without writing any code\n- [ ] **Robust Agent Loop**: Minimize the number of errors users hit while generating apps\n- [ ] **Github Integration** Switch between cloud and local workflows\n- [ ] **3rd Party Integrations** With other popular tools to expand the kind of apps Flexgen can build\n- [ ] **Sandbox Robustness**: Minimize the errors encountered with our web sandbox\n\n## Reflex Cloud\n- [x] Secrets Management\n- [x] Log Searching\n- [x] Usage Based Pricing\n- [x] App management through UI\n- [ ] #4915\n- [ ] #4916\n- [ ] #4918\n- [ ] #4919\n- [ ] #4917\n- [ ] #4920\n- [ ] #4924\n- [ ] #4925\n- [ ] #4926\n- [ ] #4927\n\n## Reflex Enterprise\n\nWe're building our our reflex enterprise package with premium components and self-hosting features. Many of the features here are free to use, while others require a paid Reflex plan.\n\n- [x] **Single port hosting** run the frontend and backend on a single port Team plan]\n- [ ] One Click Auth [Pro plan]\n- [ ] Database Model Interface [Pro plan]\n- [x] Feature Parity for AG Grid [Free with badge]\n- [x] Drag and Drop Component [Free with badge]\n- [ ] 3rd Party Integrations with AI Builder [Enterprise Plan]\n\nPlease leave comments on what you think about this tentative plan.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2727/reactions",
        "total_count": 98,
        "+1": 50,
        "-1": 0,
        "laugh": 7,
        "hooray": 5,
        "confused": 0,
        "heart": 11,
        "rocket": 17,
        "eyes": 8
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2569",
      "id": 2127933565,
      "node_id": "I_kwDOITROHc5-1bB9",
      "number": 2569,
      "title": "Feature Request: Sortable `data_editor`",
      "user": {
        "login": "gab23r",
        "id": 106454081,
        "node_id": "U_kgDOBlhcQQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/106454081?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gab23r",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-02-09T22:32:35Z",
      "updated_at": "2025-08-25T13:24:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Being able to sort a table is key for a table component.\r\n\r\nI find a hacky way to do it with the curent version of `data_editor`.\r\nI tried to make a reusable component, but the best I could do is to create a class that manage the sort logic\r\nAnd then I inherit my own state from the class. Do you have a better idea to have an isolated reusable sortable table component ?\r\n\r\nMaybe this can of behavior can be embedded into reflex directly or maybe a example of how to to like in the code could be great.\r\n\r\n```python\r\n\r\nfrom typing import Any\r\nimport reflex as rx\r\n\r\nclass SortableDataEditor:\r\n\r\n    def on_header_clicked(self, pos: int):\r\n        \r\n        asc = self.columns[pos].get('asc')\r\n\r\n        # reset all filters\r\n        for column in self.columns:\r\n            column['title'] = column['title'].rstrip(' ↓↑')\r\n\r\n        if asc is None:\r\n            self.columns[pos]['asc'] = True\r\n            self.columns[pos]['title'] += ' ↓'\r\n        elif asc:\r\n            self.columns[pos]['asc'] = False\r\n            self.columns[pos]['title'] += ' ↑'\r\n        else:\r\n            self.columns[pos]['asc'] = None\r\n        \r\n        self.sort_rows(pos)\r\n\r\n    def sort_rows(self, pos: int):\r\n        asc = self.columns[pos]['asc']\r\n        if asc is not None:\r\n            self.data.sort(key = lambda x: x[pos], reverse=not asc)\r\n\r\nclass MyAppState(rx.State, SortableDataEditor):\r\n\r\n    columns: list[dict[str, str]] = [\r\n        {\r\n            \"title\": \"Code\",\r\n            \"type\": \"str\",\r\n        },\r\n        {\r\n            \"title\": \"Value\",\r\n            \"type\": \"int\",\r\n        },\r\n        {\r\n            \"title\": \"Activated\",\r\n            \"type\": \"bool\",\r\n        },\r\n    ]\r\n    data: list[list[Any]] = [\r\n        [\"A\", 1, True],\r\n        [\"B\", 5, False],\r\n        [\"B\", 3, False],\r\n        [\"D\", 3, True],\r\n        [\"D\", 1, True],\r\n        [\"D\", 1, False],\r\n    ]\r\n\r\n    def on_header_clicked(self, pos: int):\r\n        super().on_header_clicked(pos)\r\n        \r\n        # Do custom actions if needed\r\n         \r\ndef index() -> rx.Component:\r\n    return rx.container(  \r\n        rx.data_editor(\r\n            columns=MyAppState.columns,\r\n            data=MyAppState.data,\r\n            on_header_clicked = MyAppState.on_header_clicked\r\n        )\r\n    )\r\n\r\n```\r\n\r\n<img width=\"518\" alt=\"image\" src=\"https://github.com/reflex-dev/reflex/assets/106454081/34bc5639-3b8e-4aca-860b-9eba10d75a13\">\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2569/reactions",
        "total_count": 5,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 5,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2426",
      "id": 2092265778,
      "node_id": "I_kwDOITROHc58tXEy",
      "number": 2426,
      "title": "[REF-2738] Data table does not overflow",
      "user": {
        "login": "murdak",
        "id": 15258808,
        "node_id": "MDQ6VXNlcjE1MjU4ODA4",
        "avatar_url": "https://avatars.githubusercontent.com/u/15258808?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/murdak",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "Lendemor",
        "id": 4015177,
        "node_id": "MDQ6VXNlcjQwMTUxNzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4015177?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lendemor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "Lendemor",
          "id": 4015177,
          "node_id": "MDQ6VXNlcjQwMTUxNzc=",
          "avatar_url": "https://avatars.githubusercontent.com/u/4015177?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Lendemor",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 7,
      "created_at": "2024-01-20T22:47:51Z",
      "updated_at": "2025-05-30T01:17:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nWhen using a long column (>30), data table does not overflow and fits table to page.\n\n**To Reproduce**\nSteps to reproduce the behavior:\nCreate a data table with the column attribute set with a list of more than 30 elements.\n\nrx.data_table(\n                    columns=\\[\"ID\", \"Name\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\",\n            \"16\", \"17\", \"18\", \"19\", \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\", \"30\", \"31\" \\],\n                    data=\\[ \\['0001', 'name1', '5:00 am'\\],\n        \\['0002', 'name2', \"6:00 am, 4:00 pm\", \"6:00 am\", \"6:00 am, 4:00 pm\", \"6:00 am, 4:00 pm\",\\],\\],\n                    ),\n\n**Expected behavior**\nData table overflows and shows data properly.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n![image](https://uploads.linear.app/9513bc1c-787d-499b-8c86-46952ab7013c/ced6022e-0961-474b-9e5a-5cbeea464247/aafd7106-f022-4a56-8c32-c122a29e7273?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzk1MTNiYzFjLTc4N2QtNDk5Yi04Yzg2LTQ2OTUyYWI3MDEzYy9jZWQ2MDIyZS0wOTYxLTQ3NGItOWU1YS01Y2JlZWE0NjQyNDcvYWFmZDcxMDYtZjAyMi00YTU2LThjMzItYzEyMmEyOWU3MjczIiwiaWF0IjoxNzE0NTkxOTMyLCJleHAiOjE3MTQ2NzgzMzJ9.nY0Igx5EAkWbeGA27CzMGr_cAxeO81_zpTb84YZIQ3I)\n\n**Specifics (please complete the following information):**\n\n* Python Version: 3.11.4\n* Reflex Version: 0.3.7\n* OS: linux\n* Browser (Optional): firefox\n\n**Additional context**\nAdd any other context about the problem here.\nnone\n\n<sub>From [SyncLinear.com](https://synclinear.com) | [REF-2738](https://linear.app/reflex-dev/issue/REF-2738/data-table-does-not-overflow)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2426/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2339",
      "id": 2060227242,
      "node_id": "I_kwDOITROHc56zJKq",
      "number": 2339,
      "title": "Internationalization (I18N) and localization (L10N) (Feature Request) ",
      "user": {
        "login": "karndeb",
        "id": 36044259,
        "node_id": "MDQ6VXNlcjM2MDQ0MjU5",
        "avatar_url": "https://avatars.githubusercontent.com/u/36044259?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/karndeb",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2023-12-29T16:11:19Z",
      "updated_at": "2024-06-17T19:47:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Feature Request**\r\nHi team, \r\nGreat work and library. I think with internationalization the use cases and reflex adoption will greatly improve. I have two ways in my mind that we can add this. One is quick and easy which is through the middleware route and using the gettext module or adding i18n to the core jinja extensions. Will probably need help on the latter. \r\nLet me know if this is in the roadmap.\r\nThanks",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2339/reactions",
        "total_count": 6,
        "+1": 6,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2301",
      "id": 2043806803,
      "node_id": "I_kwDOITROHc550gRT",
      "number": 2301,
      "title": "[REF-1501] Some proposals for call_script()",
      "user": {
        "login": "yunge",
        "id": 563809,
        "node_id": "MDQ6VXNlcjU2MzgwOQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/563809?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yunge",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2023-12-15T14:14:50Z",
      "updated_at": "2025-07-10T21:11:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The current version of call_script() is too limited, as it can only defines a State.callback_function, we can't use it directly in a function.\r\n\r\nSuppose we have the following requirement, it's hard to implement with call_script().\r\n(It's just an improvised idea, so please ignore its practical value.)\r\n\r\n```\r\ndef update_items(self):\r\n    # Get the width of a DOM from the frontend.\r\n    container_width = rx.call_script_v2(\"document.body.getBoundingClientRect().width\")\r\n    \r\n    # Use the obtained container width to determine how much data to display.\r\n    item_num = 30\r\n    if container_width < 1280:\r\n        item_num=20\r\n\r\n```\r\n\r\nI tried to make an easier-to-use function, temporarily called run_script():\r\n\r\n```\r\nimport asyncio\r\nimport time\r\nfrom reflex import constants\r\nfrom reflex.state import StateUpdate\r\nfrom reflex.event import Event, EventHandler\r\nfrom reflex.utils import prerequisites\r\n\r\nasync def run_script(state, javascript_code: str, callback):\r\n    # create temporary handler function\r\n    async def handler(state, v):\r\n        # print(f'run_script() get value: {v}')\r\n        callback(v)\r\n\r\n    func_name = f\"call_script_{time.time_ns()}\"\r\n\r\n    # add to event_handlers, use temporary name\r\n    state.event_handlers[func_name] = EventHandler(fn=handler)\r\n    # print(f'call_script state name: {state.get_full_name()}: {state.event_handlers}')\r\n\r\n    # generate frontend event\r\n    app = getattr(prerequisites.get_app(), constants.CompileVars.APP)\r\n    events = [Event(\r\n        token=state.router.session.client_token,\r\n        name='_call_script',\r\n        router_data={},\r\n        payload={\r\n            'javascript_code': javascript_code,\r\n            'callback': \r\n            f'''(_eval_result) => queueEvents([Event(\"{state.get_full_name()}.{func_name}\", {{v:_eval_result}})], socket)'''\r\n        }\r\n    )]\r\n\r\n    await app.event_namespace.emit_update(\r\n        update=StateUpdate(events=events),\r\n        sid=state.router.session.session_id,\r\n    )\r\n\r\n```\r\n\r\nUsage:\r\n```\r\nclass TestState(BaseState):\r\n    async def run_script_test(self):\r\n        def callback(data):\r\n            print(f'run_script callback> data: {data}')\r\n        await run_script(self, f\"document.body.getBoundingClientRect().width\", callback)\r\n```\r\n\r\n(This is an unfinished version, I haven't been able to make it return a value directly, so it needs a callback instead, and no doubt the dev team can make a better version.)\r\n\r\nI sincerely hope the Reflex team can consider these proposals, thanks.\r\n\r\n\n\n<sub>[REF-1501](https://linear.app/reflex-dev/issue/REF-1501/some-proposals-for-call-script)</sub>",
      "closed_by": {
        "login": "yunge",
        "id": 563809,
        "node_id": "MDQ6VXNlcjU2MzgwOQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/563809?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yunge",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2301/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2295",
      "id": 2042324881,
      "node_id": "I_kwDOITROHc55u2eR",
      "number": 2295,
      "title": "[Feature Request] More data_editor tutorials",
      "user": {
        "login": "Evenzel",
        "id": 144013972,
        "node_id": "U_kgDOCJV6lA",
        "avatar_url": "https://avatars.githubusercontent.com/u/144013972?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Evenzel",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474964,
          "node_id": "LA_kwDOITROHc8AAAABGT421A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/documentation",
          "name": "documentation",
          "color": "89BFF8",
          "default": true,
          "description": "Improvements or additions to documentation"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2023-12-14T19:20:15Z",
      "updated_at": "2025-05-17T01:40:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello Reflex team,\r\n\r\nI'm very excited about the recent addition of the data_editor component. I checked the Glide Data Grid site, which serves as the basis for data_editor, and it appears to have additional features.\r\n\r\nI would appreciate it if you could provide a tutorial on these features. For example, as seen in the attached image:\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/144013972/a7189b50-f3cb-476f-acd1-277d610c26b0)\r\n\r\nHow to add an icon to a column title.\r\nHow to add a sorting context menu.\r\nHow to insert an image that enlarges when clicked.\r\nHow to insert sparklines.\r\nHow to add a name card.\r\n\r\nAdditionally, though not visible on the Glide site, it would be helpful to have a tutorial for these functions as well:\r\n\r\nPage navigation methods.\r\nFilter methods.\r\n\r\nThank you!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2295/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2294",
      "id": 2042146888,
      "node_id": "I_kwDOITROHc55uLBI",
      "number": 2294,
      "title": "reflex run --frontend-only should support hot reload",
      "user": {
        "login": "jackie-pc",
        "id": 136611113,
        "node_id": "U_kgDOCCSFKQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/136611113?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jackie-pc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2023-12-14T17:24:19Z",
      "updated_at": "2025-10-18T02:42:52Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nWhen running `reflex run --frontend-only` (this is dev mode), hot reload only works for changes made to `assets/` folder.  We should make it work in general - i.e. if page definitions change (from python files), recompile should occur and dev site updated on the fly.\r\n\r\n**To Reproduce**\r\n`reflex run --frontend-only`, change something in the application (python code).  Running dev server will not pick up this change.\r\n\r\n**Expected behavior**\r\nRunning dev server should pick up this change.  An obvious bar is to match`reflex run` behavior (dev mode, backend and frontend up).",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2294/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2232",
      "id": 2018582592,
      "node_id": "I_kwDOITROHc54USBA",
      "number": 2232,
      "title": "DataEditor custom cell formatters and cell editors",
      "user": {
        "login": "zoltan-spire",
        "id": 104849103,
        "node_id": "U_kgDOBj_ezw",
        "avatar_url": "https://avatars.githubusercontent.com/u/104849103?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zoltan-spire",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2023-11-30T12:37:28Z",
      "updated_at": "2023-11-30T13:56:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It would be awesome for the DataEditor component to support custom cell formatters and cell editors, such as dropdown and date picker, etc.\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2232/reactions",
        "total_count": 3,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 3,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2147",
      "id": 1984023297,
      "node_id": "I_kwDOITROHc52QcsB",
      "number": 2147,
      "title": "rx.input fails if default_value is typed Optional",
      "user": {
        "login": "gab23r",
        "id": 106454081,
        "node_id": "U_kgDOBlhcQQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/106454081?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gab23r",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2023-11-08T16:53:01Z",
      "updated_at": "2025-05-30T03:21:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nThe following snippet fails\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n\r\n```python\r\nimport reflex as rx\r\n\r\nclass State(rx.State):\r\n    \"\"\"The app state.\"\"\"\r\n\r\n    @rx.var\r\n    def default_value(slef) -> str | None:\r\n        return ''\r\n\r\ndef index() -> rx.Component:\r\n    return rx.input(default_value = State.default_value)\r\n\r\n# TypeError: Invalid var passed for prop default_value, expected type <class 'str'>, got value ${state.default_value} of type str | None.\r\n```\r\n\r\n**Expected behavior**\r\nNo error as None is already the default value if nothing is specified\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.10\r\n - Reflex Version:0.3.2\r\n - OS: linux\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/2147/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1960",
      "id": 1941482954,
      "node_id": "I_kwDOITROHc5zuK3K",
      "number": 1960,
      "title": "Data table blinking with the background task",
      "user": {
        "login": "narcissu14",
        "id": 26178257,
        "node_id": "MDQ6VXNlcjI2MTc4MjU3",
        "avatar_url": "https://avatars.githubusercontent.com/u/26178257?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/narcissu14",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7507248755,
          "node_id": "LA_kwDOITROHc8AAAABv3eGcw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/workaround%20available",
          "name": "workaround available",
          "color": "E3CF20",
          "default": false,
          "description": ""
        },
        "1": {
          "id": 7507304446,
          "node_id": "LA_kwDOITROHc8AAAABv3hf_g",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/upstream",
          "name": "upstream",
          "color": "721089",
          "default": false,
          "description": ""
        },
        "2": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2023-10-13T08:21:45Z",
      "updated_at": "2025-08-24T15:06:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nThe data table blinks with the background task.(Tested by change the sleep time)\r\n\r\n**Environment**\r\n- Python version: 3.9.0\r\n- Reflex version: 0.2.9\r\n- Browser: Chrome 117.0.5938.150\r\n\r\n**Code**\r\n```\r\nclass State(rx.State):\r\n    now: str = datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")\r\n    data: list = []\r\n    query_limit = 10\r\n\r\n    def query_limit_set(self, value):\r\n        self.query_limit = value\r\n\r\n    def get_data(self):\r\n        self.data = sql.get_all(int(self.query_limit))\r\n\r\n    def update_now(self):\r\n        self.now = datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")\r\n\r\n    @rx.background\r\n    async def timed_update(self):\r\n        while True:\r\n            async with self:\r\n                self.update_now()\r\n            await asyncio.sleep(2)\r\n```\r\n\r\nIs there anything I missed?\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1960/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1901",
      "id": 1921475566,
      "node_id": "I_kwDOITROHc5yh2Pu",
      "number": 1901,
      "title": "Expose dependency array parameter for `on_mount` to allow the useEffect to re-run when certain state variables change",
      "user": {
        "login": "ltm920716",
        "id": 12007227,
        "node_id": "MDQ6VXNlcjEyMDA3MjI3",
        "avatar_url": "https://avatars.githubusercontent.com/u/12007227?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ltm920716",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2023-10-02T08:31:56Z",
      "updated_at": "2025-05-26T20:35:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nI write a radiogroup component and get score-data from database as the default value for radiogroup，there are multi score items\r\n\r\nfor example，the radio options is [0, 1,2,3,4,5]，the score-data are [0, 0, 0]，and I query the data then push them in State var named ```ori_score: list```，if on_change happened in radio，the corresponding new score will be used for updating average score\r\n\r\nbut state var ```ori_score``` will refresh as long as the radio change，maybe there need one useEffect or on_load for component state loading\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/12007227/703aecb1-0216-44dc-9b85-522fe3b0e28f)\r\n\r\n\r\n**Expected behavior**\r\nstate var ```ori_score``` only load once， do not refresh with component until component refresh\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1901/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1812",
      "id": 1894829388,
      "node_id": "I_kwDOITROHc5w8M1M",
      "number": 1812,
      "title": "Dev Docker Env",
      "user": {
        "login": "andrewplesniak",
        "id": 21183985,
        "node_id": "MDQ6VXNlcjIxMTgzOTg1",
        "avatar_url": "https://avatars.githubusercontent.com/u/21183985?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/andrewplesniak",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        },
        "1": {
          "id": 7507248755,
          "node_id": "LA_kwDOITROHc8AAAABv3eGcw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/workaround%20available",
          "name": "workaround available",
          "color": "E3CF20",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2023-09-13T15:58:54Z",
      "updated_at": "2025-01-21T17:01:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nRight now the docker example is very much aimed at production, but I think there is a good opportunity to also provide a `compose-dev.yaml` that would also enable a docker based development workflow. Ideally the same dockerfiles could be used used for dev and prod, but the development docker compose would override the startup command and use volume mounts to mount  the source code from the host into the containers to allow for live reloading.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n - Code/Link to Repo:\r\n\r\n**Expected behavior**\r\nA clear and concise description of what you expected to happen.\r\n\r\n**Screenshots**\r\nIf applicable, add screenshots to help explain your problem.\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version:\r\n - Reflex Version:\r\n - OS: \r\n - Browser (Optional):\r\n \r\n**Additional context**\r\nAdd any other context about the problem here.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1812/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1784",
      "id": 1887608407,
      "node_id": "I_kwDOITROHc5wgp5X",
      "number": 1784,
      "title": "Enable Module Federation",
      "user": {
        "login": "Kade-Powell",
        "id": 47295838,
        "node_id": "MDQ6VXNlcjQ3Mjk1ODM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/47295838?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kade-Powell",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        },
        "1": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2023-09-08T12:40:11Z",
      "updated_at": "2025-07-10T21:05:32Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Feature Description:\nI am requesting the integration of module federation into the Reflex framework. Module federation allows for dynamic code splitting, sharing, and loading between different parts of a web application, enhancing modularity and reducing code duplication. This feature would empower Reflex users to build more efficient and modular web applications.\n\nUse Case:\nUse cases for module federation in Reflex include:\n\n\t•\tDeveloping microfrontend architectures.\n\t•\tBuilding large-scale web applications with shared components.\n\t•\tImproving performance through on-demand loading of resources.\n\nImplementation Ideas:\nThe integration could involve configuring and leveraging either Webpack or Vite, both of which have established support for module federation. Reflex could provide a straightforward way to define and manage shared modules and dependencies.\n\nBenefits:\n\n\t•\tEnhanced modularity and code organization.\n\t•\tReduced duplication of code and resources.\n\t•\tImproved application performance through optimized loading.\n\t•\tEmpowerment of Reflex developers to work on large-scale projects more efficiently.\n\nPotential Challenges:\n\n\t•\tCompatibility with existing Reflex features and configurations.\n\t•\tEnsuring ease of use and clear documentation for Reflex users.\n\t•\tKeeping up with updates and changes in Webpack or Vite configurations.\n\nCommunity Impact:\nThis feature would have a positive impact on the Reflex community by making the framework even more versatile and suitable for a broader range of web development projects. It would attract developers looking for efficient solutions for building complex web applications.\n\nAdditional Information:\nModule federation is a well-established practice in the web development community, and its integration into Reflex would align the framework with modern development needs and trends.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1784/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1710",
      "id": 1872579799,
      "node_id": "I_kwDOITROHc5vnUzX",
      "number": 1710,
      "title": "[REF-3188] Support touchstart, touchend, and friends ",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2023-08-29T22:20:46Z",
      "updated_at": "2025-05-30T01:17:32Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Reflex should support at least some reasonable subset of the Touch Events API: https://developer.mozilla.org/en-US/docs/Web/API/Touch_events\r\n\r\nMaybe not all of it makes sense at first, since Reflex does not support canvas well.\n\n<sub>[REF-3188](https://linear.app/reflex-dev/issue/REF-3188/support-touchstart-touchend-and-friends)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1710/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1655",
      "id": 1860426415,
      "node_id": "I_kwDOITROHc5u49qv",
      "number": 1655,
      "title": "[REF-1308] Markdown not recognising new lines when rendering",
      "user": {
        "login": "samcloudcode",
        "id": 122244647,
        "node_id": "U_kgDOB0lOJw",
        "avatar_url": "https://avatars.githubusercontent.com/u/122244647?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/samcloudcode",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8073722865,
          "node_id": "LA_kwDOITROHc8AAAAB4Ts78Q",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/components%20bug",
          "name": "components bug",
          "color": "aaaaaa",
          "default": false,
          "description": "a bug in a specific component"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2023-08-22T02:12:37Z",
      "updated_at": "2025-05-30T01:17:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nrx.markdown ignores new lines and displays everything on the same line\r\n\r\n**To Reproduce**\r\n```\r\nimport reflex as rx\r\n\r\ntext = '''\r\nHello,\r\n\r\nThis is some text.\r\n\r\nThank you,\r\n'''\r\n\r\nclass State(rx.State):\r\n    \"\"\"The app state.\"\"\"\r\n    pass\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.fragment(\r\n        rx.center(\r\n            rx.markdown(text),\r\n            width='100%',\r\n            height='100vh'\r\n        ),\r\n    )\r\n```\r\n \r\n**Expected behavior**\r\nNew lines in markdown should be displayed as new lines. Instead, they are ignored.\r\n\n\n<sub>[REF-1308](https://linear.app/reflex-dev/issue/REF-1308/markdown-not-recognising-new-lines-when-rendering)</sub>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1655/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1396",
      "id": 1815655876,
      "node_id": "I_kwDOITROHc5sOLXE",
      "number": 1396,
      "title": "Remove misleading alembic configuration",
      "user": {
        "login": "siddhantgoel",
        "id": 79892,
        "node_id": "MDQ6VXNlcjc5ODky",
        "avatar_url": "https://avatars.githubusercontent.com/u/79892?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/siddhantgoel",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2023-07-21T11:36:00Z",
      "updated_at": "2025-09-01T13:57:54Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nI was using the alembic migration functionality and noticed that Reflex generates quite some alembic configuration but does not use it. For instance, the generated `alembic.ini` file has `sqlalchemy.url` set to an example/dummy value, or that the `alembic/env.py` script is not used at all when generating/running migrations.\r\n\r\nAs an end-user, this is somewhat misleading, especially when trying to debug something database related. If the reflex CLI is interacting directly with the Alembic API, the unused generated configuration should ideally not be there.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n - Code/Link to Repo:\r\n\r\n**Expected behavior**\r\nTwo possibilities:\r\n1. when running `reflex db init`, we could remove the `sqlalchemy.url` entry from `alembic.ini`, and consider removing the `alembic/env.py` file completely\r\n2. alternatively, we could have the reflex CLI call out alembic commands instead of interacting directly with the alembic API. This would have the additional advantage of being able to rollback migrations to a previous state, which does not seem to be possible now.\r\n\r\n**Screenshots**\r\nIf applicable, add screenshots to help explain your problem.\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.11\r\n - Reflex Version: 0.2.2\r\n - OS: \r\n - Browser (Optional):\r\n \r\n**Additional context**\r\nAdd any other context about the problem here.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1396/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1373",
      "id": 1812618872,
      "node_id": "I_kwDOITROHc5sCl54",
      "number": 1373,
      "title": "[Config Refactor] need a way to set_config in the main process and apply config values to subprocesses",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2023-07-19T19:40:56Z",
      "updated_at": "2025-06-03T01:49:14Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nWhen the reflex cli starts the app, it sets some config values by calling `get_config()` and setting the values directly in memory, then it spins up two separate processes, one for the frontend and one for the backend. These subprocesses cannot generally see the updated config values, unless they happen to also be in recognizable environment variables.\r\n\r\n**To Reproduce**\r\n\r\n```python\r\nfrom rxconfig import config\r\n\r\nimport reflex as rx\r\n\r\n\r\nclass State(rx.State):\r\n    pass\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.fragment(\r\n        rx.color_mode_button(rx.color_mode_icon(), float=\"right\"),\r\n        rx.vstack(\r\n            rx.heading(\"I'm running in \", config.env, \" mode!\", font_size=\"2em\"),\r\n            padding_top=\"10%\",\r\n        ),\r\n    )\r\n\r\n\r\napp = rx.App(state=State)\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n\r\n**Expected behavior**\r\nI expect the app to be able to read the actual `config.env` value.\r\n\r\nInstead, it says \"dev\" unless `rxconfig.py` is updated with `env=Env.PROD`.\r\n\r\nEven when running with `reflex run --env prod`, it still says \"dev mode\" because the app backend is running in a subprocess that reads the config file directly, so setting the env mode in the main process is invisible to the subprocess.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1373/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1368",
      "id": 1810942558,
      "node_id": "I_kwDOITROHc5r8Mpe",
      "number": 1368,
      "title": "Substate should allow same var names as parent state",
      "user": {
        "login": "picklelo",
        "id": 6270214,
        "node_id": "MDQ6VXNlcjYyNzAyMTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6270214?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/picklelo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474968,
          "node_id": "LA_kwDOITROHc8AAAABGT422A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "Anything you want improved"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2023-07-19T00:57:39Z",
      "updated_at": "2023-07-19T20:24:56Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Currently a substate cannot have a var with the same name as a var in the parent state. We should find a workaround to support this.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/1368/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/893",
      "id": 1686284102,
      "node_id": "I_kwDOITROHc5kgqdG",
      "number": 893,
      "title": "Grandchild states do not correctly see dynamic vars added to parent state",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4718474960,
          "node_id": "LA_kwDOITROHc8AAAABGT420A",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/bug",
          "name": "bug",
          "color": "FD313A",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2023-04-27T07:31:57Z",
      "updated_at": "2023-05-22T21:24:40Z",
      "closed_at": null,
      "author_association": "COLLABORATOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\n\r\nAdding a variable to a parent state via `add_var` after defining some child state does not allow the variable to work in a subsequently defined grandchild state.\r\n\r\n\r\n**To Reproduce**\r\n```python\r\nimport pynecone as pc\r\n\r\nclass S(pc.State):\r\n    pass\r\n\r\nclass SS(S):\r\n    pass\r\n\r\nS.add_var(\"foo\", type_=str, default_value=\"\")\r\n\r\nclass SSS(SS):\r\n    @pc.var\r\n    def bar(self) -> str:\r\n        return self.foo\r\n\r\nstate = S()\r\nsubstate = state.substates[SS.get_name()]\r\nsubsubstate = substate.substates[SSS.get_name()]\r\nstate.foo = \"bar\"\r\nprint(subsubstate.bar)\r\n```\r\n\r\n**Expected behavior**\r\nit should print `bar`\r\n\r\ninstead it prints `{s.foo}`\r\n\r\n** Specifics (please complete the following information):**\r\n - Python Version: 3.11.2\r\n - Pynecone Version: main\r\n - OS: macOS 13.2.1\r\n - Browser (Optional): N/A\r\n \r\n**Additional context**\r\n* `State.inherited_vars` is a direct link to `parent_state.vars` (set in `__init_subclass__`)\r\n* `State.vars` is a copy (combination) of vars from a few sources, and _doesn't get updated_ when parent state adds dynamic vars.\r\n\r\nAdding to the bottom of `State.add_var` seems to have the desired effect.\r\n\r\n```python\r\n        # let substates know about the new variable\r\n        for substate_class in cls.__subclasses__():\r\n            substate_class.vars.setdefault(name, var)\r\n```\r\n\r\n(Note: can't use State.get_substates() because it's lru_cache'd)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/893/reactions",
        "total_count": 2,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 2,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/issues/46",
      "id": 1487438276,
      "node_id": "I_kwDOITROHc5YqIHE",
      "number": 46,
      "title": "Embedding Pynecone in other apps",
      "user": {
        "login": "EgosOwn",
        "id": 47700879,
        "node_id": "MDQ6VXNlcjQ3NzAwODc5",
        "avatar_url": "https://avatars.githubusercontent.com/u/47700879?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/EgosOwn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 4894189255,
          "node_id": "LA_kwDOITROHc8AAAABI7dmxw",
          "url": "https://api.github.com/repos/reflex-dev/reflex/labels/feature%20request",
          "name": "feature request",
          "color": "37D158",
          "default": false,
          "description": "A feature you wanted added to reflex"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2022-12-09T20:50:09Z",
      "updated_at": "2025-07-10T21:05:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "One of the issues i had with streamlit (from what i remember) is that you can't easily embed streamlit into existing applications, and the same seems to be true here. \r\n\r\nIt would be really cool if i could do pynecone.run() from an existing app and bind state to existing modules. It would allow one to take existing APIs and wire them up quickly to a pyonecone GUI.\r\n\r\nI know that is certainly easier said than done. Go ahead and close this issue if that is too far out of scope or isn't feasible.\r\n\r\nThank you for your efforts, pynecone is neat.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/reflex-dev/reflex/issues/46/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    }
  ],
  "pulls": [
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/6024",
      "id": 3076809053,
      "node_id": "PR_kwDOITROHc63ZGFd",
      "number": 6024,
      "state": "open",
      "locked": false,
      "title": "ENG-8258: API for linking and sharing states",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "It works by defining a substate of SharedState and then calling self._link_to(target_token) from some event handler.  from that point on, whenever that user's state is loaded, the StateManager will patch in the linked shared states.  whenever a linked state is modified, we explicitly load all of the other linked tokens, patch in the modified states, and send a delta to those clients\r\n\r\nYou can call ._unlink to remove the link association, which causes the substate to be subsequently loaded from the client_token's tree as a private state\r\n\r\nIt is intended to work transparently with computed vars, background events, and frontend rendering.\r\n\r\n## Test code\r\n\r\n```python\r\nimport reflex as rx\r\n\r\n\r\nclass MySharedThing(rx.SharedState):\r\n    my_counter: int = 0\r\n\r\n    @rx.event\r\n    async def toggle_link(self):\r\n        if not self._linked_to:\r\n            return await self._link_to(await self.get_var_value(State.shared_token))\r\n        return await self._unlink()\r\n\r\n    @rx.event\r\n    def increment(self):\r\n        self.my_counter += 1\r\n\r\n    @rx.event\r\n    def decrement(self):\r\n        self.my_counter -= 1\r\n\r\n    @rx.var\r\n    def linked_to(self) -> str:\r\n        return self._linked_to or \"not linked\"\r\n\r\n    @rx.var\r\n    def linked_from(self) -> str:\r\n        return \", \".join(self._linked_from) or \"no links\"\r\n\r\n    @rx.event(background=True)\r\n    async def delayed_multi_increment(self, amount: int):\r\n        import asyncio\r\n\r\n        for _ in range(amount):\r\n            await asyncio.sleep(1)\r\n            async with self:\r\n                self.my_counter += 1\r\n\r\n\r\nclass State(rx.State):\r\n    @rx.var\r\n    def shared_token(self) -> str:\r\n        return (self.room or \"shared_global\").replace(\"_\", \"-\")\r\n\r\n    @rx.var\r\n    async def current_count(self) -> int:\r\n        shared_state = await self.get_state(MySharedThing)\r\n        return shared_state.my_counter\r\n\r\n    @rx.event\r\n    async def print_current_count(self):\r\n        shared_state = await self.get_state(MySharedThing)\r\n        print(f\"Current count is: {shared_state.my_counter}\")\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        rx.color_mode.button(position=\"top-right\"),\r\n        rx.vstack(\r\n            rx.text(f\"Shared token: {State.shared_token}\"),\r\n            rx.button(f\"Linked To: {MySharedThing.linked_to}\", on_click=MySharedThing.toggle_link),\r\n            rx.text(f\"Linked From: {MySharedThing.linked_from}\"),\r\n            rx.heading(State.current_count),\r\n            rx.button(\r\n                \"Increment\",\r\n                on_click=MySharedThing.increment,\r\n            ),\r\n            rx.button(\r\n                \"Increment 5 times with 1s delay\",\r\n                on_click=MySharedThing.delayed_multi_increment(5),\r\n            ),\r\n            rx.button(\r\n                \"Decrement\",\r\n                on_click=MySharedThing.decrement,\r\n            ),\r\n            rx.button(\r\n                \"Print Current Count to Console\",\r\n                on_click=State.print_current_count,\r\n            ),\r\n        ),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index, route=\"/[room]\")\r\napp.add_page(index)\r\n```\r\n\r\nAccess `/my-room-id` to enter separate \"rooms\" for arbitrary sharing domains. This allows any number of clients to share state.",
      "created_at": "2025-12-06T01:40:04Z",
      "updated_at": "2025-12-06T01:44:00Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "79a860d64e4cd25e12525d2f870ce9a8a07cd485",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "reflex-dev:masenf/linked-state",
        "ref": "masenf/linked-state",
        "sha": "3d40cac3ab01c4082471cc7a35add72bde417d86",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "fad67cfe6c43430b45a4bb10db9ffcd7d0b1bf82",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/6024"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/6024"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/6024"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/6024/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/6024/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/6024/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/3d40cac3ab01c4082471cc7a35add72bde417d86"
        }
      },
      "author_association": "COLLABORATOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5990",
      "id": 3029571936,
      "node_id": "PR_kwDOITROHc60k5lg",
      "number": 5990,
      "state": "open",
      "locked": false,
      "title": "Allow computed vars to yield events and update state reliably",
      "user": {
        "login": "aibysid",
        "id": 43745848,
        "node_id": "MDQ6VXNlcjQzNzQ1ODQ4",
        "avatar_url": "https://avatars.githubusercontent.com/u/43745848?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/aibysid",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "\r\n\r\n```markdown\r\n### All Submissions:\r\n\r\n- [x] Have you followed the guidelines stated in [CONTRIBUTING.md](https://github.com/reflex-dev/reflex/blob/main/CONTRIBUTING.md) file?\r\n- [x] Have you checked to ensure there aren't any other open [Pull Requests](https://github.com/reflex-dev/reflex/pulls) for the desired changed?\r\n\r\n### Type of change\r\n\r\n- [x] New feature (non-breaking change which adds functionality)\r\n- [x] Bug fix (non-breaking change which fixes an issue)\r\n\r\n### New Feature Submission:\r\n\r\n- [x] Does your submission pass the tests?\r\n- [x] Have you linted your code locally prior to submission?\r\n\r\n### Changes To Core Features:\r\n\r\n- [x] Have you added an explanation of what your changes do and why you'd like us to include them?\r\n- [x] Have you written new tests for your core changes, as applicable?\r\n- [x] Have you successfully ran tests with your changes locally?\r\n\r\n---\r\n\r\n### Description\r\n\r\nThis PR enables **Computed Vars** to reliably trigger side effects, such as yielding events or modifying other state variables, during their computation.\r\n\r\nPreviously, computed vars were expected to be pure functions. Attempting to `yield` events (like `rx.toast`) resulted in the property returning a generator object instead of the calculated value. Additionally, if a computed var modified another state variable, that change was often missed in the current state update cycle because `get_delta` did not re-evaluate dependencies after the initial computation.\r\n\r\n**Key Changes:**\r\n1.  **Support for Generator Computed Vars**: Updated `ComputedVar.__get__` (in `reflex/vars/base.py`) to detect generator return values. It now iterates through the generator, collects yielded events, and returns the final value (captured from `StopIteration`).\r\n2.  **Event Collection**: Added `_computed_var_events` to `BaseState` to store these yielded events and updated `_as_state_update` to include them in the response sent to the frontend.\r\n3.  **Iterative State Updates**: Modified `BaseState.get_delta` (in `reflex/state.py`) to iterate (up to a limit) when calculating the delta. This ensures that if a computed var modifies a base var (marking it dirty), the loop continues to capture the ripple effects of that change in the same update cycle.\r\n\r\n### Example Usage\r\n\r\n```python\r\nclass MyState(rx.State):\r\n    count: int = 0\r\n    status: str = \"Normal\"\r\n\r\n    @rx.var\r\n    def check_status(self) -> str:\r\n        if self.count > 10:\r\n            # This side effect (event) is now captured\r\n            yield rx.toast(\"Count is too high!\")\r\n            \r\n            # This side effect (state modification) is now reliably captured in the same update\r\n            self.status = \"High\" \r\n            return \"Alert\"\r\n        return \"OK\"\r\n```\r\n\r\n### Tests\r\nAdded `tests/units/test_computed_var_side_effects.py` which verifies:\r\n- A computed var correctly yields an event (e.g., `rx.window_alert`).\r\n- A computed var correctly modifies another state variable, and the change is present in the state delta.\r\n\r\nCloses #5956\r\n```",
      "created_at": "2025-11-20T11:54:01Z",
      "updated_at": "2025-11-20T16:47:51Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "47f39648c73fe3113229c96af3e4c8d22d6c6a3d",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "aibysid:fix-computed-var-side-effects",
        "ref": "fix-computed-var-side-effects",
        "sha": "e61f8f6b7c480cc4cae66598768f0b23f67d2964",
        "user": {
          "login": "aibysid",
          "id": 43745848,
          "node_id": "MDQ6VXNlcjQzNzQ1ODQ4",
          "avatar_url": "https://avatars.githubusercontent.com/u/43745848?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/aibysid",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1100315211,
          "node_id": "R_kgDOQZV6Sw",
          "name": "reflex",
          "full_name": "aibysid/reflex",
          "private": false,
          "owner": {
            "login": "aibysid",
            "id": 43745848,
            "node_id": "MDQ6VXNlcjQzNzQ1ODQ4",
            "avatar_url": "https://avatars.githubusercontent.com/u/43745848?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/aibysid",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/aibysid/reflex",
          "created_at": "2025-11-20T05:50:25Z",
          "updated_at": "2025-11-20T05:50:28Z",
          "pushed_at": "2025-11-20T11:44:52Z",
          "homepage": "https://reflex.dev",
          "size": 25300,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "a98743734d292b8a7269ab0a2a87b43d8e7e6d61",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5990"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5990"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5990"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5990/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5990/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5990/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/e61f8f6b7c480cc4cae66598768f0b23f67d2964"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        5,
        5956
      ]
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5985",
      "id": 3022041945,
      "node_id": "PR_kwDOITROHc60ILNZ",
      "number": 5985,
      "state": "open",
      "locked": false,
      "title": "Adding `BlobVar` and `BytesVar`.",
      "user": {
        "login": "riebecj",
        "id": 16140677,
        "node_id": "MDQ6VXNlcjE2MTQwNjc3",
        "avatar_url": "https://avatars.githubusercontent.com/u/16140677?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/riebecj",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Provides better support for converting Var data to JS Blobs. Adds `BytesVar` to back Python `bytes` with JS `Uint8Array`. To keep things consistent and pythonic, `.encode(...)` and `.decode(...)` methods have been added to `StringVar`. Also, both `StringVar` and `BytesVar` have a `to_blob(...)` method that assists in creating a `new Blob(...)` from the Python data. The `BlobVar` has a `.create_object_url(...)` method that returns the URL string for downloading with `rx.download(...)`. It also seems to handle Unicode quite nicely.\r\n\r\n### All Submissions:\r\n\r\n- [x] Have you followed the guidelines stated in [CONTRIBUTING.md](https://github.com/reflex-dev/reflex/blob/main/CONTRIBUTING.md) file?\r\n- [x] Have you checked to ensure there aren't any other open [Pull Requests](https://github.com/reflex-dev/reflex/pulls) for the desired changed?\r\n\r\n<!-- You can erase any parts of this template not applicable to your Pull Request. -->\r\n\r\n### Type of change\r\n\r\nPlease delete options that are not relevant.\r\n\r\n- [ ] Bug fix (non-breaking change which fixes an issue)\r\n- [x] New feature (non-breaking change which adds functionality)\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)\r\n- [ ] This change requires a documentation update\r\n\r\n### New Feature Submission:\r\n\r\n- [x] Does your submission pass the tests?\r\n- [x] Have you linted your code locally prior to submission?\r\n\r\n### Changes To Core Features:\r\n\r\n- [x] Have you added an explanation of what your changes do and why you'd like us to include them?\r\n- [x] Have you written new tests for your core changes, as applicable?\r\n- [x] Have you successfully ran tests with your changes locally?",
      "created_at": "2025-11-18T14:25:53Z",
      "updated_at": "2025-11-20T17:20:42Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "661109c187e00bd05a7122ef8b9303ffa1ef1bae",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "riebecj:main",
        "ref": "main",
        "sha": "08097dd473393321654293b51f07613821b794ad",
        "user": {
          "login": "riebecj",
          "id": 16140677,
          "node_id": "MDQ6VXNlcjE2MTQwNjc3",
          "avatar_url": "https://avatars.githubusercontent.com/u/16140677?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/riebecj",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1012693257,
          "node_id": "R_kgDOPFx5CQ",
          "name": "reflex",
          "full_name": "riebecj/reflex",
          "private": false,
          "owner": {
            "login": "riebecj",
            "id": 16140677,
            "node_id": "MDQ6VXNlcjE2MTQwNjc3",
            "avatar_url": "https://avatars.githubusercontent.com/u/16140677?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/riebecj",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/riebecj/reflex",
          "created_at": "2025-07-02T18:20:37Z",
          "updated_at": "2025-11-18T14:17:59Z",
          "pushed_at": "2025-11-18T14:17:56Z",
          "homepage": "https://reflex.dev",
          "size": 25338,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "4ee713f6f1c4c32965b6ffbe9d2e27af369b7e83",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5985"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5985"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5985"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5985/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5985/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5985/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/08097dd473393321654293b51f07613821b794ad"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5785",
      "id": 2820794062,
      "node_id": "PR_kwDOITROHc6oIebO",
      "number": 5785,
      "state": "open",
      "locked": false,
      "title": "use async helmet",
      "user": {
        "login": "adhami3310",
        "id": 27952765,
        "node_id": "MDQ6VXNlcjI3OTUyNzY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adhami3310",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-09-11T23:36:21Z",
      "updated_at": "2025-09-12T00:10:29Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "reflex-dev:use-async-helmet",
        "ref": "use-async-helmet",
        "sha": "64bd4196ad71dce0be471286fb45741266ea8100",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "f0b20759cded56d164b3fe11027d24b9451500fa",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5785"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5785"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5785"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5785/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5785/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5785/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/64bd4196ad71dce0be471286fb45741266ea8100"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5781",
      "id": 2819724421,
      "node_id": "PR_kwDOITROHc6oEZSF",
      "number": 5781,
      "state": "open",
      "locked": false,
      "title": "update instruction in welcome (starting ) code",
      "user": {
        "login": "Aoumjahde",
        "id": 177659825,
        "node_id": "U_kgDOCpbfsQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/177659825?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Aoumjahde",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "### All Submissions:\r\n\r\n- [x] Have you followed the guidelines stated in [CONTRIBUTING.md](https://github.com/reflex-dev/reflex/blob/main/CONTRIBUTING.md) file?\r\n- [ x] Have you checked to ensure there aren't any other open [Pull Requests](https://github.com/reflex-dev/reflex/pulls) for the desired changed?\r\n\r\n<!-- You can erase any parts of this template not applicable to your Pull Request. -->\r\n\r\n### Type of change\r\n\r\nPlease delete options that are not relevant.\r\n\r\n- [ ] Bug fix (non-breaking change which fixes an issue)\r\n- [x] New feature (non-breaking change which adds functionality)\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)\r\n- [x ] This change requires a documentation update\r\n\r\n### New Feature Submission:\r\n\r\n- [ x] Does your submission pass the tests?\r\n- [x ] Have you linted your code locally prior to submission?\r\n\r\n### Changes To Core Features:\r\n\r\n- [x] Have you added an explanation of what your changes do and why you'd like us to include them?\r\n- [ x] Have you written new tests for your core changes, as applicable?\r\n- [x ] Have you successfully ran tests with your changes locally?\r\n\r\n### **After** these steps, you're ready to open a pull request.\r\n\r\n    a. Give a descriptive title to your PR.\r\n\r\n    b. Describe your changes.\r\n\r\n    c. Put `closes #XXXX` in your comment to auto-close the issue that your PR fixes (if such).\r\n\r\n\r\n1. Just update the index page documentation for the new user, because I find it hard to know how I will start the front and back end servers.\r\n2. Adding a new JS file (livereload.js) that has functionality to reload the page automatically when changing the same frontend elements.",
      "created_at": "2025-09-11T15:46:44Z",
      "updated_at": "2025-09-11T15:52:25Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "d495c964fd1a1ef05e2d32680616717188771f18",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Aoumjahde:main",
        "ref": "main",
        "sha": "94c981bb95426af95463192d3be8d2ef00bee434",
        "user": {
          "login": "Aoumjahde",
          "id": 177659825,
          "node_id": "U_kgDOCpbfsQ",
          "avatar_url": "https://avatars.githubusercontent.com/u/177659825?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Aoumjahde",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1054941137,
          "node_id": "R_kgDOPuEf0Q",
          "name": "reflex",
          "full_name": "Aoumjahde/reflex",
          "private": false,
          "owner": {
            "login": "Aoumjahde",
            "id": 177659825,
            "node_id": "U_kgDOCpbfsQ",
            "avatar_url": "https://avatars.githubusercontent.com/u/177659825?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Aoumjahde",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/Aoumjahde/reflex",
          "created_at": "2025-09-11T14:39:17Z",
          "updated_at": "2025-09-11T15:23:26Z",
          "pushed_at": "2025-09-11T15:23:20Z",
          "homepage": "https://reflex.dev",
          "size": 24583,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "caab8ba18e07e902f3329bcbffed391a1848cc76",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5781"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5781"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5781"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5781/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5781/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5781/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/94c981bb95426af95463192d3be8d2ef00bee434"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5712",
      "id": 2744728669,
      "node_id": "PR_kwDOITROHc6jmTxd",
      "number": 5712,
      "state": "open",
      "locked": false,
      "title": "Add integration tests for frontend path",
      "user": {
        "login": "tartansandal",
        "id": 3327775,
        "node_id": "MDQ6VXNlcjMzMjc3NzU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3327775?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tartansandal",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Introduces an integration test for #5674.\r\nThis xfails on `main` but passes on  #5698\r\n\r\n_Edit:_ also fixed an apparent bug in `test_link_hover.py`. There may be a deeper issue here.\r\n_Edit:_ removed xfail after merging main which now includes #5698.\r\n_Edit:_ added a test for 404s.\r\n\r\n",
      "created_at": "2025-08-14T03:19:18Z",
      "updated_at": "2025-10-16T15:43:59Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "610b3e6257f995f5f902a9bf920ef899290eb10e",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "tartansandal:kjh/integration-tests-for-frontend-path",
        "ref": "kjh/integration-tests-for-frontend-path",
        "sha": "9aebd436e5e43640dc1231f8385b680106ac5afe",
        "user": {
          "login": "tartansandal",
          "id": 3327775,
          "node_id": "MDQ6VXNlcjMzMjc3NzU=",
          "avatar_url": "https://avatars.githubusercontent.com/u/3327775?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/tartansandal",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 991067980,
          "node_id": "R_kgDOOxJ_TA",
          "name": "reflex",
          "full_name": "tartansandal/reflex",
          "private": false,
          "owner": {
            "login": "tartansandal",
            "id": 3327775,
            "node_id": "MDQ6VXNlcjMzMjc3NzU=",
            "avatar_url": "https://avatars.githubusercontent.com/u/3327775?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/tartansandal",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/tartansandal/reflex",
          "created_at": "2025-05-27T04:44:23Z",
          "updated_at": "2025-11-09T04:24:47Z",
          "pushed_at": "2025-11-09T04:24:39Z",
          "homepage": "https://reflex.dev",
          "size": 25239,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "e5d6c4d66b84cfc4d9d914aeea7766dbb8af61c4",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5712"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5712"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5712"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5712/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5712/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5712/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/9aebd436e5e43640dc1231f8385b680106ac5afe"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        5
      ]
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5703",
      "id": 2735001827,
      "node_id": "PR_kwDOITROHc6jBNDj",
      "number": 5703,
      "state": "open",
      "locked": false,
      "title": "feat: nullable exception handlers",
      "user": {
        "login": "maximvlah",
        "id": 50658693,
        "node_id": "MDQ6VXNlcjUwNjU4Njkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/50658693?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/maximvlah",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Closes https://github.com/reflex-dev/reflex/issues/3776",
      "created_at": "2025-08-11T10:39:17Z",
      "updated_at": "2025-08-14T20:30:11Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "maximvlah:set-none-to-exception-handler",
        "ref": "set-none-to-exception-handler",
        "sha": "7ceac105b7432c425afee0776aaa4435cd367bff",
        "user": {
          "login": "maximvlah",
          "id": 50658693,
          "node_id": "MDQ6VXNlcjUwNjU4Njkz",
          "avatar_url": "https://avatars.githubusercontent.com/u/50658693?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/maximvlah",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 820566072,
          "node_id": "R_kgDOMOjYOA",
          "name": "reflex",
          "full_name": "maximvlah/reflex",
          "private": false,
          "owner": {
            "login": "maximvlah",
            "id": 50658693,
            "node_id": "MDQ6VXNlcjUwNjU4Njkz",
            "avatar_url": "https://avatars.githubusercontent.com/u/50658693?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/maximvlah",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/maximvlah/reflex",
          "created_at": "2024-06-26T18:17:48Z",
          "updated_at": "2025-08-11T10:21:20Z",
          "pushed_at": "2025-08-13T10:42:05Z",
          "homepage": "https://reflex.dev",
          "size": 24017,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "e4180b8e9440835d31f99bfb72397e4d67f09210",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5703"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5703"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5703"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5703/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5703/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5703/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/7ceac105b7432c425afee0776aaa4435cd367bff"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5702",
      "id": 2734905533,
      "node_id": "PR_kwDOITROHc6jA1i9",
      "number": 5702,
      "state": "open",
      "locked": false,
      "title": "use wget instead of curl",
      "user": {
        "login": "bnjmnjrk",
        "id": 106487517,
        "node_id": "U_kgDOBlje3Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/106487517?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bnjmnjrk",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "### All Submissions:\r\n\r\n- [x] Have you followed the guidelines stated in [CONTRIBUTING.md](https://github.com/reflex-dev/reflex/blob/main/CONTRIBUTING.md) file?\r\n- [x] Have you checked to ensure there aren't any other open [Pull Requests](https://github.com/reflex-dev/reflex/pulls) for the desired changed?\r\n\r\n### Changes To Core Features:\r\n\r\n- [x] Have you added an explanation of what your changes do and why you'd like us to include them:\r\nI am working in a restricted environment where high-level tools like cURL aren't installed by default, so I have to create large workarounds to collect all the necessary dependencies that aren't native to Python. It would be great if the project could use wget instead of curl, as wget is much deeper in the OS dependency tree than curl. In fact, wget is a dependency of the coreutils package, so we can assume that everyone has it installed.\r\n",
      "created_at": "2025-08-11T10:08:22Z",
      "updated_at": "2025-08-13T02:52:34Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "b50096218a803edb4654ad75cdd88d09d25a566e",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "bnjmnjrk:main",
        "ref": "main",
        "sha": "353b87956c7e3275c3babdc8f24466a56016f6e3",
        "user": {
          "login": "bnjmnjrk",
          "id": 106487517,
          "node_id": "U_kgDOBlje3Q",
          "avatar_url": "https://avatars.githubusercontent.com/u/106487517?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/bnjmnjrk",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1035918665,
          "node_id": "R_kgDOPb7dSQ",
          "name": "reflex",
          "full_name": "bnjmnjrk/reflex",
          "private": false,
          "owner": {
            "login": "bnjmnjrk",
            "id": 106487517,
            "node_id": "U_kgDOBlje3Q",
            "avatar_url": "https://avatars.githubusercontent.com/u/106487517?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/bnjmnjrk",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/bnjmnjrk/reflex",
          "created_at": "2025-08-11T09:38:49Z",
          "updated_at": "2025-08-11T12:51:00Z",
          "pushed_at": "2025-08-11T12:50:54Z",
          "homepage": "https://reflex.dev",
          "size": 23986,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "e4180b8e9440835d31f99bfb72397e4d67f09210",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5702"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5702"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5702"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5702/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5702/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5702/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/353b87956c7e3275c3babdc8f24466a56016f6e3"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5430",
      "id": 2581777654,
      "node_id": "PR_kwDOITROHc6Z4sz2",
      "number": 5430,
      "state": "open",
      "locked": false,
      "title": "[0.9] remove ids refs from form_data",
      "user": {
        "login": "Lendemor",
        "id": 4015177,
        "node_id": "MDQ6VXNlcjQwMTUxNzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4015177?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lendemor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Passing both name and ids refs can lead to duplicate data, we should only pass form data by name.\r\n\r\nFix #5418 (when extracting hooks in stateful components, the form hook still refer `refs` but the import is removed, leading to the error)",
      "created_at": "2025-06-10T15:31:02Z",
      "updated_at": "2025-06-13T17:15:13Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "reflex-dev:lendemor/fix_form_data",
        "ref": "lendemor/fix_form_data",
        "sha": "32ff737d75542cbf0e840ab144a256d1661c8beb",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "e9cd7e02bcc2e15304435b37978d322025147083",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5430"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5430"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5430"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5430/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5430/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5430/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/32ff737d75542cbf0e840ab144a256d1661c8beb"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        5
      ]
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5295",
      "id": 2520681001,
      "node_id": "PR_kwDOITROHc6WPoop",
      "number": 5295,
      "state": "open",
      "locked": false,
      "title": " allow eventhandlers and eventspecs for exception handlers ",
      "user": {
        "login": "adhami3310",
        "id": 27952765,
        "node_id": "MDQ6VXNlcjI3OTUyNzY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adhami3310",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-05-15T01:53:17Z",
      "updated_at": "2025-05-15T18:45:18Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "reflex-dev:khaleel/eng-5599-unify-generic-frontendbackend-exception-handler-api",
        "ref": "khaleel/eng-5599-unify-generic-frontendbackend-exception-handler-api",
        "sha": "c02e00c30449894edb1d8d047d95c6f3ef94d08f",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "dc9b3528a30de6571842fb81d580bcc8cd811287",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5295"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5295"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5295"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5295/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5295/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5295/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/c02e00c30449894edb1d8d047d95c6f3ef94d08f"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5179",
      "id": 2480767435,
      "node_id": "PR_kwDOITROHc6T3YHL",
      "number": 5179,
      "state": "open",
      "locked": false,
      "title": "wrap sankey recharts",
      "user": {
        "login": "adhami3310",
        "id": 27952765,
        "node_id": "MDQ6VXNlcjI3OTUyNzY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adhami3310",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-04-25T06:35:46Z",
      "updated_at": "2025-06-04T12:13:54Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "reflex-dev:wrap-sankey-recharts",
        "ref": "wrap-sankey-recharts",
        "sha": "8b2e5658aecb02ef2f12e01082a449edd3a75d00",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "a4fac5d553ff98f2d2c8b5d54e987aba61693323",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5179"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5179"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5179"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5179/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5179/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5179/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/8b2e5658aecb02ef2f12e01082a449edd3a75d00"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/5033",
      "id": 2418238882,
      "node_id": "PR_kwDOITROHc6QI2Wi",
      "number": 5033,
      "state": "open",
      "locked": false,
      "title": "remove rich",
      "user": {
        "login": "adhami3310",
        "id": 27952765,
        "node_id": "MDQ6VXNlcjI3OTUyNzY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adhami3310",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "there are a few remaining [bold]",
      "created_at": "2025-03-26T03:21:45Z",
      "updated_at": "2025-03-27T06:58:42Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "reflex-dev:karl-marx",
        "ref": "karl-marx",
        "sha": "34bb97feeebd51ce94da948cbb17b752962695a3",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "5b6afb1eb87435d58ba05d92094f1392709fbc98",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5033"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/5033"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5033"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/5033/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5033/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/5033/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/34bb97feeebd51ce94da948cbb17b752962695a3"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4890",
      "id": 2365725248,
      "node_id": "PR_kwDOITROHc6NAhpA",
      "number": 4890,
      "state": "open",
      "locked": false,
      "title": "json patch",
      "user": {
        "login": "adhami3310",
        "id": 27952765,
        "node_id": "MDQ6VXNlcjI3OTUyNzY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adhami3310",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-03-01T02:48:41Z",
      "updated_at": "2025-03-17T23:40:13Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "reflex-dev:json-patch",
        "ref": "json-patch",
        "sha": "690d029efb9387a0586edfda9db97138c975da12",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "8c9bc6635eb7001643c1b62c209411a756dd19d2",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4890"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4890"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4890"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4890/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4890/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4890/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/690d029efb9387a0586edfda9db97138c975da12"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4778",
      "id": 2323384931,
      "node_id": "PR_kwDOITROHc6KfApj",
      "number": 4778,
      "state": "open",
      "locked": false,
      "title": "Add `awaitable_attrs` to rx.Model",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This works like sqlalchemy's AsyncAttrs mixin, providing an async-context for accessing fields and relationships when using async sessions.",
      "created_at": "2025-02-08T01:19:21Z",
      "updated_at": "2025-02-08T01:21:45Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "reflex-dev:masenf/rx-model-awaitable-attrs",
        "ref": "masenf/rx-model-awaitable-attrs",
        "sha": "5411cc07becd3e6aeecf37ce49e399b0b5217ecd",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "70920a64be4fb1b55827010f33a6117006c132e1",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4778"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4778"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4778"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4778/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4778/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4778/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/5411cc07becd3e6aeecf37ce49e399b0b5217ecd"
        }
      },
      "author_association": "COLLABORATOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4736",
      "id": 2313556017,
      "node_id": "PR_kwDOITROHc6J5hAx",
      "number": 4736,
      "state": "open",
      "locked": false,
      "title": "Write uploaded file bytes to a SpooledTemporaryFile",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Reduce memory usage during upload WiP",
      "created_at": "2025-02-03T20:13:40Z",
      "updated_at": "2025-02-03T20:15:53Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "reflex-dev:masenf/upload-write-tempfile",
        "ref": "masenf/upload-write-tempfile",
        "sha": "7f0efa13e9230d84286af2290a80e66399d42154",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "ef93161840df472e14510c809b9ef9454a2519de",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4736"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4736"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4736"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4736/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4736/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4736/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/7f0efa13e9230d84286af2290a80e66399d42154"
        }
      },
      "author_association": "COLLABORATOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4594",
      "id": 2262766740,
      "node_id": "PR_kwDOITROHc6G3xSU",
      "number": 4594,
      "state": "open",
      "locked": false,
      "title": "integration_app_harness.yml: cache playwright install",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-01-06T22:46:10Z",
      "updated_at": "2025-01-06T22:47:14Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "reflex-dev:masenf/cache-playwright",
        "ref": "masenf/cache-playwright",
        "sha": "1e52354d216fa891eced5e79b00cfe82ede4eb70",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "eae15e3a83efa9552a2c5f4bfa5305fb3586333c",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4594"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4594"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4594"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4594/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4594/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4594/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/1e52354d216fa891eced5e79b00cfe82ede4eb70"
        }
      },
      "author_association": "COLLABORATOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4500",
      "id": 2221660294,
      "node_id": "PR_kwDOITROHc6Ea9iG",
      "number": 4500,
      "state": "open",
      "locked": false,
      "title": "Minor pickle improvement 2",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "followup of #4499",
      "created_at": "2024-12-07T23:39:55Z",
      "updated_at": "2024-12-12T13:52:38Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:minor-pickle-improvement-2",
        "ref": "minor-pickle-improvement-2",
        "sha": "51961b975dc76fac974e105d81e3a304c90782ee",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "a2f14e7713cd8cfde32d92597328f78b94531d63",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4500"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4500"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4500"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4500/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4500/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4500/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/51961b975dc76fac974e105d81e3a304c90782ee"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4488",
      "id": 2217840439,
      "node_id": "PR_kwDOITROHc6EMY83",
      "number": 4488,
      "state": "open",
      "locked": false,
      "title": "Do not mark unchanged computed var deps as dirty",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "part of #4487",
      "created_at": "2024-12-05T14:41:44Z",
      "updated_at": "2024-12-17T21:33:28Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {
        "0": {
          "login": "masenf",
          "id": 1524005,
          "node_id": "MDQ6VXNlcjE1MjQwMDU=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/masenf",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:unchanged-vars-dirty",
        "ref": "unchanged-vars-dirty",
        "sha": "cc6edf164a1ac31124c6b9ab07ecb25361af4730",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "72085408557c383cf13b395d23a670f4df1afa2f",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4488"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4488"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4488"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4488/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4488/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4488/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/cc6edf164a1ac31124c6b9ab07ecb25361af4730"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4483",
      "id": 2216371114,
      "node_id": "PR_kwDOITROHc6EGyOq",
      "number": 4483,
      "state": "open",
      "locked": false,
      "title": "feat: add state_explicit_vars config option",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2024-12-04T23:10:15Z",
      "updated_at": "2024-12-04T23:10:15Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:explicit-vars",
        "ref": "explicit-vars",
        "sha": "9c3bac61572494b31669f66b319380fb633b7545",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "c721227a062ed6f977477e435d37b3fa5b0be509",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4483"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4483"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4483"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4483/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4483/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4483/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/9c3bac61572494b31669f66b319380fb633b7545"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4460",
      "id": 2209069045,
      "node_id": "PR_kwDOITROHc6Dq7f1",
      "number": 4460,
      "state": "open",
      "locked": false,
      "title": "try adding frontend path to assets",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2024-12-01T18:11:12Z",
      "updated_at": "2024-12-01T18:11:12Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:frontend-path-for-assets",
        "ref": "frontend-path-for-assets",
        "sha": "56023cb1c2b81afa12a00bce9f1b6795f4b44385",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "39cdce6960fef0cdf73b76f6b99f3f174d83059d",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4460"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4460"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4460"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4460/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4460/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4460/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/56023cb1c2b81afa12a00bce9f1b6795f4b44385"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4459",
      "id": 2208956106,
      "node_id": "PR_kwDOITROHc6Dqf7K",
      "number": 4459,
      "state": "open",
      "locked": false,
      "title": "redis hash for StateManagerRedis",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Drastically reduces the amount of redis calls for apps with many states\r\nKeeps all states of a session in one redis hashmap instead of separate redis keys",
      "created_at": "2024-12-01T14:33:50Z",
      "updated_at": "2024-12-14T20:16:23Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:redis-hash",
        "ref": "redis-hash",
        "sha": "ffd99ec00ec866230d77444e7cea17d658d724df",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "d7956c19d3bb025d5eaef55fc6d49f8a7d4cded4",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4459"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4459"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4459"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4459/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4459/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4459/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/ffd99ec00ec866230d77444e7cea17d658d724df"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4446",
      "id": 2204155216,
      "node_id": "PR_kwDOITROHc6DYL1Q",
      "number": 4446,
      "state": "open",
      "locked": false,
      "title": "use playwright to test dynamic routes",
      "user": {
        "login": "Lendemor",
        "id": 4015177,
        "node_id": "MDQ6VXNlcjQwMTUxNzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4015177?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lendemor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Tried to convert test_dynamic_routes to use playwright. (because the selenium test is flaky and very often fail for no reason)\r\n\r\nCurrent blocker: playwright.goto doesn't handle redirect well, unhandled NET_ABORTED error.\r\n\r\nAdded test_redirect to try and reproduce the error, it didn't reproduce but the redirect with `goto` doesn't lead to the correct page.",
      "created_at": "2024-11-27T19:35:32Z",
      "updated_at": "2024-12-03T14:10:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "b81249f9c9c6e54ef6fd26ac41e1e07405277b7c",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "reflex-dev:lendemor/use_playwright_dynamic_route",
        "ref": "lendemor/use_playwright_dynamic_route",
        "sha": "c03d32c75f9ad80dcd157bd309ffd1ca647af934",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "24ff29f74d89ff89828442e7e7b4e6bdb08f3ad2",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4446"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4446"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4446"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4446/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4446/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4446/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/c03d32c75f9ad80dcd157bd309ffd1ca647af934"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4430",
      "id": 2197022814,
      "node_id": "PR_kwDOITROHc6C8-he",
      "number": 4430,
      "state": "open",
      "locked": false,
      "title": "State pickle compression",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Turns out, state compression can make a big difference. Of course depending on the circumstances (Redis Bandwidth, Latency, State Size, ...). You can run `REDIS_URL=redis_host:redis_port pytest benchmarks/benchmark_pickle.py` to test it on your machine.\r\n\r\nWill probably evaluate other compression algorithms (especially those [integrated into python](https://docs.python.org/3/library/archiving.html)) in a followup and introduce a `ReflexCompressor` Interface.",
      "created_at": "2024-11-24T22:51:32Z",
      "updated_at": "2025-02-08T20:03:55Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "benedikt-bartscher:state-compression",
        "ref": "state-compression",
        "sha": "86342c79f3cc417ec6c1901f31568ae791449c24",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "8b2c7291d3ed605fc1cd82192555ac76ac8b76d3",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4430"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4430"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4430"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4430/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4430/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4430/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/86342c79f3cc417ec6c1901f31568ae791449c24"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4428",
      "id": 2196389426,
      "node_id": "PR_kwDOITROHc6C6j4y",
      "number": 4428,
      "state": "open",
      "locked": false,
      "title": "PoC Valkey glide",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "some initial testing with valkey-glide to later explore redis/valkey cluster mode\r\nbased on #4419",
      "created_at": "2024-11-23T20:07:38Z",
      "updated_at": "2024-12-24T23:18:06Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:valkey-glide",
        "ref": "valkey-glide",
        "sha": "82b829c662055ca2fe6dae134aa2f84e17662c2e",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "697e26c25b8953d7be99ca2af365ba9cf71e85a2",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4428"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4428"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4428"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4428/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4428/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4428/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/82b829c662055ca2fe6dae134aa2f84e17662c2e"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4409",
      "id": 2191473939,
      "node_id": "PR_kwDOITROHc6Cnz0T",
      "number": 4409,
      "state": "open",
      "locked": false,
      "title": "For non-cached computed vars, skip dep computation",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2024-11-21T07:06:26Z",
      "updated_at": "2024-12-17T21:42:35Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "reflex-dev:masenf/skip-dep-check",
        "ref": "masenf/skip-dep-check",
        "sha": "8cb4b55e673aabf9ed23f1862125ef555f97d53d",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "681b61600025c67e1438c2252917ff078ff0db2c",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4409"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4409"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4409"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4409/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4409/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4409/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/8cb4b55e673aabf9ed23f1862125ef555f97d53d"
        }
      },
      "author_association": "COLLABORATOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4379",
      "id": 2178369580,
      "node_id": "PR_kwDOITROHc6B10gs",
      "number": 4379,
      "state": "open",
      "locked": false,
      "title": "Add validation to function vars",
      "user": {
        "login": "adhami3310",
        "id": 27952765,
        "node_id": "MDQ6VXNlcjI3OTUyNzY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adhami3310",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2024-11-13T21:24:29Z",
      "updated_at": "2025-02-13T22:42:16Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "reflex-dev:add-validation-to-function-vars",
        "ref": "add-validation-to-function-vars",
        "sha": "c74313992f06e78be937f51d051529f29af57652",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "c6fb4e238d93c4383f1774055fcdc096f5f0fec6",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4379"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4379"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4379"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4379/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4379/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4379/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/c74313992f06e78be937f51d051529f29af57652"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4328",
      "id": 2168402693,
      "node_id": "PR_kwDOITROHc6BPzMF",
      "number": 4328,
      "state": "open",
      "locked": false,
      "title": "wip env var prefix, rx.Config tbd",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Closes https://github.com/reflex-dev/reflex/issues/4203",
      "created_at": "2024-11-07T22:25:33Z",
      "updated_at": "2025-07-08T22:41:26Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:env-var-prefix",
        "ref": "env-var-prefix",
        "sha": "7f22a2e4223e37f4534ba8b917573d9de6947536",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "5333bb5e4dbd3d1ed6e565b68f5c35f51c92e40d",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4328"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4328"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4328"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4328/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4328/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4328/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/7f22a2e4223e37f4534ba8b917573d9de6947536"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4318",
      "id": 2166307657,
      "node_id": "PR_kwDOITROHc6BHztJ",
      "number": 4318,
      "state": "open",
      "locked": false,
      "title": "[ENG-4003] Support DeclarativeBase in core",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Add serializers and Var definitions for SQLAlchemy DeclarativeBase models.",
      "created_at": "2024-11-07T00:29:40Z",
      "updated_at": "2024-11-15T18:22:53Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "reflex-dev:masenf/declarative-base",
        "ref": "masenf/declarative-base",
        "sha": "484dcf28a7e4ccbe63b79902390a3018c4390603",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "93ae79aa60104ab893fdcff3d615dcdcc11bc25b",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4318"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4318"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4318"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4318/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4318/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4318/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/484dcf28a7e4ccbe63b79902390a3018c4390603"
        }
      },
      "author_association": "COLLABORATOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/4231",
      "id": 2142188776,
      "node_id": "PR_kwDOITROHc5_rzTo",
      "number": 4231,
      "state": "open",
      "locked": false,
      "title": "Handle named form controls similarly to ID'd form controls",
      "user": {
        "login": "masenf",
        "id": 1524005,
        "node_id": "MDQ6VXNlcjE1MjQwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/masenf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2024-10-23T21:51:57Z",
      "updated_at": "2024-10-23T23:10:36Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "reflex-dev:masenf/uniform-form-submit",
        "ref": "masenf/uniform-form-submit",
        "sha": "ec91c85c800a15483dce646af42cfb0993cfe812",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "3eab2b6e7d8dab972b9e5714a845777d664e7ecb",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4231"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/4231"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4231"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/4231/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4231/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/4231/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/ec91c85c800a15483dce646af42cfb0993cfe812"
        }
      },
      "author_association": "COLLABORATOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/3845",
      "id": 2040601340,
      "node_id": "PR_kwDOITROHc55oRr8",
      "number": 3845,
      "state": "open",
      "locked": false,
      "title": "Only serialize used rx.Base fields",
      "user": {
        "login": "abulvenz",
        "id": 14158137,
        "node_id": "MDQ6VXNlcjE0MTU4MTM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/abulvenz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "If you check the payloads when running the example below, you might notice that `value` is only serialized when you comment in line 43 where the `value` is displayed.\r\nFields are checked on class level, so always the union of all used fields will be serialized (Not per usage, which would be cool, but more sophisticated.)\r\n```python\r\n\r\nfrom __future__ import annotations\r\nimport reflex as rx\r\nfrom reflex.base import SlimBase\r\n\r\n\r\ndef on_frontend_exception(exception: Exception) -> None:\r\n    pass\r\n\r\napp: rx.App = rx.App(frontend_exception_handler=on_frontend_exception)\r\n\r\n\r\nclass SmartObjectChild(SlimBase):\r\n    name: str = \"Smart Object Child\"\r\n    value: int = 0\r\n\r\nclass SmartObject(SlimBase):\r\n    name: str = \"Smart Object\"\r\n    value: int = 0\r\n    child: SmartObjectChild = SmartObjectChild()\r\n    children: list[SmartObjectChild] = [SmartObjectChild(), SmartObjectChild()]\r\n\r\n    def increment(self):\r\n        self.value += 1\r\n\r\n    def decrement(self):\r\n        self.value -= 1\r\n\r\n\r\nclass LSpace(rx.State):\r\n    computed_var: str = \"Computed var\"\r\n    some_list: list[SmartObject] = [SmartObject(), SmartObject()]\r\n\r\n    smartie: SmartObject = SmartObject()\r\n\r\n    def set_smartie_name(self, name: str) -> None:\r\n        self.smartie.name = name\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.box(\r\n        rx.heading(\"Test smart object!\"),\r\n        rx.foreach(LSpace.some_list, lambda x: rx.box(rx.text(x.name))),\r\n       # rx.text(LSpace.smartie.value),\r\n        rx.text(LSpace.smartie.child.name),        #rx.text(LState.smartie.child.value),\r\n\r\n        rx.foreach(LSpace.smartie.children, lambda x: rx.box(rx.text(x.name))),\r\n\r\n\r\n        rx.button(\"Decrement\", on_click=LSpace.set_smartie_name(\"Decremented\")),\r\n        rx.button(\"Increment\", on_click=LSpace.set_smartie_name(\"Incremented\")),\r\n    )\r\n\r\napp.add_page(index)\r\n\r\n```",
      "created_at": "2024-08-27T22:01:30Z",
      "updated_at": "2024-10-14T19:11:30Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "abulvenz:do-not-serialize-unused-rxbase-fields",
        "ref": "do-not-serialize-unused-rxbase-fields",
        "sha": "9e7f911115112c625d2d332a2149a27012f12e11",
        "user": {
          "login": "abulvenz",
          "id": 14158137,
          "node_id": "MDQ6VXNlcjE0MTU4MTM3",
          "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/abulvenz",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 753574537,
          "node_id": "R_kgDOLOqiiQ",
          "name": "reflex",
          "full_name": "abulvenz/reflex",
          "private": false,
          "owner": {
            "login": "abulvenz",
            "id": 14158137,
            "node_id": "MDQ6VXNlcjE0MTU4MTM3",
            "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/abulvenz",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/abulvenz/reflex",
          "created_at": "2024-02-06T11:50:20Z",
          "updated_at": "2025-07-14T06:19:25Z",
          "pushed_at": "2025-07-14T06:18:32Z",
          "homepage": "https://reflex.dev",
          "size": 23555,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "0810bd843cf8baf5e84a03ef588dbb339301c787",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3845"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/3845"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3845"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3845/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3845/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3845/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/9e7f911115112c625d2d332a2149a27012f12e11"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/3806",
      "id": 2024071369,
      "node_id": "PR_kwDOITROHc54pODJ",
      "number": 3806,
      "state": "open",
      "locked": false,
      "title": "add hybrid_property",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Reflex currently renders `@property`s on States like this: `<property object at 0x723b334e5940>`.  \r\nThis PR adds a `hybrid_property` decorator which functions like a normal python property but additionally allows (class-level) access from the frontend. You can use the same code for frontend and backend, or implement 2 different methods.\r\n\r\n\r\n## example\r\nNote: `full_name` and `has_last_name` are not `rx.var`s and are not sent over the wire (websocket). They are instead computed from `first_name` and `last_name` separately in frontend (js) and backend (python).\r\n\r\n```python\r\nclass State(rx.State):\r\n    first_name: str = \"John\"\r\n    last_name: str = \"Doe\"\r\n\r\n    @property\r\n    def python_full_name(self) -> str:\r\n        \"\"\"A normal python property to showcase the current behavior. This renders to smth like `<property object at 0x723b334e5940>`.\"\"\"\r\n        return f\"{self.first_name} {self.last_name}\"\r\n\r\n    @hybrid_property\r\n    def full_name(self) -> str:\r\n        \"\"\"A simple hybrid property which uses the same code for both frontend and backend.\"\"\"\r\n        return f\"{self.first_name} {self.last_name}\"\r\n\r\n    @hybrid_property\r\n    def has_last_name(self) -> str:\r\n        \"\"\"A more complex hybrid property which uses different code for frontend and backend.\"\"\"\r\n        return \"yes\" if self.last_name else \"no\"\r\n\r\n    @has_last_name.var\r\n    def has_last_name(cls) -> Var[str]:\r\n        \"\"\"The frontend implementation for has_last_name\"\"\"\r\n        return rx.cond(cls.last_name, \"yes\", \"no\")\r\n\r\n    def handle_stuff(self) -> None:\r\n        \"\"\"A simple event handler which showcases backend-level access to the hybrid properties.\"\"\"\r\n        print(f\"python_full_name: {self.python_full_name}\")\r\n        print(f\"full_name: {self.full_name}\")\r\n        print(f\"has_last_name: {self.has_last_name}\")\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.vstack(\r\n        rx.text(f\"python_full_name: {State.python_full_name}\"),\r\n        rx.text(f\"full_name: {State.full_name}\"),\r\n        rx.text(f\"has_last_name: {State.has_last_name}\"),\r\n        rx.input(\r\n            value=State.last_name,\r\n            on_change=State.set_last_name,  # type: ignore\r\n        ),\r\n        rx.button(\"Handle Stuff\", on_click=State.handle_stuff),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```",
      "created_at": "2024-08-17T16:37:27Z",
      "updated_at": "2025-08-14T11:42:29Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "721d7e08601180297f98df2c4296ca32849a0730",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "benedikt-bartscher:hybrid-properties",
        "ref": "hybrid-properties",
        "sha": "21fa0bcfa6f5f8e8d0c2fccddd2094fee0c3dfd1",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "38e1efc146d07688a54fa04d4decf1902d91a2a5",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3806"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/3806"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3806"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3806/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3806/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3806/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/21fa0bcfa6f5f8e8d0c2fccddd2094fee0c3dfd1"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/3728",
      "id": 1996825211,
      "node_id": "PR_kwDOITROHc53BSJ7",
      "number": 3728,
      "state": "open",
      "locked": false,
      "title": "Minify state names",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Alternative to #3701  ",
      "created_at": "2024-07-31T17:08:32Z",
      "updated_at": "2025-03-21T18:37:29Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {
        "0": {
          "login": "masenf",
          "id": 1524005,
          "node_id": "MDQ6VXNlcjE1MjQwMDU=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1524005?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/masenf",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:minify-state-names-v2",
        "ref": "minify-state-names-v2",
        "sha": "5c9839e0fe4ec58623001aafe1e7a9dba17c5d5e",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "697e26c25b8953d7be99ca2af365ba9cf71e85a2",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3728"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/3728"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3728"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3728/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3728/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3728/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/5c9839e0fe4ec58623001aafe1e7a9dba17c5d5e"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        3
      ]
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/3683",
      "id": 1974818998,
      "node_id": "PR_kwDOITROHc51tVi2",
      "number": 3683,
      "state": "open",
      "locked": false,
      "title": "[WIP] PoC Dynamic state",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2024-07-18T00:48:04Z",
      "updated_at": "2024-07-18T14:01:14Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:dynamic-state-v2",
        "ref": "dynamic-state-v2",
        "sha": "33656dcb22b7cc657dd8a5450cbde6d04db5a1a2",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "25aa0cbab11ea4a5291f281ac9d01da4735fdb0d",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3683"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/3683"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3683"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3683/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3683/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3683/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/33656dcb22b7cc657dd8a5450cbde6d04db5a1a2"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/3679",
      "id": 1972346170,
      "node_id": "PR_kwDOITROHc51j506",
      "number": 3679,
      "state": "open",
      "locked": false,
      "title": "feat: PoC for shared states.",
      "user": {
        "login": "abulvenz",
        "id": 14158137,
        "node_id": "MDQ6VXNlcjE0MTU4MTM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/abulvenz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Fixes https://github.com/reflex-dev/reflex/issues/2771 in a prototypical way. \r\n\r\nNote `class News(State, scope=State.topic):` in example below.\r\nWhat is working so far:\r\nOpen two tabs:\r\n- change \"Title\" to whatever and click \"Post\"\r\n- change \"Title\" in other tab and post.\r\n- See the entire state.\r\n\r\nTODOs:\r\n- [X] manage subscriptions to socket.io rooms based on scope vars\r\n- [X] emit updates to socket.io rooms\r\n- [X] make it work with redis\r\n- [ ] Initial subscriptions and state loading\r\n- [ ] redis pubsub\r\n- [ ] To use lists as scope, e.g. use case when subscribing to multiple channels at the same time, dynamic states of @benedikt-bartscher are needed https://github.com/reflex-dev/reflex/pull/3671\r\n\r\n```python\r\nimport reflex as rx\r\n\r\napp = rx.App()\r\n\r\nclass Article(rx.Base):\r\n    title: str = \"Title\"\r\n    content: str = \"Content\"\r\n\r\n    def __str__(self):\r\n        return f\"{self.title}: {self.content}\"\r\n\r\nclass State(rx.State):\r\n    message: str = \"Default\"\r\n    catalog: dict[str, str] = {\"key\": \"value\"}\r\n\r\n    topic: str = \"General\"\r\n\r\n    def printum(self):\r\n        for key in app.state_manager.states.keys():\r\n            print(key.split(\"_\")[0])\r\n\r\n\r\nclass News(State, scope=State.topic):\r\n\r\n    news: list[Article] = []\r\n\r\n    def post(self, article: Article):\r\n        print(f\"Posting article {article}\")\r\n        self.news.append(article)\r\n\r\n\r\nclass NewNews(rx.State):\r\n    draft: Article = Article()\r\n\r\n    def set_title(self, title: str):\r\n        self.draft.title = title\r\n\r\n    def set_content(self, content: str):\r\n        self.draft.content = content\r\n\r\ndef render_news(article: Article) -> rx.Component:\r\n    return rx.box(\r\n        rx.heading(article.title),\r\n        rx.text(article.content),\r\n    )\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        rx.input(value=State.topic, on_change=State.setvar(\"topic\")),\r\n        rx.foreach(News.news, render_news),\r\n        rx.input(value=NewNews.draft.title, on_change=NewNews.set_title),\r\n        rx.input(value=NewNews.draft.content, on_change=NewNews.set_content),\r\n        rx.button(\"Post\", on_click=lambda :News.post(NewNews.draft)),\r\n        rx.button(\"Printum\", on_click=State.printum),\r\n    )\r\n\r\napp.add_page(index)\r\n\r\n```",
      "created_at": "2024-07-16T20:59:12Z",
      "updated_at": "2024-12-23T10:21:30Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "abulvenz:poc_shared_state",
        "ref": "poc_shared_state",
        "sha": "5ca563c117a1c81444116146c42e40ac7e260c9f",
        "user": {
          "login": "abulvenz",
          "id": 14158137,
          "node_id": "MDQ6VXNlcjE0MTU4MTM3",
          "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/abulvenz",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 753574537,
          "node_id": "R_kgDOLOqiiQ",
          "name": "reflex",
          "full_name": "abulvenz/reflex",
          "private": false,
          "owner": {
            "login": "abulvenz",
            "id": 14158137,
            "node_id": "MDQ6VXNlcjE0MTU4MTM3",
            "avatar_url": "https://avatars.githubusercontent.com/u/14158137?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/abulvenz",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/abulvenz/reflex",
          "created_at": "2024-02-06T11:50:20Z",
          "updated_at": "2025-07-14T06:19:25Z",
          "pushed_at": "2025-07-14T06:18:32Z",
          "homepage": "https://reflex.dev",
          "size": 23555,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "848b87070c1270af7c12d6b8d300f0dae0d71462",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3679"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/3679"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3679"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3679/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3679/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3679/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/5ca563c117a1c81444116146c42e40ac7e260c9f"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/3671",
      "id": 1968102277,
      "node_id": "PR_kwDOITROHc51TtuF",
      "number": 3671,
      "state": "open",
      "locked": false,
      "title": "[WIP] PoC Dynamic+global state",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Just a small poc to evaluate if it's possible and what needs to be done  \r\ncurrently only works with redis state manager\r\n\r\n```python\r\nimport asyncio\r\n\r\nimport reflex as rx\r\n\r\n\r\nclass UserState(\r\n    rx.State,\r\n    # _global=True,\r\n):\r\n    uid: int = 0\r\n\r\n    def increment(self):\r\n        self.uid += 1\r\n\r\n    @rx.background\r\n    async def increment_task(self):\r\n        while True:\r\n            await asyncio.sleep(2)\r\n            async with self:\r\n                self.uid += 1\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.box(\r\n        rx.foreach(\r\n            [\"test\", \"blubb\"],\r\n            lambda x: rx.box(\r\n                rx.text(f\"UserState[{x}].uid: {UserState[x].uid}\"),\r\n                rx.button(\r\n                    f\"UserState[{x}].increment\",\r\n                    on_click=UserState[x].increment,\r\n                ),\r\n                rx.button(\r\n                    f\"UserState[{x}].increment_task\",\r\n                    on_click=UserState[x].increment_task,\r\n                ),\r\n            ),\r\n        ),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n\r\n```\r\n\r\nTODOs:\r\n- fix typing for `__class_getitem__` hack. maybe use smth like `State.parametrize(x)` instead?\r\n- try dynamic react contexts, reduce re-rendering\r\n- what about substates of parametrized states? block this for now?\r\n- memory state manager\r\n- dynamic ComponentState\r\n- either drop `_global` or implement redis pubsub\r\n- state key/parameter validation or hashing?\r\n- testing\r\n- cleanup and docs",
      "created_at": "2024-07-14T01:49:59Z",
      "updated_at": "2024-07-18T00:47:45Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:dynamic-state",
        "ref": "dynamic-state",
        "sha": "415f65ec38dde6ff13093b5f7f13f62d191abb6d",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "5b927f18d0bf18c22009a7a39b47e5cac054baac",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3671"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/3671"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3671"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3671/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3671/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3671/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/415f65ec38dde6ff13093b5f7f13f62d191abb6d"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/reflex-dev/reflex/pulls/3340",
      "id": 1877281973,
      "node_id": "PR_kwDOITROHc5v5Qy1",
      "number": 3340,
      "state": "open",
      "locked": false,
      "title": "pickle frontend payloads",
      "user": {
        "login": "benedikt-bartscher",
        "id": 31854409,
        "node_id": "MDQ6VXNlcjMxODU0NDA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benedikt-bartscher",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Benefit from pickles referential serialization to reduce reflex event payload size\r\nThis is especially useful when dealing with complex sqlalchemy models which can contain circular and self-referencing relationships\r\nSerialization should also be faster? (did not measure the impact yet)\r\n\r\nWe could drop most of the serializers and rely on pickle. You can test this with bare sqlalchemy models like this:\r\n\r\n```python\r\nfrom __future__ import annotations\r\n\r\nimport reflex as rx\r\nfrom reflex.utils.serializers import serializer\r\nfrom sqlalchemy import ForeignKey\r\nfrom sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship\r\n\r\n\r\n@rx.model.ModelRegistry.register\r\nclass Base(DeclarativeBase):\r\n    pass\r\n\r\n\r\n@serializer\r\ndef serialize_base(obj: Base) -> Base:\r\n    return obj\r\n\r\n\r\nclass TestModel(Base):\r\n    __tablename__: str = \"test\"\r\n\r\n    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)\r\n    name: Mapped[str] = mapped_column(default=\"test\")\r\n    circular_id: Mapped[int] = mapped_column(ForeignKey(f\"{__tablename__}.id\"))\r\n    circular: Mapped[TestModel] = relationship()\r\n\r\n\r\nclass TestObj:\r\n    name: str\r\n    value: int\r\n    big_json = dict[int, int]\r\n\r\n    def __init__(self, name: str = \"test\", value: int = 0):\r\n        self.name = name\r\n        self.value = value\r\n        self.big_json = {i: i for i in range(1000)}\r\n\r\n\r\n@serializer\r\ndef serialize_testobj(obj: TestObj) -> TestObj:\r\n    return obj\r\n\r\n\r\nclass State(rx.State):\r\n    testmodel: TestModel = TestModel(name=\"testmodel\")\r\n\r\n    testobj: TestObj = TestObj()\r\n    testlist: list[TestObj] = []\r\n\r\n    def make_circular(self) -> None:\r\n        testmodel = TestModel(name=\"circular\")\r\n        testmodel.circular = testmodel\r\n        self.testmodel = testmodel\r\n\r\n    def append(self) -> None:\r\n        self.testlist.append(self.testobj)\r\n\r\n\r\ndef json_var(var: rx.Var) -> rx.Component:\r\n    \"\"\"Display a variable as a JSON string\"\"\"\r\n    return rx.container(\r\n        rx.text(f\"Debug {var._var_name}, Type {var._var_type}\"),\r\n        rx.text(\r\n            var._replace(\r\n                _var_name=f\"JSON.stringify({var._var_full_name}, null, 4)\",\r\n                _var_type=str,\r\n                _var_full_name_needs_state_prefix=False,\r\n            )\r\n        ),\r\n    )\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        rx.container(\r\n            rx.text(\r\n                \"Notice how the state payload size does not increase much, because only references are added\"\r\n            ),\r\n            rx.button(\"append\", on_click=State.append),\r\n            rx.foreach(State.testlist, lambda obj: json_var(obj.name)),\r\n            rx.text(f\"contains: {State.testlist.contains(State.testlist[0])}\"),\r\n            rx.text(f\"equals: {State.testlist[0] == State.testlist[1]}\"),\r\n        ),\r\n        # json_var(State.testobj),\r\n        rx.divider(),\r\n        rx.container(\r\n            rx.button(\"make circular\", on_click=State.make_circular),\r\n            json_var(State.testmodel.name),\r\n            json_var(State.testmodel.circular.name),\r\n            json_var(State.testmodel.circular.circular.name),\r\n        ),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n``` \r\n\r\nAdvantages:\r\n- Smaller payloads\r\n- Faster serialization\r\n- Referential Serialization (allow recursion)\r\n- Custom serializers are optional, most objects should just work fine out of the box.\r\n- Object identities in js. Should allow for easier comparison on client side. For example, if an array of objects contains a specific object which currently does not work, because `[{a:1}].includes({a:1})` is `false` in js\r\n\r\nDisadvantages:\r\n- Payloads are not human-readable anymore\r\n- dependency on [pickleparser](https://www.npmjs.com/package/pickleparser), but we could implement our own in the future",
      "created_at": "2024-05-19T20:15:55Z",
      "updated_at": "2024-08-16T23:05:54Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "benedikt-bartscher:jspickle",
        "ref": "jspickle",
        "sha": "45a93ed939ecffc8bee329fa5d9ac91522a29586",
        "user": {
          "login": "benedikt-bartscher",
          "id": 31854409,
          "node_id": "MDQ6VXNlcjMxODU0NDA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benedikt-bartscher",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 712501148,
          "node_id": "R_kgDOKnfnnA",
          "name": "reflex",
          "full_name": "benedikt-bartscher/reflex",
          "private": false,
          "owner": {
            "login": "benedikt-bartscher",
            "id": 31854409,
            "node_id": "MDQ6VXNlcjMxODU0NDA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benedikt-bartscher",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸 Web apps in pure Python 🐍",
          "fork": true,
          "url": "https://api.github.com/repos/benedikt-bartscher/reflex",
          "created_at": "2023-10-31T15:38:11Z",
          "updated_at": "2025-11-29T15:12:16Z",
          "pushed_at": "2025-11-29T15:12:09Z",
          "homepage": "https://reflex.dev",
          "size": 26649,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "reflex-dev:main",
        "ref": "main",
        "sha": "4190a7983572335311ce9572c42b22fb766250ad",
        "user": {
          "login": "reflex-dev",
          "id": 104714959,
          "node_id": "O_kgDOBj3Szw",
          "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/reflex-dev",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 557075997,
          "node_id": "R_kgDOITROHQ",
          "name": "reflex",
          "full_name": "reflex-dev/reflex",
          "private": false,
          "owner": {
            "login": "reflex-dev",
            "id": 104714959,
            "node_id": "O_kgDOBj3Szw",
            "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/reflex-dev",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "🕸️ Web apps in pure Python 🐍",
          "fork": false,
          "url": "https://api.github.com/repos/reflex-dev/reflex",
          "created_at": "2022-10-25T03:08:48Z",
          "updated_at": "2025-12-07T04:27:32Z",
          "pushed_at": "2025-12-06T01:37:59Z",
          "homepage": "https://reflex.dev",
          "size": 28841,
          "stargazers_count": 27780,
          "watchers_count": 27780,
          "language": "Python",
          "has_issues": true,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 1664,
          "archived": false,
          "disabled": false,
          "open_issues_count": 253,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "framework",
            "1": "gui",
            "2": "open-source",
            "3": "python",
            "4": "web"
          },
          "visibility": "public",
          "forks": 1664,
          "open_issues": 253,
          "watchers": 27780,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3340"
        },
        "html": {
          "href": "https://github.com/reflex-dev/reflex/pull/3340"
        },
        "issue": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3340"
        },
        "comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/issues/3340/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3340/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/pulls/3340/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/reflex-dev/reflex/statuses/45a93ed939ecffc8bee329fa5d9ac91522a29586"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    }
  ],
  "discussions": [
    {
      "id": "D_kwDOITROHc4AjJZZ",
      "number": 6023,
      "title": "v0.8.22 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.22a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-12-05 14:15 PT: 0.8.22a1 pre-release published for testing\r\n2025-12-08: Planned Public release of 0.8.22\r\n\r\n# Release Notes\r\n\r\n## Bugfixes\r\n\r\n* RedisStateManager.get_state: return the correct state class by @masenf in https://github.com/reflex-dev/reflex/pull/6001\r\n\r\n## Improvements\r\n\r\n* feat: list valid triggers in error message for invalid event triggers by @veerababu1729 in https://github.com/reflex-dev/reflex/pull/6015\r\n* fixed types annotations for meta in add_page() to accept components by @dennisbakhuis in https://github.com/reflex-dev/reflex/pull/6012\r\n* optimize frozen dict get item by @adhami3310 in https://github.com/reflex-dev/reflex/pull/6021\r\n\r\n## Chores\r\n\r\n* 0822dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/6005\r\n* prettier 3.7.x update by @masenf in https://github.com/reflex-dev/reflex/pull/6017\r\n* upgrade deps again for 0822 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/6022\r\n\r\n## New Contributors\r\n* @veerababu1729 made their first contribution in https://github.com/reflex-dev/reflex/pull/6015\r\n* @dennisbakhuis made their first contribution in https://github.com/reflex-dev/reflex/pull/6012\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.21...release/reflex-0.8.22",
      "created_at": "2025-12-05T22:22:49Z",
      "updated_at": "2025-12-05T22:22:49Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AjIQu",
      "number": 6020,
      "title": "Why It's need demo access now? by a zoom meeting !!!  We LOVE it to use for free, man !",
      "body": "Please take back to free version with some like 200-250 creadits with out the new demo access process ! It's a problem for us !\r\nPLEASE...\r\nI had just started to fall in love with Reflex Python ! --- Really\r\nPlease make it simple for us as a free vibe coder ~\r\nagain .. PLEASE!",
      "created_at": "2025-12-04T17:31:19Z",
      "updated_at": "2025-12-04T18:15:08Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "siam3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/164713293?u=42b8181bb2cda686cb69c0d2fd0b180c47620108&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ai_-C",
      "number": 5998,
      "title": "using a different react version",
      "body": "is there a way to use react 18 in my reflex app ?",
      "created_at": "2025-11-25T04:59:23Z",
      "updated_at": "2025-12-04T00:48:59Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jamesalphanome",
        "avatar_url": "https://avatars.githubusercontent.com/u/195094882?u=e3ce399bf5334c20c82bd8c06fde69b138c9ef96&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ai6Qp",
      "number": 5984,
      "title": "Since the backend is fastAPI, why the \"app._api\" have not get or post methods",
      "body": "1. In my understanding, the native backend of Reflex is not a complete fastAPI, without an openAPI docs, get and post method, or include routers. If my web application needs to provide API services externally, does it have to write a separate fastAPI application and use the api_tranformer method to integrate the web and API together?\r\n2. I want to know where the performance boundary of Reflex is? I am conducting technical selection for a project that integrates OA, ERP, CRM and other functions and provides API services externally On a regular 8-core 16GB configuration server, a QPS of at least 300+is required (excluding external APIs, the overall QPS may need reach 600+) I don't know if Reflex can meet it? Can it support multiple processes?\r\n﻿",
      "created_at": "2025-11-18T05:51:35Z",
      "updated_at": "2025-12-02T18:17:23Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "jinhong-china",
        "avatar_url": "https://avatars.githubusercontent.com/u/238985522?u=8687728971e908f62b6095d43ff2b413142e73fb&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AjBdU",
      "number": 6004,
      "title": "Lifespan task called multiple times when using Docker",
      "body": "I'm using a lifespan task to do some initialisation stuff when starting the application (e.g. loading a config file and things like that).  The code looks like that:\r\n\r\n```python\r\ndef init():\r\n    ...\r\n\r\napp = rx.App()\r\napp.add_page(...)\r\n...\r\n\r\napp.register_lifespan_task(init)\r\n```\r\n\r\nWhen running reflex locally, this results in the `init` function to be executed once in the beginning, just as I expect (prints added to the function show up once).  However, when running in a Docker setup (based on the [production-compose example](https://github.com/reflex-dev/reflex/tree/main/docker-example/production-compose), the function get's called 25 times, apparently in parallel (prints appear multiple times and are intermingled).\r\n\r\nWhy is it called multiple times in the docker container?  How can I avoid that?\r\n",
      "created_at": "2025-11-26T12:31:52Z",
      "updated_at": "2025-12-02T18:12:42Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "luator",
        "avatar_url": "https://avatars.githubusercontent.com/u/9333121?u=f7a8d727313fd0bf8d60fd3218e4fc44078a4742&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AjDNG",
      "number": 6010,
      "title": "lock issues related to redis",
      "body": "#6006\r\n",
      "created_at": "2025-11-28T10:51:58Z",
      "updated_at": "2025-12-02T18:11:46Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jamestitus299",
        "avatar_url": "https://avatars.githubusercontent.com/u/91361573?u=60f1dc20661e9c47c023eb66022f451293567fd6&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AjF4M",
      "number": 6013,
      "title": "Do reflex have more advanced data table components?",
      "body": "I want to use Reflex to develop a feature for commonly used data tables in mid to backend scenarios. The functions of data_table and table are too basic I want to add a row of operation columns that can be viewed, edited, or deleted for each row, and select certain rows of data for batch editing or deletion. How do I implement. reflex?",
      "created_at": "2025-12-02T09:31:46Z",
      "updated_at": "2025-12-02T18:11:13Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "jinhong-china",
        "avatar_url": "https://avatars.githubusercontent.com/u/238985522?u=8687728971e908f62b6095d43ff2b413142e73fb&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiwDQ",
      "number": 5952,
      "title": "StateMismatchError when using redis",
      "body": "We just enabled Redis for our reflex instances and suddently we get this error:\r\n\r\n```\r\nreflex.utils.exceptions.StateMismatchError: Searched for state reflex___state____state.src___views___company_dialog____state but found State({'reflex___state____state.src___views___company_dialog___financials_grid_table____state': {'kpi_formula_keys_rx_state_': <coroutine object AsyncComputedVar.__get__.<locals>._awaitable_result at 0x7e9ffa78b970>, 'kpi_items_rx_state_': <coroutine object AsyncComputedVar.__get__.<locals>._awaitable_result at 0x7e9ffa7884f0>, 'years_rx_state_': MutableProxy([])}}).\r\n```\r\n\r\nPreviously -- without Redis -- we wouldn't get that one.\r\n\r\nHow to best debug this?\r\n\r\nPS: On Reflex v0.8.16\r\n",
      "created_at": "2025-11-05T16:40:47Z",
      "updated_at": "2025-12-02T18:08:09Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4A5vRP",
        "body": "### Overview\r\nhttps://github.com/reflex-dev/reflex/commit/a20f0bf23ef518b34106ab882d806ff1306748ab \r\nI was also looking into the issue above. In conclusion, it’s a bug that occurs because the state_cls variable is being reused in the Redis interface class. Refer to the corresponding commit and apply the fix yourself, or wait for the latest version.\r\n\r\n###  Reproduce\r\nif there are references to another State and that referenced State ends up at the end of the array due to alphabetical ordering, an error will occur.\r\n```\r\nimport reflex as rx\r\n\r\n\r\nclass AState(rx.State):\r\n    opened: bool = False\r\n    counter: int = 0\r\n\r\n    @rx.event\r\n    def toggle(self):\r\n        self.opened = not self.opened\r\n        self.counter += 1\r\n\r\n\r\nclass BState(rx.State):\r\n    @rx.var\r\n    async def greeting(self) -> str:\r\n        state = await self.get_state(AState)\r\n        return f'{state.opened}'\r\n\r\nclass CState(rx.State):\r\n    @rx.var\r\n    async def greeting(self) -> str:\r\n        state = await self.get_state(AState)\r\n        return f'{state.opened}'\r\n\r\nclass DState(rx.State):\r\n    @rx.var\r\n    async def greeting(self) -> str:\r\n        state = await self.get_state(AState)\r\n        return f'{state.opened}'\r\n\r\nclass EState(rx.State):\r\n    @rx.var\r\n    async def greeting(self) -> str:\r\n        state = await self.get_state(AState)\r\n        return f'{state.opened}'\r\n\r\nclass TestState(rx.State):\r\n    @rx.event\r\n    async def test_get_astate(self):\r\n        a_state = await self.get_state(AState)\r\n        print(a_state.opened)\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        rx.vstack(\r\n            rx.button(\r\n                \"Bug\",\r\n                on_click=TestState.test_get_astate,\r\n                color_scheme=\"red\",\r\n            ),\r\n            width=\"100%\",\r\n        ),\r\n        padding=\"4\",\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\n### Cause\r\nThe root cause is variable shadowing in the Redis-side module. As mentioned earlier, this has already been fixed in the current main branch.\r\n```\r\nstate_cls = self.state.get_class_substate(state_path)  # Store requested state\r\n\r\nfor state_cls in required_state_classes:  # ← Variable shadowing!\r\n    # Process states...\r\n\r\n# After loop, state_cls = last item in required_state_classes\r\nreturn flat_state_tree[state_cls.get_full_name()]  # ← Returns wrong state!\r\n\r\n```"
      },
      "user": {
        "login": "larsblumberg",
        "avatar_url": "https://avatars.githubusercontent.com/u/5980316?u=ed6e0c2a916605e054e14e13ca6d441377df59a2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ai3Zn",
      "number": 5976,
      "title": "Reflex init take to long to generate",
      "body": "Hi am new to Reflex\r\nI just read the docs and follow , but I use uv as my python pakages manager instead of normal pip\r\nI found out that ``` reflex init or uv run relfex init``` it take to long to generate a template?\r\nand I already activate venv . sorry if  I miss understand on sth \r\nmy OS Arch linux\r\n\r\n<img width=\"1353\" height=\"854\" alt=\"image\" src=\"https://github.com/user-attachments/assets/482b31a8-95ce-4603-9f39-4ffff2de4d83\" />\r\n",
      "created_at": "2025-11-14T06:38:24Z",
      "updated_at": "2025-11-24T21:02:57Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "SoeukBondol-ai",
        "avatar_url": "https://avatars.githubusercontent.com/u/188004326?u=048dddd1bcbf4b7294ca7569ddd5859f9c9e0bd8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ai7NH",
      "number": 5987,
      "title": "One single state across all users",
      "body": "I would like to understand if there is a way to have a single state for the application that is shared across all users (same user - eg admin - and separate users). My goal is to build a dashboard that multiple users have access to and can see the changes to the single state happen in realtime. All interactions and UI updates need to be instantly synced across all of the users.\r\n\r\nAs I understand, https://reflex.dev/docs/state/overview#client-states says it cant be done. But maybe there are levers that can be pulled to make this happen.",
      "created_at": "2025-11-19T04:28:38Z",
      "updated_at": "2025-11-24T20:53:37Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "borolepratik",
        "avatar_url": "https://avatars.githubusercontent.com/u/6431392?u=b6a949bbe2ca1bfe59be77aa45b9dbe9c5de5731&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AhORV",
      "number": 5700,
      "title": "Cannot connect to server: websocket error, yet I only have static files.",
      "body": "I have the error:\r\nCannot connect to server: websocket error.\r\n\r\nMy application is a simple frontend application (static files only) with no backend.\r\nThe frontend files are served by caddy.\r\n\r\nI am exporting my frontend static files in my dockerfile as follows:\r\n```dockerfile\r\n# Download other npm dependencies and compile frontend\r\nRUN REFLEX_API_URL=${REFLEX_API_URL:-http://localhost:$PORT} reflex export --loglevel debug --frontend-only --no-zip && mv .web/build/client/* /srv/ && rm -rf .web\r\n```\r\n\r\nThis was working a few months ago - I think when reflex was using Next.js \r\nNow I am getting a toast with this error after a recent reflex upgrade.\r\n\r\nMy rx.confg\r\n\r\n```python\r\n\"\"\"\r\nrxconfig.py contains the configuration for Reflex.\r\n\"\"\"\r\n\r\nimport reflex as rx\r\nfrom reflex.constants.base import LogLevel\r\n\r\nconfig = rx.Config(\r\n    app_name=\"app\",\r\n    show_built_with_reflex=False,\r\n    cors_allowed_origins=[\"*\"],\r\n    telemetry_enabled=False,\r\n    frontend_port=3000,\r\n    # Do not change the loglevel from info. The build will fail!\r\n    loglevel=LogLevel.INFO,\r\n    db_url=None,\r\n    is_reflex_cloud=False,\r\n    deploy_url=\"https://my-website.com\",\r\n    plugins=[\r\n        rx.plugins.SitemapPlugin(),\r\n    ],\r\n)\r\n```\r\n\r\nAny help will be appreciated.",
      "created_at": "2025-08-10T16:22:43Z",
      "updated_at": "2025-11-22T23:10:11Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4A1qBZ",
        "body": "In https://github.com/reflex-dev/reflex/releases/tag/v0.8.3 we disabled automatic stateless app detection, you can opt in to stateless app through `rx.App(enable_state=False)`"
      },
      "user": {
        "login": "davidmuraya",
        "avatar_url": "https://avatars.githubusercontent.com/u/27237980?u=313bffd4fde24bc0b6b4055fc773802b3cf2523b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ai93d",
      "number": 5995,
      "title": "Approval regarding the pr",
      "body": "Hey @Alek99, could you please review and approve thesvg icon related to Reflex?\r\nPR : https://github.com/simple-icons/simple-icons/pull/14016",
      "created_at": "2025-11-22T04:54:50Z",
      "updated_at": "2025-11-22T04:54:51Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Oashe02",
        "avatar_url": "https://avatars.githubusercontent.com/u/184192547?u=3c103c14af25aed9e0bbb6bc9b8d3167527bf712&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ai9yJ",
      "number": 5994,
      "title": "v0.8.21 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.21a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-11-21 15:45 PT: 0.8.21a1 pre-release published for testing\r\n2025-11-24: Planned Public release of 0.8.21\r\n\r\n# Release Notes\r\n\r\n## Bugfixes\r\n\r\n* Don't wrap return values of MutableProxy methods by @masenf in https://github.com/reflex-dev/reflex/pull/5986\r\n* ENG-8388: refetch cached state when missing substates by @masenf in https://github.com/reflex-dev/reflex/pull/5991\r\n\r\n## UI\r\n\r\n* wrap error text by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5992\r\n\r\n\r\n## Chores\r\n\r\n* 0821dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5993\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.20...release/reflex-0.8.21",
      "created_at": "2025-11-21T23:48:56Z",
      "updated_at": "2025-11-24T21:04:32Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AixUs",
      "number": 5960,
      "title": "How to enumerate client-side cameras",
      "body": "Hi,\r\n\r\nWhen the webpage loading, enumerate all cameras installed on the client and populate a selection box.\r\nThen user can selects a camera and display its video.\r\n\r\n```\r\nimport reflex_webcam as webcam\r\n\r\n\r\nclass CameraClientState(rx.State):\r\n    cameras: list[str] = []\r\n    current_cam: str = ''\r\n\t\r\n\t\r\ndef cameraClient(ref: str) -> rx.Component:\r\n    return rx.vstack(\r\n            rx.heading(\"Local / Client\"),\r\n            rx.select(\r\n                CameraClientState.cameras,\r\n                value=CameraClientState.current_cam,\r\n                on_change=CameraClientState.set_current_cam,\r\n            ),\r\n\r\n            webcam.webcam(\r\n                id=ref,\r\n                on_click=webcam.upload_screenshot(\r\n                    webcam_id=ref,\r\n                    handler=CameraClientState.handle_screenshot,\r\n                ),\r\n            ),\r\n    )\r\n```\r\n\r\nThanks\r\nCheng",
      "created_at": "2025-11-07T00:34:46Z",
      "updated_at": "2025-11-17T19:00:03Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "ledChengSu",
        "avatar_url": "https://avatars.githubusercontent.com/u/193278366?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ai3Lg",
      "number": 5974,
      "title": "Filtering Variables based on ForEach",
      "body": "I am trying to render the `target_table_row` dynamically for each `property_target_table`, which in turn, renders for each value in the `available_properties` variable (_**see towards the end for definition of this part**_)\r\n\r\nThe problem is in rendering the python variable called `budget_value` (not a Reflex Var)\r\nThe statement which sets it's value:\r\n\r\n`TargetWizardState.budgets[property_id][metric_id]`\r\n\r\nreturns an error:\r\n\r\n> Error loading ASGI app factory: Unsupported Operand type(s) for []: ObjectCastedVar, ObjectItemOperation\r\n\r\n\r\nFor context, below is how `TargetWizardState.budgets` is defined:\r\n\r\n    class TargetWizardState(AuthState):\r\n        \r\n        # Budget data from database\r\n        budgets: Dict[int, Dict[int, float]] = {}\r\n\r\n\r\nI am setting the value for this State variable already using a DB call.\r\n\r\nMy goal is simple:\r\n\r\nFor each of the rendered `target_table_row`, show the `budget_value` that corresponds to the `property_id` and `metric_id` coming into the `target_table_row` function\r\n\r\nThe problematic code:\r\n\r\n    def target_table_row(property_id: int, metric_id: int, row_index: int):\r\n        \"\"\"\r\n        Renders a single row in the target table.\r\n        Uses real budget data from TargetWizardState.get_budget_value()\r\n        \"\"\"\r\n        \r\n        # Get real budget and PY values from state\r\n        budget_value = TargetWizardState.budgets[property_id][metric_id]\r\n        \r\n        return rx.el.tr(\r\n            \r\n            # 2025 Budget\r\n            rx.el.td(\r\n                budget_value,\r\n                class_name=\"p-3 text-right text-gray-600 text-sm font-medium\"\r\n            ),\r\n        )\r\n\r\n\r\n    def property_target_table(property_dict: dict):\r\n        \"\"\"\r\n        Renders a complete target table for one property.\r\n        Shows all selected metrics with budget/PY values and target inputs.\r\n        \"\"\"\r\n        property_id = property_dict['id']\r\n        \r\n        return rx.el.table(\r\n            # Table Header\r\n            rx.el.thead(\r\n                rx.el.tr(\r\n                    rx.el.th(\r\n                        \"2025 Budget\", \r\n                        class_name=\"text-right p-3 text-sm font-semibold text-gray-700\"\r\n                    ),\r\n                    class_name=\"bg-gray-50 border-b border-gray-200\"\r\n                )\r\n            ),\r\n            \r\n            # Table Body\r\n            rx.el.tbody(\r\n                rx.foreach(\r\n                    TargetWizardState.selected_metrics,\r\n                    lambda metric_id, idx: target_table_row(property_id, metric_id, idx)\r\n                )\r\n            ),\r\n            \r\n            class_name=\"w-full\"\r\n        )\r\n\r\n\r\n    def target_tables_container():\r\n        \"\"\"\r\n        Container that renders target tables for all selected properties.\r\n        Only renders tables for properties in the selected list.\r\n        \"\"\"\r\n        return rx.el.div(\r\n            rx.foreach(\r\n                TargetWizardState.available_properties,\r\n                lambda prop: rx.cond(\r\n                    TargetWizardState.selected_properties.contains(prop['id']),\r\n                    property_target_table(prop)\r\n                )\r\n            ),\r\n            class_name=\"space-y-6\"\r\n        )\r\n\r\nAny help is much appreciated!\r\nThanks.",
      "created_at": "2025-11-13T22:20:25Z",
      "updated_at": "2025-11-13T22:20:26Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "aputhuraya",
        "avatar_url": "https://avatars.githubusercontent.com/u/11997109?u=765222a4f623dc29d39da8a6a10afe89e4422ba2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ai3JZ",
      "number": 5973,
      "title": "v0.8.20 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.20a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-11-13 13:10 PT: 0.8.20a1 pre-release published for testing\r\n2025-11-17: Planned Public release of 0.8.20\r\n\r\n# Release Notes\r\n\r\n## Bugfixes\r\n\r\n* check against hooks inside of root component by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5971\r\n* Send a \"reconnect\" hydrate whenever the socket reconnects by @masenf in https://github.com/reflex-dev/reflex/pull/5969\r\n\r\n\r\n## Misc\r\n\r\n* disable highlighter rich by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5972\r\n\r\n\r\n## Chores\r\n\r\n* 0820dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5967\r\n* Flaky test test_ensure_task_limit_window_passed by @masenf in https://github.com/reflex-dev/reflex/pull/5959\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.19...release/reflex-0.8.20",
      "created_at": "2025-11-13T21:12:20Z",
      "updated_at": "2025-11-17T19:48:46Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aiv0i",
      "number": 5951,
      "title": "How to migrate from rx.Model to sqlmodel.SQLModel",
      "body": "I saw in the [release notes of 0.8.15](https://github.com/reflex-dev/reflex/releases/tag/v0.8.15) that `sqlmodel.SQLModel` is now recommended over `rx.Model`. \r\nIs there some documentation somewhere on how to actually do that?  The documentation on reflex.dev still uses `rx.Model`.\r\nI made an attempt based on the release notes and deprecation warning I was getting and tried the following:\r\n\r\n- old:\r\n  ```\r\n  class Foo(rx.Model, table=True): ...\r\n  ```\r\n- new:\r\n  ```\r\n  @rx.ModelRegistry.register\r\n  class ExerciseTagLink(SQLModel): ...\r\n  ```\r\n\r\nBut this doesn't seem to be right, as running `db makemigrations` now just results in all tables being dropped.",
      "created_at": "2025-11-05T12:27:35Z",
      "updated_at": "2025-11-11T12:16:39Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4A4xqR",
        "body": "When migrating to Reflex 0.8.15 I just replaced the base class as in `class Foo(rx.Model, table=True)` ==> `class Foo(SQLModel, table=True)` and things just worked. I don't know if `table=True` is still necessary, haven't tried yet removing it. And I did not add the decorator `@rx.ModelRegistry.register` though as in your example."
      },
      "user": {
        "login": "luator",
        "avatar_url": "https://avatars.githubusercontent.com/u/9333121?u=f7a8d727313fd0bf8d60fd3218e4fc44078a4742&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiZ7H",
      "number": 5879,
      "title": "How to call a function after file upload?",
      "body": "Hi there,\r\n\r\nI've built a ComponentState (see below) that returns an rx.upload. \r\nAfter files have uploaded, I want to call an rx.event (also passing the files to this event)\r\n\r\nI've tried:\r\n- Having the `on_upload_complete` function as a normal function and an rx.event\r\n- Saving the `on_upload_complete` function to a state var and calling it in the `handle_file_upload` function\r\n- Using `on_change` for the rx.upload\r\n\r\nIs this the right way to approach this?\r\n\r\n```py\r\nfrom typing import Callable, Optional\r\nimport reflex as rx\r\n\r\n\r\nclass FileInput(rx.ComponentState):\r\n    files: rx.Field[list[rx.UploadFile]] = rx.field(default_factory=list)\r\n\r\n    @rx.event\r\n    def set_on_upload_callback(self, callback: Callable):\r\n        self._on_upload_complete = callback\r\n\r\n    @rx.event\r\n    async def handle_file_upload(\r\n        self,\r\n        files: list[rx.UploadFile],\r\n        on_upload_complete: Optional[list[Callable]]\r\n    ):\r\n        if not files:\r\n            return\r\n\r\n        self.files = []\r\n\r\n        for file in files:\r\n            data = await file.read()\r\n            path = rx.get_upload_dir() / file.name\r\n            with path.open(\"wb\") as f:\r\n                f.write(data)\r\n            self.files.append(file)\r\n\r\n        if on_upload_complete:\r\n            for callback in on_upload_complete:\r\n                if isinstance(callback, Callable):\r\n                    await callback(files)\r\n\r\n    @rx.var\r\n    def file_names(self) -> list[str]:\r\n        return [file.name for file in self.files]\r\n\r\n    @rx.var\r\n    def num_files(self) -> int:\r\n        return len(self.files)\r\n\r\n    @rx.var\r\n    def selection_message(self) -> str:\r\n        if self.num_files == 0:\r\n            return \"No File Selected\"\r\n        elif self.num_files == 1:\r\n            return self.files[0].name\r\n        else:\r\n            return f\"{self.num_files} Files Uploaded\"\r\n\r\n    @classmethod\r\n    def get_component(cls, id: str, **props):\r\n        on_drop = [\r\n            cls.handle_file_upload(\r\n                rx.upload_files(f\"{id}-file-input\")\r\n            )\r\n        ]\r\n\r\n        user_on_drop = props.pop(\"on_upload_complete\", None)\r\n        if user_on_drop is not None:\r\n            on_drop.append(user_on_drop)\r\n\r\n        return rx.box(\r\n            rx.upload(\r\n                rx.hstack(\r\n                    rx.button(\r\n                        \"Choose Files\",\r\n                    ),\r\n                    rx.box(\r\n                        cls.selection_message,\r\n                        max_width=\"20ch\",\r\n                        width=\"300px\",\r\n                        height=\"2.5rem\",\r\n                        padding=\"0rem 0.5rem\",\r\n                        align_content=\"center\",\r\n                        background_color=\"white\",\r\n                        color=\"var(--gray-11)\",\r\n                        white_space=\"nowrap\",\r\n                        overflow=\"hidden\",\r\n                        text_overflow=\"ellipsis\",\r\n                    ),\r\n                ),\r\n                id=f\"{id}-file-input\",\r\n                accept=props.get(\"file_types\", {}),\r\n                on_drop=on_drop,\r\n            )\r\n        )\r\n\r\n```\r\n\r\nThanks",
      "created_at": "2025-10-13T03:48:34Z",
      "updated_at": "2025-11-10T22:52:57Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "IEC1",
        "avatar_url": "https://avatars.githubusercontent.com/u/189672732?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AizgA",
      "number": 5965,
      "title": "Need help relating to tests for application",
      "body": "Can anyone give any suggestions on how to write unit tests for components and eventhandlers ?",
      "created_at": "2025-11-10T07:06:09Z",
      "updated_at": "2025-11-10T07:06:10Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jamesalphanome",
        "avatar_url": "https://avatars.githubusercontent.com/u/195094882?u=e3ce399bf5334c20c82bd8c06fde69b138c9ef96&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiwcG",
      "number": 5953,
      "title": "Reflex Build Preview App not Updating",
      "body": "Hi, I'm stuck. The changes I'm making to the code (via AI) are not updating the preview app. I spent a lot of time and tokens fixing something that wasn't broken, until I became suspicious and tried a simple visual change which was not duplicated in the preview. I then downloaded the code and ran it locally and the app showed all the changes I had been making. I've tried the refresh app icon, refreshing the browser, closing the browser and reloading. The preview is stuck at an earlier version. In case it matters, I'm a pro user whose project is connected to a private github repo. (If this kind of issue is better posted elsewhere, please let me know.) Thanks.",
      "created_at": "2025-11-06T03:53:58Z",
      "updated_at": "2025-11-07T09:26:41Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "amontin",
        "avatar_url": "https://avatars.githubusercontent.com/u/11852507?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AixQw",
      "number": 5958,
      "title": "v0.8.19 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.19a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-11-06 14:10 PT: 0.8.19a1 pre-release published for testing\r\n2025-11-10: Planned Public release of 0.8.19\r\n\r\n# Release Notes\r\n\r\n## Reusing of state locks in redis to reduce serializing/de-serializing overhead\r\n\r\n* ENG-8212: Redis Oplock implementation by @masenf in https://github.com/reflex-dev/reflex/pull/5932\r\n\r\n## Add `mime_type` to `rx.download`\r\n\r\n* add mime_type to download by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5957\r\n\r\n## Add `transport=\"polling\"` for enterprise\r\n\r\n* add polling transport option by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5955\r\n\r\n## Misc\r\n\r\n* add more rules for dialog parents and children by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5945\r\n* cache path cwd by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5948\r\n* check against classvar for fast case by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5947\r\n* optimize _expired_computed_vars to one use of getattribute by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5946\r\n\r\n## Bugfixes\r\n\r\n* ENG-8227: always _clean() after app.modify_state by @masenf in https://github.com/reflex-dev/reflex/pull/5949\r\n\r\n## Chores\r\n\r\n* 0819dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5944\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.18...release/reflex-0.8.19",
      "created_at": "2025-11-06T22:17:10Z",
      "updated_at": "2025-11-10T20:03:15Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ait6Y",
      "number": 5943,
      "title": "Private Github Repos",
      "body": "Hello, I'm a pro user trying to create a private github repo for my app. When I attempt this via the Create Github Repo option, I'm told that only enterprise users can create private repos. However on the pricing table it specifically says in the Github row that pro users can create private repos. So am I encountering a bug or is the pricing table wrong?",
      "created_at": "2025-11-03T13:54:02Z",
      "updated_at": "2025-11-05T01:56:34Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "amontin",
        "avatar_url": "https://avatars.githubusercontent.com/u/11852507?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AisLx",
      "number": 5942,
      "title": "How to update a state variable from a FastAPI POST route?",
      "body": "Hi! I’m new to Reflex and I’m trying to connect it with FastAPI.\r\nI created a POST route in FastAPI that receives some data, and I’d like to update a variable in a Reflex state (for example IndexState.last_temperature) when that POST is received.\r\n\r\nWhat is the correct way to modify a state variable from a FastAPI route?\r\nIs there any example or recommended approach for doing this?\r\n\r\nThanks in advance — I’m just getting started with Reflex and trying to learn!",
      "created_at": "2025-10-31T18:27:46Z",
      "updated_at": "2025-10-31T21:40:13Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4A4nhF",
        "body": "first you need to send the `token` through with your POST request -- get can get this from `sessionStorage.get(\"token\")` or by calling `getToken` from `$/utils/state.js`.\r\n\r\nthen you need to use that token to get the associated state and modify it\r\n\r\n```\r\nasync with app.modify_state(f\"{token}_{IndexState.get_full_name}\") as root_state:\r\n    index_state = await root_state.get_state(IndexState)\r\n    index_state.last_temperature = value_from_request\r\n```\r\n\r\nwhen the context exits, the value will be persisted and sent to the client (if they are still connected).\r\n\r\nprior to 0.8.17, if the client had reconnected to a different app instance, then the update would not have been sent."
      },
      "user": {
        "login": "erick-dumas",
        "avatar_url": "https://avatars.githubusercontent.com/u/91906484?u=74243849107b9289d1ddd9530cbeae944d3d9617&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AirTP",
      "number": 5940,
      "title": "Filtering variables",
      "body": "I am struggling with understanding how to filter a variable in Reflex, for example, like the \"target_submission\" defined below:\r\n\r\n```\r\nclass TargetState(AuthState):\r\n    target_submissions: list[Dict] = []\r\n```\r\n\r\nWhenever I try anything like list comprehension (or any other vanilla python approaches) to filter this, it throws the following error:\r\n\r\n> reflex.utils.exceptions.VarTypeError: Cannot iterate over Var 'compensation.states.target_state.TargetState.target_submissions'. Instead use `rx.foreach`.\r\n\r\nAnd when I try to use \"rx.foreach\", I have not found any documentation on how to filter objects inside it.\r\nAny help is much appreciated, thank you!",
      "created_at": "2025-10-30T20:13:51Z",
      "updated_at": "2025-10-31T13:48:42Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4A4lER",
        "body": "there are two well supported ways of approaching this:\r\n\r\n# 1. Use a computed var\r\n\r\nDefine an `@rx.var` method in your state that performs the needed filtering. Whenever the data or the filter criteria change, the computed var will be recalculated automatically.\r\n\r\n```python\r\nclass TargetState(rx.State):\r\n    _target_submissions: list[Dict] = []\r\n\r\n    @rx.var\r\n    def filtered_submissions(self) -> list[dict]:\r\n        return {s for s in self._target_submissions if s.get(\"active\")}\r\n\r\n...\r\n\r\ndef index():\r\n    return rx.vstack(\r\n        rx.foreach(TargetState.filtered_submissions, lambda s: submission_card(submission=s)),\r\n    )\r\n```\r\n\r\nThis is preferable, because you can make your unfiltered data var a backend-only var (leading underscore) and avoid having it sent to the frontend; instead send only the (likely smaller) filtered dataset to the frontend and render it completely with `rx.foreach`.\r\n\r\nThis is also nice, because it keeps more of logic in \"normal python\", which is easier to understand and reason about.\r\n\r\n# 2. use `rx.cond` to create javascript code that does the filtering\r\n\r\nFor simple conditions, it might be easier to filter the list on the frontend:\r\n\r\n```python\r\ndef index():\r\n    return rx.vstack(\r\n        rx.foreach(\r\n            TargetState.target_submissions,\r\n            lambda s: rx.cond(s.active, submission_card(submission=s), rx.fragment()),\r\n        )\r\n    )\r\n```"
      },
      "user": {
        "login": "aputhuraya",
        "avatar_url": "https://avatars.githubusercontent.com/u/11997109?u=765222a4f623dc29d39da8a6a10afe89e4422ba2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZJJ6",
      "number": 3205,
      "title": "Accessing a computed Var in a Base object",
      "body": "I have a state which contains a list of objects.\r\nHow do I access a computed var in one of these sub objects?\r\n\r\nTo illustrate I simplified my code to the bare minimum:\r\n\r\n`class Person(rx.Base):`\r\n`    name: str`\r\n\r\n`    @rx.var`\r\n`    def hello_name(self) -> str:`\r\n`        return \"Hello \" + self.name`\r\n\r\n`class State(rx.State): `\r\n`    count: int = 5`\r\n`    persons: list[Person] = [Person(name='Alice'), Person(name='Bob')]`\r\n\r\n`def index():`\r\n`    return rx.foreach(`\r\n`        State.persons,`\r\n`        lambda person: rx.html('<p>' + person.hello_name + '</p>')`\r\n`    )`\r\n\r\n\r\nWhen I substitute hello_name for just name it works fine.\r\nSomehow I don't get the concept.\r\n",
      "created_at": "2024-05-01T11:01:41Z",
      "updated_at": "2025-10-31T09:55:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AjbVd",
        "body": "@hpharmsen The `@rx.var` decorator only works within state classes (not within the a Base class as you have it here). You want to use the `@property` decorator that's builtin to Python instead.\r\n\r\nIt looks like Pydantic supports [computed_fields](https://docs.pydantic.dev/2.0/usage/computed_fields/) from their v2.0 but We are still using 1.10 in Reflex.\r\n\r\nHere's a way to do this currently by overriding the `dict` method to make sure the property gets serialized:\r\n\r\n```python\r\nimport reflex as rx\r\n\r\nclass Person(rx.Base):\r\n    name: str\r\n\r\n    @property\r\n    def hello_name(self) -> str:\r\n        return \"Hello \" + self.name\r\n\r\n    def dict(self, **kwargs):\r\n        return super().dict(**kwargs) | {\"hello_name\": self.hello_name}\r\n\r\n\r\nclass State(rx.State):\r\n    count: int = 5\r\n    persons: list[Person] = [Person(name=\"Alice\"), Person(name=\"Bob\")]\r\n\r\n\r\n@rx.page()\r\ndef index():\r\n    return rx.foreach(\r\n        State.persons, lambda person: rx.html(\"<p>\" + person.hello_name + \"</p>\")\r\n    )\r\n\r\napp = rx.App()\r\n```"
      },
      "user": {
        "login": "hpharmsen",
        "avatar_url": "https://avatars.githubusercontent.com/u/16463806?u=285ed11d59031d0e249e0a351affd3fefe7b6415&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aiq2C",
      "number": 5939,
      "title": "some help with mixin",
      "body": "I find mixin very helpful, but I want a specific case to work.\r\n\r\nI have the following code:\r\n\r\n```\r\nclass A(rx.State, mixin=True):\r\n\r\n    @rx.event\r\n    def handle_processing(self):\r\n        ...\r\n\r\nclass B(A, rx.state):\r\n\r\n    @rx.event\r\n    def process(self):\r\n        yield B.handle_processing\r\n\r\n    @rx.event\r\n    def on_success(self):\r\n        ...\r\n```\r\n\r\nI want to yield the on_success event handler after handle processing is successfully completed.\r\n\r\nHow can I achieve this ?\r\n\r\n",
      "created_at": "2025-10-30T10:30:23Z",
      "updated_at": "2025-11-07T07:28:47Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4A4kXF",
        "body": "have you tried `yield type(self).on_success`?\r\n\r\nthat won't work in a background task due to #4947, but in that case you can use `self.__class__.on_success`"
      },
      "user": {
        "login": "jamesalphanome",
        "avatar_url": "https://avatars.githubusercontent.com/u/195094882?u=e3ce399bf5334c20c82bd8c06fde69b138c9ef96&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AimFX",
      "number": 5929,
      "title": "Feature Request: Self-Hosted AI Code Generation (Reflex.DIY) - Similar to Bolt.DIY",
      "body": "\r\nThe Reflex framework is amazing for building Python web apps, and Reflex Build's AI code generation is incredibly powerful. However, many developers in the community need a self-hosted solution for several reasons:API Key Control: Developers want to use their own LLM API keys (OpenAI, Anthropic, Google) or local models (Ollama, LM Studio) to avoid vendor lock-in and control costs��.Privacy & Compliance: Organizations with strict data policies need to keep code generation entirely within their infrastructure�.Local Development: Many developers prefer running everything locally during development without requiring internet connectivity or cloud subscriptions�.Proven Demand: Projects like Bolt.DIY have demonstrated massive community interest in self-hosted AI builders��. The success of Bolt.DIY (which allows self-hosting with custom LLM APIs) shows this is a critical need.Currently, Reflex Build requires cloud subscription and connects to Reflex's proprietary backend, which limits flexibility for these use cases��.\r\n💡 The ProposalCreate a \"Reflex.DIY\" companion project (or integrate into core) that enables self-hosted AI code generation:Core Features:1. LLM Provider FlexibilitySupport for multiple providers via API keys: OpenAI, Anthropic (Claude), Google (Gemini)Local LLM support via Ollama, LM Studio, or any OpenAI-compatible endpointConfigurable through environment variables or config file2. Open-Source Prompt SystemOpen-source the prompt engineering logic for generating Reflex codeAllow community contributions to improve promptsSupport for custom prompt templates3. Self-Hosted ArchitectureDocker containerization for easy deploymentCan run on any VPS, local machine, or cloud (AWS, GCP, Azure, Railway, Render)Web UI similar to Reflex Build but running locallyCLI-based generation as an alternative4. Clear SeparationKeep Reflex Build as the premium hosted option with enhanced features (database integration, GitHub sync, advanced debugging)Position Reflex.DIY as the community/developer edition\r\n🚀 Benefits for Reflex1. Massive Community GrowthAttracts developers who prefer self-hosting (proven to be a large segment based on Bolt.DIY's success)Removes barrier to entry for privacy-conscious organizationsIncreases overall Reflex framework adoption2. Community ContributionsOpen-source prompts = community improvementsFaster iteration on AI generation qualityMore diverse use cases discovered3. Competitive AdvantageReflex would be the only Python framework with both hosted AND self-hosted AI generationDifferentiates from competitors like Streamlit, Gradio, Dash4. Proven Business ModelFollows successful open-core strategy of GitLab, Supabase, Sentry��Free tier drives paid conversions (many Bolt.DIY users eventually use Bolt.new)Enterprise customers still prefer managed solutions\r\n📚 Examples & Precedents1. Bolt.DIY SuccessGitHub: stackblitz-labs/bolt.diy�Fully self-hostable with custom LLM APIsActive community, multiple deployment optionsProves developers want this capability2. Reflex Already Supports Self-HostingExcellent documentation for self-hosting Reflex apps��Docker deployment guides existThis would extend self-hosting to the AI generation layer3. LLM Integration ExamplesThe reflex-llm-examples repo� shows Reflex already has patterns for LLM integrationThese patterns could be extended to code generation4. Market Validation1M+ apps built with Reflex��27k+ GitHub stars showing strong community30% of Fortune 500 using Reflex - many have self-hosting requirements\r\n🤝 How I (We) Can HelpI'm very interested in contributing to this effort:Research & Design: Happy to help design the architecture and API structurePrompt Engineering: Can contribute to building effective prompts for Reflex code generationTesting: Will test extensively and provide feedbackDocumentation: Can help document setup and usageI believe this could be built as:A separate repo (reflex-dev/reflex-diy) that depends on core ReflexOr as an optional module in the main Reflex packageOr as community-maintained project with official blessing\r\n❓ Questions for the TeamIs this something the Reflex team would officially support?Would you accept PRs for this functionality?Are there technical/business constraints we should be aware of?Could parts of Reflex Build's prompt system be open-sourced?🎬 ConclusionThis feature would democratize AI-powered Python web development while maintaining Reflex's commercial viability. It aligns with Reflex's open-source philosophy and could significantly accelerate adoption.I'd love to hear the team's thoughts and the community's interest in this direction!Note: I'm not asking to replicate all of Reflex Build's features (database auto-detection, GitHub integration, advanced debugging). Those remain excellent premium differentiators. This is specifically about making the core AI code generation capability available for self-hosting.\r\n\r\nHere's the cleaned version without any links, reference markers, or extra formatting:\r\n\r\n***\r\n\r\n## 🎯 The Problem/Need\r\n\r\nThe Reflex framework is amazing for building Python web apps, and Reflex Build's AI code generation is incredibly powerful. However, many developers in the community need a self-hosted solution for several reasons:\r\n\r\n**API Key Control**: Developers want to use their own LLM API keys (OpenAI, Anthropic, Google) or local models (Ollama, LM Studio) to avoid vendor lock-in and control costs.\r\n\r\n**Privacy & Compliance**: Organizations with strict data policies need to keep code generation entirely within their infrastructure.\r\n\r\n**Local Development**: Many developers prefer running everything locally during development without requiring internet connectivity or cloud subscriptions.\r\n\r\n**Proven Demand**: Projects like Bolt.DIY have demonstrated massive community interest in self-hosted AI builders. The success of Bolt.DIY (which allows self-hosting with custom LLM APIs) shows this is a critical need.\r\n\r\nCurrently, Reflex Build requires cloud subscription and connects to Reflex's proprietary backend, which limits flexibility for these use cases.\r\n\r\n***\r\n\r\n## 💡 The Proposal\r\n\r\nCreate a \"Reflex.DIY\" companion project (or integrate into core) that enables self-hosted AI code generation:\r\n\r\n### Core Features:\r\n\r\n**1. LLM Provider Flexibility**\r\n- Support for multiple providers via API keys: OpenAI, Anthropic (Claude), Google (Gemini)\r\n- Local LLM support via Ollama, LM Studio, or any OpenAI-compatible endpoint\r\n- Configurable through environment variables or config file\r\n\r\n**2. Open-Source Prompt System**\r\n- Open-source the prompt engineering logic for generating Reflex code\r\n- Allow community contributions to improve prompts\r\n- Support for custom prompt templates\r\n\r\n**3. Self-Hosted Architecture**\r\n- Docker containerization for easy deployment\r\n- Can run on any VPS, local machine, or cloud (AWS, GCP, Azure, Railway, Render)\r\n- Web UI similar to Reflex Build but running locally\r\n- CLI-based generation as an alternative\r\n\r\n**4. Clear Separation**\r\n- Keep Reflex Build as the premium hosted option with enhanced features (database integration, GitHub sync, advanced debugging)\r\n- Position Reflex.DIY as the community/developer edition\r\n\r\n***\r\n\r\n## 🚀 Benefits for Reflex\r\n\r\n**1. Massive Community Growth**\r\n- Attracts developers who prefer self-hosting (proven to be a large segment based on Bolt.DIY's success)\r\n- Removes barrier to entry for privacy-conscious organizations\r\n- Increases overall Reflex framework adoption\r\n\r\n**2. Community Contributions**\r\n- Open-source prompts = community improvements\r\n- Faster iteration on AI generation quality\r\n- More diverse use cases discovered\r\n\r\n**3. Competitive Advantage**\r\n- Reflex would be the only Python framework with both hosted AND self-hosted AI generation\r\n- Differentiates from competitors like Streamlit, Gradio, Dash\r\n\r\n**4. Proven Business Model**\r\n- Follows successful open-core strategy of GitLab, Supabase, Sentry\r\n- Free tier drives paid conversions (many Bolt.DIY users eventually use Bolt.new)\r\n- Enterprise customers still prefer managed solutions\r\n\r\n***\r\n\r\n## 📚 Examples & Precedents\r\n\r\n**1. Bolt.DIY Success**\r\n- Fully self-hostable with custom LLM APIs\r\n- Active community, multiple deployment options\r\n- Proves developers want this capability\r\n\r\n**2. Reflex Already Supports Self-Hosting**\r\n- Excellent documentation for self-hosting Reflex apps\r\n- Docker deployment guides exist\r\n- This would extend self-hosting to the AI generation layer\r\n\r\n**3. LLM Integration Examples**\r\n- The reflex-llm-examples repository shows Reflex already has patterns for LLM integration\r\n- These patterns could be extended to code generation\r\n\r\n**4. Market Validation**\r\n- 1M+ apps built with Reflex\r\n- 27k+ GitHub stars showing strong community\r\n- 30% of Fortune 500 using Reflex - many have self-hosting requirements\r\n\r\n***\r\n\r\n## 🤝 How I (We) Can Help\r\n\r\nI'm very interested in contributing to this effort:\r\n\r\n- **Research & Design**: Happy to help design the architecture and API structure\r\n- **Prompt Engineering**: Can contribute to building effective prompts for Reflex code generation\r\n- **Testing**: Will test extensively and provide feedback\r\n- **Documentation**: Can help document setup and usage\r\n\r\nI believe this could be built as:\r\n- A separate repo (reflex-dev/reflex-diy) that depends on core Reflex\r\n- Or as an optional module in the main Reflex package\r\n- Or as community-maintained project with official blessing\r\n\r\n***\r\n\r\n## ❓ Questions for the Team\r\n\r\n1. Is this something the Reflex team would officially support?\r\n2. Would you accept PRs for this functionality?\r\n3. Are there technical/business constraints we should be aware of?\r\n4. Could parts of Reflex Build's prompt system be open-sourced?\r\n\r\n***\r\n\r\n## 🎬 Conclusion\r\n\r\nThis feature would democratize AI-powered Python web development while maintaining Reflex's commercial viability. It aligns with Reflex's open-source philosophy and could significantly accelerate adoption.\r\n\r\nI'd love to hear the team's thoughts and the community's interest in this direction!\r\n\r\n**Note**: I'm not asking to replicate all of Reflex Build's features (database auto-detection, GitHub integration, advanced debugging). Those remain excellent premium differentiators. This is specifically about making the core AI code generation capability available for self-hosting.\r\n\r\n\r\n",
      "created_at": "2025-10-25T05:57:22Z",
      "updated_at": "2025-10-31T03:55:02Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "joganubaid",
        "avatar_url": "https://avatars.githubusercontent.com/u/200247116?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AirWF",
      "number": 5941,
      "title": "v0.8.18 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.18a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-10-30 14:00 PT: 0.8.18a1 pre-release published for testing\r\n2025-11-03: Planned Public release of 0.8.18\r\n\r\n# Release Notes\r\n\r\n## Improve re-connection logic when running multiple workers\r\n\r\n* ENG-8089: Implement Lost+Found with RedisTokenManager by @masenf in https://github.com/reflex-dev/reflex/pull/5927\r\n\r\n## Override `async with self` to just return self in non background events\r\n\r\n* allow state mutation with contextmanager from normal (non-background) events by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/5938\r\n\r\n## Bugfixes\r\n\r\n* fix problems with does_obj_satisfy_typed_dict by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5936\r\n\r\n## Chores\r\n\r\n* 0818dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5933\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.17...release/reflex-0.8.18",
      "created_at": "2025-10-30T21:05:17Z",
      "updated_at": "2025-11-03T23:32:47Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AV6_M",
      "number": 1985,
      "title": "How to reset some state vars (or all  of them)",
      "body": "We would like to reset some state vars (or all of them) when the current page is closed, or alternatively, before the page is loaded.\r\n\r\nWhat's the recommended approach to do that?\r\n\r\nIf we update some state vars upon the on_load event, would we see the old state first and then the updated one?",
      "created_at": "2023-10-17T16:25:51Z",
      "updated_at": "2025-10-24T17:10:40Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aihoa",
      "number": 5912,
      "title": "How to send navigator.geolocation.getCurrentPosition result to backend",
      "body": "Hello,\r\nI need to retreive the geolocation position of the user and store it on the backend.\r\nI think that the javascript function that does the job is navigator.geolocation.getCurrentPosition ,\r\nI'm able to call it by rx.call_script and log the coordinates in the console but I'm not able to send the result back in the backend.\r\nSomeone can help me with an example?\r\n\r\nThanks\r\n",
      "created_at": "2025-10-20T10:23:29Z",
      "updated_at": "2025-10-24T09:00:43Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4A4VMZ",
        "body": "The `getCurrentPosition` API [[1]](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition) is a little tricky to wrap because it accepts `success` and `error` callback functions rather than being awaitable itself. So to make it work with `call_function`'s `callback` mechanism, we need to wrap it in our own `Promise` which Reflex frontend will await for before sending the result to the backend where we will pick it apart with an event handler.\r\n\r\nI have defined the shape of the API objects in python to make them natural to work with and allow the type checker to help us catch errors. For some APIs where the Javascript object cannot be represented in JSON, it might be necessary to return a modified object on the frontend that can be serialized, however my recommendation is to avoid frontend munging of well defined APIs, to retain consistent API names/types, which will make it easier for others and LLMs to understand and change your code.\r\n\r\nHere is the complete example:\r\n\r\n```python\r\nimport dataclasses\r\nfrom typing import TypedDict\r\n\r\nimport reflex as rx\r\n\r\n\r\n# Wraps `geolocation.getCurrentPosition` in a Promise for use with rx.call_function.\r\nGEOLOCATION_GET_CURRENT_POSITION_PROMISE = \"\"\"() => {\r\nreturn new Promise((resolve, reject) => {\r\n    if (navigator.geolocation) {\r\n        navigator.geolocation.getCurrentPosition(\r\n            // Happy case: resolve the promise with the position\r\n            resolve, \r\n            // Error case: resolve the promise with an error object to send to the backend.\r\n            (error) => resolve({code: error.code, message: error.message}),\r\n            // Options\r\n            {\r\n                enableHighAccuracy: true, // Request the most accurate location possible\r\n                timeout: 5000,           // Maximum time (in milliseconds) to wait for a position\r\n                maximumAge: 0            // Don't use a cached position; force a new one\r\n            }\r\n        );\r\n    } else {\r\n        // Geolocation is not supported by the browser (raises frontend error)\r\n        reject(new Error(\"Geolocation is not supported by this browser.\"));\r\n    }\r\n});\r\n}\"\"\"\r\n\r\n\r\nclass GeolocationCoordinates(TypedDict):\r\n    \"\"\"The geolocation coordinates.\"\"\"\r\n\r\n    latitude: float\r\n    longitude: float\r\n    altitude: float | None\r\n    accuracy: float\r\n    altitude_accuracy: float | None\r\n    heading: float | None\r\n    speed: float | None\r\n\r\n\r\n@dataclasses.dataclass(frozen=True)\r\nclass GeolocationPosition:\r\n    \"\"\"The geolocation position.\"\"\"\r\n\r\n    coords: GeolocationCoordinates | None = None\r\n    timestamp: int | None = None\r\n\r\n    # Included if the request fails\r\n    code: int | None = None  # 1 = PERMISSION_DENIED, 2 = POSITION_UNAVAILABLE, 3 = TIMEOUT\r\n    message: str | None = None\r\n\r\n\r\nclass State(rx.State):\r\n    last_latlon: rx.Field[list[float]] = rx.field(default_factory=list)\r\n    last_timestamp: rx.Field[int | None] = rx.field(default=None)\r\n    last_error_code: rx.Field[int | None] = rx.field(default=None)\r\n    last_error_message: rx.Field[str | None] = rx.field(default=None)\r\n\r\n    @rx.event\r\n    def receive_position(self, position: GeolocationPosition) -> None:\r\n        \"\"\"Receive the position from the frontend and print it.\r\n\r\n        Args:\r\n            position: The geolocation position.\r\n        \"\"\"\r\n        if position.code is not None:\r\n            print(f\"Error getting position: {position.code} - {position.message}\")\r\n            self.last_error_code = position.code\r\n            self.last_error_message = position.message\r\n            return\r\n        print(f\"Received position: {position}\")\r\n        if position.coords is not None:\r\n            self.last_error_code = None\r\n            self.last_error_message = None\r\n            self.last_timestamp = position.timestamp\r\n            self.last_latlon = [\r\n                position.coords[\"latitude\"],\r\n                position.coords[\"longitude\"],\r\n            ]\r\n        else:\r\n            self.last_error_message = \"Unknown error: No coordinates received.\"\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        rx.color_mode.button(position=\"top-right\"),\r\n        rx.vstack(\r\n            rx.cond(\r\n                State.last_error_message | State.last_error_code.is_not_none(),\r\n                rx.callout(\r\n                    text=f\"Error {State.last_error_code}: {State.last_error_message}\",\r\n                    icon=\"circle-x\",\r\n                    color_scheme=\"red\",\r\n                ),\r\n            ),\r\n            rx.cond(\r\n                State.last_timestamp,\r\n                rx.vstack(\r\n                    rx.text(\r\n                        \"Your position at: \",\r\n                        rx.moment(State.last_timestamp),\r\n                    ),\r\n                    rx.text(\r\n                        f\"Latitude {State.last_latlon[0]}, \"\r\n                        f\"Longitude {State.last_latlon[1]}\"\r\n                    ),\r\n                ),\r\n                rx.text(\"Click the button to get your position.\"),\r\n            ),\r\n            rx.button(\r\n                \"Where am I?\",\r\n                on_click=rx.call_function(\r\n                    GEOLOCATION_GET_CURRENT_POSITION_PROMISE,\r\n                    callback=State.receive_position,\r\n                ),\r\n            ),\r\n        ),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```"
      },
      "user": {
        "login": "fromualdi",
        "avatar_url": "https://avatars.githubusercontent.com/u/121198298?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiVGz",
      "number": 5860,
      "title": "Where are the source map files for the frontend?",
      "body": "I would like to be able to see a stack trace for frontend errors (such as null pointer errors) on the production frontend app.\r\n\r\nTherefore I usually upload the source map files to Sentry and install Sentry JS into the frontend app.\r\n\r\nCan anyone share experience with Reflex and frontend source maps?",
      "created_at": "2025-10-08T09:42:16Z",
      "updated_at": "2025-10-23T22:02:48Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "larsblumberg",
        "avatar_url": "https://avatars.githubusercontent.com/u/5980316?u=ed6e0c2a916605e054e14e13ca6d441377df59a2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aik_u",
      "number": 5924,
      "title": "v0.8.17 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.17a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-10-23 13:40 PT: 0.8.17a1 pre-release published for testing\r\n2025-10-27: Planned Public release of 0.8.17\r\n\r\n# Release Notes\r\n\r\n## Pass event name for lock expiry messages\r\n\r\n* add context for lock expiry by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5918\r\n\r\n## Expose Sourcemap generation via `VITE_SOURCEMAP`, and rolldown experimental HMR via `VITE_EXPERIMENTAL_HMR`\r\n\r\n* expose exp hmr and sourcemap by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5906\r\n\r\n\r\n## Bugfixes\r\n\r\n* ENG-8034: fix window events inside of memoization leaf by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5899\r\n* fix: properly initialize rx.Field annotated backend vars in mixin states by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/5909\r\n* ENG-8113: handle_frontend_exception triggers auto reload by @masenf in https://github.com/reflex-dev/reflex/pull/5922\r\n* ENG-8050: background event updates set `final=None` by @masenf in https://github.com/reflex-dev/reflex/pull/5898\r\n\r\n## Chores\r\n\r\n* Add virtual environment setup instructions to README by @ChloeAnn08 in https://github.com/reflex-dev/reflex/pull/5913\r\n* 0817dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5916\r\n* avoid racey flakes in test_client_storage by @masenf in https://github.com/reflex-dev/reflex/pull/5920\r\n\r\n## New Contributors\r\n* @ChloeAnn08 made their first contribution in https://github.com/reflex-dev/reflex/pull/5913\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.16...release/reflex-0.8.17",
      "created_at": "2025-10-23T21:36:42Z",
      "updated_at": "2025-10-27T17:48:00Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgIUG",
      "number": 5413,
      "title": "Upload progress bar significantly delayed when deployed behind Cloudflare",
      "body": "**Describe the bug**\nWhen deploying a Reflex app behind Cloudflare (with HTTPS enabled), the rx.upload(progress=True) component does not show the progress bar until the entire file upload is complete. The handle_upload() function on the backend is not triggered until the full body is received, which delays the start of the progress bar by 10–20 seconds for large files.\n\nThis behavior does not occur when the app is run locally (without a reverse proxy), where the progress bar appears immediately and tracks the upload in real time.\n\n**To Reproduce**\nDeploy a Reflex app using rx.upload(progress=True) behind NGINX and Cloudflare (proxy enabled).\n\nUpload a large file (10MB+).\n\nObserve the delayed appearance of the progress bar.\n\nCheck DevTools: the /_upload request shows Request Sent duration = 10–20s, with Waiting (TTFB) only starting after the file is fully uploaded.\n\n- Code/Link to Repo:\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\nhttps://github.com/user-attachments/assets/6a7c1b01-ac73-4ac3-9cf0-137a77ca9878\n\n\n**Specifics (please complete the following information):**\n\n- Python Version: 3.12\n- Reflex Version: 0.7.13\n- OS: Amazon Linux\n- Browser (Optional): Chrome\n\n\n**Additional context**\nAdd any other context about the problem here.\n",
      "created_at": "2025-06-04T01:00:25Z",
      "updated_at": "2025-10-22T11:26:01Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "nivetaiyer",
        "avatar_url": "https://avatars.githubusercontent.com/u/22581900?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aaue2",
      "number": 3734,
      "title": "How could I use something like STATIC_URL in django to route the frontend?",
      "body": "Hi everyone, just a quick question\r\n\r\nI have a reflex site proxied to from localhost:3000 -> www.mypage.com/myreflexpage \r\nThis is done through nginx reverse proxy\r\nI can access the main page BUT it has no access to any router, because its trying to search in www.mypage.com/*  instead of www.mypage.com/myreflexpage/* and it is giving me \"not found\" error.\r\nHow could I use something like STATIC_URL in django to route the frontend?\r\n\r\nthanks in advance\r\n\r\nCarlos",
      "created_at": "2024-08-02T11:35:14Z",
      "updated_at": "2025-10-22T06:30:08Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AnLOh",
        "body": "you have to set frontend_path=\"/subpath\"\r\n\r\nbeing subpath like->  https://www.mypage.com/subpath"
      },
      "user": {
        "login": "deroki",
        "avatar_url": "https://avatars.githubusercontent.com/u/12788929?u=8ea1d817a210c5568eae752d1fe3a91f82119e14&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AieMK",
      "number": 5903,
      "title": "build-your-own-x (repositorio)",
      "body": "Dicas !!  Ideas, teses de pericia de laudo de mi próprio estudio y liminar relacion....\nGracias, Por Favor, aguardare mi  hermanos  !!!  💚🎗💚\n",
      "created_at": "2025-10-17T06:42:45Z",
      "updated_at": "2025-10-17T21:31:40Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "MXHORNOX",
        "avatar_url": "https://avatars.githubusercontent.com/u/125633230?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AieIO",
      "number": 5900,
      "title": "Help",
      "body": "How to get SocialHub",
      "created_at": "2025-10-17T04:50:28Z",
      "updated_at": "2025-10-17T21:32:24Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "johnkravin9-design",
        "avatar_url": "https://avatars.githubusercontent.com/u/233215229?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aid9f",
      "number": 5897,
      "title": "v0.8.16 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.16a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-10-16 15:40 PT: 0.8.16a1 pre-release published for testing\r\n2025-10-20: Planned Public release of 0.8.16\r\n\r\n# Release Notes\r\n\r\n## StateManagerDisk with throttled write\r\n\r\nTo improve performance on IO-bound devices, disk manager only commits its memory every two seconds or so. Configurable through the environment variable: REFLEX_STATE_MANAGER_DISK_DEBOUNCE_SECONDS\r\n\r\n* ENG-7948: StateManagerDisk deferred write queue by @masenf in https://github.com/reflex-dev/reflex/pull/5883\r\n\r\n## Dialog Trigger must be child of Dialog Root\r\n\r\nIn technicality, dialog trigger can be anywhere in the nested children of a dialog root. However, this is a useful proxy for now.\r\n\r\n* dialog trigger must have dialog root as its parent by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5896\r\n\r\n\r\n## Chores\r\n\r\n* Change vulnerability reporting email to GitHub link by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5890\r\n* 0816dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5891\r\n* bump codspeed action to v4 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5892\r\n\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.15...release/reflex-0.8.16",
      "created_at": "2025-10-16T22:45:25Z",
      "updated_at": "2025-10-21T03:34:29Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AicDz",
      "number": 5887,
      "title": "Cannot connect to server: websocket error",
      "body": "Hello community:\r\n\r\nI’m using Caddy2 as an HTTPS reverse proxy for Reflex.\r\n\r\nDiscussion #3553 explains how to add PWA support, but it doesn’t cover how to enable HTTPS.\r\n\r\nWhen I open `https://192.168.3.144:3001/` on my phone, the static page loads correctly, but I get this error:\r\n**Cannot connect to server: websocket error. Check if the server is reachable at wss://192.168.3.144/_event.**\r\n\r\nI’ve already turned off the firewall, but the issue persists.\r\n\r\nCaddyfile (v2.10.2):\r\n```\r\nhttps://192.168.3.144:3001 {\r\n\t@websockets {\r\n\t\tpath /_event/* /ping /_upload /_upload/*\r\n\t\theader Connection *Upgrade*\r\n\t\theader Upgrade websocket\r\n\t}\r\n\treverse_proxy @websockets localhost:8000\r\n\r\n\treverse_proxy localhost:3000\r\n}\r\n```\r\n\r\nrxconfig.py:\r\n```\r\ncors_allowed_origins=[\r\n        \"http://localhost:3000\",\r\n        \"https://localhost:3001\",\r\n        \"https://192.168.3.144:3001\",\r\n    ]\r\n```\r\n\r\nThanks\r\nCheng",
      "created_at": "2025-10-15T01:00:18Z",
      "updated_at": "2025-10-16T17:40:15Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4A4FTx",
        "body": "I found the fix:\r\n\r\n1. **Caddyfile**:\r\n```\r\nhttps://192.168.10.169:8001 {\r\n\treverse_proxy localhost:8000\r\n}\r\n\r\nhttps://192.168.10.169:3001 {\r\n\treverse_proxy localhost:3000\r\n}\r\n```\r\n\r\n2. **rxconfig.py**:\r\n```\r\nconfig = rx.Config(\r\n    cors_allowed_origins=[\r\n        \"http://localhost:3000\",\r\n        \"https://192.168.3.144:3001\",\r\n    ],\r\n    api_url=\"https://192.168.3.144:8001\",\r\n)\r\n```\r\n\r\n3. **run**:\r\n```\r\nreflex run\r\ncaddy run --config Caddyfile\r\n```"
      },
      "user": {
        "login": "suc1",
        "avatar_url": "https://avatars.githubusercontent.com/u/29101615?u=093bd1d720792cb73026769de2ba7affd007fdf6&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Af5gF",
      "number": 5329,
      "title": "Problems with hot reload?",
      "body": "Anyone else having trouble with hot reloading on .py file changes?  \r\n\r\nIt's always worked great but over the last few weeks, across a few versions (including the recent 0.7.12), saving changes to a .py file will trigger a compile and refresh the browser page, but changes I've made to the UI are not reflected.  Exiting and re-running \"reflex run\" is the only way I've been able to get changes reflected. ",
      "created_at": "2025-05-22T23:56:59Z",
      "updated_at": "2025-10-16T14:32:45Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jgutierrez2",
        "avatar_url": "https://avatars.githubusercontent.com/u/8933946?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AicZ8",
      "number": 5888,
      "title": "Payment gateway integration",
      "body": "How to integrate payment gateway using reflex",
      "created_at": "2025-10-15T10:08:34Z",
      "updated_at": "2025-10-16T13:04:38Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "projectminasai-ux",
        "avatar_url": "https://avatars.githubusercontent.com/u/237137973?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaK1Q",
      "number": 3553,
      "title": "PWA to Reflex",
      "body": "Hello community!\r\n\r\nI have been working feverishly on creating a web app in Reflex for the past few days.\r\n\r\nI am aware that the use of web services on mobile devices is accelerating these days, and I was wondering if it would be possible to make this happen in Reflex in the form of a PWA.\r\n\r\nWe will describe how we have done it successfully, but we understand that it is a hacky way to do it. Can you tell us if there is a better way or native support?\r\n\r\n*It seems to have been mentioned a bit in this Issue, but it looked like the tag that links manifest.json was not actually written in the head. (Please let me know if my understanding is wrong!)\r\n\r\nThanks.\r\n\r\n---\r\n\r\n\r\nDirectory Structures\r\n```\r\n\\assets\r\n        icon-192x192.png\r\n        icon-512x512.png\r\n       ...\r\n        manifest.json\r\n```\r\n\r\nmanifest.json\r\n``` json: manifest.json\r\n{\r\n    \"name\": \"My PWA\",\r\n    \"short_name\": \"PWA\",\r\n    \"start_url\": \".\",\r\n    \"display\": \"standalone\",\r\n    \"background_color\": \"#ffffff\",\r\n    \"theme_color\": \"#ffffff\",\r\n    \"description\": \"My awesome Progressive Web App!\",\r\n    \"icons\": [\r\n        {\r\n            \"src\": \"icon-192x192.png\",\r\n            \"type\": \"image/png\",\r\n            \"sizes\": \"192x192\"\r\n        },\r\n        {\r\n            \"src\": \"icon-512x512.png\",\r\n            \"type\": \"image/png\",\r\n            \"sizes\": \"512x512\"\r\n        }\r\n    ]\r\n}\r\n```\r\n\r\nPython Script\r\n``` python\r\napp = rx.App(\r\n    head_components=[\r\n        rx.script(\r\n            \"\"\"\r\n    document.addEventListener('DOMContentLoaded', function () {\r\n        var head = document.head;\r\n\r\n        // Create link to manifest\r\n        var linkManifest = document.createElement('link');\r\n        linkManifest.rel = 'manifest';\r\n        linkManifest.href = '/manifest.json';\r\n        head.appendChild(linkManifest);\r\n    });\r\n\"\"\"\r\n```",
      "created_at": "2024-06-25T02:12:00Z",
      "updated_at": "2025-10-15T01:05:37Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Alovo",
        "body": "have you tried adding the `rx.el.link` tag directly?\r\n\r\n```python\r\napp = rx.App(\r\n    head_components=[rx.el.link(rel=\"manifest\", href=\"/manifest.json\")]\r\n)\r\n```"
      },
      "user": {
        "login": "ppspps824",
        "avatar_url": "https://avatars.githubusercontent.com/u/34480286?u=6e699e95fa513ddb03c7a3f91c34feadc7d1eb18&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aib91",
      "number": 5885,
      "title": "Storing an rx.var inside a component state, not just the evaluated value at compile time",
      "body": "I am working on a custom dropdown component which can be reused throughout my app and am having a difficult time with it. My issue is that the options for the dropdown need to be based on an rx.var that is passed into the dropdown on creation. However If it try to store the rx.var inside the component state, the rx.var is resolved and stored in the component state as the resolved value (e.g list or str). This means that the component state does not update as the vars change in the outer app. Its possible that I am not doing this correctly, but I wonder what is the way to go about doing this? ",
      "created_at": "2025-10-14T21:16:21Z",
      "updated_at": "2025-10-14T21:16:22Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "MatthewCollinsNZ",
        "avatar_url": "https://avatars.githubusercontent.com/u/189672714?u=47533b31ffa661bb03ab8f9f09665a74e674ee6a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiWaJ",
      "number": 5866,
      "title": "Auto Setters to be removed in 0.9 ?",
      "body": "Hi ,\r\n\r\nI started getting warning from reflex 0.8 that the **auto-setters** are deprecated and to be removed from 0.9 ? \r\nI think many people have used auto setters and removing this feature completely will result in code brake if we upgrade to 0.9. \r\nCan I please request to keep the auto setters but at least keep it disabled by default and allow to enable it in rxconfig ? \r\n\r\nThanks\r\nReza Toghraee\r\n\r\n\r\n\r\n",
      "created_at": "2025-10-09T14:07:16Z",
      "updated_at": "2025-10-10T14:44:44Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "toghraee",
        "avatar_url": "https://avatars.githubusercontent.com/u/2345127?u=60d3e09f39e1cf98617b6715ab51cfe672d13ca0&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiW2q",
      "number": 5874,
      "title": "How to achieve this accordion design from Reflex documentation page?",
      "body": "<img width=\"290\" height=\"230\" alt=\"image\" src=\"https://github.com/user-attachments/assets/51f46400-fcd5-4b1a-a4e5-b3c73aa41b32\" />\r\n\r\nHi everyone,\r\nI noticed this sidebar navigation design on the Reflex documentation page (see attached screenshot). It has some nice features like:\r\n\r\nA purple/violet indicator bar on the left of the selected item (\"Accordion\")\r\nHierarchical structure with expandable categories (\"Disclosure\", \"Dynamic Rendering\")\r\nClean dark theme with proper spacing and colors\r\n\r\nI've been trying to recreate this using rx.accordion, but I can't seem to achieve this exact design.\r\nMy questions:\r\n\r\nIs this actually built with rx.accordion component?\r\nIf so, how can I style it to get that left indicator bar and selected state?\r\nAre there any custom styles or specific props I should be using?\r\n\r\nAny guidance or example code would be really appreciated!\r\nThanks!",
      "created_at": "2025-10-10T00:42:12Z",
      "updated_at": "2025-10-10T00:42:12Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "o12486vs2",
        "avatar_url": "https://avatars.githubusercontent.com/u/76493297?u=c92e0ecce033efe122f97541f16bf48e9d3058a6&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiWrO",
      "number": 5870,
      "title": "v0.8.15 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.15a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-10-09 11:00 PT: 0.8.15a1 pre-release published for testing\r\n2025-10-13: Planned Public release of 0.8.15\r\n\r\n# Release Notes\r\n\r\n## Deprecations\r\n\r\n### `rx.Base` is deprecated.\r\n\r\nNow that `pydantic` is an optional dependency, Reflex will no longer maintain a custom wrapper over `BaseModel`. You have a few options for replacing your `rx.Base` subclasses:\r\n\r\n* Continue to use `pydantic` -- minimal code/behavior changes\r\n  * Ensure `pydantic` is part of your app dependency list\r\n  * Extend from `pydantic.BaseModel` instead of `rx.Base`\r\n* Move to `dataclasses.dataclass` -- use the python stdlib\r\n* Move to `typing.TypedDict` -- uses a plain `dict`, but has extra type hints to make Var Operations work correctly\r\n\r\n### `sqlmodel.SQLModel` is now recommended over `rx.Model`.\r\n\r\n* Change your db models to inherit from `sqlmodel.SQLModel` instead of `rx.Model`.\r\n* Ensure the model has an explicit primary_key column. The default previously used to be:\r\n  * `id: int | None = sqlmodel.Field(default=None, primary_key=True)`\r\n* Use `sqlmodel.select(MyModel)` instead of `MyModel.select()`.\r\n\r\n## Python 3.14 is now supported! Python 3.10 deprecated D:\r\n\r\nPython 3.14 got release on 10/07 and now Reflex supports it! It gives us very considerable performance improvements just by bumping.\r\n\r\nIn theory, you can use reflex with python free threaded, although we don't officially support it just yet. If you do run into issues with it, do report it!\r\n\r\n* python3.14 compat by @masenf in https://github.com/reflex-dev/reflex/pull/5859\r\n* deprecate python 3.10 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5868\r\n\r\n## Make pydantic, sqlmodel, and alembic optional\r\n\r\nWe will still install them by default until 0.9. **You can ease into the transition by setting your reflex dependency to `reflex[db]`.** You can uninstall them and reflex will continue to work assuming you don't use those in your app.\r\n\r\n* move pydantic, sqlmodel, alembic to optional dependencies by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5438\r\n* only deprecate base at subclass by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5863\r\n* output what class is subclassing rx.Base by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5864\r\n\r\n## Upcast enum values to their enum type on event handlers\r\n\r\n* Upcast str or int to annotated Enum type in event handlers by @masenf in https://github.com/reflex-dev/reflex/pull/5855\r\n\r\n## Performance Improvements\r\n\r\n* optimize various var functions by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5865\r\n\r\n## Bugfixes\r\n\r\n* make on load lambda work by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5856\r\n\r\n## Chores\r\n\r\n* 0815dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5853\r\n* make _no_chain_background_task take state instance by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5857\r\n* split manager by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5852\r\n* Bring back accidentally removed pool params by @masenf in https://github.com/reflex-dev/reflex/pull/5861\r\n* ENG-7927: make builder first option in reflex init cli by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5862\r\n* Use pytest-rerunfailures to avoid tmp_path stashkey issues by @masenf in https://github.com/reflex-dev/reflex/pull/5869\r\n* rolldown vite 7.1.16 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5858\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.14...release/reflex-0.8.15",
      "created_at": "2025-10-09T19:10:06Z",
      "updated_at": "2025-10-15T02:42:23Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiPLj",
      "number": 5846,
      "title": "v0.8.14 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.14a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-10-02 11:00 PT: 0.8.14a1 pre-release published for testing\r\n2025-10-03 13:25 PT: 0.8.14a2 pre-release published for testing\r\n2025-10-06: Planned Public release of 0.8.14\r\n\r\n# Release Notes\r\n\r\n## Revert ColorVar having .color .alpha .shade\r\n\r\nColorVar being a non primitive string (`new String`) has proven more problematic than it is useful.\r\n\r\n* call to_string on colors coming into style by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5836\r\n* revert color handling by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5844\r\n\r\n## Add `--single-port` option to `reflex run --env prod`\r\n\r\nSince the app is compiled, there is no need for using a node server to run the frontend and have two ports. You can simply use `reflex run --env prod --single-port` to host the frontend and backend on the same port.\r\n\r\nIt's still recommended to serve your frontend on a CDN if possible. Although if you're going for really simple deployments, one port will suffice!\r\n\r\n* single port prod by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5839\r\n\r\n## Treat `on_drop=State.handle_upload,` as `on_drop=State.handle_upload(rx.upload_files(upload_id))`\r\n\r\nthe following:\r\n```python\r\nrx.upload(\r\n    id=\"upload\",\r\n    on_drop =State.on_upload,\r\n)\r\n```\r\nwould be converted to\r\n```python\r\nrx.upload(\r\n    id=\"upload\",\r\n    on_drop =State.on_upload(rx.upload_files(\"upload\")),\r\n)\r\n```\r\n\r\n* improve upload state handlers ergonomics by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5843\r\n\r\n## Add primitive radix dialog\r\n\r\nIt's unstyled, but it makes it easier to use with tailwind and such if you aren't interested in radix themes.\r\n\r\n```py\r\ndef dialog():\r\n    return rx.radix.primitives.dialog.root(\r\n        rx.radix.primitives.dialog.trigger(...),\r\n        rx.radix.primitives.dialog.portal(\r\n            rx.radix.primitives.dialog.overlay(...),\r\n            rx.radix.primitives.dialog.content(\r\n                rx.radix.primitives.dialog.title(...),\r\n                rx.radix.primitives.dialog.description(...),\r\n                ...,\r\n                rx.radix.primitives.dialog.close(...)\r\n            )\r\n        )\r\n    )\r\n```\r\n\r\n The interface looks almost identical to `rx.dialog`.\r\n\r\n* Add primitive radix dialog by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5848\r\n\r\n## Bugfixes\r\n\r\n* replace click exit with system exit by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5841\r\n* correctly handle backend rx.Field default values by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5833\r\n* update slider event spec by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5828\r\n* remove toaster outside of radix by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5827\r\n* check return code before parsing version by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5845\r\n* make indexing more null friendly by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5849\r\n* handle upload id being a var in as event spec by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5850\r\n\r\n## Chores\r\n\r\n* Remove raciness from test_is_process_on_port_concurrent_access by @masenf in https://github.com/reflex-dev/reflex/pull/5826\r\n* 0814dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5834\r\n* suppress eval warnings by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5847\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.13...release/reflex-0.8.14",
      "created_at": "2025-10-02T19:40:21Z",
      "updated_at": "2025-10-06T20:39:24Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiKye",
      "number": 5831,
      "title": "Reflex and Project Dependencies / Python Packages (UV?)",
      "body": "Hello there. \r\n\r\nI have just discovered Reflex. I am just a little confused on how Package management works within Reflex. I am only familiar with UV as my Python package and project manager.  Has reflex got any inbuilt capabilities or is it advantageous to still (somehow) use UV in combination? Please do direct me to relevant documentation or links if there are any. \r\n\r\nThanks in advance,\r\nMichelle",
      "created_at": "2025-09-28T21:00:56Z",
      "updated_at": "2025-09-29T16:26:48Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "michellepace",
        "avatar_url": "https://avatars.githubusercontent.com/u/512813?u=0ef6c96e0615f3c19972272125422b86a6d1902d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiIKR",
      "number": 5825,
      "title": "v0.8.13 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.13a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-09-25 11:00 PT: 0.8.13a1 pre-release published for testing\r\n2025-09-29: Planned Public release of 0.8.13\r\n\r\n# Release Notes\r\n\r\n## Rework ColorVar to support its subfields\r\n\r\n```python\r\nclass State(rx.State):\r\n    theme: rx.Color = rx.color(\"red\", 2)\r\n\r\n# All of those are valid:\r\nState.theme\r\nState.theme.color\r\nState.theme.shade\r\nState.theme.alpha\r\n```\r\n\r\n* rework transformers and serialize subfields of color vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5819\r\n\r\n## Upgrade `react-player` (`rx.video`) to v3\r\n\r\nThere are some providers that got removed in the update and the API changed. We added a mapping to maintain them as close as possible. If you get any deprecation warnings related to `rx.video` that's why.\r\n\r\n* Upgrade to react-player v3.3.3 by @masenf in https://github.com/reflex-dev/reflex/pull/5818\r\n\r\n##  Automatically convert `time` and `date` from `str` if event handler function is typed as such\r\n\r\nIf you have an event handler:\r\n```python\r\nimport datetime\r\nclass State(rx.State):\r\n    @event\r\n    def receive_datetime(self, t: datetime.datetime):\r\n        ...\r\n```\r\nThen you can do:\r\n```python\r\nState.receive_datetime(datetime.datetime.now())\r\n```\r\n\r\nThat used to fail, since we go to the frontend and back, which would serialize the `datetime` into a string to be stored in JSON. Now we attempt to convert the `str` into the typed parameter if possible for `datetime` objects.\r\n\r\n* add deser for date and time by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5822\r\n\r\n## Add option to disable server-side rendering for `reflex export` and `reflex deploy`\r\n\r\nYou can pass `--no-ssr` to the commands to disable react router per-rendering routes. Note that might hurt your SEO performance. You can also configure that with `REFLEX_SSR=1/0`.\r\n\r\n* add an option to disable ssr for export and deploy by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5821\r\n\r\n## Bugfixes\r\n\r\n* bring back manual exception printing by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5823\r\n\r\n## Chores\r\n\r\n* 0813dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5816\r\n* Refactor `test_evnt_actions_throttle_debounce` to be more forgiving by @masenf in https://github.com/reflex-dev/reflex/pull/5824\r\n\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.12...release/reflex-0.8.13",
      "created_at": "2025-09-25T18:14:06Z",
      "updated_at": "2025-09-29T18:54:05Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiEEC",
      "number": 5807,
      "title": "Resolving PyCharm Type Warning in Breakpoints Assignment",
      "body": "<img width=\"2370\" height=\"718\" alt=\"Clipboard_Screenshot_1758503856\" src=\"https://github.com/user-attachments/assets/efff8bbc-c105-42c1-b594-d84500c4227c\" />\r\n\r\nI followed the example provided in the sample code for testing, but my PyCharm IDE always shows a warning message similar to this:\r\nExpected type 'Breakpoints[str, Literal[\"column\", \"column-reverse\", \"row\", \"row-reverse\"]] | None', got 'Literal[\"column\"]' instead\r\nHow should I assign the value to avoid such a warning message?",
      "created_at": "2025-09-22T01:21:42Z",
      "updated_at": "2025-09-25T03:44:01Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4A3Pvn",
        "body": "<img width=\"2434\" height=\"908\" alt=\"Clipboard_Screenshot_1758598230\" src=\"https://github.com/user-attachments/assets/4eba3b6a-b887-40b0-afa5-0110765d61b3\" />\r\n\r\n<img width=\"1186\" height=\"154\" alt=\"Clipboard_Screenshot_1758598134\" src=\"https://github.com/user-attachments/assets/c00bf0d7-df2c-4c05-b898-a11af5733e42\" />\r\n\r\n<img width=\"3274\" height=\"1612\" alt=\"Clipboard_Screenshot_1758598304\" src=\"https://github.com/user-attachments/assets/f95d1ef7-10d5-480b-84c8-6e3a8fdc2d62\" />\r\n\r\nThe Pyright detection results show no issues. It correctly identifies errors when I intentionally assign wrong types, and after I fix them, it doesn't report any warnings or errors. However, my PyCharm IDE seems to keep showing error prompts"
      },
      "user": {
        "login": "bowenerchen",
        "avatar_url": "https://avatars.githubusercontent.com/u/13360820?u=e1b3fde6fa435ca6a029c0ab002ae40e3efee81c&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiCCV",
      "number": 5801,
      "title": "Noob Question: How do I use a method on a dataclass with the state system?",
      "body": "I see that Computed Vars cannot take arguments, but I also see that I cannot use any methods on the var to make computations.\r\n\r\nSay I have: \r\n\r\n```python\r\n@dataclass \r\nclass Test: \r\n  v1: int \r\n\r\n  def compute(self, v2: int):\r\n    return self.v1 - v2\r\n```\r\n\r\nI'm aware this is a toy example and I can do `var - something` already because of the built in functions. The actual function I'm dealing with does a bit more which is why I want to encapsulate it in one place and reuse throughout the view layer instead of writing it out multiple times. \r\n\r\nHowever the var system is not able to find this compute method, as in when I write `rx.text(f\"{test.compute(2)\")` I get `reflex.utils.exceptions.VarAttributeError: The State var `team` of type <class 'schema.Test'> has no attribute 'compute' or may have been annotated wrongly.`\r\nAnd when I try to annotate with `@rx.var` I get `Computed var compute(self, year: int) -> int` cannot take arguments.\r\n\r\nHow exactly do I access this method on the var and use it from within the view layer? \r\n\r\nI suppose one workaround is to define these as @staticmethod and then call it as Test.compute(test, 2) but this feels kind of clunky and not how I would expect to use a class normally in python. ",
      "created_at": "2025-09-19T18:07:31Z",
      "updated_at": "2025-09-19T18:09:55Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "vshesh",
        "avatar_url": "https://avatars.githubusercontent.com/u/2929957?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AiBDG",
      "number": 5799,
      "title": "v0.8.12 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.12a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-09-18 11:40 PT: 0.8.12a1 pre-release published for testing\r\n2025-09-22: Planned Public release of 0.8.12\r\n\r\n# Release Notes\r\n\r\n## Bugfixes\r\n\r\n### Check against using components as styles accidentally\r\n\r\nIf you do:\r\n```\r\nrx.el.div(something=rx.icon(...))\r\n```\r\n\r\nThe icon would be interpreted as style value. That used to raise a runtime error, now it happens at compile time.\r\n\r\n* ENG-7583: check against base component for style by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5795\r\n\r\n### `console.error` now correctly point to stderr\r\n\r\nPreviously things like backend exceptions and frontend exceptions wouldn't go to stderr. This is now fixed.\r\n\r\n* ENG-7619: make console errors go to stderr by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5789\r\n\r\n### Background event vars would reconnect to frontend after period of disconnectivity\r\n\r\n* Reassociate sid and token when connecting websocket by @masenf in https://github.com/reflex-dev/reflex/pull/5794\r\n\r\n### Doing foreach over a null that is mistakenly typed as a list or an object will not result in a runtime error (would be just an empty list)\r\n\r\n* avoid runtime errors on iterating over non-array by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5796\r\n\r\n### Env vars properly update from `REFLEX_ENV_FILE` with Granian\r\n\r\n* use _load_dotenv_from_env on reload for granian by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5798\r\n\r\n## Chores\r\n\r\n* 0812dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5792\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.11...release/reflex-0.8.12",
      "created_at": "2025-09-18T18:50:14Z",
      "updated_at": "2025-09-22T22:56:00Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ah_Ku",
      "number": 5797,
      "title": "Custom shell commands",
      "body": "I am looking for a way to write shell commands that have access to the application's context (e.g its configuration, models, etc).\r\nFor example, a script that seeds the database and can be launched on-demand, from the terminal.\r\nThanks",
      "created_at": "2025-09-17T06:11:56Z",
      "updated_at": "2025-09-17T06:11:56Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "neilsf",
        "avatar_url": "https://avatars.githubusercontent.com/u/5172851?u=8b84ad173ade7b95fd6e83886f2b165e27bc7fc6&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ah53j",
      "number": 5788,
      "title": "v0.8.11 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.11a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-09-12 13:00 PDT: 0.8.11a1 pre-release published for testing\r\n2025-09-15: Planned Public release of 0.8.11\r\n\r\n# Release Notes\r\n\r\n## Support `EventHandler` in `rx.PropsBase`\r\n\r\n* PropsBase converts EventHandler-annotated props to EventChain by @masenf in https://github.com/reflex-dev/reflex/pull/5765\r\n\r\n## Bugfixes\r\n\r\n* preserve prop names to some degree with memo by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5777\r\n* handle var for clear selected files by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5784\r\n* Fixing `code_tag_props` in `rx.code_block` by @riebecj in https://github.com/reflex-dev/reflex/pull/5779\r\n\r\n## Chores\r\n\r\n* 0811dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5775\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.10...release/reflex-0.8.11",
      "created_at": "2025-09-12T20:07:05Z",
      "updated_at": "2025-09-15T17:58:43Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ah2U_",
      "number": 5774,
      "title": "Create a cross-platform, native, webview-based GUI using Rust and pure Python asyncio.",
      "body": "# PyOrion\r\n\r\nHello everyone 👋  \r\nI’m posting this here because maybe you’re interested in trying it out or even contributing.  \r\n\r\nI’ve developed [PyOrion](https://github.com/pyorionfoundation) – a framework that enables Python developers to build **fully asynchronous, native, web-based GUIs**.  \r\nThe idea was born because existing solutions like *pywebview*, *PySide/Qt*, or *wxWidgets* always run into the same problem:  \r\nthe GUI event loop blocks the Python main thread or makes asynchronous programming unnecessarily complicated.  \r\n\r\nSo I took a different approach:  \r\nThe GUI loop runs entirely in a separate **Rust process**, while communication with Python happens **asynchronously** via Unix Domain Sockets or Named Pipes.  \r\nThis allows us to leverage the system’s native WebView engines – with no separate servers, no blocking, and true cross-platform support.  \r\n\r\n---\r\n\r\n## 🚨 The Problem with Existing Solutions\r\n\r\n- **pywebview**  \r\n  - Uses native WebViews, but runs the event loop in the same process as Python.  \r\n  - Result: The Python main thread is blocked.  \r\n  - Asynchronous workflows are possible, **but only through queues or callbacks** → messy and hard to maintain.  \r\n\r\n- **PySide / Qt**  \r\n  - Powerful, but **heavyweight**: huge runtimes, complex dependencies.  \r\n  - Async support only via hacks or threading.  \r\n\r\n- **wxWidgets / Tkinter**  \r\n  - Outdated, minimal web support, blocking event loops.  \r\n\r\n**Core Issue:**  \r\nAll these frameworks tightly couple the GUI loop to the Python main thread → blocking Python’s modern async world (`asyncio`, FastAPI, etc.).  \r\n\r\n---\r\n\r\n## ✅ My Approach: PyOrion\r\n\r\n- **Multiprocessing with Rust**  \r\n  The GUI is built using [pyo3](https://github.com/PyO3/pyo3) and the [Tauri Toolkit](https://tauri.app/), running in its own **Rust process**.  \r\n  Each process has its own main thread → the event loop runs system-conformant, without blocking Python.  \r\n\r\n- **Native WebView Engine**  \r\n  - macOS → WKWebView  \r\n  - Windows → WebView2  \r\n  - Linux → WebKitGTK  \r\n  - Android → System WebView  \r\n  → **No additional HTTP or WebSocket server required.**  \r\n\r\n- **Asynchronous Communication**  \r\n  - Currently implemented with a **WebSocket bridge**.  \r\n  - Soon to be replaced with **wry’s `ipc_handler`** → more direct, higher performance, no script injection overhead.  \r\n\r\n- **Cross-Platform Uniformity**  \r\n  macOS, Linux, Windows, Android, iOS → the same architecture everywhere:  \r\n  Rust handles the GUI event loop, Python stays 100% async.  \r\n\r\n---\r\n\r\n## ⚙️ Architecture Overview\r\n\r\n- **Startup Phase**  \r\n  Python launches the Rust process and passes initial configuration (window, options, ports).  \r\n\r\n- **IPC Layer**  \r\n  Bidirectional communication between Python and Rust.  \r\n  - Windows → Named Pipes  \r\n  - Unix → UDS file descriptors  \r\n  Deeply integrated with Rust’s GUI event loop.  \r\n\r\n- **Script Injection**  \r\n  At startup, Rust injects a small script into the WebView (JS) to provide the PyOrion API.  \r\n\r\n- **WebView Runtime**  \r\n  - Window management: [TAO](https://github.com/tauri-apps/tao)  \r\n  - WebView rendering: [WRY](https://github.com/tauri-apps/wry)  \r\n  - Unified access to WKWebView, WebView2, WebKitGTK, Android WebView.  \r\n\r\n---\r\n\r\n## 📚 API Reference\r\n\r\n### `WindowBuilder` Methods\r\nUsed to configure and initialize a window.  \r\n\r\n- `with_always_on_bottom()`  \r\n- `with_always_on_top()`  \r\n- `with_closable()`  \r\n- `with_content_protection()`  \r\n- `with_decorations()`  \r\n- `with_focused()`  \r\n- `with_fullscreen()`  \r\n- `with_inner_size()`  \r\n- `with_inner_size_constraints()`  \r\n- `with_max_inner_size()`  \r\n- `with_maximizable()`  \r\n- `with_maximized()`  \r\n- `with_min_inner_size()`  \r\n- `with_minimizable()`  \r\n- `with_position()`  \r\n- `with_resizable()`  \r\n- `with_theme()`  \r\n- `with_title()`  \r\n- `with_transparent()`  \r\n- `with_visible()`  \r\n- `with_visible_on_all_workspaces()`  \r\n- `with_window_icon()`  \r\n\r\n### `Window` Methods\r\nRuntime operations for window instances (controllable via IPC).  \r\n\r\n- `available_monitors()`  \r\n- `current_monitor()`  \r\n- `cursor_position()`  \r\n- `drag_resize_window()`  \r\n- `drag_window()`  \r\n- `fullscreen()`  \r\n- `id()`  \r\n- `inner_position()`  \r\n- `inner_size()`  \r\n- `is_closable()`  \r\n- `is_decorated()`  \r\n- `is_focused()`  \r\n- `is_maximizable()`  \r\n- `is_maximized()`  \r\n- `is_minimizable()`  \r\n- `is_minimized()`  \r\n- `is_resizable()`  \r\n- `is_visible()`  \r\n- `monitor_from_point()`  \r\n- `outer_position()`  \r\n- `outer_size()`  \r\n- `primary_monitor()`  \r\n- `request_redraw()`  \r\n- `request_user_attention()`  \r\n- `scale_factor()`  \r\n- `set_*()` methods (e.g. `set_title`, `set_resizable`, `set_visible`, …)  \r\n- `theme()`  \r\n- `title()`  \r\n\r\n### `WebViewBuilder` Methods\r\nUsed to configure and initialize a WebView.  \r\n\r\n- `with_accept_first_mouse()`  \r\n- `with_asynchronous_custom_protocol()`  \r\n- `with_autoplay()`  \r\n- `with_back_forward_navigation_gestures()`  \r\n- `with_background_color()`  \r\n- `with_bounds()`  \r\n- `with_clipboard()`  \r\n- `with_devtools()`  \r\n- `with_document_title_changed_handler()`  \r\n- `with_download_*_handler()`  \r\n- `with_drag_drop_handler()`  \r\n- `with_focused()`  \r\n- `with_headers()`  \r\n- `with_hotkeys_zoom()`  \r\n- `with_html()`  \r\n- `with_incognito()`  \r\n- `with_initialization_script()`  \r\n- `with_navigation_handler()`  \r\n- `with_new_window_req_handler()`  \r\n- `with_on_page_load_handler()`  \r\n- `with_proxy_config()`  \r\n- `with_transparent()`  \r\n- `with_url()`  \r\n- `with_user_agent()`  \r\n- `with_visible()`  \r\n- `with_web_context()`  \r\n\r\n### `WebView` Methods\r\nRuntime operations for WebViews.  \r\n\r\n- `bounds()`  \r\n- `clear_all_browsing_data()`  \r\n- `close_devtools()`  \r\n- `evaluate_script()`  \r\n- `focus()`  \r\n- `is_devtools_open()`  \r\n- `load_url()`  \r\n- `open_devtools()`  \r\n- `print()`  \r\n- `set_background_color()`  \r\n- `set_bounds()`  \r\n- `set_visible()`  \r\n- `url()`  \r\n- `zoom()`  \r\n\r\n### Native Capabilities\r\nPlanned or partially implemented extensions:  \r\n\r\n- `clipboard`  \r\n- `controlcenter`  \r\n- `dialog`  \r\n- `dirs`  \r\n- `webview`  \r\n- `window`  \r\n- `os_info`  \r\n- `tray-icon`  \r\n- `global-hotkey`  \r\n- `menu`  \r\n\r\n---\r\n\r\n## 🔗 Command System & JavaScript API\r\n\r\nInspired by **Tauri**:  \r\n\r\n- JavaScript can call Python commands via `window.invoke()`.  \r\n- Python can send events and commands to JS (and vice versa).  \r\n- Fully asynchronous, IPC-based, isolated from existing frameworks.  \r\n\r\n### Integration with Python Frameworks\r\nPyOrion can be **embedded into existing Python web frameworks**, e.g.:  \r\n- Reflex  \r\n- NiceGUI  \r\n- Rio  \r\n- NextPy  \r\n- Dara  \r\n- Streamlit  \r\n- Gradio  \r\n- Dash  \r\n- Workcell  \r\n\r\n### Example: JS → Python\r\n```javascript\r\nwindow.invoke(\"get_user\", { id: 42 }).then(user => {\r\n  console.log(\"User:\", user);\r\n});\r\n```\r\n\r\n```python\r\nfrom pyorion import command\r\n\r\n@command\r\nasync def get_user(id: int):\r\n    return {\"id\": id, \"name\": \"Alice\"}\r\n```\r\n\r\n---\r\n\r\n## 🔑 Key Features\r\n\r\n- 🚀 Ultra-lightweight  \r\n- 🖥 📱 Cross-Platform (macOS, Windows, Linux, Android, iOS)  \r\n- 🦀 Modern Core: Rust (TAO + WRY)  \r\n- 🔒 Security-focused  \r\n- ⚡ High Performance, small binaries  \r\n- 🔌 Native integrations  \r\n- 🔄 Async Command System (Tauri-style)  \r\n\r\n---\r\n\r\n## 🤝 Community & Support\r\n\r\n- ⭐ Star the project on GitHub  \r\n- 🐛 Report bugs or open issues  \r\n- 💡 Propose new features  \r\n- 🔧 Submit pull requests  \r\n- 📣 Share PyOrion with your network  \r\n\r\n---\r\n\r\n## 📜 Conclusion\r\n\r\nWhile frameworks like pywebview, Qt, or wxWidgets block Python or add unnecessary overhead, PyOrion takes a new approach:  \r\n- GUI loop in a separate process  \r\n- Async IPC (soon `ipc_handler` instead of WebSocket)  \r\n- Native WebView integration  \r\n- Command system for Python ↔ JavaScript communication (Tauri-inspired)  \r\n\r\nWith PyOrion, it’s finally possible to build **truly asynchronous, native, web-based GUIs in Python** – lightweight, modern, and cross-platform.  \r\n",
      "created_at": "2025-09-09T23:47:41Z",
      "updated_at": "2025-09-10T10:27:59Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "AriBermeki",
        "avatar_url": "https://avatars.githubusercontent.com/u/90009669?u=d92c732056c88a0af6009af308ec448264d1f50e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AhvvR",
      "number": 5766,
      "title": "v0.8.10 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.10a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-09-05 11:30 PDT: 0.8.10a1 pre-release published for testing\r\n2025-09-08: Planned Public release of 0.8.10\r\n\r\n# Release Notes\r\n\r\n## `rx.redirect` now takes `popup` option.\r\n\r\nWARNING: This also made it such that `is_external` and `replace` are keyword-only arguments.\r\n\r\nYou can use `popup` along with `is_external` to make a popup screen. Be wary that some browsers might block those (occasionally). \r\n\r\n* add popup option for redirect by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5764\r\n\r\n## Pass along SQL Alchemy Pool configuration\r\n\r\nYou can use the environment variables: `SQLALCHEMY_POOL_SIZE`, `SQLALCHEMY_MAX_OVERFLOW`, `SQLALCHEMY_POOL_RECYCLE`, and `SQLALCHEMY_POOL_TIMEOUT` to configure their corresponding pool configuration.\r\n\r\n* add sqlalchemy client pool configuration options via env vars by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/5751\r\n\r\n## Determinism Fixes\r\n\r\nThe Reflex compiler should ideally be deterministic. We fixed a few spots where it wasn't. This included switching from sets to dicts in a few places and fixing the seed for the random ID for components. This should ideally limit the number of unintended HMR errors. \r\n\r\n* improve determinism by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5755\r\n\r\n## Styles Fixes\r\n\r\nWith `--env prod`, some CSS styles might appear in the wrong order, causing weird styling. This is now fixed.\r\n\r\n* put reflexGlobalStyles before everything and add style to radix theme root by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5763\r\n\r\n## Chores\r\n\r\n* 0810dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5754\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.9...release/reflex-0.8.10",
      "created_at": "2025-09-05T18:40:00Z",
      "updated_at": "2025-09-10T00:22:55Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AhtlF",
      "number": 5758,
      "title": "OpenRun - Easy self-hosted deployment for multiple Reflex apps",
      "body": "Hey, I have been building an open source project [OpenRun](https://openrun.dev/) which aims to make it easier to self-host internal tools like Reflex apps. Just install and start openrun, make sure docker/podman is running and then run `openrun apply --approve --promote github.com/openrundev/openrun/examples/reflex.star`. This will install three reflex apps, each running in a separate container. OpenRun also supports full gitops based deployments. Let me know any feedback.\r\n",
      "created_at": "2025-09-03T20:30:42Z",
      "updated_at": "2025-09-03T20:30:43Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "ajaykidave",
        "avatar_url": "https://avatars.githubusercontent.com/u/283761?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ahs9h",
      "number": 5756,
      "title": "How to run multiple Reflex apps in parallel using subpaths?",
      "body": "I'm trying to figure out how I can run multiple Reflex apps on the same server using sub-paths (e.g. example.com/app1, example.comm/app2).\r\nI found that `rx.Config` has a parameter `frontend_path` which I guess is needed for this.  However, I cannot figure out, how to make it work.  For a quick test, I use an existing app that works as is.  When I add `frontend_path=\"/foo\"` to the config and start it locally with `reflex run`, it prints\r\n\r\n> App running at: http://localhost:3000/foo\r\n\r\nas I would expect.  However, when actually opening that URL, I just get an unformatted \"Not Found\".  So obviously, I'm missing something.\r\n\r\nUnfortunately, the documentation doesn't help either.  I vaguely remember that in the past there was a list of available config parameters somewhere, probably on https://reflex.dev/docs/api-reference/config/, but it seems to be gone...",
      "created_at": "2025-09-03T09:57:38Z",
      "updated_at": "2025-09-03T09:58:04Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "luator",
        "avatar_url": "https://avatars.githubusercontent.com/u/9333121?u=f7a8d727313fd0bf8d60fd3218e4fc44078a4742&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aho0V",
      "number": 5748,
      "title": "Reflex production environment - Question",
      "body": "Hi Everyone\r\n\r\nI'm in process of making my first reflex app into production mode and put it on my VPS running nginx. \r\nSo far after spending hours, no joy and and I cannot get the app running. \r\nI am running \"reflex run --env prod\" , which creates listeners on 3000 (frontend) and 8000 (backend),.\r\nI have added a \"api_url=\"http://codemydomain,com:8000\",  in rx.config.   and I have exposed port 8000 on server directly without nginx. \r\n\r\nI have created a reverse proxy on nginx to route https://codemydomain.com  -> http://127.0.0.1:3000 for frontend. \r\n\r\nProblem is when I access the https://codemydomain.com , the page is not rendering properly and I found that the browser is not connecting to the backend (http://codemydomain,com:8000)  , I foundout running wireshark on my laptop.\r\n\r\nHowever if I access the forntend directly without Nginx proxy (http://codemydomain,com:3000) , it works perfectly fine and I can see some request to port 8000 as well. \r\n\r\nMy question is what is the correct way to host Reflex in prod behind the Nginx?  \r\nShould I run reflex and allow it to serve on port 3000 ? \r\n\r\nThanks\r\nReza Toghraee\r\n",
      "created_at": "2025-08-30T15:03:54Z",
      "updated_at": "2025-08-31T07:30:43Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "toghraee",
        "avatar_url": "https://avatars.githubusercontent.com/u/2345127?u=60d3e09f39e1cf98617b6715ab51cfe672d13ca0&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ahofu",
      "number": 5747,
      "title": "v0.8.9 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.9a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-08-28 18:00 PDT: 0.8.9a1 pre-release published for testing\r\n2025-09-01: Planned Public release of 0.8.9\r\n\r\n# Release Notes\r\n\r\n## Deprecate `state_auto_setters` being defaulted to `True`.\r\n\r\nIn 0.9.0 this option will default to `False`. Set it to `True` if you want to use `set_` pattern, or implement setters explicitly.\r\n\r\n* deprecate state_auto_setters=True by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5739\r\n\r\n## Option to disable Vite's Hot-Module-Reload\r\n\r\nIn case you are getting \"No module update found for route\", you can force full page reload on updates by setting the environment variable `VITE_FORCE_FULL_RELOAD` to `1`. In case you want to disable the reload completely (so refreshing manually to update the page), you can set `VITE_HMR` to `0`.\r\n\r\n* add option to disable hmr by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5745\r\n\r\n## `ImportVar(tag=\"*\", is_default=True, alias='Alias`) works as expected now\r\n\r\nIt renders to:\r\n\r\n```js\r\nimport * as Alias from '...'\r\n```\r\n\r\n* handle star imports for alias by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5743\r\n\r\n## Wrap additional SVG elements.\r\n\r\nThose include: Polyline, SvgImage, Use, TSpan, TextPath, Pattern, ClipPath, Symbol, Mask, ForeignObject, SvgA, Animate, AnimateMotion, AnimateTransform, Set, MPath, Desc, Title, Metadata, Script, SvgStyle, Switch, View\r\n\r\n* add few missing svg elements by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5742\r\n\r\n## Performance optimizations\r\n\r\nSome cleanups in particularly offending functions. It doesn't affect most things but it does improve things by a bit.\r\n\r\n* optimize various functions by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5744\r\n\r\n## Serialize Memo components as Vars\r\n\r\nYou can use memo components as Vars of type=`type[Component]`.\r\n\r\n* allow memo components to be passed to props by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5178\r\n\r\n## Chores\r\n\r\n* 089dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5736\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.8...release/reflex-0.8.9",
      "created_at": "2025-08-29T23:44:49Z",
      "updated_at": "2025-09-02T20:34:33Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AhC8X",
      "number": 5655,
      "title": "Back button on dynamic content",
      "body": "Hello,\r\n\r\nI'm wondering if there's a way in Reflex to render content when hitting the back button through prior pages with entirely dynamic content.  For example, page A links to page B, and page B contains dynamic content including dynamic rx.links() to various downstream pages C, D, E, etc..  From those downstream pages, is it possible to hit the back button to get back to the dynamically created page B (and ultimately A)?  I don't mind re-rendering page B if necessary, not quite sure how to do it within Reflex.  Thank you!",
      "created_at": "2025-08-01T05:25:35Z",
      "updated_at": "2025-08-23T09:03:02Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "xtapodi1",
        "avatar_url": "https://avatars.githubusercontent.com/u/223995314?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgQod",
      "number": 5450,
      "title": "v0.8.0 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.0a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-06-15 22:10 PDT: 0.8.0a1 pre-release published for testing\r\n2025-06-17 18:30 PDT: 0.8.0a2 pre-release published for testing\r\n2025-06-18 13:35 PDT: 0.8.0a3 pre-release published for testing\r\n2025-06-19 15:45 PDT: 0.8.0a4 pre-release published for testing\r\n2025-06-25 09:50 PDT: 0.8.0a5\r\n2025-06-25 22:50 PDT 0.8.0a6\r\n2025-07-01 10:45 PDT 0.8.0a7\r\n2025-07-01: Planned Public release of 0.8.0\r\n\r\n## 0.8.0a7\r\n\r\n* use granian env_files option instead of reload hook by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5512\r\n* reload env file on hot reload in granian by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5510\r\n* detect if port is used on IPV6 by @Lendemor in https://github.com/reflex-dev/reflex/pull/5508\r\n* remove init requirement to figure out if the app exists by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5507\r\n\r\n## 0.8.0a6\r\n\r\n* add better error logs for when dill or pickle fail by @adhami3310 in #5502\r\n* Include default metas for char_set and viewport by @masenf in #5500\r\n* remove axios in favor of fetch by @adhami3310 in #5497\r\n* Read routes from _unevaluated_pages by @masenf in #5503\r\n* Import `useEffect` normally by @masenf in #5501\r\n* improve hot reload times in granian even more by @adhami3310 in #5499\r\n* bump frontend deps for 080 by @adhami3310 in #5496\r\n* remove psutil as a required dep (except in a windows) by @adhami3310 in #5498\r\n\r\n## 0.8.0a5\r\n\r\n* always send on load even on going on the link by @adhami3310 in #5469\r\n* Ensure __reflex_base CSS is declared first by @masenf in #5493\r\n* move dynamic plotly to react lazy syntax by @adhami3310 in #5492 \r\n* clean up random fields that aren't marked correctly as not javascript fields by @adhami3310 in #5484\r\n* bump click minimum dep by @adhami3310 in #5489\r\n* improve pyi generation to not output type ignores by @adhami3310 in #5487 \r\n* fix get_value and add unit tests by @Lendemor in #5485\r\n* bring back the \"route\" in router data by @adhami3310 in #5483\r\n* avoid side effects of checking app module existing by @adhami3310 in #5480\r\n* dedupe windowed libraries at the end by @adhami3310 in #5482\r\n\r\n## 0.8.0a4\r\n\r\n* stip env vars before interpreting them by @adhami3310 in #5470\r\n* fix default body style by @Lendemor in #5468\r\n* remix: ignore some changes in .web to reduce reloads by @masenf in #5473\r\n\r\n## 0.8.0a3\r\n\r\n* always install react helmet by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5466\r\n* rework poll for result by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5464\r\n* put __reflex_global_styles in a link by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5471\r\n\r\n## 0.8.0a2\r\n\r\n* ENG-6309: Remove on-demand prism code language loading by @masenf in https://github.com/reflex-dev/reflex/pull/5453\r\n* add tests for sitemap by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5451\r\n* fix HMR for RR by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5456\r\n* copy /route/index.html to /route.html by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5455\r\n* fix various unprefixed envs by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5457\r\n* docker-example: update .web/_static to .web/build/client by @masenf in https://github.com/reflex-dev/reflex/pull/5459\r\n* clean up next references by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5454\r\n* provide default value for theme context by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5461\r\n* do not export local stateful component by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5462\r\n* Sort initial state to avoid spurious changes to context.js by @masenf in https://github.com/reflex-dev/reflex/pull/5463\r\n* make run dev run react router dev instead of vite dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5460\r\n\r\n# Release Notes\r\n\r\n## REMOVED DEPRECATIONS\r\n\r\nThe following has been removed and was previously deprecated:\r\n\r\n* UploadFile.filename, deprecated in `0.7.1`. Use `UploadFile.name` instead (which strictly returns the file name with no slashes or such). To get the full path, use `UploadFile.path`.\r\n\r\n* App.error_boundary, deprecated in `0.7.1`. Use `App.app_wraps` (which has other app wraps as well, most likely you would like to provide those, as well as your different error wrap).\r\n\r\n* `App.api`, deprecated in `0.7.9`. Use `api_transformer=your_fastapi_app` instead. Read: https://reflex.dev/docs/api-routes/overview#api-transformer\r\n\r\n* `App.add_custom_404_page`, deprecated in `0.6.7`. Use add_page with `/404` route instead.\r\n\r\n* `Component.__init__`, deprecated in `0.7.2`. Now it only inits the component and doesn't call post init to add events and such.\r\n\r\n* **Non prefixed config env vars,** deprecated in `0.7.13`. Things like ENV_FILE now have to be passed explicitly as `REFLEX_ENV_FILE.\r\n\r\n* Gunicorn configuration env variables, deprecated in `0.7.9`. Removed: `timeout`, `gunicorn_worker_class`, `gunicorn_workers`, `gunicorn_max_requests`, `gunicorn_max_requests_jitter`. If you would like to customize those, I encourage you to either call gunicorn directly (reflex.App is a factory for ASGI apps), or do so using gunicorn environment variable flags.\r\n\r\n* Inferring TailwindV3, deprecated in `0.7.13`. We assume no Tailwind unless explicitly enabled through the plugins config.\r\n\r\n* `get_decorated_pages`, deprecated in `0.7.9`. If you need to use a similar function you most likely need to implement your own page registry.\r\n\r\n* `validate_parameter_literals`, deprecated in `0.7.11`. I don't think anyone but us used this function but it's nonetheless removed now.\r\n\r\n* `Var._var_name`, `Var._var_name_unwrapped`, `Var.create_safe`, and `Var._type`. All deprecated in various releases. All have better named equivalents.\r\n\r\nThis was done in this PR:\r\n\r\n* [0.8] remove a bunch of deprecation by @Lendemor in https://github.com/reflex-dev/reflex/pull/5422\r\n\r\n## [MAJOR REWRITE] Replace Next with React Router\r\n\r\nNextJS has served us well, but the needs of the framework has grown and we hit certain limits that made NextJS a suboptimal choice. To not go too long, compilation times and other factors have encouraged us to cut down on a big dependency that we barely use most of its features.\r\n\r\n* [0.8] [ENG-5825] remix over next by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4984\r\n\r\n### Breaking Changes\r\n\r\nTHIS MOST DEFINITELY HAS BREAKING CHANGES. Especially if you used something deeply attached to how JS works. During this prerelease we are going to triage regressions and fix them til they are at an acceptable state.\r\n\r\n* Static exports are now stored in `.web/build/client` (instead of `.web/_static`)\r\n\r\n## [REMOVED] reflex.suneditor\r\n\r\nWe have moved suneditor to its own package: https://github.com/reflex-dev/reflex-suneditor\r\n\r\n* deprecate suneditor by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5407\r\n\r\n* [0.8] remove a bunch of deprecation by @Lendemor in https://github.com/reflex-dev/reflex/pull/5422\r\n\r\n## [REMOVED] Experimental layout\r\n\r\nWe will be leaning more heavily into less in the core package (where less, is less opinionated UI).\r\n\r\n* remove experimental layout and clean up old experiments by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5392\r\n\r\n## [Major Rewrite] rx.State no longer inherits from Pydantic\r\n\r\nrx.State is now a simple python Class. Nothing that fancy. The changes were made to be backwards compatible but you can optionally use `rx.field(...)` (or `rx.field(default_factory=...)`) to define fields more explicitly.\r\n\r\n* [0.8] remove pydantic as a base class of state by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5396\r\n* fix missing value for mutable state field leading to shared field value by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5416\r\n\r\n## [BREAKING] rx.Component.get_event_triggers is now a classmethod\r\n\r\nWe still invoke it mostly from a self context, but you should port it to be a classmethod.\r\n\r\n* [0.8] get_event_triggers should be classmethod by @Lendemor in https://github.com/reflex-dev/reflex/pull/5344\r\n\r\n## [Major Rewrite] Remove Pydantic as a dependency of PropsBase\r\n\r\nYou can use it as before, it's just not a Pydantic class. (TODO: add code here about using component field)\r\n\r\n* remove pydantic dependency for PropsBase by @Lendemor in https://github.com/reflex-dev/reflex/pull/5384\r\n\r\n## Enable TailwindV4 by default\r\n\r\nNewly generated apps with reflex init will have the tailwindV4 plugin enabled by default instead of the v3 one.\r\n\r\n* tailwind v4 by default and other cleanups by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5435\r\n\r\n## Add earlier checks for wrong app names\r\n\r\nIf you had your name named wrong, now we check that a tad bit earlier in the compile process and with a more helpful message.\r\n\r\n* add a check if app_name is wrong in rxconfig by @Lendemor in https://github.com/reflex-dev/reflex/pull/5410\r\n\r\n## Additional Event Info\r\n\r\nNow you can use information about the pointer (the mouse thingy) in pointer events. (TODO: remind me to write an example here).\r\n\r\nAlso you could use on_scroll_end when.. the scroll ends! Unless you are in Safari, in which case you have to wait until they implement that :/\r\n\r\n* pass pointer info for on_click, on_double_click, and on_context_menu by @Lendemor in https://github.com/reflex-dev/reflex/pull/5391\r\n* add on_scroll_end event by @Lendemor in https://github.com/reflex-dev/reflex/pull/5401\r\n\r\n## Improved Error Messaging that contains Vars\r\n\r\nIf you noticed some weird \"rx__state__...\" names, those are backend vars JS output. Now we strip those form compilation errors and replace them with what you might expect as more normal names. (TODO, add concrete examples)\r\n\r\n* replace compiled state name with module and name in errors by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5381\r\n\r\n## Add suffix to user defined vars to avoid clash with JS keywords\r\n\r\nJavascript has a decent amount of keywords, and sometimes you might accidentally call your variable `package` and get a syntax error. This should solve this.\r\n\r\n* [0.8] don't use reserve words for variable names by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5251\r\n\r\n## Bugfixes\r\n\r\n* [ENG-2566] Fix accordion style without Tailwind by @masenf in https://github.com/reflex-dev/reflex/pull/5445\r\n* handle the reload directory better if there's __init__.py next to rxconfig.py by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5437\r\n* pin dynamic lucide icon by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5439\r\n* make windowed library into a list because of recompilation inconsistencies by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5436\r\n\r\n## Misc\r\n\r\n* add generic field to get_state in proxy by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5415\r\n\r\n## Chores\r\n\r\n* upgrade to 0715 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5379\r\n* simplify readme image by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5386\r\n* make args spec handle subclasses of vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5390\r\n* [OPS-355] highlight reflex build by @LineIndent in https://github.com/reflex-dev/reflex/pull/5347\r\n* bump deps by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5406\r\n* upgrade to 080 for future development by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5412\r\n* no sync after install for reflex-web by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5431\r\n* allow reuse of pyi_generator by parsing args by @Lendemor in https://github.com/reflex-dev/reflex/pull/5444\r\n* add -v for integration pytest by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5448\r\n* bump deps 080 one last time before prerelease by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5449\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.14...release/reflex-0.8.0",
      "created_at": "2025-06-16T06:02:28Z",
      "updated_at": "2025-08-22T07:22:43Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AheVp",
      "number": 5728,
      "title": "v0.8.8 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.8a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-08-21 16:20 PDT: 0.8.8a1 pre-release published for testing\r\n2025-08-25: Planned Public release of 0.8.8\r\n\r\n# Release Notes\r\n\r\n## Performance Optimizations\r\n\r\nWe replaced jinja2 with simpler fstring calls. This resulted in approximately 30% faster rendering step. We also optimized the import collections by ~15%.\r\n\r\n* Replace jinja with fstrings by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5720\r\n\r\n## Add more information to asyncio Tasks\r\n\r\nIf a task gets cancelled or such now Reflex will add a bit more information to what task that was.\r\n\r\n* Provide descriptive names for asyncio.Task by @masenf in https://github.com/reflex-dev/reflex/pull/5727\r\n\r\n## Chores\r\n\r\n* 088dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5719\r\n* improve literal handling in pyi generator by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5725\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.7...release/reflex-0.8.8",
      "created_at": "2025-08-21T23:32:10Z",
      "updated_at": "2025-08-25T22:12:04Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AhdHy",
      "number": 5723,
      "title": "Production Outage?",
      "body": "I've been getting this screen all day when I try to get to Reflex Cloud, even though I've tried...\r\nTested across multiple browsers (Chrome, Firefox, etc.) and devices\r\nIssue persists despite clearing cache/cookies\r\nScreenshot of the loading screen you shared\r\n\r\n\r\n<img width=\"813\" height=\"585\" alt=\"Picture1\" src=\"https://github.com/user-attachments/assets/9ab58efb-3507-43c6-b61b-b7e5ba0acae6\" />\r\n",
      "created_at": "2025-08-20T23:35:57Z",
      "updated_at": "2025-08-20T23:35:58Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "krpopkin",
        "avatar_url": "https://avatars.githubusercontent.com/u/13490767?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfnLw",
      "number": 5266,
      "title": "Rendering rx.upload inside rx.foreach",
      "body": "Is this possible? I'm running into a number of errors, the simplest of which is shown here: https://github.com/elliottsj/reflex-upload-bug\r\n\r\n```python\r\ndef index() -> rx.Component:\r\n    fields = [\r\n        \"field1\"\r\n    ]\r\n    return rx.foreach(\r\n        fields,\r\n        lambda field: rx.upload(\r\n            rx.text(\r\n                \"Drag and drop files here or click to select files\"\r\n            ),\r\n            id=\"upload\",\r\n        )\r\n    )\r\n```\r\n\r\nresult:\r\n\r\n![image](https://github.com/user-attachments/assets/05af90ca-19a6-45d9-8817-62fdc1f7060b)\r\n",
      "created_at": "2025-05-06T20:21:59Z",
      "updated_at": "2025-08-19T13:47:20Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "elliottsj",
        "avatar_url": "https://avatars.githubusercontent.com/u/2177366?u=429dc7634b452def28d1bda8a5b11983794a6404&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AhUFp",
      "number": 5716,
      "title": "v0.8.7 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.7a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-08-14 15:40 PDT: 0.8.7a1 pre-release published for testing\r\n2025-08-18: Planned Public release of 0.8.7\r\n\r\n# Release Notes\r\n\r\n## Bugfixes\r\n\r\n* add rx memo marker to memo fields by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5709\r\n* ENG-7314: Only check for valid app name once per config instance by @masenf in https://github.com/reflex-dev/reflex/pull/5710\r\n* use sirv with spa fallback by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5711\r\n* do not output plugin warning for sample rxconfig by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5715\r\n* fix various issues with frontend_path by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5698\r\n\r\n## Chores\r\n\r\n* add return type annotation to toaster by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5693\r\n* 087dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5704\r\n* Split prerequisites into smaller files by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5690\r\n* prod build for test icon and dynamic icon by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5697\r\n* type hint: handle generic sequence in Var.to by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5705\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.6...release/reflex-0.8.7",
      "created_at": "2025-08-14T22:44:53Z",
      "updated_at": "2025-08-18T19:44:41Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AhQ9w",
      "number": 5707,
      "title": "Google search engine unable to discover pages exported by reflex after recent reflex update (SEO)",
      "body": "I have simple personal blog containing static content built with reflex. My application is a simple frontend application (static files only) with no backend. The frontend asssets are served by Caddy.\r\n\r\nI am exporting my frontend static files in my dockerfile as follows:\r\n```dockerfile\r\n# Download other npm dependencies and compile frontend\r\nRUN REFLEX_API_URL=${REFLEX_API_URL:-http://localhost:$PORT} reflex export --loglevel debug --frontend-only --no-zip && mv .web/build/client/* /srv/ && rm -rf .web\r\n```\r\n\r\nPreviously (when reflex used next.js to build static assets), my blogs were discovered and indexed OK on google search. \r\nI have now realised that after a recent upgrade to the latest reflex version, and resubmitting my sitemap.xml, Google is unable to discover pages on the same website.\r\n\r\n<img width=\"1008\" height=\"437\" alt=\"image\" src=\"https://github.com/user-attachments/assets/b0186166-cabb-4470-b135-1bb59fdfbdd4\" />\r\n\r\n\r\nInterestingly, Bing Webmasters is able to discover pages the **on the same website, with the same sitemap** with no issues:\r\n\r\n<img width=\"1060\" height=\"533\" alt=\"image\" src=\"https://github.com/user-attachments/assets/5838796f-aa61-4f1e-a747-1e088a137a57\" />\r\n\r\n\r\nI have enabled sitemaps plugins in my rx.config file:\r\n```python\r\n\r\nconfig = rx.Config(\r\n    app_name=\"app\",\r\n    backend_port=8001,\r\n    frontend_port=3000,\r\n    # Do not change the loglevel from info. The build will fail!\r\n    loglevel=LogLevel.INFO,\r\n    db_url=None,\r\n    backend_host=\"127.0.0.1\",\r\n    plugins=[\r\n        rx.plugins.SitemapPlugin(),\r\n    ],\r\n)\r\n```\r\n\r\nI have also added sitemap context to my pages e.g:\r\n```python\r\n# app.page definition...\r\nroute=\"/blog\",\r\n    context={\"sitemap\": {\"changefreq\": \"weekly\", \"priority\": 0.6, \"lastmod\": LASTMOD}},\r\n)\r\n```\r\n\r\nHas anyone encountered this issue and how did they solve it? Any help or guidance will be appreciated.",
      "created_at": "2025-08-12T14:14:36Z",
      "updated_at": "2025-08-14T19:30:18Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "davidmuraya",
        "avatar_url": "https://avatars.githubusercontent.com/u/27237980?u=313bffd4fde24bc0b6b4055fc773802b3cf2523b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgS3M",
      "number": 5465,
      "title": "Reflex's codebase visualization.",
      "body": "Hey all,\r\n\r\nI have generated a visualization of the reflex codebase: https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/reflex/on_boarding.md\r\n\r\nMe and a friend are trying to build something which can help both maintainers and contributors with the \"on-boarding\"/\"get-to-know\" steps of a codebase. We belive that abstract component diagrams are the way to go, so that is what we generate with the help of static analysis and LLMs! We think that with such diagrams most of the contirbutors can get context on how the full codebase functions and then they can focus only on the component they are interested in.\r\n\r\nWould love to hear what do you think of diagram first documentation! Any feedback is more than welcome! We've also just introduced a free github action which can update the diagrams on every merge in main, so it is not a burdon for maintainers :)\r\n\r\nFull disclosure: we're trying to turn this into a startup, but we're still in a very early stage and figuring out what will actually be useful for people.\r\n\r\n",
      "created_at": "2025-06-18T01:05:50Z",
      "updated_at": "2025-08-29T22:52:29Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "ivanmilevtues",
        "avatar_url": "https://avatars.githubusercontent.com/u/10105224?u=9b948d573549fd98ccb5061b16b75380347a77af&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AhLzZ",
      "number": 5692,
      "title": "v0.8.6 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.6a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-08-07 12:00 PDT: 0.8.6a1 pre-release published for testing\r\n2025-08-11: Planned Public release of 0.8.6\r\n\r\n# Release Notes\r\n\r\n## Misc\r\n\r\n* add fill handle to dataeditor by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5673\r\n* add rx.PropsBase shortcut by @Lendemor in https://github.com/reflex-dev/reflex/pull/5682\r\n* Add SVG marker element support by @devin-ai-integration[bot] in https://github.com/reflex-dev/reflex/pull/5683\r\n* allow leak and block detection on handlers by @Lendemor in https://github.com/reflex-dev/reflex/pull/5620\r\n* extract env json into its own file by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5658\r\n* implement screenshot plugin by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5691\r\n\r\n## Bugfixes\r\n\r\n* fix: add missing size property to DynamicIcon class by @geekalaa in https://github.com/reflex-dev/reflex/pull/5665\r\n* fix duplicate tab issue by @Lendemor in https://github.com/reflex-dev/reflex/pull/4607\r\n* fix: propagate `frontend_path` to `base` in `vite.config.js` by @tartansandal in https://github.com/reflex-dev/reflex/pull/5677\r\n* ENG-6769: Fix module app.app not found during on_load by @masenf in https://github.com/reflex-dev/reflex/pull/5666\r\n* make parent if it doesn't exist for cached procedure by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5680\r\n* Fiex: ensure `cls.__dict__` compat w/ python3.14 by @xychelsea in https://github.com/reflex-dev/reflex/pull/5684\r\n* set background and color for error boundary by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5687\r\n* Close files after copying in upload_file by @maximvlah in https://github.com/reflex-dev/reflex/pull/5679\r\n\r\n## Chores\r\n\r\n* Fix grammatical error in README: correct 'Our DALL·E. app has an even… by @ramansrivastava in https://github.com/reflex-dev/reflex/pull/5661\r\n* chore: add a badge to the social network Twitter by @Olexandr88 in https://github.com/reflex-dev/reflex/pull/5678\r\n* 086dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5667\r\n* install only the shell for app harness by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5653\r\n* uv sync for pyleak by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5685\r\n\r\n## New Contributors\r\n* @ramansrivastava made their first contribution in https://github.com/reflex-dev/reflex/pull/5661\r\n* @geekalaa made their first contribution in https://github.com/reflex-dev/reflex/pull/5665\r\n* @Olexandr88 made their first contribution in https://github.com/reflex-dev/reflex/pull/5678\r\n* @xychelsea made their first contribution in https://github.com/reflex-dev/reflex/pull/5684\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.5...release/reflex-0.8.6",
      "created_at": "2025-08-07T19:17:23Z",
      "updated_at": "2025-08-11T17:49:46Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgyJW",
      "number": 5590,
      "title": "What happened to chat with reflex docs? This was a crucial component for developments thats been depreciated.",
      "body": "Inkeep search was a cool component for developments thats been depreciated. Can we get this back? ",
      "created_at": "2025-07-17T08:05:14Z",
      "updated_at": "2025-08-07T05:48:54Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "sumanth-dhanya",
        "avatar_url": "https://avatars.githubusercontent.com/u/86840115?u=377c741e5f7d00054344c9a9dcadedf45e770c87&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Agg4U",
      "number": 5520,
      "title": "Getting error in rx.foreach",
      "body": "im getting this error on my component with the skill bar function. the skill bar func is doing great without rx foreach's but when i put it in this code its getting me error \r\n\r\nCode :\r\ndef skills_section() -> rx.Component :\r\n    skillCats,skills = database.getSkills()\r\n    return rx.hstack(\r\n        rx.foreach(\r\n            skillCats,\r\n            lambda cat: section_card(\r\n                rx.flex(\r\n                    rx.flex(\r\n                        rx.icon(config.icons.get(cat), size=24, color=\"#0398F6\"),\r\n                        rx.heading(cat, size=\"6\", color=\"white\"),\r\n                        align_items=\"center\",\r\n                        gap=\"12px\",\r\n                        margin_bottom=\"24px\",\r\n                        justify=\"start\"\r\n                    ),\r\n                    #SkillBars...\r\n                    rx.fragment(\r\n                        rx.text(\"Hi\"),\r\n                        rx.foreach(\r\n                            skills.get(cat,[]),\r\n                            lambda sk: funcs.skill_bar(sk),\r\n                            ),\r\n                    )\r\n                ),\r\n                cat,\r\n                (State.hovered_section != \"\") & (State.hovered_section != cat),\r\n                \"medium\",\r\n                ),\r\n        ),\r\n        width=\"100%\",\r\n    )\r\n\r\n\r\n\r\n\r\nSkill Bar :\r\ndef skill_bar(skill) -> rx.Component: #[name,level,category]\r\n    return rx.box(\r\n        rx.flex(\r\n            rx.text(skill[0], color=\"#d1d5db\"),\r\n            rx.text(f\"{skill[1]}%\", color=\"#22d3ee\"),\r\n            justify=\"between\",\r\n            margin_bottom=\"8px\"\r\n        ),\r\n        rx.box(\r\n            rx.box(\r\n                width=f\"{skill[1]}%\",\r\n                height=\"8px\",\r\n                background=config.colors.get(\"programming\"),\r\n                border_radius=\"4px\",\r\n                transition=\"width 0.5s ease\"\r\n            ),\r\n            width=\"100%\",\r\n            height=\"8px\", \r\n            background=\"#374151\",\r\n            border_radius=\"4px\"\r\n        ),\r\n        margin_bottom=\"16px\"\r\n    )\r\n    \r\n    \r\n    \r\n\r\nerror :\r\n[Reflex Frontend Exception] Fragment_5330e272d2d3d3e0e197bedd59de6a62/<.children<.children<.children<.c hildren<.children<.children<@webpack-internal:///(pages-dir-browser)/./pages /index.js:756:73 Fragment_5330e272d2d3d3e0e197bedd59de6a62@webpack-internal:///(pages-dir-bro wser)/./pages/index.js:682:31 react-stack-bottom-frame@webpack-internal:///(pages-dir-browser)/./node_modu les/react-dom/cjs/react-dom-client.development.js:22429:20 renderWithHooks@webpack-internal:///(pages-dir-browser)/./node_modules/react -dom/cjs/react-dom-client.development.js:5758:40 updateFunctionComponent@webpack-internal:///(pages-dir-browser)/./node_modul es/react-dom/cjs/react-dom-client.development.js:8019:19 beginWork@webpack-internal:///(pages-dir-browser)/./node_modules/react-dom/c js/react-dom-client.development.js:9684:18 runWithFiberInDEV@webpack-internal:///(pages-dir-browser)/./node_modules/rea ct-dom/cjs/react-dom-client.development.js:544:16 performUnitOfWork@webpack-internal:///(pages-dir-browser)/./node_modules/rea ct-dom/cjs/react-dom-client.development.js:15045:22 workLoopSync@webpack-internal:///(pages-dir-browser)/./node_modules/react-do m/cjs/react-dom-client.development.js:14871:58 renderRootSync@webpack-internal:///(pages-dir-browser)/./node_modules/react- dom/cjs/react-dom-client.development.js:14851:11 performWorkOnRoot@webpack-internal:///(pages-dir-browser)/./node_modules/rea ct-dom/cjs/react-dom-client.development.js:14385:44 performWorkOnRootViaSchedulerTask@webpack-internal:///(pages-dir-browser)/./ node_modules/react-dom/cjs/react-dom-client.development.js:15932:24 performWorkUntilDeadline@webpack-internal:///(pages-dir-browser)/./node_modu les/scheduler/cjs/scheduler.development.js:44:56",
      "created_at": "2025-07-02T16:18:50Z",
      "updated_at": "2025-08-05T05:01:07Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "xFarzin",
        "avatar_url": "https://avatars.githubusercontent.com/u/172286003?u=216e74b0ca7c718b39bf4de9bcb0a84ab6cc7a0b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AhCuA",
      "number": 5654,
      "title": "v0.8.5 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.5a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-07-31 12:00 PDT: 0.8.5a1 pre-release published for testing\r\n2025-08-01 12:50 PDT: 0.8.5a2 pre-release\r\n2025-08-04: Planned Public release of 0.8.5\r\n\r\n## 0.8.5a2\r\n\r\n* update template links by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5652\r\n* fix prevent AutoScroll hook name collision with unique ID by @ruhz3 in https://github.com/reflex-dev/reflex/pull/5650\r\n* get the running loop to compile async state by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5657\r\n\r\n# Release Notes\r\n\r\n## More accurate progress tracking\r\n\r\nWhen compiling a large app, we weren't incrementing the counter for some time-consuming tasks. Like collecting imports and stateful-izing components. Now we do, so the progress bar is a more accurate estimate of how much progress has been made.\r\n\r\n* add progrss for imports and statefulizing by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5646\r\n\r\n## Remove `autofocus` (not `auto_focus`)\r\n\r\n`autofocus` is an old guy we had and it wasn't working. Now we only have the HTML/React field `auto_focus`.\r\n\r\n* remove autofocus by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5644\r\n\r\n## Make `Tag` immutable\r\n\r\nIf you happened to have overwrote `_render` or such, you might be familiar with `Tag`. We modified it to be immutable as we have been the victims of misusing its mutability. Review your code that involves `_render` or `render`.\r\n\r\n* make tag immutable by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5641\r\n\r\n## Bugfixes\r\n\r\n* fix httpx client mount verify setting #5632 by @ruhz3 in https://github.com/reflex-dev/reflex/pull/5635\r\n* prevent tag special props from being a shared mutable reference by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5640\r\n* move address family socket creation to inside of try catch by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5637\r\n* completely remove vite in favor of rolldown-vite by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5645\r\n\r\n## Chores\r\n\r\n* fix reflex-web ci by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5642\r\n* upgrade 085dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5639\r\n\r\n## Cleanups\r\n\r\n* do not force import event and page by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5559\r\n* simplify error handling for first compile by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5628\r\n* move on submit form spec to event.py by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5638\r\n* delete unused html props by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5643\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.4...release/reflex-0.8.5",
      "created_at": "2025-07-31T21:38:32Z",
      "updated_at": "2025-08-04T20:21:26Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AhB8E",
      "number": 5649,
      "title": "Background event NameError: name 'app' is not defined",
      "body": "Hi,\r\n\r\nI got a NameError: name 'app' is not defined from this line \r\n` if (self.router.session.client_token not in app.event_namespace.token_to_sid):`\r\n\r\nI followed the sample code from https://reflex.dev/docs/events/background-events#terminating-background-tasks-on-page-close-or-navigation\r\n\r\nThe difference is that the class State is in a separate file. If I put the class State in the same file as the app.py where the app = rx.App() is defined, it works as expected.\r\n\r\nAnyone seen this error and how to solve it?\r\n\r\nThanks\r\n\r\n--Guang\r\n\r\n\r\n",
      "created_at": "2025-07-31T05:15:05Z",
      "updated_at": "2025-08-01T14:48:23Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4A1Nvl",
        "body": "@gwsu2008 to give you an actual answer to your question.\r\n\r\nThere are two ways to get the `app` reference without circular import issues.\r\n\r\n1. Perform the `from myapp import app` _inside_ the body of the background event function itself. This will delay the import, allowing the module to be fully initialized before you try to get a reference to it.\r\n2. Use `from reflex.utils.prerequisites import get_app`. Then `get_app().app.event_namespace` (note this will be `None` if the app is not running)."
      },
      "user": {
        "login": "gwsu2008",
        "avatar_url": "https://avatars.githubusercontent.com/u/11874389?u=61a86d160cb1c1016c45d5fbed39d68577678585&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ag7KE",
      "number": 5625,
      "title": "Can the rx and rxe of reflex be used together on the same page?",
      "body": "Can the rx and rxe of reflex be used together on the same page?\r\n我正在学习Reflex，如何在rx的index页面里，添加一个Tree（是rxe的部件），rx和rxe 能一块用在同一个页面里吗？",
      "created_at": "2025-07-25T03:41:33Z",
      "updated_at": "2025-07-25T06:22:33Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "hechunji",
        "avatar_url": "https://avatars.githubusercontent.com/u/124767962?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ag7Eo",
      "number": 5622,
      "title": "v0.8.4 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.4a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-07-24 17:30 PDT: 0.8.4a1 pre-release published for testing\r\n2025-07-28: Planned Public release of 0.8.4\r\n\r\n# Release Notes\r\n\r\n## Add `query_parameters` to `router.url`\r\n\r\nIt should be similar to `router.page.query` and be its long-term replacement.\r\n\r\n* add origin and query parameters to router url by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5596\r\n\r\n## Bugfixes\r\n\r\n* Fix cookie JSON parsing by disabling automatic parsing (ENG-6818) by @devin-ai-integration[bot] in https://github.com/reflex-dev/reflex/pull/5616\r\n* check open ports for which address families we can bind to by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5621\r\n* snip source correctly for dep tracker by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5613\r\n* fix FOUC on refresh by @Lendemor in https://github.com/reflex-dev/reflex/pull/5608\r\n\r\n## Chores\r\n\r\n* clean up app._compile by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5599\r\n* 4dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5611\r\n* move httpx imports to function scope by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5612\r\n* [ENG-6830] add timestamps to debug logs by @masenf in https://github.com/reflex-dev/reflex/pull/5618\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.3...release/reflex-0.8.4",
      "created_at": "2025-07-25T00:42:15Z",
      "updated_at": "2025-07-28T21:28:18Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ag1TL",
      "number": 5605,
      "title": "Reverse Compiler",
      "body": "Good day! Previously, there was an opportunity to convert html elements into reflex code using Reverse Compiler, now this opportunity is gone, do you plan to bring it back?\r\nFor me, this was a very important feature because I could generate the elements I needed in deepsite and use them in my reflex application",
      "created_at": "2025-07-20T11:14:22Z",
      "updated_at": "2025-07-21T21:26:39Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "dreikk91",
        "avatar_url": "https://avatars.githubusercontent.com/u/7241729?u=becff687a33fdf928dbe32a518ce68cf6305fd74&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Agyx8",
      "number": 5593,
      "title": "v0.8.3 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.3a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-07-17 13:30 PDT: 0.8.3a1 pre-release published for testing\r\n2025-07-18 10:25 PDT: 0.8.3a2 pre-release\r\n2025-07-21: Planned Public release of 0.8.3\r\n\r\n## 0.8.3a2\r\n\r\n* add uv required version by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5595\r\n* remove timeout and simplify wait for server by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5594\r\n\r\n# Release Notes\r\n\r\n## Disable stateless app detection\r\n\r\nIf you have a stateless app, now you need to explicitly set `rx.App(enable_state=False)` for it to be truly stateless.\r\n\r\n* disable stateful app detection by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5583\r\n\r\n## `reflex db status`\r\n\r\nA helpful command to visualize your migrations!\r\n\r\n* Add db status command by @Lendemor in https://github.com/reflex-dev/reflex/pull/5560\r\n\r\n## Add `rx.el.figure`\r\n\r\nI'm not sure why it was missing, but better late than never. https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/figure\r\n\r\n* Add missing rx.el.figure HTML element by @devin-ai-integration[bot] in https://github.com/reflex-dev/reflex/pull/5575\r\n\r\n## AppHarness rewrote to use a separate process.\r\n\r\nThis drops Uvicorn as a testing dependency.\r\n\r\n* Refactor AppHarness to use reflex run subprocess instead of threads by @devin-ai-integration[bot] in https://github.com/reflex-dev/reflex/pull/5555\r\n\r\n## WindowEventListener\r\n\r\nYou can use `rx.window_event_listener` to add event handlers to the Window instance. For example:\r\n\r\n```python\r\nrx.window_event_listener(on_key_down=rx.console_log)\r\n```\r\n\r\nwould log key presses on the whole window. It also supports: `on_resize`, `on_scroll`, `on_focus`, `on_blur`, `on_visibility_change`, `on_before_unload`, `on_key_down`, `on_popstate`, and `on_storage`.\r\n\r\n* add window_event_listener by @Lendemor in https://github.com/reflex-dev/reflex/pull/5568\r\n\r\n## Default event action flags in `@rx.event`\r\n\r\n```python\r\nclass State(rx.State):\r\n    @event(throttle=500, stop_propagation=True)\r\n    def handle_with_defaults(self):\r\n        pass\r\n```\r\n\r\nIt supports `stop_propagation`, `prevent_default`, `throttle`, `debounce`, and `temporal`.\r\n\r\n* add event_action flags to rx.event decorator by @Lendemor in https://github.com/reflex-dev/reflex/pull/5574\r\n* fix docstring by @Lendemor in https://github.com/reflex-dev/reflex/pull/5592\r\n\r\n## Increase number of default workers in production\r\n\r\nYou can change the number of workers in production by setting the `GRANIAN_WORKERS`. If you don't, and you are using Redis, we set a higher value depending on the number of cores in your CPU.\r\n\r\n* increase number of workers from the default one by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5586\r\n\r\n## Add useful information to frontend exceptions\r\n\r\nPreviously they only had the stack, which was not very helpful. Now they include the type and the message.\r\n\r\n* add name and message to frontendend exception handler by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5585\r\n\r\n## Bugfixes\r\n\r\n* ENG-6695: Do not allow call_script EventSpec to accept callback after being called by @masenf in https://github.com/reflex-dev/reflex/pull/5571\r\n* fix attribute check for SQLAlchemy labeled column properties by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/5567\r\n* add message to why port is skipped by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5584\r\n* check input_type is a str before checking its type by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5587\r\n\r\n## Chores\r\n\r\n* bump to 083 for dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5572\r\n* modify the contributing guide a tad bit to use uv run python -m reflex.utils.pyi_generator by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5576\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.2...release/reflex-0.8.3",
      "created_at": "2025-07-17T20:52:10Z",
      "updated_at": "2025-07-21T21:26:14Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ARpya",
      "number": 26,
      "title": "What components do you want added next?",
      "body": "What components would you like to see added next? Let us know if we are missing any components that are blocking you from creating your ideal Pynecone app? ",
      "created_at": "2022-12-05T03:49:41Z",
      "updated_at": "2025-07-17T08:09:43Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgxJx",
      "number": 5577,
      "title": "Building public data research app for marketers in reflex?",
      "body": "Hi all, I wanted to get some quick feedback whether the reflex would be a good framework for me to use for this kind of app? \n\nIt's going to be an advertising Media assets and text as copy research and analysis app for paid advertisers and marketers, so very data heavy on the front end with thousands of marketing and ad assets like swipe files images videos and text copy with a lot of analysis Fields that marketers would find useful for marketing research. \n\nSeven views mostly data row sheet type tables with many columns and derived analysis fields using AG grid integration for advanced filtering and sorting and then one gallery cArd view focusing on highlighting the image and video assets in a visually appealing useful way.\n\nAs a marketer I'm using AI to try build it and it was highly recommended by ai for my use case against many other top frameworks as the final solution I should be using so I'm quite confident with choice but just wanted to make sure.\n\nUsing with supabase cloud who are the backend needs.\n\nIs the documentation comprehensive enough for AI to understand how to do what it needs to do I've tried to gather everything that I can to prepare and generated highly detailed planning documentations as well. \n\nI am just a bit nervous about how robust and flexible and polished and visually appealing the front end will be for a public facing saas? Can you set my mind at ease, I don't see many examples? \n\nAI seems to think that the framework after deep documentation analysis, has everything I need for a great looking but also useful UI however, along with AG grid. \n\nI do fully expect near the end to need some final help from a human of course but I need to get as far as I can with ai as I have no other choice.\n\nDo you have any recommendations or advice for me. Much appreciated👍",
      "created_at": "2025-07-16T08:55:56Z",
      "updated_at": "2025-07-16T08:55:57Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jay377",
        "avatar_url": "https://avatars.githubusercontent.com/u/89018342?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgsLI",
      "number": 5565,
      "title": "v0.8.2 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.2a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-07-11 13:25 PDT: 0.8.2a1 pre-release published for testing\r\n2025-07-14: Planned Public release of 0.8.2\r\n\r\n# Release Notes\r\n\r\n## Deprecated: `overlay_component`\r\n\r\n`rx.App.overlay_component` is deprecated. You can use `rx.App.extra_app_wraps` instead.\r\n\r\nFor example, if you had:\r\n\r\n```python\r\nrx.App(overlay_component=rx.box(rx.text(\"Overlay Component\")))\r\n```\r\n\r\nYou can instead do:\r\n\r\n```python\r\napp = rx.App(\r\n    extra_app_wraps={\r\n        (1, \"Overlay Component\"): lambda _: rx.box(rx.text(\"Overlay Component\"))\r\n    }\r\n)\r\n```\r\n\r\nThe `(1, \"Overlay Component\")` defines the nestedness and an ID of the Component. The higher the number the higher it is. For example, if ComponentA had nestedness of 1, and ComponentB had a nestedness of 2, then the output is going to be roughly:\r\n\r\n```jsx\r\n<ComponentB>\r\n  ...\r\n  <ComponentA>...</ComponentA>\r\n<ComponentB>\r\n```  \r\n\r\n* deprecate overlay_component by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5544\r\n\r\n## Get client ip from `X-FORWARDED-FOR` header if present\r\n\r\nIf you were running a your reflex app behind a proxy, this should improve the usefulness of this field.\r\n\r\n* Extract client_ip from x-forwarded-for header by @masenf in https://github.com/reflex-dev/reflex/pull/5547\r\n\r\n## Enable SitemapPlugin by default\r\n\r\nWe will enable SitemapPlugin by default for apps that do not specify them in the `plugins` field. If you want to explicitly enable it, add it to plugins:\r\n\r\n```py\r\nrx.Config(\r\n    ...,\r\n    plugins=[rx.plugins.sitemap.SitemapPlugin()],\r\n)\r\n```\r\n\r\nOr if you would like to disable it:\r\n\r\n```py\r\nrx.Config(\r\n    disable_plugins=[\r\n        \"reflex.plugins.sitemap.SitemapPlugin\",\r\n    ]\r\n)\r\n```\r\n\r\nThe `disable_plugins` takes a list of strings representing the fully qualified (module + class name) name of the plugins.\r\n\r\n* enable sitemap plugin by default by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5558\r\n\r\n## Frontend is public to network by default\r\n\r\nPreviously, the backend was exposed to local network (0.0.0.0) but frontend wasn't (127.0.0.1). Now frontend matches the backend. We will add an option to change this later (both frontend and backend).\r\n\r\n* add --host to react router by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5554\r\n\r\n## `rx.Config` is now a dataclass\r\n\r\nIf you were inheriting from rx.Config (for some reason?) you might want to update your code. This provides nicer type hints and might warn you about wrong fields.\r\n\r\n* move rx config away from pydantic by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5557\r\n\r\n## Misc\r\n\r\n* Remove rx.logo from blank template by @Lendemor in https://github.com/reflex-dev/reflex/pull/5552\r\n\r\n## Bugfixes\r\n\r\n* Add `property` prop to Base HTML <meta> tag by @masenf in https://github.com/reflex-dev/reflex/pull/5548\r\n* check port with bind over connect_ex by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5564\r\n\r\n## Chores\r\n\r\n* upgrade to 082dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5543\r\n* bump rolldown-vite and bun by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5563\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.1...release/reflex-0.8.2",
      "created_at": "2025-07-11T21:01:39Z",
      "updated_at": "2025-07-14T20:43:45Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgoV2",
      "number": 5546,
      "title": "Feedback/ need help in self hosting - docker - kubernetes",
      "body": "\n\n\nI'm trying to deploy both frontend and backend in a kuberenetes setup( bare metal - on prem) , \nI faced the error \"OSError - Address family not supported by protocol\" because it was thinking i gave an IPv6 address but it was just http ingress url of backend deployment pod.\u000bI had a very hard time finding/modifying the api_url in rx.config as per documentation, setting it with IP address of machine or the hostname where the service needs to run, i somehow got it fixed by using kubernetes way of accessing pods via service host name like deployment-svc.namespace.cluster.local:port\n\nNow got this running fine and exposed the backend ingress to a url lets say \"my-app-backend.example.com\" and what irks me i have to put this again in api_url in the frontend docker build stage and change it back to deployment-svc.namespace.cluster.local:port while doing backend docker build stage\n\nI tried putting an env variable API_URL while building docker for frontend but it does not take from env. I find this integration tedious for self hosted setup. Am i missing anything here. \u000b\u000bThank you.\n\nUpdate:\nOnly thing that works is to leave the default - rx.config untouched except app name rx.Config(app_name=\"myapp\", api_url=\"http://localhost:8000\")\nAnd use env variable REFLEX_API_URL=https://yoursite.example.com\n\nLooks like documentation needs change.\n",
      "created_at": "2025-07-08T10:17:15Z",
      "updated_at": "2025-07-09T18:33:25Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jayadattasai",
        "avatar_url": "https://avatars.githubusercontent.com/u/8581281?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgiLD",
      "number": 5533,
      "title": "v0.8.1 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.8.1a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-07-03 17:00 PDT: 0.8.1a1 pre-release published for testing\r\n2025-07-07: Planned Public release of 0.8.1\r\n\r\n## v0.8.1a2\r\n\r\n* use jsx for root by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5535\r\n* add error handling for port process check by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5540\r\n* remove keyframes as template string and inline it by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5541\r\n\r\n# Release Notes\r\n\r\n## `router.url`\r\n\r\nIf you just want the url of the page the user is on, then `rx.State.router.url` is what you need. It's very similar to urllib.parse `url`, so you can do `host`, `port`, and whatnot. The plan is to move away from `router.page`.\r\n\r\n* add url and route_id to routerdata as a replacement for pagedata by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5516\r\n\r\n## Blur focus\r\n\r\nDo you want to de-focus an element? You can use `rx.event.blur_focus`\r\n\r\n* If we have `set_focus()` we need `blur_focus()`. by @riebecj in https://github.com/reflex-dev/reflex/pull/5522\r\n\r\n## Load plugins from environ\r\n\r\nIf you need to override plugins through an environment variable, now you can do so.\r\n\r\n```properties\r\nREFLEX_PLUGINS=reflex.plugins.tailwind_v3.TailwindV3Plugin\r\n```\r\n\r\n* load plugins from env variable by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5524\r\n\r\n## rx.el.a maps to react router link\r\n\r\nYou can still get the original through `rx.el.elements.a`.\r\n\r\n* ENG-6503: use react-router Link instead of rx.el.a by @masenf in https://github.com/reflex-dev/reflex/pull/5529\r\n\r\n## Bugfixes\r\n\r\n* fix gunicorn in prod mode by @Lendemor in https://github.com/reflex-dev/reflex/pull/5521\r\n* use deterministic hash for stateful component names by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5525\r\n* Limit scope of bun react-dom/server hack by @masenf in https://github.com/reflex-dev/reflex/pull/5532\r\n* only access .name for upload component by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5515\r\n\r\n## Chores\r\n\r\n* bump to 081 for dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5514\r\n\r\n## New Contributors\r\n* @riebecj made their first contribution in https://github.com/reflex-dev/reflex/pull/5522\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.8.0...release/reflex-0.8.1",
      "created_at": "2025-07-04T00:15:39Z",
      "updated_at": "2025-07-07T19:28:16Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AghJ-",
      "number": 5523,
      "title": "Reflex Cloud source ip address",
      "body": "I have a Reflex Cloud app that uses cloud hosted Mongodb (Atlas).  What source ip address (or subnet) should be used for the reflex app when configuring incoming IP address whitelist security rules for mongo?",
      "created_at": "2025-07-03T00:37:42Z",
      "updated_at": "2025-07-05T15:40:28Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "williamsdoug",
        "avatar_url": "https://avatars.githubusercontent.com/u/2381871?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AggYG",
      "number": 5518,
      "title": "Dynamically create cookies",
      "body": "Hello everyone! I'm loving Reflex. Awesome framework! Despite this, I cannot get my head around the cookies creation, well I got it partially. I'm using Reflex 0.7.14 as frontend.\r\nI've been able to create and update cookies but it looks like it only works if I create the cookie in advance in the state, something like this\r\n\r\n```\r\nclass SharedCookies(rx.State):\r\n    my_cookie: str = rx.Cookie(name=f\"{COOKIE_PREFIX}my_cookie\", same_site=\"strict\", max_age=28800, domain=get_domain_from_environment(), path=\"/\")\r\n\r\n    def add_my_cookie(self, shared_cookies: CustomCookieManager):\r\n        shared_cookies.set_cookie(self.my_cookie)\r\n\r\n    def update_client_shared_cookies(self, shared_cookies: CustomCookieManager):\r\n        self.my_cookie = rx.Cookie(shared_cookies.get_cookie(\"my_cookie\", True), max_age=28800, path=\"/\",\r\n                                         name=f\"{COOKIE_PREFIX}my_cookie\", same_site=\"strict\")\r\n```\r\n\r\nthe code above works. I have my cookie created/updated (CustomCookieManager is just a class to manage cookies in my code, the prefix is automatically added in the class and there is no Reflex code in it).\r\nSo far so good. The issue comes when I want to create a brand new cookie at runtime. A cookies that never existed before or better a list of cookies.\r\nI thought I could create an empty list in the state and add the cookies to that list, something like this:\r\n\r\n```\r\nclass SharedCookies(rx.State):\r\n    my_cookies: list = []\r\n\r\n\r\n    def update_client_shared_cookies(self, my_cookie_value: CustomCookieManager):\r\n        self.my_cookies.append(rx.Cookie(shared_cookies.get_cookie(\"my_cookie1\", True), max_age=28800, path=\"/\",\r\n                                         name=f\"{COOKIE_PREFIX}my_cookie\", same_site=\"strict\"))\r\n        self.my_cookies.append(rx.Cookie(shared_cookies.get_cookie(\"my_cookie2\", True), max_age=28800, path=\"/\",\r\n                                         name=f\"{COOKIE_PREFIX}my_cookie\", same_site=\"strict\"))\r\n```\r\n\r\nbut this does not create the new cookies. My assumption is that it is not possible because the state is compiled in javascript and adding dynamically and element means recompile the code. Is that true? Does it mean it is not possible in any way or there is a way?\r\nI've also noticed a similar behaviour when I tried to create a new state variable from within a state method like self.my_var = \"blabla\" having my_var not defined at all as attribute in the state class.\r\nMy case comes from the fact that sometimes cookies exceed the size limit. To deal with it I create the fist cookie containing info about how many pieces and I save the cookie split in multiple pieces which I rejoin when I need it.\r\nThe only solutions I found are either using reflex.LocalStorage o define in advance cookie pieces (in this last case, if the number of pieces is not enough it would be \"corrupted\")\r\n",
      "created_at": "2025-07-02T08:06:29Z",
      "updated_at": "2025-07-02T08:17:44Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "giacomochiarella",
        "avatar_url": "https://avatars.githubusercontent.com/u/91246441?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgUpF",
      "number": 5476,
      "title": "How to pass function props (like tileDisabled) in reflex-calendar?",
      "body": "Hi Reflex team! 👋\r\n\r\nI’m using the reflex-calendar component (which wraps react-calendar), and I’d like to request or understand how to properly implement two props from the original React library:\r\n\t•\ttileDisabled\r\n\t•\ttileClassName\r\n\r\nThese aren’t event handlers — they are props that expect JavaScript functions to be called on every tile render.\r\n\r\nIn Reflex, it’s easy to pass string-based functions to events (like on_change), but I’m not sure how to pass function props like tileDisabled so that the calendar component receives them as actual JS functions — not just strings.\r\n\r\nCould you guide me (or show how you’d implement this) in the reflex-calendar wrapper?\r\n\r\nThanks a lot! Loving the project 🙏\r\n",
      "created_at": "2025-06-19T16:10:04Z",
      "updated_at": "2025-06-30T09:32:27Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "GregorioHUN",
        "avatar_url": "https://avatars.githubusercontent.com/u/179618924?u=a20e99c9d58a33c9fe19dd37798173042e636189&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgWJT",
      "number": 5486,
      "title": "[Feature Request] Show index and enable styling in data table",
      "body": "With other frameworks (e.g., streamlit) it is possible to show pandas DataFrames with their style attributes, for example, to color the individual cells based on the values contained in them to highlight high or low values. \r\n\r\nThe `rx.data_table` unfortunately does not seem to support pandas Styler objects. One workaround is to use the pandas `to_html()` function and embed the html directly, however, then of course you're losing the ability to sort, pagination, etc. and the table looks quite ugly by default.\r\n\r\nCode example:\r\n```python\r\nfrom copy import deepcopy\r\n\r\nimport numpy as np\r\nimport pandas as pd\r\nimport reflex as rx\r\n\r\nclass Data(rx.State):\r\n    df: pd.DataFrame = pd.DataFrame(\r\n        np.random.randn(10, 5), columns=[f\"col_{i}\" for i in range(5)], index=[f\"idx_{i}\" for i in range(10)]\r\n    )\r\n    df_styled: str = deepcopy(df).style.format(precision=2).background_gradient(axis=0, cmap=\"coolwarm\").to_html()\r\n\r\ndef show_df():\r\n    return rx.vstack(\r\n        rx.data_table(\r\n            data=Data.df,\r\n            pagination=True,\r\n            search=True,\r\n            sort=True,\r\n        ),\r\n        rx.html(Data.df_styled),\r\n    )\r\n\r\napp = rx.App()\r\napp.add_page(show_df)\r\n```\r\n\r\nThis gives:\r\n<img width=\"1175\" alt=\"Screenshot 2025-06-21 at 16 15 06\" src=\"https://github.com/user-attachments/assets/aeab7bdb-e179-47fc-b2de-cd8ad150e514\" />\r\nIdeally, I'd want to use reflex's `data_table` but with the same styling as the html table below it.\r\n\r\nAdditionally, it would also be great if `data_table` would support showing the index of the dataframe, since sometimes this contains actual names instead of just row indices.",
      "created_at": "2025-06-21T14:17:54Z",
      "updated_at": "2025-06-30T05:11:30Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "cod3licious",
        "avatar_url": "https://avatars.githubusercontent.com/u/1093567?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgUSx",
      "number": 5475,
      "title": "When and how does the hydrated state var get changed?",
      "body": "The ```is_hydrated``` state var is very useful, but I want to know exactly when the var change its status. For example, if I have  an on_load eventhandler that is creating a kind of chain, how does ```is_hydrated``` behave in this condition?\r\n\r\nAny thoughts?",
      "created_at": "2025-06-19T09:13:58Z",
      "updated_at": "2025-06-19T09:13:59Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "jamesalphanome",
        "avatar_url": "https://avatars.githubusercontent.com/u/195094882?u=e3ce399bf5334c20c82bd8c06fde69b138c9ef96&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgT7p",
      "number": 5472,
      "title": "Unable to download files using rx.link(download=True) from /assets folder",
      "body": "Hi\r\nI'm building a simple page to list and download files from the `/assets` folder using `rx.link()` with the `download=True` option. The files are detected correctly and the links appear, but clicking the link does **not trigger any download**.\r\nHere's a simplified version of the code:\r\n\r\n```python\r\nimport reflex as rx\r\nfrom pathlib import Path\r\n\r\nASSETS_DIR = Path(\"assets\")\r\n\r\nclass State(rx.State):\r\n    files: list[dict] = []\r\n\r\n    def load_files(self):\r\n        if ASSETS_DIR.exists():\r\n            files = sorted(ASSETS_DIR.glob(\"*.*\"))\r\n            self.files = [{\"name\": f.name, \"path\": f\"/assets/{f.name}\"} for f in files]\r\n            print(f\"✅ Files found: {[f.name for f in files]}\")\r\n        else:\r\n            print(\"❌ The 'assets/' folder does not exist.\")\r\n            self.files = []\r\n\r\ndef index():\r\n    return rx.container(\r\n        rx.heading(\"File Download - MYPS\", size=\"4\", margin=\"1em\"),\r\n        rx.button(\r\n            \"🔄 Load files from /assets folder\",\r\n            on_click=State.load_files,\r\n            color_scheme=\"blue\",\r\n            margin_y=\"1em\"\r\n        ),\r\n        rx.box(\r\n            rx.foreach(\r\n                State.files,\r\n                lambda file: rx.link(\r\n                    file[\"name\"],\r\n                    href=file[\"path\"],\r\n                    is_external=True,\r\n                    download=True,\r\n                    color=\"green\",\r\n                    margin_y=\"0.5em\"\r\n                )\r\n            )\r\n        )\r\n    )\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\nBehavior:\r\nThe list of files loads successfully.\r\nClicking on a link does not download the file.\r\nThe files are correctly located under /assets/filename.ext and do exist on disk\r\nQuestion:\r\nIs there a special configuration required in Reflex to allow downloading static files from the /assets folder using rx.link(download=True)?\r\n\r\nThanks in advance for your help and for the great framework!",
      "created_at": "2025-06-18T23:05:27Z",
      "updated_at": "2025-06-18T23:05:28Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "juliodavilau",
        "avatar_url": "https://avatars.githubusercontent.com/u/24391336?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgSfA",
      "number": 5458,
      "title": "v0.7 upload issues",
      "body": "Hi,\r\nHas anyone else encountered an issue where in the latest version of reflex 0.7.14 (I think), if you use an upload handler such as \r\n```python\r\n@rx.event\r\n    async def handle_upload(self, upload_file: List[rx.app.UploadFile]):\r\n        ...\r\n```\r\nIt throws a type error saying it was expecting the upload_file to be of type Typing.Any, Then if you change it to Any, it will compile the website but when that function is called it will throw another type error saying it is expecting type List[rx.app.UploadFile]?\r\n\r\nI've solved this by reverting back to a previous version of reflex (I chose 0.6.8 arbitrary)\r\n",
      "created_at": "2025-06-17T16:32:24Z",
      "updated_at": "2025-06-17T16:33:25Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "96LAyers",
        "avatar_url": "https://avatars.githubusercontent.com/u/113474258?u=07efe9059ebb129970a1a28a166ca96446f32e9b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfTPi",
      "number": 5132,
      "title": "Issues with Azure AD Authentication in Reflex Deployed to Azure Container Apps",
      "body": "According to my company's policies, I am deploying a Reflex application running as a container in Azure Container Apps, exposing a single port to the internet.\r\n\r\nI’ve followed this guide for the setup:\r\n[https://azureossd.github.io/2024/08/24/Deploying-Reflex-Application-to-Azure-Container-Apps/](https://azureossd.github.io/2024/08/24/Deploying-Reflex-Application-to-Azure-Container-Apps/)\r\n\r\nHere’s my Dockerfile:\r\n\r\n```\r\n# This Dockerfile is used to deploy a single-container Reflex app instance\r\n# to services like Render, Railway, Heroku, GCP, and others.\r\n\r\n# It uses a reverse proxy to serve the frontend statically and proxy to backend\r\n# from a single exposed port, expecting TLS termination to be handled at the\r\n# edge by the given platform.\r\nFROM python:3.12\r\n\r\n# If the service expects a different port, provide it here (f.e Render expects port 10000)\r\nARG PORT=8080\r\n# Only set for local/direct access. When TLS is used, the API_URL is assumed to be the same as the frontend.\r\nARG API_URL\r\nENV PORT=$PORT API_URL=${API_URL:-http://localhost:$PORT} REDIS_URL=redis://localhost PYTHONUNBUFFERED=1\r\n\r\n# # Install odbc driver for SQL Server (debian) Microsoft ODBC 18\r\nRUN curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg\r\nRUN curl https://packages.microsoft.com/config/debian/12/prod.list | tee /etc/apt/sources.list.d/mssql-release.list\r\nRUN apt-get update\r\nRUN ACCEPT_EULA=Y apt-get install -y msodbcsql18\r\n\r\n# Install Caddy and redis server inside image\r\nRUN apt-get update -y && apt-get install -y caddy redis-server && rm -rf /var/lib/apt/lists/*\r\n\r\nWORKDIR /app\r\n\r\n# Copy local context to `/app` inside container (see .dockerignore)\r\nCOPY . .\r\n\r\n# Crear y activar un entorno virtual\r\nRUN python -m venv /app/venv\r\nENV PATH=\"/app/venv/bin:$PATH\"\r\n\r\n#Actualizar pip\r\nRUN pip install --upgrade pip\r\n\r\n# Install app requirements and reflex in the container\r\nRUN pip install -r requirements.txt\r\n\r\n# Deploy templates and prepare app\r\nRUN reflex init\r\n\r\n# Download all npm dependencies and compile frontend\r\nRUN reflex export --frontend-only --no-zip && mv .web/_static/* /srv/ && rm -rf .web\r\n\r\n# Needed until Reflex properly passes SIGTERM on backend.\r\nSTOPSIGNAL SIGKILL\r\n\r\nEXPOSE $PORT\r\n\r\n# Apply migrations before starting the backend.\r\n# CMD [ -d alembic ] && reflex db migrate; \\\r\n#     caddy start && \\\r\n#     redis-server --daemonize yes && \\\r\n#     exec reflex run --env prod --backend-only\r\nCMD [ -d alembic ] && reflex db migrate; \\\r\n    caddy start && \\\r\n    redis-server --daemonize yes && \\\r\n    exec reflex run --env prod --backend-only\r\n\r\n```\r\n\r\nMy Caddyfile before enabling authentication with Azure AD looked like this:\r\n\r\n```\r\n:{$PORT}\r\n\r\nencode gzip\r\n\r\n@backend_routes path /_event/* /ping /_upload /_upload/*\r\nhandle @backend_routes {\r\n        reverse_proxy localhost:8000\r\n}\r\n\r\nroot * /srv\r\nroute {\r\n        try_files {path} {path}/ /404.html\r\n        file_server\r\n}\r\n\r\n```\r\n\r\nAnd now, with authentication, it’s configured like this (observe the path to authentication pages):\r\n\r\n```\r\n:{$PORT}\r\n\r\nlog {\r\n    output file /app/caddy_access.log\r\n    format json\r\n}\r\n\r\nencode gzip\r\n\r\n@backend_routes path /_event/* /ping /_upload /_upload/* /auth/*\r\nhandle @backend_routes {\r\n        # Pasar cabeceras críticas para Azure AD/Autenticación\r\n        reverse_proxy localhost:8000 {\r\n                header_up X-Forwarded-For {remote_host}\r\n                header_up Host {host}\r\n                header_up Authorization {http.request.header.Authorization}\r\n        }\r\n}\r\n\r\nroot * /srv\r\nroute {\r\n        try_files {path} {path}/ /404.html\r\n        file_server\r\n}\r\n\r\n```\r\n\r\nEverything worked smoothly during the development phase. However, now that I’m in production, I’ve encountered an issue.\r\n\r\nI added Azure AD authentication to my Reflex app using this tutorial:\r\n[https://reflex.dev/blog/2024-11-19-microsoft-azure-authentication/](https://reflex.dev/blog/2024-11-19-microsoft-azure-authentication/)\r\n\r\nWhen running the app locally on my development machine, everything functions perfectly. Azure AD authentication works as expected.\r\n\r\nHowever, when I deploy the container to Azure Container Apps and try logging in, authentication fails.\r\n\r\nChecking Caddy’s logs, it seems to process the request and redirect correctly:\r\n\r\n```json\r\n{\r\n  \"level\": \"error\",\r\n  \"ts\": 1744721074.1756198,\r\n  \"logger\": \"http.log.access.log0\",\r\n  \"msg\": \"handled request\",\r\n  \"request\": {\r\n    \"remote_ip\": \"100.100.0.59\",\r\n    // ...\r\n    \"method\": \"GET\",\r\n    \"host\": \"xxxx.xxxx.northeurope.azurecontainerapps.io\",\r\n    \"uri\": \"/auth/callback?code=1.AXkAnz...&state=jQVBsdfssPWlcwrqknOX&session_state=003ee5a9...\",\r\n    // ...\r\n  },\r\n  \"user_id\": \"\",\r\n  \"duration\": 0.001894398,\r\n  \"size\": 22,\r\n  \"status\": 404,\r\n  \"resp_headers\": {\r\n    \"Date\": [\"Tue, 15 Apr 2025 12:44:33 GMT\"],\r\n    \"Server\": [\"Caddy\", \"uvicorn\"], // <-- Important!\r\n    \"Content-Length\": [\"22\"],\r\n    \"Content-Type\": [\"application/json\"]\r\n  }\r\n}\r\n```\r\n\r\nDespite this, I receive a 404 error, likely returned by Uvicorn, and it occurs very quickly.\r\n\r\nCan someone help me figure this out? Or at least point me in the direction of where the issue might be happening?\r\n\r\nCan anyone help me pinpoint the issue? Thanks in advance!",
      "created_at": "2025-04-15T13:14:40Z",
      "updated_at": "2025-06-17T07:26:25Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "RandomBrown",
        "avatar_url": "https://avatars.githubusercontent.com/u/22435302?u=7adf269af65bb604e74fae4e32f043bc8ead593d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgNNF",
      "number": 5434,
      "title": "`reflex run` exclude certain directories from watch",
      "body": "Hello, \r\n\r\nQuick quesiton please: how can I prevent that changes to files done inside a specific directory cause `reflex run` to hot-reload?\r\n\r\nThe files in such directory are not related to the reflex build, but they are nonetheless part of my overall project and thus they reside in the directory where `reflex run` is executed.\r\n\r\nI know that `uvicorn`, for example, has a feature `--reload-exclude TEXT` for preventing exactly this situation.\r\n\r\nThank you!\r\n",
      "created_at": "2025-06-11T16:43:59Z",
      "updated_at": "2025-06-11T16:47:08Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "fabiog1901",
        "avatar_url": "https://avatars.githubusercontent.com/u/3207827?u=829916b236b9b10b754615684a44df6a89a3b004&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgNF4",
      "number": 5433,
      "title": "It would be nice if there was a component that could select multiple items.",
      "body": "I suggest adding a multi-select component, as I think it's commonly used. Creating it now is very cumbersome.\r\nMaybe it likes this:\r\n![image](https://github.com/user-attachments/assets/20242485-e32e-41dd-9d94-bc6c6d522bd6)\r\n",
      "created_at": "2025-06-11T14:56:53Z",
      "updated_at": "2025-06-11T15:16:33Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "uuleejie-olo",
        "avatar_url": "https://avatars.githubusercontent.com/u/176785648?u=1e3fe5d2a801175d8814e93fbadffc395246e1c3&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgMpk",
      "number": 5432,
      "title": "Seeking full documentation for Reflex (Python) version 0.5.2",
      "body": "Hi everyone,\r\n\r\nI'm currently working on a project that depends on Reflex (Python) version 0.5.2, and I’m having trouble finding the official documentation for that specific version. The current reflex.dev site only shows the latest version, and I couldn’t locate an archive or changelog that covers 0.5.2 in detail.\r\n\r\nIf anyone has:\r\n\r\nA local copy of the docs (HTML, PDF, etc.)\r\nA link to an archived version of the site\r\nNotes or examples based on 0.5.2\r\n…I’d be incredibly grateful if you could share them!\r\n\r\nThanks in advance 🙏",
      "created_at": "2025-06-11T07:48:25Z",
      "updated_at": "2025-06-11T07:48:26Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "FaridCdev",
        "avatar_url": "https://avatars.githubusercontent.com/u/199260540?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgDak",
      "number": 5397,
      "title": "`reflex export` fails on clean repository as database is missing",
      "body": "Hello,\r\nI'm currently trying to get my application working with docker (following the [production-compose example](https://github.com/reflex-dev/reflex/tree/main/docker-example/production-compose)) and am struggling with an error during the export step.\r\n\r\nMy application is using an sqlite database.  When running `reflex export --frontend-only` on a clean repository (where the database is not created yet), it fails with an error coming from the reflex-local-auth plugin (reflex_local_auth/lo\r\ncal_auth.py, line 36), complaining that\r\n> no such table: localuser\r\n\r\nNow I assume this is not necessarily an issue of the reflex-local-auth plugin itself but more of how I use it in my code.  Probably I'm accessing some State data in a wrong way somewhere?  Can you give me a hint what I should be looking for and how I can avoid this error?",
      "created_at": "2025-06-02T08:21:22Z",
      "updated_at": "2025-06-10T09:00:39Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "luator",
        "avatar_url": "https://avatars.githubusercontent.com/u/9333121?u=f7a8d727313fd0bf8d60fd3218e4fc44078a4742&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgE7j",
      "number": 5409,
      "title": "How to get State-Vars with fastapi-middleware?",
      "body": "Hi!\r\n\r\ni have added a fastapi middleware to get some values:\r\n\r\n```python\r\nimport reflex as rx\r\n\r\nfrom rxconfig import config\r\n\r\nfrom fastapi import FastAPI, Depends\r\n\r\n\r\nfastapi_app = FastAPI(title=\"My API\")\r\n\r\n# Add routes to the FastAPI app\r\n@fastapi_app.get(\"/api/myvar\")\r\nasync def get_items():\r\n    return State._myvar\r\n    \r\nclass State(rx.State):\r\n    _myvar: str =\"inital\"\r\n    frontendvar: int = 0\r\n\r\n    def secondstage(self):\r\n        print(\"second\")\r\n        self._myvar=\"second\"\r\n\r\n    @rx.event\r\n    def button_handler(self):\r\n        self.frontendvar+=1\r\n        self.secondstage()\r\n\r\n\r\ndef index() -> rx.Component:\r\n    # Welcome Page (Index)\r\n    return rx.container(\r\n        rx.vstack(\r\n            rx.button(\"button\",\r\n                on_click=State.button_handler,\r\n            ),\r\n            rx.text(State.frontendvar),\r\n        ),\r\n    )\r\n\r\n\r\napp = rx.App(api_transformer=fastapi_app)\r\napp.add_page(index)\r\n```\r\n\r\nWhen i call my api, the value is always inital. Even it prints out \"second\" so this function is called.\r\n\r\nWhat am i missing? Is the \"State\" the right state?\r\n\r\n",
      "created_at": "2025-06-03T13:12:13Z",
      "updated_at": "2025-06-09T09:47:43Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "freisei",
        "avatar_url": "https://avatars.githubusercontent.com/u/19485191?u=8ab3c2d0f1207ba647548e48b1da7cf71d90d26c&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgKoB",
      "number": 5425,
      "title": "expose a localhost resource to the same domain of reflex",
      "body": "I am working on a project to create a web app running on a Raspberry PI. When users access the app, they will be able to play a live audio that  sampling from the microphone of Raspberry PI in real time.\r\n\r\nIn order to make such an app, I plan to use ffmpeg to create a live streaming from microphone. Then the live audio can be accessed by `http://localhost:8080/index.m3u8`. In order to use `reflex.Audio` to play this source, I need to have some backward proxy to forward the request of `http://my-reflex-app.domain/index.m3u8` to `http://localhost:8080`. \r\n\r\nI know that I can always put a proxy before both reflex and ffmpeg to solve the problem. But I am wondering if I can do this with only reflex?  ",
      "created_at": "2025-06-09T08:22:38Z",
      "updated_at": "2025-06-09T09:46:30Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "link89",
        "avatar_url": "https://avatars.githubusercontent.com/u/3314130?u=ae70a066d457a05195ac2cf4d938ceb69fb5f037&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgKgG",
      "number": 5424,
      "title": "We can't edit anything in rx.input when using on_blur ?",
      "body": "I found I can't edit anything when I use the on-blur event in the rx.input component. But I remember I could modify it in previous versions of Reflex. Is it expected behavior or just a bug? \r\n\r\nYou can see an example from the doc :https://reflex.dev/docs/api-reference/event-triggers/",
      "created_at": "2025-06-09T05:51:00Z",
      "updated_at": "2025-06-12T10:17:18Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "SeqCrafter",
        "avatar_url": "https://avatars.githubusercontent.com/u/43256809?u=52b0b3f08e7957cd369561263bacfb63e45921dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY4Gf",
      "number": 3103,
      "title": "Select component with search and create capability",
      "body": "Hi!\r\nI created a select component which allows the user to search for options and create new ones. It is called [Dynoselect](https://github.com/woernerm/dynoselect):\r\n\r\n\r\n![demo](https://github.com/reflex-dev/reflex/assets/61889355/f52ebe5b-728b-4761-819c-53e97ebc2919)\r\n\r\nYou can install it using:\r\n```py\r\npip install reflex-dynoselect\r\n```\r\nEnjoy! :)",
      "created_at": "2024-04-17T20:46:15Z",
      "updated_at": "2025-06-06T07:17:04Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "woernerm",
        "avatar_url": "https://avatars.githubusercontent.com/u/61889355?u=382c76cc7299ebf4fffa7295344bcae9761c49f8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgCN_",
      "number": 5393,
      "title": "Reflex CLI hangs during login",
      "body": "Running `reflex login` just hangs. It opens `https://control-plane.reflex.run` in the browser, but the site says: **The control is now gone try our new cloud here! Go to Reflex Cloud**. I click that, am taken to the new site, but back in the terminal it just hangs at `⠴ Waiting for access token ...`. I am not sure what to do.\r\n\r\n",
      "created_at": "2025-05-31T22:58:50Z",
      "updated_at": "2025-06-06T02:27:09Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "pdxbmw",
        "avatar_url": "https://avatars.githubusercontent.com/u/2008050?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgDg4",
      "number": 5399,
      "title": "Why does the database end up in /app/data in the \"production-compose\" Docker example",
      "body": "This is just a question for understanding.\r\n\r\nI have an application that uses a sqlite database.  In `rxconfig.py`, I have set `db_url=\"sqlite:///reflex.db\"`.  When I run `reflex run` in the root folder of my application, the `reflex.db` is created in that folder.  So far so good.\r\n\r\nHowever, in the [\"production-compose\" Docker example](https://github.com/reflex-dev/reflex/tree/main/docker-example/production-compose), a \"db-data\" volume is mounted in `/app/data` (with the application being in `/app`).  When I run the containers (`docker compose up`), the database magically get's created in `/app/data` instead of `/app`.  Why is this the case?  I couldn't find anything in the Dockerfile, that would explain this.  I also couldn't find anything in the documentation but that might just be because I don't know what to search for.",
      "created_at": "2025-06-02T10:15:50Z",
      "updated_at": "2025-06-03T08:30:40Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "luator",
        "avatar_url": "https://avatars.githubusercontent.com/u/9333121?u=f7a8d727313fd0bf8d60fd3218e4fc44078a4742&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgAaa",
      "number": 5376,
      "title": "v0.7.14 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.14a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-05-29 13:30 PST: 0.7.14a1 pre-release published for testing\r\n2025-05-30 10:50 PST: 0.7.14a2 pre-release published for testing\r\n2025-06-02 11:30 PST: 0.7.14a3 pre-release published for testing\r\n2025-06-02 13:15 PST: 0.7.14a4 pre-release published for testing\r\n2025-06-02 13:50 PST: 0.7.14a5 pre-release published for testing\r\n2025-06-02 18:00 PST: 0.7.14a6 pre-release published for testing\r\n2025-06-02: Planned Public release of 0.7.14\r\n\r\n## 0.7.14a6\r\n\r\n* compile custom components before we get app wraps of the pages by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5405\r\n\r\n## 0.7.14a5\r\n\r\n* ignore visited components for all_app_wrap_components by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5404\r\n\r\n## 0.7.14a4\r\n\r\n* move environment into its own file by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5403\r\n\r\n## 0.7.14a3\r\n\r\n* fix app_wraps not being passed from inside a rx.memo by @Lendemor in https://github.com/reflex-dev/reflex/pull/5387\r\n* no need to kill nextjs on package change by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5389\r\n* another way to check on enterprise usage by @Lendemor in https://github.com/reflex-dev/reflex/pull/5400\r\n* print debug logs in the user directory under logs by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5388\r\n* do not log to file if progress by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5402\r\n\r\n## 0.7.14a2\r\n\r\n* add str support for some html components props by @carlosabadia in https://github.com/reflex-dev/reflex/pull/5378\r\n* Revert \"identify app_class in telemetry events (#5374)\" by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5383\r\n* add style recursive for memo by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5380\r\n\r\n# Release Notes\r\n\r\n## Context on what page failed to evaluate\r\n\r\nIf you're on Python 3.11+, you will get a helpful message indicating which route is the one that caused the error.\r\n\r\n* add context on route during evaluation by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5342\r\n\r\n## Components Improvements\r\n\r\n* support str for size prop in el.select by @carlosabadia in https://github.com/reflex-dev/reflex/pull/5359\r\n* add g svg element by @carlosabadia in https://github.com/reflex-dev/reflex/pull/5360\r\n* support float and str for stroke_width prop in recharts components by @carlosabadia in https://github.com/reflex-dev/reflex/pull/5358\r\n* adjust rechart types by @Lendemor in https://github.com/reflex-dev/reflex/pull/5336\r\n\r\n## Bugfixes\r\n\r\n* do not run nextjs check on import by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5352\r\n* Handle REFLEX_ENV_FILE at init time by @masenf in https://github.com/reflex-dev/reflex/pull/5349\r\n* do not prematurely import app module if providing app_module_import by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5350\r\n* detect class var that are forward ref by @Lendemor in https://github.com/reflex-dev/reflex/pull/5362\r\n* fix reload paths being restricted to the app dir by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5363\r\n* make get_props use get_js_fields by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5361\r\n* fix checking for migrations in granian by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5348\r\n\r\n## Chores\r\n\r\n* update deps 0714 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5328\r\n* delete wsl integration test by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5368\r\n* update pyi hashes by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5365\r\n* enable all ruff rules but not really by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5367\r\n* add uv sync to setup build env by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5366\r\n* upgrade deps just before 0714 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5373\r\n* fix infinite loop in pyi generator by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5354\r\n* Enable wide assortion of ruff rules by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5372\r\n\r\n## Misc\r\n\r\n* add repr to plugins by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5364\r\n* some prepwork to anticipate for removing pydantic from propsbase by @Lendemor in https://github.com/reflex-dev/reflex/pull/5370\r\n* ignore log for hot reload by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5369\r\n* identify app_class in telemetry events by @Lendemor in https://github.com/reflex-dev/reflex/pull/5374\r\n* track node and bun version by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5375\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.13...release/reflex-0.7.14",
      "created_at": "2025-05-29T20:38:03Z",
      "updated_at": "2025-06-03T02:15:00Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Af3hT",
      "number": 5320,
      "title": "How to call a function when the application is started?",
      "body": "In my application, I have some functions (e.g. to load some config files) that I want to call once in the beginning, when the application starts (i.e. `reflex run`).  It is not related to a specific page but the application as a whole.\r\n\r\nSo far, I'm simply putting those function calls directly in the main script,  where the app is created, i.e. like this:\r\n```python\r\n...\r\nmy_function()\r\n\r\napp = rx.App()\r\n...\r\n```\r\nThis works when running the application, however, the function will also be executed in other situations (when building the app and things like `db migrate`), which is bad.\r\n\r\nWhat is the proper way to do this?  I would expect that there is some kind of `on_app_start` event for this, but I couldn't find anything in the documentation.",
      "created_at": "2025-05-21T10:20:38Z",
      "updated_at": "2025-06-02T09:04:24Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AycOA",
        "body": "Please see https://reflex.dev/docs/utility-methods/lifespan-tasks/"
      },
      "user": {
        "login": "luator",
        "avatar_url": "https://avatars.githubusercontent.com/u/9333121?u=f7a8d727313fd0bf8d60fd3218e4fc44078a4742&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgAa8",
      "number": 5377,
      "title": "Can integrate external css to the .py ?",
      "body": "So can i integrate an external css file to .py , i mean like i tried to use rx.style and rxconfig.py but none worked for me or is there any workaround to use them ?\n\nAlso have the same doubt about external java script files",
      "created_at": "2025-05-29T20:52:11Z",
      "updated_at": "2025-05-30T19:26:26Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "snoovocz",
        "avatar_url": "https://avatars.githubusercontent.com/u/190934321?u=1d4eb1f0d027a5ee42a9b05959c9c64bd71c2201&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Af832",
      "number": 5343,
      "title": "How to install reflex in editable mode?",
      "body": "Earlier versions (v0.6.x) allowed to install reflex in editable mode via\r\n\r\n```\r\npoetry add -vv --editable ./reflex\r\n```\r\n\r\nwith reflex checked out in a corresponding local directory `./reflex`. That helped me tremendously learning about reflex internals and even patch a few methods like `BaseState._process_event` to hook into the event processing. It basically allowed me to inject an event middleware, pretty much like FastAPI or Flask allow for a request middleware.\r\n\r\nNow when using more recent `v0.7.x` versions installing reflex in editable mode seems to run forever. It's stuck in step\r\n\r\n```\r\n[build:build] Building editable...\r\n```\r\n\r\nwith 1 CPU core going into full exhaustion for a long period of time. I never had the patience so far to wait until it might actually succeed.\r\n\r\nIs there a proven way to nowadays install reflex in editable (development) mode so that I can observe and modify its source code? Eventually being able to learn and debug reflex internals will also help me to make some contributions to reflex itself.\r\n",
      "created_at": "2025-05-26T22:14:34Z",
      "updated_at": "2025-05-28T09:30:24Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Aysjt",
        "body": "should be fixed with #5354 i think it was going on an infinite loop trying to find pyi hashes file"
      },
      "user": {
        "login": "larsblumberg",
        "avatar_url": "https://avatars.githubusercontent.com/u/5980316?u=ed6e0c2a916605e054e14e13ca6d441377df59a2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Af9dC",
      "number": 5346,
      "title": "So how can i make it responsive ?",
      "body": "Like i mean how can i make the website responsive across all platforms, do i need to use external css or is there any ways ?",
      "created_at": "2025-05-27T11:00:43Z",
      "updated_at": "2025-08-22T07:24:46Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "snoovocz",
        "avatar_url": "https://avatars.githubusercontent.com/u/190934321?u=1d4eb1f0d027a5ee42a9b05959c9c64bd71c2201&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Af8xY",
      "number": 5339,
      "title": "Deployment Error",
      "body": "I created an app on Reflex, and it works perfectly fine on my local host. However, it doesn't work the same way when I deploy it using Reflex. Whenever I try to log in or create an account, nothing happens. There is no alert dialog, success message, or redirection. I have no clue how to fix this. Does anyone know how I can resolve this issue?",
      "created_at": "2025-05-26T18:43:06Z",
      "updated_at": "2025-05-26T18:43:07Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "mprathip98",
        "avatar_url": "https://avatars.githubusercontent.com/u/170883937?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Af8Z1",
      "number": 5337,
      "title": "Reflex + RabbitMQ RPC Timeout in Docker Setup",
      "body": "Hi everyone, I'm running into a specific issue using Reflex inside Docker containers when making long-running RPC calls over RabbitMQ. I’m sharing all details in case anyone has a more robust solution or insight.\r\n\r\n🧱 Setup Overview:\r\n- RPC Client (requester): runs in a Docker container with Reflex (reflex run --backend-only)\r\n- RPC Server (responder): runs in a separate container, also using Python + pika\r\n- Communication handled via RabbitMQ on a shared Docker network\r\n\r\n📌 The Problem:\r\nWhen an RPC call takes longer than ~90 seconds, I get this error from the RPC server:\r\n- ConnectionResetError: [Errno 104] Connection reset by peer\r\n\r\nThis happens when the server tries to send the response back to the client.\r\nAt the same time, the Reflex backend logs this:\r\n- [CRITICAL] WORKER TIMEOUT (pid:XX)\r\n\r\nWhich means: Gunicorn is killing the Reflex backend worker before the RPC response arrives, so the socket is gone, and the server can’t deliver the result.\r\n\r\n🧪 What I’ve tried:\r\n- Change rxconfig.py by adding the timeout parameter like:\r\nimport reflex as rx\r\n\r\nconfig = rx.Config(\r\n    app_name=\"Interfaz\", # The name of the app (should match the name of the app directory).\r\n    api_url=\"http://localhost:8000\", #\"http://localhost:8000\", The backend url the frontend will connect to. This must be updated if the backend is hosted elsewhere, or in production.\r\n    # frontend_path=reflex_frontend, # The path the frontend will be hosted on. This must be updated if the frontend is hosted elsewhere, or in production.\r\n    # deploy_url=reflex_frontend, # The url the frontend will be hosted on. This must be updated if the frontend is hosted elsewhere, or in production.\r\n    frontend_port=3000, # The port the frontend will be hosted on.\r\n    backend_port=8000, # The port the backend will be hosted on.\r\n    # cors_allowed_origins=[reflex_frontend], # List of origins that are allowed to connect to the backend API.\r\n    **timeout= 300, # TEST** \r\n    gunicorn_workers= 1, # The number of gunicorn workers to use. This should be set to the number of CPU cores available.\r\n    gunicorn_worker_class = \"uvicorn.workers.UvicornWorker\"\r\n)\r\nbut is not working.\r\n\r\nI’d like to:\r\n- Allow long-running RPC calls without Gunicorn killing the backend\r\nHas anyone successfully increased the Gunicorn timeout ?\r\nAny suggestions or patterns that work better for long-lived RPC interactions with Reflex?\r\n\r\nThanks in advance! 🙏",
      "created_at": "2025-05-26T10:52:13Z",
      "updated_at": "2025-05-26T10:52:15Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "DmolinaElectroingenium",
        "avatar_url": "https://avatars.githubusercontent.com/u/150668609?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Af-Po",
      "number": 5355,
      "title": "Document how to test with PyTest",
      "body": "**Describe the Enhancement you want**\nA clear and concise description of what the improvement does.\n\n- Which feature do you want to improve? (and what problem does it have)\nDocumentation.\n\n- What is the benefit of the enhancement?\nDocument how one could write automated tests for `reflex` using PyTest. This would enormously benefit developers who rely on automated tests for their work.\n\n**Additional context**\nAutomated tests are mandatory for PROD work. Currently, there is no recommended way to write them for `reflex`, meaning I can only create a very small UI for personal demos and fun. No way I am going to (only) run the app in a terminal, then automate UI interactions, etc.\n\nWe need a PyTest-able way to do so, that would also affect coverage, etc.\n",
      "created_at": "2025-05-23T11:18:28Z",
      "updated_at": "2025-05-28T00:22:49Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "svnv-svsv-jm",
        "avatar_url": "https://avatars.githubusercontent.com/u/25607772?u=cb1da503d6847179dcf0b5ee09bb94fcb69c69cb&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Af50m",
      "number": 5330,
      "title": "v0.7.13 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.13a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-05-22 15:00 PST: 0.7.13a1 pre-release published for testing\r\n2025-05-23 14:45 PST: 0.7.13a2 pre-release published for testing\r\n2025-05-26: Planned Public release of 0.7.13\r\n\r\n## 0.7.13a2\r\n\r\n* make sure the progress count is correct with plugins by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5327\r\n* update radix deps to 0713 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5335\r\n* add config to tailwind v4 plugin by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5331\r\n\r\n# Release Notes\r\n\r\n## Remove Pydantic as a base class of Component\r\n\r\n`rx.Component` used to inherit from `BaseModel`, but that's no longer the case. We opted to write our own Metaclass to handle the specific needs of Components better.\r\n\r\nThis has great improvements for hot reload time for small apps as Pydantic spent around 75% of import time just deep copying fields. On my own machine, a hot reload of a simple app went down from ~1.2sec to just around 200ms!\r\n\r\nWhile this is not intended to be a breaking change, it's likely that a very introspective code could behave differently with this one. So please test it and report to us so we can preserve behavior as best as possible.\r\n\r\n* remove pydantic as base class of component by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5289\r\n\r\n## length() for dicts\r\n\r\nIf you are using object vars (State fields of type dict or Base/dataclasses), you can now call `.length()` on them. This is a simple wrapper over `.keys().length()`.\r\n\r\n* add length var operation for objects by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5318\r\n\r\n## Allow Vars to be the result of the render function of Foreach\r\n\r\nThis relaxes the requirement from being a component. Vars are wrapped in a Fragment.\r\n\r\n* allow rendering vars in foreach by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5271\r\n\r\n## Prefix Config Vars with `REFLEX_`\r\n\r\nThe environment variables defined in `Config` will now be read with `REFLEX_` as a prefix. Previous not prefixed names are still names but are deprecated.\r\n\r\n* pick up env vars prefixed by REFLEX_ by @Lendemor in https://github.com/reflex-dev/reflex/pull/531\r\n\r\n## Stronger type checking against partially filled variables\r\n\r\nIf you were unlucky enough, you might have written some code where you capture some arguments but reflex decides that it wants to give your event handler even more arguments. In these cases, we weren't checking the types of such arguments against the event callback. This now triggers a compilation error.\r\n\r\n* add type checking for partially filled events by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5288\r\n\r\n## Ignore certain file formats from hot reload\r\n\r\nGranian was reloading on more file formats than necessary, so we manually exclude a set of file formats that are unlikely to be a cause of hot reload. If you still notice weird hot reloads on file changes that are irrelevant to your application, we can append that list with more values.\r\n\r\n* ignore certain file formats from granian hot reload by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5326\r\n\r\n## Tailwind V3 is now contained in a module (and rudimentary Reflex Plugin System)\r\n\r\nWe now have a basic plugins system with a few hooks. It's not very documented, but you can basically provide a list of plugins to the plugins argument in `rx.Config`. You can add compile time hooks to create files, modify files, define stylesheets, define javascript dependencies, and more.\r\n\r\nWe moved our tailwind v3 code to use such plugin system. You should either set `tailwind=None` inside of your `rx.Config` or set `plugins` to `[rx.plugins.TailwindV3Plugin()]`. Automatic assumption of tailwind is deprecated.\r\n\r\nWe're also starting our work on Tailwind V4. A plugin that is likely to work but not fully is available under `rx.plugins.TailwindV4Plugin`.\r\n\r\n* move tailwind to its own module by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5169\r\n\r\n## Bugfixes\r\n\r\n* do not add auto setters on reflex states by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5314\r\n* do not broadcast event to all clients if modify state is misused by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5322\r\n* send empty files list by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5323\r\n* do not delete the .web dir when init-ing by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5319\r\n* fix typeddict as annotation by @Lendemor in https://github.com/reflex-dev/reflex/pull/5324\r\n\r\n## Chores\r\n* bump deps 0713 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5309\r\n* crack down on sets for uniqueness by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5316\r\n* Use patch to precommit by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5279\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.12...release/reflex-0.7.13",
      "created_at": "2025-05-23T07:22:28Z",
      "updated_at": "2025-05-26T19:09:17Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfvmY",
      "number": 5292,
      "title": "Questions from wrapping animate.js ?",
      "body": "I try to use the interesting JavaScript library in Reflex, and initially I try to repeat their example codes in a React component, and my codes are like this:\r\n\r\nActually I can get the bounce effect, But how should I execute the js function `handle_click` to \r\n\r\nMake the logo rotate when I click the button.\r\n\r\n```python\r\n\"\"\"Welcome to Reflex! This file outlines the steps to create a basic app.\"\"\"\r\n\r\nimport reflex as rx\r\nfrom reflex.utils import imports\r\nfrom reflex.components.radix.themes.components.card import Card\r\n\r\nclass State(rx.State):\r\n    rotate_num: int = 0\r\n\r\n    @rx.event\r\n    def add_rotate_number(self):\r\n        self.rotate_num += 1\r\n        \r\n\r\n    @rx.event\r\n    def clear_rotate(self):\r\n        self.rotate_num = 0\r\n\r\n\r\nclass MyCard(Card):\r\n    lib_dependencies: list[str] = [\r\n        \"animejs\"\r\n    ]\r\n    def add_imports(self) -> imports.ImportDict:\r\n        \"\"\"Add the imports for the component.\"\"\"\r\n        return {\r\n            \"react\": [\r\n                imports.ImportVar(tag=\"useEffect\"),\r\n                imports.ImportVar(tag=\"useRef\"),\r\n            ],\r\n            \"animejs\": [\r\n                imports.ImportVar(tag=\"animate\"),\r\n                imports.ImportVar(tag=\"createScope\"),\r\n                imports.ImportVar(tag=\"createSpring\"),\r\n                imports.ImportVar(tag=\"createDraggable\"),\r\n            ],\r\n        }\r\n\r\n    def add_hooks(self) -> list[str | rx.Var]:\r\n        self._get_ref_hook()\r\n        return [\r\n            \"\"\"\r\nconst scope = useRef(null);\r\nuseEffect(() => {\r\n\r\n    scope.current = createScope({ref_animate_card}).add( self => {\r\n    \r\n      // Every anime.js instances declared here are now scopped to <div ref={ref_animate_card}>\r\n\r\n      // Created a bounce animation loop\r\n      animate('.logo', {\r\n        scale: [\r\n          { to: 1.25, ease: 'inOut(3)', duration: 200 },\r\n          { to: 1, ease: createSpring({ stiffness: 300 }) }\r\n        ],\r\n        loop: true,\r\n        loopDelay: 250,\r\n      });\r\n      \r\n      // Make the logo draggable around its center\r\n      createDraggable('.logo', {\r\n        container: [0, 0, 0, 0],\r\n        releaseEase: createSpring({ stiffness: 200 })\r\n      });\r\n\r\n      // Register function methods to be used outside the useEffect\r\n      self.add('rotateLogo', (i) => {\r\n        animate('.logo', {\r\n          rotate: i * 360,\r\n          ease: 'out(4)',\r\n          duration: 1500,\r\n        });\r\n      });\r\n\r\n    });\r\n\r\n    // Properly cleanup all anime.js instances declared inside the scope\r\n    return () => scope.current.revert()\r\n\r\n  }, []);\r\n  const handle_click = () => {\r\n    scope.current.methods.rotateLogo(1);\r\n}\r\n\r\n        \"\"\"\r\n        ]\r\n\r\n\r\ndef index() -> rx.Component:\r\n    # Welcome Page (Index)\r\n    return rx.container(\r\n        MyCard.create(\r\n            rx.vstack(\r\n                rx.flex(\r\n                    rx.box(\r\n                        rx.text(\"Using with React\"),\r\n                    ),\r\n                    rx.button(\r\n                        rx.icon(tag=\"undo-2\"),\r\n                        variant=\"ghost\",\r\n                        on_click=State.clear_rotate,\r\n                    ),\r\n                    justify=\"between\",\r\n                    width=\"100%\",\r\n                ),\r\n                rx.image(src=\"/react.svg\", width=\"100px\", class_name=\"mx-auto logo\"),\r\n                rx.button(\r\n                    f\"ROTATIONS: {State.rotate_num}\",\r\n                    class_name=\"mx-auto\",\r\n                    on_click=State.add_rotate_number,\r\n                ),\r\n                spacing=\"3\",\r\n            ),\r\n            class_name=\"w-2/4 mx-auto\",\r\n            id=\"animate_card\"\r\n        )\r\n    )\r\n\r\n\r\napp = rx.App(\r\n    theme=rx.theme(\r\n        appearance=\"light\",\r\n        has_background=True,\r\n    )\r\n)\r\napp.add_page(index)\r\n```\r\n\r\n\r\n",
      "created_at": "2025-05-14T03:19:15Z",
      "updated_at": "2025-05-20T03:24:51Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AyW9K",
        "body": "It's good to use rx.script"
      },
      "user": {
        "login": "SeqCrafter",
        "avatar_url": "https://avatars.githubusercontent.com/u/43256809?u=52b0b3f08e7957cd369561263bacfb63e45921dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Af0xk",
      "number": 5310,
      "title": "How do I integrate an animation from Spline to Reflex?",
      "body": "I created an animation on Spline, but I have no clue how to integrate it into Reflex. I tried using the Reflex documentation, but it resulted in errors and was not that helpful. Can someone let me know what I can do?",
      "created_at": "2025-05-18T18:07:20Z",
      "updated_at": "2025-05-19T19:40:40Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "mprathip98",
        "avatar_url": "https://avatars.githubusercontent.com/u/170883937?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYTBA",
      "number": 2854,
      "title": "How to Scroll to the Bottom when new content arrives",
      "body": "`@luka` on [discord](https://discord.com/channels/1029853095527727165/1061874061250150441/1217496665079021639) asks:\r\n\r\n> Is it possible to enforce scrollToBottom on rx.scroll_area on any text content update?",
      "created_at": "2024-03-13T19:55:42Z",
      "updated_at": "2025-05-16T20:37:07Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AhfGy",
        "body": "Using the `reflex-intersection-observer` component, along with the `scrollIntoView()` function supported by most browsers, you can have a hidden 1px div at the bottom of your message list, and when it goes out of view, trigger an event handler to automatically scroll the hidden div back into view, once.\r\n\r\nThis has the nice side effect of allowing your users to scroll up in the messages without automatically scrolling back down when a new message arrives, but re-enabling the auto scroll to bottom if they do scroll it back down to the latest message.\r\n\r\nIt has one unfortunate side effect of a tiny little jitter when initially scrolling up, because the component will try to scroll back down the first time the hidden div goes out of view, even when this is initiated by user action.\r\n\r\n```console\r\npip install 'reflex-intersection-observer>=0.0.2'\r\n```\r\n\r\n```python\r\nimport asyncio\r\n\r\nimport reflex as rx\r\n\r\nfrom reflex_intersection_observer import intersection_observer\r\n\r\n\r\nBOTTOM_ELEMENT_ID = \"bottom\"\r\n\r\n\r\nclass ScrollHandlingState(rx.State):\r\n    def scroll_to_bottom(self):\r\n        return rx.call_script(f\"document.getElementById('{BOTTOM_ELEMENT_ID}').scrollIntoView()\")\r\n\r\n    def handle_non_intersect(self, _entry):\r\n        return self.scroll_to_bottom()\r\n\r\n\r\nclass MessageGenerator(rx.State):\r\n    messages: list[str]\r\n    should_load: bool = False\r\n\r\n    def on_load(self):\r\n        self.messages = [\"Hello, world!\"]\r\n        self.should_load = True\r\n        return MessageGenerator.add_messages\r\n\r\n    @rx.background\r\n    async def add_messages(self):\r\n        while self.should_load:\r\n            async with self:\r\n                self.messages.append(f\"New message {len(self.messages) + 1}!\")\r\n                if not self.should_load:\r\n                    break\r\n            await asyncio.sleep(3)\r\n\r\n\r\ndef message_control_button():\r\n    return rx.cond(\r\n        MessageGenerator.should_load,\r\n        rx.button(\"Stop\", on_click=MessageGenerator.set_should_load(False)),\r\n        rx.button(\"Start\", on_click=[MessageGenerator.set_should_load(True), MessageGenerator.add_messages]),\r\n    )\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.vstack(\r\n        rx.heading(\"Messages\"),\r\n        rx.hstack(\r\n            message_control_button(),\r\n            rx.icon_button(\r\n                rx.icon(\"arrow_down_to_line\"),\r\n                on_click=ScrollHandlingState.scroll_to_bottom,\r\n            ),\r\n        ),\r\n        rx.scroll_area(\r\n            rx.vstack(\r\n                rx.foreach(MessageGenerator.messages, rx.text),\r\n                intersection_observer(\r\n                    height=\"1px\",\r\n                    id=BOTTOM_ELEMENT_ID,\r\n                    root=\"#scroller\",\r\n                    on_non_intersect=ScrollHandlingState.handle_non_intersect,\r\n                    visibility=\"hidden\",\r\n                ),\r\n            ),\r\n            id=\"scroller\",\r\n            width=\"90vw\",\r\n            height=\"100px\",\r\n        ),\r\n        rx.text(\"This is outside scroll area\"),\r\n        align=\"center\",\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index, on_load=MessageGenerator.on_load)\r\n```\r\n\r\nhttps://github.com/reflex-dev/reflex/assets/1524005/f7771ec5-6b9f-46ae-b916-ff7bfc2093f6\r\n\r\nThe jittering could be fixed with another state var that tracks whether a new message has arrived and only calling `scroll_to_bottom` if so, then reset the new message var inside `handle_non_intersect`."
      },
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfzKT",
      "number": 5302,
      "title": "How do decentralized event handlers scale in large Reflex apps with deeply nested components?",
      "body": "From the [docs](https://reflex.dev/docs/events/decentralized-event-handlers/), I see that Reflex allows event handlers to be defined directly in child components (e.g., Button.on_click). This seems great for modularity, but:\r\n\r\n    Performance: In a deeply nested component tree (e.g., 100+ interactive children), could this approach lead to overhead vs. centralized state management?\r\n\r\n    Debugging: How would you trace an event’s flow if handlers are scattered across components? Are there best practices or tools?\r\n\r\n    Reusability: If a child component’s event logic depends on parent state, would you still recommend decentralized handlers, or is it better to \"lift\" the logic up?",
      "created_at": "2025-05-16T17:45:38Z",
      "updated_at": "2025-05-16T17:45:39Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "KalyanChakravarthyK",
        "avatar_url": "https://avatars.githubusercontent.com/u/202616477?u=24f10ab163cff0aea57bd97a1c88748b25a9fd26&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfyLV",
      "number": 5299,
      "title": "v0.7.12 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.12a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-05-05 14:20 PST: 0.7.12a1 pre-release published for testing\r\n2025-05-19: Planned Public release of 0.7.12\r\n\r\n# Release Notes\r\n\r\n## Bugfixes\r\n\r\n* [ENG-5784] Restrict `update_vars_internal` to browser storage vars by @masenf in https://github.com/reflex-dev/reflex/pull/5293\r\n* don't treat name with - differently by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5291\r\n* Include required `jsx` and `Fragment` imports in ComponentVar by @masenf in https://github.com/reflex-dev/reflex/pull/5294\r\n* add responsive to vstack and hstack by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5298\r\n* load mounts from environment variable for httpx by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5297\r\n\r\n## Chores\r\n\r\n* bump to 0.7.12dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5287\r\n* fix reflex-web ci not having requirements.txt by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5296\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.11...release/reflex-0.7.12",
      "created_at": "2025-05-15T21:27:02Z",
      "updated_at": "2025-05-19T21:09:57Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AftV_",
      "number": 5285,
      "title": "How can I use `rx.scroll_area` and `rx.auto_scroll` together?",
      "body": "I want to use the `scroll_area`'s UI design, and at the same time, I want this area to scroll automatically when elements are added.\r\nHowever, it seems that when I wrap `rx.scroll_area` with `rx.auto_scroll` (or vice versa), the scroll area doesn't scroll automatically.\r\n\r\n**To Reproduce**\r\n```\r\n# example from docs : https://reflex.dev/docs/library/dynamic-rendering/auto-scroll#basic-usage\r\nimport reflex as rx\r\n\r\n\r\nclass AutoScrollState(rx.State):\r\n    messages: list[str] = [\"Initial message\"]\r\n\r\n    def add_message(self):\r\n        self.messages.append(\r\n            f\"New message #{len(self.messages) + 1}\"\r\n        )\r\n\r\n\r\ndef auto_scroll_example():\r\n    return rx.vstack(\r\n        # !!! HOW CAN I USE rx.scroll_area's UI? \r\n        rx.auto_scroll(\r\n            rx.foreach(\r\n                AutoScrollState.messages,\r\n                lambda message: rx.box(\r\n                    message,\r\n                    padding=\"0.5em\",\r\n                    border_bottom=\"1px solid #eee\",\r\n                    width=\"100%\",\r\n                ),\r\n            ),\r\n            height=\"200px\",\r\n            width=\"300px\",\r\n            border=\"1px solid #ddd\",\r\n            border_radius=\"md\",\r\n        ),\r\n        rx.button(\r\n            \"Add Message\",\r\n            on_click=AutoScrollState.add_message,\r\n        ),\r\n        width=\"300px\",\r\n        align_items=\"center\",\r\n    )\r\n```\r\n",
      "created_at": "2025-05-12T11:03:01Z",
      "updated_at": "2025-05-12T11:03:02Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "ruhz3",
        "avatar_url": "https://avatars.githubusercontent.com/u/26182769?u=5360aefab0700869598be8761ecdd2fd66c22d67&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Afmyt",
      "number": 5263,
      "title": "Launch background task only after successful login",
      "body": "Hello, I need some guidance please on how to resolve this little problem, I'm sure it's simple but can't see the obvious solution.\r\n\r\nI have configured protected pages so that the content is shown only if a user is logged in: I setup the `on_load` event trigger on `rx.page` to check if the user is logged in, and that works great, no problem there.\r\n\r\nOnly AFTER a successful login, I want to start the background task `State.fetch_all_clusters`. I tried putting that in the `on_mount` event trigger, but `on_mount` gets fired concurrently, so what happens is, upon visiting the website `/clusters`, I see the list of clusters (as they have been fetched because the bg task `fetch_all_clusters` is active) and a split second after I'm redirected to `/login` as the user is not authenticated yet.\r\n\r\n```python\r\n@rx.page(\r\n    route=\"/clusters\",\r\n    title=\"Clusters\",\r\n    on_load=BaseState.check_login,\r\n)\r\n@template\r\ndef clusters():\r\n    return rx.flex(\r\n        rx.text(\r\n            \"Clusters\",\r\n            class_name=\"p-2 text-8xl font-semibold\",\r\n        ),\r\n        rx.hstack(new_cluster_dialog(), direction=\"row-reverse\", class_name=\"p-4\"),\r\n        rx.flex(clusters_table(), class_name=\"flex-1 flex-col overflow-y-scroll p-2\"),\r\n        class_name=\"flex-1 flex-col overflow-hidden\",\r\n        on_mount=State.fetch_all_clusters,\r\n    )\r\n```\r\n\r\nThis is the bg task\r\n\r\n```python\r\n    @rx.event(background=True)\r\n    async def fetch_all_clusters(self):\r\n        if self.is_already_running:\r\n            return\r\n        async with self:\r\n            self.is_already_running = True\r\n\r\n        while True:\r\n            if self.router.page.path != \"/clusters\":\r\n                print(\"clusters.py: Stopping background task.\")\r\n                async with self:\r\n                    self.is_already_running = False\r\n                break\r\n\r\n            async with self:\r\n                self.clusters = db.get_all_clusters()\r\n            await asyncio.sleep(5)\r\n```\r\n\r\nI am a bit confused by this behavior. Even if `fetch_all_clusters` weren't invoked, I'd still see the (empty) page for a split second before being redirected. It seems that on_load and on_mount events are processed concurrently, but I would imagine that on_load should be processed first, and on_mount only after on_load has completed.\r\n\r\nHow can I make sure that the login is checked first before any other operation takes place, such as mounting the website or firing off bg tasks please?\r\n\r\n\r\n",
      "created_at": "2025-05-06T13:23:50Z",
      "updated_at": "2025-05-09T13:26:49Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Axy1B",
        "body": "Add a state variable like `AuthState.is_logged_in: bool = False`. Set to `True` only once the user is logged in. Reset state on logout.\r\n\r\nTo avoid a blank page, return something else than your page if user is not logged in:\r\n\r\n```\r\ndef my_page() -> rx.Component:\r\n    return rx.cond(\r\n        ~AuthState.is_logged_in,\r\n        rx.spinner(),\r\n        rx.box(\r\n            # your actual page content\r\n        )\r\n    )\r\n```\r\n\r\nIn your page `on_load` function you can check the auth state as well and redirect to a login page if the user isn't authenticated yet. Otherwise start the background task, etc.\r\n"
      },
      "user": {
        "login": "fabiog1901",
        "avatar_url": "https://avatars.githubusercontent.com/u/3207827?u=829916b236b9b10b754615684a44df6a89a3b004&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AV30F",
      "number": 1970,
      "title": "How to implement server push ?",
      "body": "We are trying to figure what's the best way to implement server pushes, meaning that we want our application to notify the client whenever there's an update.\r\n\r\nIn other words, we want our application to send an updated state to the client whenever there's new data to be handled.\r\n\r\nIn more practical terms, we would like to open a websocket on the server (I guess it isn't possible to do that on the client for now) and  keep listening for new messages. Is this the recommended approach?",
      "created_at": "2023-10-13T18:50:16Z",
      "updated_at": "2025-05-09T12:19:10Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Abwkx",
        "body": "A reflex app already maintains a bidirectional websocket connection between the frontend and backend. The best mechanism to notify the client depends on the nature of the \"push\". The simplest way to achieve this is using `@rx.background` on an event handler that polls for some condition and updates the user's state in response. Updating the state in a background task is a pushed update, by definition.\r\n\r\nLet's say the client wants a push whenever the github zen API changes:\r\n\r\n```python\r\nimport asyncio\r\nimport httpx\r\n\r\nimport reflex as rx\r\n\r\n\r\nZEN_API = \"https://api.github.com/zen\"\r\nLATEST_ZEN = \"Life is short (so use Python)\"\r\nUPDATE_TASK = None\r\n\r\n\r\nasync def periodic_update_github_zen():\r\n    global LATEST_ZEN\r\n\r\n    async with httpx.AsyncClient() as client:\r\n        while True:\r\n            resp = await client.get(ZEN_API)\r\n            resp.raise_for_status()\r\n            LATEST_ZEN = resp.text\r\n            print(f\"Updated zen on backend to: {LATEST_ZEN}\")\r\n            await asyncio.sleep(10)  # don't overwhelm the API\r\n\r\n\r\nclass State(rx.State):\r\n    zen: str = LATEST_ZEN\r\n    _poll_updates: bool = True\r\n    _task_running: bool = False\r\n\r\n    @rx.background\r\n    async def push_zen_updates(self):\r\n        if self._task_running:\r\n            return\r\n\r\n        async with self:\r\n            self._task_running = True\r\n\r\n        try:\r\n            while self._poll_updates:\r\n                async with self:\r\n                    if self.zen != LATEST_ZEN:\r\n                        self.zen = LATEST_ZEN\r\n                await asyncio.sleep(5)\r\n        finally:\r\n            async with self:\r\n                self._task_running = False\r\n\r\n\r\n@rx.page(on_load=State.push_zen_updates)\r\ndef index() -> rx.Component:\r\n    return rx.vstack(\r\n        rx.heading(\"Your Momentary Zen\", font_size=\"2em\"),\r\n        rx.text(State.zen),\r\n        spacing=\"1.5em\",\r\n    )\r\n\r\n\r\napp = rx.App()\r\n\r\n\r\n@app.api.on_event(\"startup\")\r\ndef start_updater():\r\n    global UPDATE_TASK\r\n    UPDATE_TASK = asyncio.create_task(periodic_update_github_zen())\r\n\r\n\r\n@app.api.on_event(\"shutdown\")\r\ndef stop_updater():\r\n    UPDATE_TASK.cancel()\r\n\r\n\r\napp.compile()\r\n```\r\n\r\nThis example uses a global task to poll the github zen API, and then each tab uses its own background task to update itself when the global zen value changes.\r\n\r\nThis simulates individual users polling a database or something for an update, then applying the update to their state instance, which automatically sends a push to the client."
      },
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Afpm_",
      "number": 5277,
      "title": "v0.7.11 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.11a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-05-08 14:25 PST: 0.7.11a1 pre-release published for testing\r\n2025-05-12: Planned Public release of 0.7.11\r\n\r\n# Release Notes\r\n\r\n## [DEPRECATION] `rx.next.video`\r\n\r\nIt wasn't particularly usable to begin with.\r\n\r\n* deprecate next video by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5260\r\n\r\n## Slightly stronger hydration mismatch strictness\r\n\r\nThis will stop you from putting `rx.el.p` inside of a `rx.el.p` and such.\r\n\r\n* add invalid children to html components by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5261\r\n\r\n## Add option to disable auto-setters\r\n\r\nThis can allow you to be more explicit on what public State fields can be set by the user.\r\n\r\n* feat: allow disabling auto-setters via state_auto_setters config by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4480\r\n\r\n## Use Javascript syntax over JSX\r\n\r\nThis shouldn't affect you, but our output code is now using normal Javascript and no JSX syntax. This solves some of the issues we had with context swapping between Vars and Components.\r\n\r\n* don't use jsx syntax by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5127\r\n\r\n## Upgrade `rx.icon`\r\n\r\nLucide has updated their list of icons, and now those changes are available in Reflex.\r\n\r\n* update lucide to 507.0 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5269\r\n* update to 508 lucide by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5275\r\n\r\n## Remove Cond as a Memoization leaf\r\n\r\nThis might improve the runtime performance of your frontend! \r\n\r\n* Allow auto memoization of Component Cond by @masenf in https://github.com/reflex-dev/reflex/pull/5272\r\n\r\n## Optimizations\r\n* ⚡️ Speed up function `to_camel_case` by 128% by @misrasaurabh1 in https://github.com/reflex-dev/reflex/pull/5239\r\n* use knowledge about generic types to improve their getters and checkers by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5245\r\n* optimize rx.color to not use validate literal parameters by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5244\r\n\r\n## Bugfixes\r\n* fix tailwind for lucide icons by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5267\r\n\r\n## Misc\r\n* update backend deps by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5250\r\n* update bun version to 1.2.12 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5254\r\n* include symlink folder when running export/deploy by @Lendemor in https://github.com/reflex-dev/reflex/pull/5256\r\n* upgrade to nextjs 15.3.2 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5268\r\n\r\n## Chores\r\n* move coveragerc to pyproject by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5231\r\n* i broke pre commit once again by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5264\r\n* bump to 0.7.11 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5265\r\n* icons need pyi update by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5276\r\n\r\n## New Contributors\r\n* @misrasaurabh1 made their first contribution in https://github.com/reflex-dev/reflex/pull/5239\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.10...release/reflex-0.7.11",
      "created_at": "2025-05-08T21:39:32Z",
      "updated_at": "2025-05-15T21:23:05Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Afit8",
      "number": 5234,
      "title": "Inquiry about Roadmap and Stable Release of Reflex Library",
      "body": "Dear Reflex Team,\r\n\r\nFirst and foremost, I wanted to express my sincere appreciation for the Reflex library and the brilliant minds behind it. The concept of building full-stack web applications purely in Python is truly innovative and incredibly exciting. I've been following the development with great interest.\r\n\r\nI was hoping to get some insight into the project's roadmap. Could you please share any information regarding the planned features and milestones for the library?\r\n\r\nSpecifically, I am very keen to know the estimated timeline for the first stable (version 1.0) release of Reflex. Understanding when a stable version is anticipated would be immensely helpful for planning potential projects and contributions.\r\n\r\nThank you for your time and dedication to this fantastic project. I look forward to hearing from you.",
      "created_at": "2025-05-01T09:12:52Z",
      "updated_at": "2025-05-10T20:03:54Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AxxLE",
        "body": "I think you can find it in this link: https://github.com/reflex-dev/reflex/issues/2727"
      },
      "user": {
        "login": "Bakbak001",
        "avatar_url": "https://avatars.githubusercontent.com/u/45603142?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfmK8",
      "number": 5258,
      "title": "How to create websites with Reflex",
      "body": "Hi,\r\n\r\nI have a project to create static websites, saas etc with Python (https://github.com/paulocoutinhox/kaktos), but need know python and html.\r\n\r\nI want use Reflex to create a SaaS only with Python.\r\n\r\nIs it possible?\r\n\r\nThanks.",
      "created_at": "2025-05-05T20:45:15Z",
      "updated_at": "2025-05-06T05:13:04Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "paulocoutinhox",
        "avatar_url": "https://avatars.githubusercontent.com/u/395096?u=0d9eb99465febf17d91dffd32d9ce183dbc25c3d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfjNl",
      "number": 5241,
      "title": "v0.7.10 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.10a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-05-01 14:45 PST: 0.7.10a1 pre-release published for testing\r\n2025-05-05: Planned Public release of 0.7.10\r\n\r\n# Release Notes\r\n\r\n## Decentralized Event Handlers\r\n\r\nYou can define some events outside of the state they belong to. This requires using the `@event` decorator and typing the first (state) argument with the state it belongs to. It gets used by its name as opposed to `State.` format.\r\n\r\n```py\r\nimport reflex as rx\r\n\r\nclass State(rx.State):\r\n    field: int = 23\r\n\r\n@rx.event\r\ndef update_field(state: State, new_value: int):\r\n    state.field = new_value\r\n\r\ndef index() -> rx.Component:\r\n    return rx.vstack(\r\n        State.field,\r\n        rx.button(\r\n            \"Update Field\",\r\n            on_click=update_field(321),\r\n        ),\r\n    )\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\n* decentralized event handlers by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5227\r\n\r\n## Escape hatch: change react version\r\n\r\nIn case react version upgrade broke your packages somehow, you can use the `REACT_VERSION` environment flag to change it. We don't support this flag indefinitely though, and it's very much not safe to set.\r\n\r\n* add escape hatch for react version by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5225\r\n\r\n## Decimal support in Vars\r\n\r\nYou can now use decimal in state, but it converts it to a float when sending it to JS. Devin has contributed some of this PR before needing to intervene a bit.\r\n\r\n* Add decimal.Decimal support to serializers and NumberVar by @devin-ai-integration in https://github.com/reflex-dev/reflex/pull/5226\r\n\r\n## Style for dragging over upload component\r\n\r\n`on_drop` for Upload should now support the list syntax. Also adds a style to the default component when a file is being dragged over it.\r\n\r\n* Upload: drag_active_style and multiple on_drop specs by @masenf in https://github.com/reflex-dev/reflex/pull/5207\r\n\r\n## [Regression Fix] Lifespan tasks\r\n\r\nIf you were using lifespan tasks along `api` or `api_transformer`, it might not have been running as expected. It should be fixed now.\r\n\r\n* fix lifespan tasks regression by @Lendemor in https://github.com/reflex-dev/reflex/pull/5218\r\n\r\nThis also fixes hot reload on Windows.\r\n\r\n## Bugfixes\r\n* do not add requirementstxt if pyproject exists by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5185\r\n* do not wrap __dict__ in mutable proxy by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5193\r\n* validate classname by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5204\r\n* get back python-dotenv errors for environment env file by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5203\r\n* fix ai template by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5202\r\n* slicing a list is not a mutable proxy directly by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5221\r\n* [ENG-5696] unwrap Var-typed annotations in @rx.memo signature by @masenf in https://github.com/reflex-dev/reflex/pull/5223\r\n* remove height and with from rx video by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5210\r\n\r\n## Chores\r\n* 0710dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5195\r\n* add python version for development by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5186\r\n* use as posix by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5192\r\n* bump deps after 079 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5205\r\n* remove frontend arg from needs_reinit by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5214\r\n* move proxy classes into proxy.py by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5224\r\n* remove simple page from codspeed by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5228\r\n* lock uv update by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5238\r\n\r\n## New Contributors\r\n* @devin-ai-integration made their first contribution in https://github.com/reflex-dev/reflex/pull/5226\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.9...release/reflex-0.7.10",
      "created_at": "2025-05-01T21:58:51Z",
      "updated_at": "2025-05-15T21:23:09Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Afb7m",
      "number": 5177,
      "title": "v0.7.9 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.9a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-04-24 17:40 PST: 0.7.9a1 pre-release published for testing\r\n2025-04-28 12:40 PST: 0.7.9a2 pre-release published for testing\r\n2025-04-28: Planned Public release of 0.7.9\r\n\r\n## 0.7.9a2\r\n\r\n* delay api mounting until app finishes compile by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5184\r\n* add no interactive back by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5191\r\n* fix for set_focus not binding `this` by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5183\r\n* restore get_decorated_pages behavior and deprecate it by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5194\r\n\r\n# Release Notes\r\n\r\n## Improvements to Tailwind Config Wrapping\r\n\r\nThanks to @itsmeadarsh2008, the tailwind config got expanded:\r\n\r\n```python\r\nplugins = [\r\n    \"@tailwindcss/forms\",  # simple require\r\n    {\r\n        \"name\": \"@heroui/theme\",\r\n        \"import\": {\"name\": \"heroui\", \"from\": \"@heroui/theme\"},\r\n        \"call\": \"heroui\"\r\n    },\r\n    {\r\n        \"name\": \"tailwindcss-theme-variants\",\r\n        \"import\": {\"name\": \"themeVariants\", \"from\": \"tailwindcss-theme-variants\"},\r\n        \"call\": \"themeVariants\",\r\n        \"args\": {\r\n            \"themes\": {\r\n                \"light\": { \"selector\": \".light-theme\" },\r\n                \"dark\": { \"selector\": \".dark-theme\" }\r\n            }\r\n        }\r\n    }\r\n]\r\n```\r\n\r\n* Support for importing functions from tailwind plugins by @itsmeadarsh2008 in https://github.com/reflex-dev/reflex/pull/5121\r\n\r\n## Enable Granian as default\r\n\r\nWe have had fixes going into Granian that should make the experience as good as it was on Uvicorn/Gunicorn and in some cases better. There are most certainly issues so feel free to report them and we will do our best to mitigate them.\r\n\r\n* reattempt at granian as default by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5165\r\n\r\n## Include all `rx.memo` components in the build\r\n\r\nThis saves us from doing another scan to discover them.\r\n\r\nThis also adds the ability to call memoized components from dynamic components!\r\n\r\n```python\r\nclass State(rx.State):\r\n    name: str = \"Bob\"\r\n\r\n    @rx.var\r\n    def count(self) -> rx.Component:\r\n        return counter(\r\n            name=self.name,\r\n        )\r\n\r\n\r\n@rx.memo\r\ndef counter(name: str):\r\n    return rx.hstack(\r\n        rx.button(name),\r\n        rx.button(f\"Not {name}\"),\r\n    )\r\n\r\n\r\ndef index():\r\n    return rx.vstack(rx.text(\"Who Are You?\"), State.count)\r\n```\r\n\r\n* Track all `rx.memo` components by @masenf in https://github.com/reflex-dev/reflex/pull/5172\r\n\r\n## Deprecate `.api` in favor of `api_transformer`\r\n\r\nIf you were doing something like:\r\n\r\n```python\r\napp = rx.App()\r\n\r\n@app.api.get(\"/pong\")\r\ndef pong():\r\n    return {\"message\": \"pong\"}\r\n```\r\n\r\nYou should instead do\r\n\r\n```python\r\nfastapi_app = FastAPI()\r\n\r\n@fastapi_app.get(\"/pong\")\r\ndef pong():\r\n    return {\"message\": \"pong\"}\r\n\r\napp = rx.App(api_transformer=fastapi_app)\r\n```\r\n\r\nThe `api_transformer` takes one or multiple (a list) of Starlette/FastAPI apps. It can also take a function that takes `ASGIApp` and returns a different `ASGIApp` that mounts the previous one. For example, the above code is equivalent to:\r\n\r\n```python\r\nfrom reflex.utils.types import ASGIApp\r\n\r\nfastapi_app = FastAPI()\r\n\r\n@fastapi_app.get(\"/pong\")\r\ndef pong():\r\n    return {\"message\": \"pong\"}\r\n\r\ndef fastapi_transformer(app: ASGIApp):\r\n    fastapi_app.mount(\"\", app)\r\n    return app\r\n\r\napp = rx.App(api_transformer=fastapi_transformer)\r\n```\r\n\r\n* starlette over fastapi by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5069\r\n* delay api mounting until app finishes compile by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5184\r\n\r\n## Raise error when using `@rx.event` with events starting with an underscore.\r\n\r\nPrivate events is not a thing and this can help to error earlier.\r\n\r\n* raise error on private events by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5152\r\n\r\n## Replace `typer` with `click`\r\n\r\nIn our quest to cut down on dependencies we are simplifying our CI across `reflex` and `reflex-hosting-cli` to use `click` over `typer` (which what `typer` uses under the hood).\r\n\r\n* click over typer by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5154\r\n* add no interactive back by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5191\r\n\r\n## Misc\r\n\r\n* output a slightly more helpful error message when we cannot download … by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5140\r\n* treat small tuples different with figure out type by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5161\r\n* bump frontend deps and bun by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5162\r\n\r\n## Bugfixes\r\n* handle deocrated pages better by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5159\r\n* exit gracefully when set_focus is passed a nonexistent argument by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5149\r\n* error when var is given something not a str by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5164\r\n* ignore env var set to empty string by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5167\r\n* fix upload on drop by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5160\r\n* fix for set_focus not binding `this` by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5183\r\n* restore get_decorated_pages behavior and deprecate it by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5194\r\n\r\n## Chores\r\n* properly shutdown socketio and sqlalchemy async engine in AppHarness by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/5146\r\n* bump to 0.7.9dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5145\r\n* remove distro by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5158\r\n* remove minor version from ci by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5163\r\n* uv lock by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5176\r\n\r\n## New Contributors\r\n* @itsmeadarsh2008 made their first contribution in https://github.com/reflex-dev/reflex/pull/5121\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.8...release/reflex-0.7.9",
      "created_at": "2025-04-25T01:03:01Z",
      "updated_at": "2025-05-15T21:23:14Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfDvn",
      "number": 5055,
      "title": "Deploy reflex app to Google cloud run",
      "body": "How to deploy a reflex app to google cloud build, how to set up both frontend and backend as separate containers and deploy ? ",
      "created_at": "2025-03-28T18:04:58Z",
      "updated_at": "2025-05-23T09:11:49Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jamesalphanome",
        "avatar_url": "https://avatars.githubusercontent.com/u/195094882?u=e3ce399bf5334c20c82bd8c06fde69b138c9ef96&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfcuL",
      "number": 5182,
      "title": "Go to the top of Home page by clicking on the Navbar",
      "body": "Hello Team, When navigating on different web pages of my project I can go to the top of the home page by using this command href=\"/#Home\", but the issue is when reaching the bottom of the same home page if I wanna go to the top I need to scroll up manually. I would like to know if there is any solution to go to the top, for instance by clicking \"Home\" on the navbar. Thank you!",
      "created_at": "2025-04-25T17:43:04Z",
      "updated_at": "2025-04-25T17:43:05Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "gbusale",
        "avatar_url": "https://avatars.githubusercontent.com/u/56682728?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Afbog",
      "number": 5175,
      "title": "Does reflex support typescript?",
      "body": "Hi! Does reflex support typescript? we have custom react components that are built with typescript. If we are able to incorporate them, we can apply the look and feel of our organization.",
      "created_at": "2025-04-24T16:22:42Z",
      "updated_at": "2025-04-25T09:27:19Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "fersarr",
        "avatar_url": "https://avatars.githubusercontent.com/u/3913371?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Afbml",
      "number": 5174,
      "title": "problems for mapping assets folder",
      "body": "I have a small project—a web app built with Reflex that generates a certificate in PDF format and saves it in the assets folder. It should be downloadable via a download link, but it's not working. I’ve verified that the PDF file is indeed generated and saved in the assets folder, but the link shows a 404 error. It turns out that the file only becomes available after I restart the app using reflex run. Is there a way to map the assets folder as soon as the PDF is created so that it becomes available? I asked an AI and the issue seems to be that the folder isn’t being re-mapped after the PDF is generated, so the resource (in this case, the PDF) doesn’t appear as available.",
      "created_at": "2025-04-24T15:46:16Z",
      "updated_at": "2025-04-24T16:53:45Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "dbueno1985",
        "avatar_url": "https://avatars.githubusercontent.com/u/170674775?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Afakx",
      "number": 5166,
      "title": "how can I serve statics files such pdfs from my assests folder",
      "body": "I am new developting with reflex and im trying to build a simple web app that generate some pdf files. thoses files stores in assets folder but when I try to download them o access them throught localhost:3001/assests/example.pdf file i cant...... everytime I get 404 page not found... please who can help me with that?",
      "created_at": "2025-04-23T16:24:26Z",
      "updated_at": "2025-04-24T12:08:32Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "dbueno1985",
        "avatar_url": "https://avatars.githubusercontent.com/u/170674775?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfVZ4",
      "number": 5142,
      "title": "Form with arbitrary number of a custom component",
      "body": "Hey. I just started to use this as an alternative to something like Streamlit to obtain a more reactive and interactive application.\r\n\r\n## Summary\r\n\r\nI want to create a Form that allows a user to add an arbitrary amount of Work Experiences (like in a CV).\r\n\r\nI have made a component WorkXPState that inherits from rx.ComponentState. Then I inherit this in the form page (called consultant_profile.py), but I am having trouble allowing the user to have a button that adds a new Work Experience component that they can fill in. \r\n\r\nThe FormState needs to know how many Work Experiences to display, so I have a `num_work_experiences` variable that is incremented by 1 when the user presses a button in the form. But now I am having trouble rendering each of the Work Experience components.\r\n\r\n## Code\r\n\r\nThis is the component I made. It holds the variables I want to keep track off and update in the form. It also implements the classmethod get_component, as explained in the docs, with the UI stuff that I want to render.\r\n\r\n```python\r\n# components/work_experience.py\r\n\r\nclass WorkXPState(rx.ComponentState):\r\n    company_name: str\r\n    description: str\r\n    start_year: str = \"2020\"\r\n    start_month: str = \"February\"\r\n    end_year: str = \"2022\"\r\n    end_month: str = \"January\"\r\n\r\n    @rx.event\r\n    def change_start_year(self, value: str):\r\n        self.start_year = value\r\n\r\n    # ...\r\n    # Other events\r\n   # ....\r\n\r\n    @classmethod\r\n    def get_component(cls, id: int, **props) -> rx.Component:\r\n        return rx.form.field(\r\n            rx.card(\r\n                rx.vstack(\r\n                    rx.heading(f\"Work Experience {id}\"),\r\n                    rx.input(placeholder=\"Company Name\", on_blur=cls.set_company_name),\r\n                    ... # Removed code for simplicity\r\n                 ),\r\n            )\r\n        )\r\n\r\n# As shown in the documentation\r\nreusable_work_xp = WorkXPState.create\r\n```\r\n\r\nThen, in the page script for consultant_profile, I import the `reusable_work_xp`.\r\n\r\nThis is the FormState\r\n\r\n```python\r\n# pages/consultant_profile.py\r\n\r\nclass FormData(rx.State):\r\n    work_experiences: list[str] = []  # I create this list in order to iterate in the foreach of render_work_experiences\r\n    num_work_experiences: int = 0 # In order to have a counter that allows me to send an id as a number in each element of the above list\r\n    form_data: dict = {}\r\n\r\n    @rx.event\r\n    def handle_submit(self, form_data: dict):\r\n        self.form_data = form_data\r\n\r\n    @rx.event\r\n    def add_work_experience(self):\r\n        self.num_work_experiences += 1\r\n        self.work_experiences.append(str(self.num_work_experiences))\r\n```\r\n\r\nThese are the functions that I am calling from the page definition to render the work experiences in the form.\r\n\r\n```python\r\n# pages/consultant_profile.py\r\n\r\ndef render_work_experience(id):\r\n    return reusable_work_xp(id)\r\n\r\n# I needed to define the render_work_experience function instead of calling reusable_work_xp \r\n# otherwise, an error would show up saying that using a ComponentState as render_fn inside foreach is not supported yet\r\ndef render_work_experiences(work_experiences: rx.Var[list[str]]):\r\n    return rx.foreach(work_experiences, render_work_experience)\r\n```\r\n\r\nThis is the definition of the page that creates the UI.\r\n\r\n```python\r\n# pages/consultant_profile.py\r\n\r\n@rx.page(\"/consultant-profile/[consultant_id]\")\r\ndef consultant_profile():\r\n    return rx.center(\r\n        rx.form.root(\r\n            rx.vstack(\r\n                rx.input(placeholder=\"First Name\", name=\"first_name\"),\r\n                rx.input(placeholder=\"Last Name\", name=\"last_name\"),\r\n# If I add the components like this, each of them is independent and it works fine. But then it is not dymamic\r\n                # reusable_work_xp(1),\r\n                # reusable_work_xp(2),\r\n\r\n# If I add the components like this, all of them are linked together, and changing a field of one modifies the rest as well in the UI.\r\n                render_work_experiences(FormData.work_experiences),\r\n                rx.button(\"Add work experience\", on_click=FormData.add_work_experience),\r\n                rx.button(\"Submit\", type=\"submit\"),\r\n            ),\r\n            rx.text(FormData.form_data.to_string()),\r\n            on_submit=FormData.handle_submit,\r\n        ),\r\n)\r\n```\r\n\r\nThis is what I get now.\r\n\r\n![image](https://github.com/user-attachments/assets/d40e1022-6b57-4bb0-a034-cf1533b7dec7)\r\n\r\nBoth work experiences, added with the button `Add work experience`, are modified when either of them is. I.e., If I select start year 1990 in one of them, then both of them are modified.\r\n\r\nI am having lots of trouble understanding how to have this form in a way that I can have a button to add new components that I define elsewhere. I would like to do the same with Academic Education and a Skills section.\r\n\r\nDooes anyone have any tip on how to make this kind of architecture, where a form can dynamically add custom components with a defined structure/UI?\r\n\r\nThanks.",
      "created_at": "2025-04-17T14:10:45Z",
      "updated_at": "2025-04-23T18:41:12Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "EloiSanchez",
        "avatar_url": "https://avatars.githubusercontent.com/u/79266117?u=44e7bbb8658f6521405d8f082c9d27d73f5bc98d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfLwe",
      "number": 5095,
      "title": "Can I reasonably use mypy in a Reflex project?",
      "body": "I'm working on a project with Reflex.  In the past, we had not much problems using mypy but since upgrading Reflex from 0.6.4 to the latest release (now 0.7.5), mypy suddenly has lots of complains.\r\n\r\nMany of these issues seem to be coming from within Reflex.  For example, the [automagically created setters for state variables](https://reflex.dev/docs/events/setters/) seem to be unknown to mypy.  Further, I got complains like \"Module not callable\" on `rx.icon()` or '\"Var[Any]\" has no attribute \"button\"' on `rx.color_mode.button()`.\r\n \r\nNow I'm wondering: Are others using mypy on Reflex projects without problems (i.e. those are issues I could actually fix in my code) or is this an inherent problem with Reflex and should I just give up on using mypy in this project?",
      "created_at": "2025-04-07T11:36:38Z",
      "updated_at": "2025-05-05T20:37:43Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "luator",
        "avatar_url": "https://avatars.githubusercontent.com/u/9333121?u=f7a8d727313fd0bf8d60fd3218e4fc44078a4742&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfYPM",
      "number": 5156,
      "title": "Why transpile_packages don't work ?",
      "body": "Hi, I wrapped a local js component and add a transpile_package, but why it didn't work and I didn't find it in `next.config.js`\r\n\r\nMy codes are\r\n\r\n```py\r\nimport reflex as rx\r\n\r\nclass JbrowseComponent(rx.NoSSRComponent):\r\n    library: str = \"/public/jbrowse\"\r\n    tag: str = \"JbrowseComponent\"\r\n    is_default = True\r\n    lib_dependencies: list[str] = [\"@fontsource/roboto\",\"@jbrowse/react-linear-genome-view2\",\"jbrowse-plugin-ucsc\",\"json-stable-stringify\"]\r\n    transpile_packages: list[str] = [\"@mui/x-data-grid\"]\r\n    assembly: rx.Var[dict]\r\n    tracks: rx.Var[list]\r\n    location: rx.Var[str]\r\n    default_session: rx.Var[dict]\r\n\r\n\r\nj_browse_linear_genome_view = JbrowseComponent.create\r\n```",
      "created_at": "2025-04-21T09:26:57Z",
      "updated_at": "2025-04-22T00:24:39Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AxNmI",
        "body": "`transpile_packages` is just a list of dependencies that _if found_ will be transpiled, as the code is currently written, putting something into `transpile_packages` on its own doesn't cause it to be added to the dependencies.\r\n\r\nIf you add `\"@mui/x-data-grid\"` to the `lib_dependencies`, then you'll see it in the `next.config.js`.\r\n\r\nI could entertain a feature request to automatically add `transpile_packages` to the dependency list, but that's not currently how it works."
      },
      "user": {
        "login": "SeqCrafter",
        "avatar_url": "https://avatars.githubusercontent.com/u/43256809?u=52b0b3f08e7957cd369561263bacfb63e45921dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aects",
      "number": 4835,
      "title": "How can I generate a PDF and then download it?",
      "body": "I'm able to generate a pandas dataframe from some database queries and download it as a csv. I want to extend that functionality to a PDF using reportlab. I can make the pdf and save it to the assets folder, but how do I make it available to download?",
      "created_at": "2025-02-17T19:48:27Z",
      "updated_at": "2025-04-21T21:07:45Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "chimeracle",
        "avatar_url": "https://avatars.githubusercontent.com/u/87193612?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfWrG",
      "number": 5151,
      "title": "Reflex code evolution",
      "body": "Hello guys,\r\n\r\nJust to share some code evolution metrics 📊 of Reflex in the last five years: \r\n\r\nhttps://andrehora.github.io/gitevo-examples/python/reflex.html\r\n\r\nTry in your own Python repository:\r\n\r\n```\r\npip install gitevo\r\ngitevo <git_url>\r\n```\r\n\r\nFor example:\r\n\r\n```\r\ngitevo https://github.com/reflex-dev/reflex\r\n```\r\n\r\nMore info: https://github.com/andrehora/gitevo",
      "created_at": "2025-04-18T18:45:33Z",
      "updated_at": "2025-04-18T18:45:34Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "andrehora",
        "avatar_url": "https://avatars.githubusercontent.com/u/7409969?u=699d553fb73822ce151d38f6787b7cce8bbf61ee&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfV1N",
      "number": 5144,
      "title": "v0.7.8 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.8a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-04-17 12:36 PST: 0.7.8a1 pre-release published for testing\r\n2025-04-21: Planned Public release of 0.7.8\r\n\r\n# Release Notes\r\n\r\n## `is_none()` and `is_not_none()` operations.\r\n\r\nIf you were getting some of those pesky lint errors because you were doing `some_var == None`, you can do `some_var.is_none()` instead.\r\n\r\n* add is none by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5136\r\n\r\n## Call event handlers with keyword arguments\r\n\r\nAlthough pyright will be mad at you.\r\n\r\n```py\r\nimport reflex as rx\r\n\r\n\r\nclass State(rx.State):\r\n    \"\"\"The app state.\"\"\"\r\n\r\n    field: int = 0\r\n\r\n    @rx.event\r\n    def change_field(self, new_value: int):\r\n        \"\"\"Change the state field.\"\"\"\r\n        self.field = new_value\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.button(\r\n        \"Click me!\",\r\n        State.field,\r\n        on_click=State.change_field(new_value=2),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\n* Allow calling event handlers with keyword arguments by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5124\r\n\r\n## NextJS upgrade (15.3.0)\r\n\r\nThis includes faster builds if you enable the environment variable `REFLEX_USE_TURBOPACK`.\r\n\r\n* nextjs 15.3 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5125\r\n\r\n## Bugfixes\r\n* i hate order of precedence by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5134\r\n* Read environment secrets in state at import time [ENG-5426] [ENG-5455] by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5120\r\n* make event statically type-able by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5135\r\n* add str to callback for call_function by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5139\r\n\r\n## Chores\r\n* bump to 0.7.8dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5129\r\n* update supported version in security by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5128\r\n* enable UP ruff rule by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5137\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.7...release/reflex-0.7.8",
      "created_at": "2025-04-17T19:44:45Z",
      "updated_at": "2025-05-15T21:23:19Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfTdb",
      "number": 5133,
      "title": "Immediate UI Rehydration from Background Task Updates",
      "body": "Hi everyone,\r\n\r\nI'm encountering an issue where my background task updates the state correctly but the UI doesn’t immediately rehydrate with the new state until another reactive event (like a button click for new file upload) is triggered. My use case involves processing file uploads in one microservice, with a RabbitMQ message updating the status in my Reflex state.\r\n\r\nI have an UploadState where file statuses are stored in a dictionary (file_statuses). A background task (via RabbitMQ) calls an event handler update_file_status that updates the status for each file and, if a file is complete, sets a processing_complete flag. I’m using a bare yield at the end of the event in hopes it forces a state flush to the UI. Here’s a simplified version of the code:\r\n\r\n`@rx.event\r\nasync def update_file_status(self, filename, status):\r\n    logger.info(f\"Received status update for {filename}: {status}\")\r\n    # Update the file_statuses dictionary to reflect the new status\r\n    new_statuses = {**self.file_statuses, filename: status}\r\n    self.file_statuses = new_statuses\r\n    logger.info(f\"Updated statuses: {new_statuses}\")\r\n    \r\n    if status == \"COMPLETED\":\r\n        self.processing_complete = True\r\n\r\n    yield  # Intended to flush the update immediately`\r\n\r\n\r\n\r\nWhat I've Tried:\r\nNormal (Non-background) Event with a Bare Yield:\r\nAs shown above, using a bare yield in a standard event still defers the state flush until another reactive event occurs.\r\n\r\nSetting the Event to background=True:\r\nI also tried setting the decorator to @rx.event(background=True) on the update_file_status event so it would run as a background task with an async with self block. However, this approach produced the same result—the state on the server updated correctly, but the UI did not immediately rehydrate.\r\n\r\nForcing a Flush with a Periodic Dummy Event:\r\nI experimented with a dummy flush event scheduled on a timer (e.g., using a background coroutine to call a flush event at regular intervals) so that state diffs would be forced. However, even with this approach, the UI still shows stale statuses until another user-initiated event occurs.\r\n\r\nExample flush event:\r\n`@rx.event\r\nasync def flush_state(self):\r\n    yield\r\n\r\nasync def periodic_flush(self, interval: float = 0.1):\r\n    while True:\r\n        await asyncio.sleep(interval)\r\n        async for _ in self.flush_state():\r\n            pass\r\n\r\n@rx.event\r\nasync def initialize_flush(self):\r\n    asyncio.create_task(self.periodic_flush())\r\n    yield\r\n`\r\n\r\nGiven that background tasks in Reflex—whether using a bare yield or running with the background=True decorator—update state correctly but do not force immediate UI rehydration, is there a recommended workaround to force a reactive flush without a user-triggered event?\r\n\r\nSpecifically, I'm interested in solutions or design recommendations to ensure that state changes coming from a message queue (from another microservice) are immediately reflected in the UI. Are there alternative approaches to scheduling a dummy reactive event or any configuration options in Reflex that can force the flush?\r\n\r\nAny guidance or suggestions would be greatly appreciated!\r\n\r\nThanks in advance!\r\n",
      "created_at": "2025-04-15T16:45:34Z",
      "updated_at": "2025-04-15T16:45:36Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "hantran7",
        "avatar_url": "https://avatars.githubusercontent.com/u/75582910?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfPnm",
      "number": 5116,
      "title": "v0.7.7 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.7a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-04-10 17:50 PST: 0.7.7a1 pre-release published for testing\r\n2025-04-14: Planned Public release of 0.7.7\r\n\r\n# Release Notes\r\n\r\n## `el.input` with `type=range` and `type=number` correctly reports events of type `(float) -> Any`\r\n\r\nSames goes for `el.input` with `type=checkbox` and event type `(bool) -> Any`.\r\n\r\nThis can be a subtle breaking change if you had code depending on this small detail.\r\n\r\n```py\r\nrx.el.input(\r\n    type=\"checkbox\"\r\n    on_change=rx.console_log # prints false and true now\r\n)\r\n```\r\n\r\n* allow int and float typing for input elements behind a warning by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5098\r\n\r\n## Bun version behavior fixes\r\n\r\nReflex will use system host if either:\r\n\r\n1) You passed REFLEX_USE_SYSTEM_BUN. It will warn you if your version of `bun` is outdated, but will ultimately let you run reflex.\r\n2) You don't have a reflex-installed `bun` and you do have `bun` installed on your system and it's up to date.\r\n\r\nOtherwise, Reflex uses or downloads/installs or updates its local version of bun that is shared between your reflex applications.\r\n\r\n* be less whiny about bun version and suggest alternatives by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5106\r\n\r\n## Hosting CLI Improvements\r\n\r\nReflex hosting cli will now support uploading a local sqlite db as long as it is less than 25mb. This will give the hosted site an ephemeral database. Meaning that new data added could be lost but data uploaded is always persisted. \r\n\r\nTo achieve this a user must leverage the cloud config (`reflex cloud config`) with the following flag `include_db: True`\r\n\r\n* allow db upload on hosting by @Kastier1 in https://github.com/reflex-dev/reflex/pull/5101\r\n\r\n## Bugfixes\r\n* fix imports lib dependencies by @Lendemor in https://github.com/reflex-dev/reflex/pull/5109\r\n* escape type info in error messages by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5107\r\n\r\n## Chores\r\n* add instruction to use latest python version by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5092\r\n* add permission to all workflows by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5086\r\n* bump deps by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5110\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.6...release/reflex-0.7.7",
      "created_at": "2025-04-11T04:01:09Z",
      "updated_at": "2025-05-15T21:23:22Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfO3h",
      "number": 5111,
      "title": "How to define this complex data type? Why can. to (str) solve this problem?           如何定义这种复杂的数据类型？为什么.to(str)能解决这个问题？",
      "body": "- Why must 'to.(str)' be added to 'value'? Otherwise, an error will be reported: \r\n    - 'TypeError: Invalid var passed for prop TextFieldRoot.value, expected type str | int | float, got value item[\"test\"] of type list[dict].'\r\n- If var does not contain a 'list': [{'a ':'A'}] There is no such problem\r\n- Why can't the value of input simply use item['test']?\r\n\r\n`class state(rx.State):\r\nvar: list[dict[str, list[dict]]] = [\r\n{\r\n'test': 'test',\r\n'list': [{'a': 'A'}]  # It will cause some strange effects\r\n}\r\n]\r\ndef foreach_component(item: dict) -> rx.Component:\r\nreturn rx.el.input(value=item['test'].to(str)) # Only by adding. to(str) can it run here, why?\r\ndef main() -> rx.Component:\r\nreturn rx.foreach(state.var, foreach_component)`\r\n\r\n\r\n\r\n\r\n中文:\r\n- 为什么value必须加上to(str)？否则会报错：TypeError: Invalid var passed for prop TextFieldRoot.value, expected type str | int | float, got value item[\"test\"] of type list[dict].\r\n- 如果var不含 'list': [{'a': 'A'}] 就没有这个问题\r\n- 为什么input的value不能只是简单地使用item['test']？\r\n\r\nclass state(rx.State):\r\nvar: list[dict[str, list[dict]]] = [\r\n{\r\n'test': 'test',\r\n'list': [{'a': 'A'}]  # 它会造成一些奇怪的影响\r\n}\r\n]\r\ndef foreach_component(item: dict) -> rx.Component:\r\nreturn rx.el.input(value=item['test'].to(str)) # 这里只有加上.to(str)可以运行，为什么？\r\ndef main() -> rx.Component:\r\nreturn rx.foreach(state.var, foreach_component)",
      "created_at": "2025-04-10T10:13:59Z",
      "updated_at": "2025-04-10T10:15:20Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NACXA0",
        "avatar_url": "https://avatars.githubusercontent.com/u/67007250?u=bc3b2e308fd6fed88200ed75ba8d325bd6456538&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfNg4",
      "number": 5104,
      "title": "I think the documents on reflex.dev should upgrade",
      "body": "I think the documents on Reflex Web are out-of-date because there are plenty of things lost. For example, the badge removal for free users, the admin, and so on. ",
      "created_at": "2025-04-09T03:59:45Z",
      "updated_at": "2025-04-09T05:37:04Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "SeqCrafter",
        "avatar_url": "https://avatars.githubusercontent.com/u/43256809?u=52b0b3f08e7957cd369561263bacfb63e45921dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfJL1",
      "number": 5085,
      "title": "v0.7.6 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.6a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-04-03 13:00 PDT: 0.7.6a1 pre-release published for testing\r\n2025-04-07: Planned Public release of 0.7.6\r\n\r\n# Release Notes\r\n\r\n## Admin dashboard is optional now\r\n\r\nAdmin dashboard (that is, `starlette_admin`), is now not included by default. If you want to retain it, just install the `starlette-admin` package.\r\n\r\n* remove publish command from reflex custom components by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5053\r\n\r\n## Removing custom components publish command\r\n\r\nTo lower the number of dependencies and making the framework less opinionated about what tools to use, we're removing the `reflex components publish`. Our recommendation is to use `reflex components build` followed by `twine upload` or `uv publish`, or really any package upload utility.\r\n\r\n* remove publish command from reflex custom components by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5053\r\n* reintroduce python multipart for formdata by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5068\r\n* remove twine env vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5067\r\n\r\n## Add `value` and `default_value` to `rx.el.select`\r\n\r\nI don't know why it wasn't there originally.\r\n\r\n* Add value and default_value to rx.el.select by @masenf in https://github.com/reflex-dev/reflex/pull/5079\r\n\r\n## Bugfixes\r\n* Resolve async computed vars in background task by @masenf in https://github.com/reflex-dev/reflex/pull/5057\r\n* fix package manager raise on none logic by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/5056\r\n* [ENG-4921] Avoid infinite loop in _mark_dirty_computed_vars by @masenf in https://github.com/reflex-dev/reflex/pull/5058\r\n* retain traceback of foreach untyped var error by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5052\r\n* only include devIndicators if it's False by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5066\r\n* stream_logs: protect against closed stdout file handle by @masenf in https://github.com/reflex-dev/reflex/pull/5071\r\n* improve _isinstance for var types by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5072\r\n* use inspect.signature over fullargspec by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5076\r\n* change behavior around default style css by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5077\r\n* relax remove none logic in cond by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5065\r\n* reload config on __post_init__ by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5064\r\n* handle literal subclass in issubclass by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5081\r\n\r\n## Chores\r\n* fix venv size after uv by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5059\r\n* remove pyi files by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5074\r\n* really really make sure that we don't make pyi hashes file if we don't need to by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5083\r\n* only send reflex error in telemetry by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5082\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.5...v0.7.6",
      "created_at": "2025-04-03T20:14:44Z",
      "updated_at": "2025-05-15T21:23:26Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfMzb",
      "number": 5100,
      "title": "How to add multiple cookie names and values",
      "body": "I am using rx.script and rx.call_script for setting multiple cookies without rx.cookie as it only su[supports one name and value , I needed multiple names and multipl values i.e multiple cookies andI tried running gthe below script and I can see the log everything was being passed to this set_jwt_cookie but somehow rx.call_script was not being called or returned . Can somehow help me with this ?\r\n `\"\"\"global auth base state\"\"\"\r\n\r\nfrom typing import Dict, Any, Optional\r\nimport reflex as rx\r\n\r\nclass AuthState(AuthBaseClass):\r\n    \"\"\"Combined authentication and cookie management state.\"\"\"\r\n    \r\n    cookie_value: str = \"\"  \r\n    \r\n\r\n    @rx.event\r\n    async def set_jwt_cookie(self, venture_name: str, token: str, days: int = 7, secure: bool = True, same_site: str = \"Strict\"):\r\n        try:\r\n            if not venture_name or not token:\r\n                raise ValueError(\"Invalid parameters\")\r\n                \r\n            cookie_name = self.get_cookie_name(venture_name)\r\n            logger.info(f\"Setting JWT cookie: name={cookie_name}, token={token}, days={days}, secure={secure}, same_site={same_site}\")\r\n            return rx.call_script(\r\n            f\"window.cookieUtils.setSecureCookie('{cookie_name}', '{token}', {days}, {str(secure).lower()}, '{same_site}')\",\r\n            callback=self.handle_cookie_result\r\n        )\r\n\r\n        except Exception as e:\r\n            self.auth_error = \"Login failed\"\r\n\r\n    def handle_cookie_result(self, result):\r\n        return rx.console_log(f\"Cookie operation result: {result}\")\r\n\r\ndef cookie_script() -> rx.Component:\r\n    return rx.script(\"\"\"\r\n        window.cookieUtils = {\r\n            getCookie: function(name) {\r\n                const decoded = decodeURIComponent(document.cookie);\r\n                const cookies = decoded.split('; ');\r\n                for (let cookie of cookies) {\r\n                    if (cookie.startsWith(name + '=')) {\r\n                        return cookie.substring(name.length + 1);\r\n                    }\r\n                }\r\n                return '';\r\n            },\r\n            \r\n            setSecureCookie: function(name, value, days, secure, sameSite) {\r\n                const date = new Date();\r\n                date.setTime(date.getTime() + (days * 86400000));\r\n                let cookieString = `${name}=${value}; expires=${date.toUTCString()}; path=/`;\r\n                \r\n                if (secure) {\r\n                    cookieString += '; Secure';\r\n                }\r\n                \r\n                if (sameSite) {\r\n                    cookieString += `; SameSite=${sameSite}`;\r\n                }\r\n                \r\n                document.cookie = cookieString;\r\n                return document.cookie;\r\n            },\r\n            \r\n            deleteSecureCookie: function(name) {\r\n                document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; Secure; SameSite=Strict`;\r\n                return '';\r\n            }\r\n        };\r\n    \"\"\",\r\n    is_async=False,  \r\n    on_ready=rx.call_script(\"console.log('Cookie utils loaded')\")  \r\n    )`\r\n    \r\n    I also included the script in main app.py \r\n    `app = rx.App(head_components=[cookie_script()])\r\n`\r\n",
      "created_at": "2025-04-08T12:11:55Z",
      "updated_at": "2025-04-08T12:11:56Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "sriharsha-alphanome",
        "avatar_url": "https://avatars.githubusercontent.com/u/201696461?u=386807882dfb39c3b4fdde69f17eee47273654c5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfAvL",
      "number": 5031,
      "title": "New package for integrating Clerk user authentication",
      "body": "Hey reflex community!! \r\n\r\nJust wanted to share that I have create a new and improved `Clerk` plugin that makes adding user authentication to your app super easy (and free up to 10,000 users!). \r\n\r\nIt's installable as `reflex-clerk-api` (to differentiate it from the existing but not maintained `reflex-clerk`)\r\n\r\nYou can check out a demo of it in action [here](https://reflex-clerk-api-demo.adventuresoftim.com)\r\nIt has documentation and a getting started guide [here](https://timchild.github.io/reflex-clerk-api/getting_started/)\r\nAnd here is the [Github repo](https://github.com/TimChild/reflex-clerk-api)\r\n\r\nFor those of you that used `reflex-clerk` this should be almost a drop in replacement. See [notes on migrating](https://timchild.github.io/reflex-clerk-api/migrating/).\r\n\r\nIf this is useful to you, please star the repository!",
      "created_at": "2025-03-26T00:17:54Z",
      "updated_at": "2025-04-07T04:37:55Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "TimChild",
        "avatar_url": "https://avatars.githubusercontent.com/u/48571510?u=461c39272e0c2fff29afc5ecc5957267f2f7aca9&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfIol",
      "number": 5084,
      "title": "How can we use DaisyUI or react-daisyui in Reflex ?",
      "body": "I discovered that react-daisyui requires us to make the following changes to the tailwindcss configuration file:\r\n\r\n```\r\nmodule.exports = {\r\n  content: [\r\n    'node_modules/daisyui/dist/**/*.js',\r\n    'node_modules/react-daisyui/dist/**/*.js',\r\n  ],\r\n  plugins: [require('daisyui')],\r\n}\r\n```\r\n\r\nHowever, after I set the identical value in my rx.config()\r\n\r\n```\r\nconfig = rx.Config(\r\n    app_name=\"DaisyUI\",\r\n    tailwind={\r\n        \"theme\": {\r\n            \"extend\": {},\r\n        },\r\n        \"plugins\": [\"daisyui\",\"@tailwindcss/typography\"],\r\n        \"content\": [\r\n            'node_modules/daisyui/dist/**/*.js',\r\n            'node_modules/react-daisyui/dist/**/*.js',\r\n        ],\r\n    },\r\n)\r\n```\r\nI discovered that no component was impacted by the tailwindcss.\r\n\r\n",
      "created_at": "2025-04-03T09:45:03Z",
      "updated_at": "2025-04-03T09:45:04Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "SeqCrafter",
        "avatar_url": "https://avatars.githubusercontent.com/u/43256809?u=52b0b3f08e7957cd369561263bacfb63e45921dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfAiY",
      "number": 5029,
      "title": "First Impressions",
      "body": "**Hi everyone!**  \r\n\r\nI've been aware of **Reflex** for a while but only took a deep dive yesterday. My background is in **Dart/Flutter** and **Python/Flet**, with zero experience in **React/JavaScript**. What I particularly admire about Flutter and Flet's codebase:  \r\n- Clear **separation of logic and UI** through OOP,  \r\n- **Typed data classes** for component properties,  \r\n- **Enums** for constrained values (e.g., `TextAlign.left`).  \r\n\r\nWhen I explored **Reflex's** source code, I felt disappointed. I acknowledge my expectations are my own responsibility, but I genuinely wish Reflex had the same **API rigor and thoughtfulness** as Flutter/Flet.  \r\n\r\n### **Issues I Noticed**  \r\n1. **Weak Component Typing**  \r\n   - No equivalents to Flutter's `@immutable` classes or Python `dataclass`.  \r\n\r\n2. **Unhelpful IDE Support**  \r\n   For example, inspecting `rx.center` arguments doesn't show:  \r\n   - **Valid values** (like Flutter's `alignment` options).  \r\n   - **Required parameters**.  \r\n   ![Uninformative autocomplete example](https://github.com/user-attachments/assets/37858e33-aa75-4f94-af48-55df08fbc8f1)  \r\n  How this could look: \r\n  ![изображение](https://github.com/user-attachments/assets/923c46e3-a541-43fb-976e-4279ff0b74c6)\r\n\r\n3. **Unconventional Naming**  \r\n   Components appear as variables (`rx.center`), though they're actually **factory methods**:  \r\n   ```python\r\n   center = Center.create  # Not a class!\r\n   ```\r\n   ![Variable-like component example](https://github.com/user-attachments/assets/3b90f948-d46c-46cd-98b6-4b2f2dcad7dc)  \r\n   While Python developers might find this normal, coming from Flutter it feels **inconsistent**.\r\n\r\n---\r\n\r\n### **What I'd Like to See in Reflex**  \r\n1. **Strictly Typed Props**  \r\n   Using `Pydantic` or validated annotations:  \r\n   ```python\r\n   class BoxProps(BaseModel):\r\n       width: Union[int, str]  # \"100px\" or 100\r\n       color: str = \"white\"\r\n   ```\r\n\r\n2. **Enums for Constrained Values**  \r\n   ```python\r\n   class TextAlign(Enum):\r\n       LEFT = \"left\"\r\n       CENTER = \"center\"\r\n\r\n   rx.text(align=TextAlign.LEFT)  # Flutter-style!\r\n   ```\r\n\r\n3. **True Classes Over Factories**  \r\n   Instead of:  \r\n   ```python\r\n   button = Button.create  # Current approach\r\n   ```  \r\n   Prefer:  \r\n   ```python\r\n   class Button(Component):\r\n       def __init__(self, child: str, on_click: Callable):\r\n           super().__init__(child=child, on_click=on_click)\r\n   ```\r\n\r\n4. **Better IDE Integration**  \r\n   Hints like:  \r\n   - *\"`color` must be a HEX string or named color (red, blue)\"*.  \r\n\r\n---\r\n\r\n### **Why This Matters**  \r\n- **Reliability**: Fewer runtime errors.  \r\n- **Learnability**: Faster onboarding for new developers.  \r\n- **Maintainability**: Easier refactoring and scaling.  \r\n\r\nReflex bills itself as **\"React for Python\"**, but currently lacks mature typing practices. This may improve with time—the library is young and evolving.  \r\n\r\n**Question for the community**:  \r\nWhat are your thoughts on Reflex's current typing approach? Are there plans to strengthen it?  \r\n\r\nI haven't properly explored Reflex yet. My experience is still very superficial, but these are the things I've noticed so far.\r\n\r\nI really like the applications built with Reflex - they're truly impressive. What I'm suggesting is meant to improve the developer experience.",
      "created_at": "2025-03-25T19:07:44Z",
      "updated_at": "2025-04-02T21:41:44Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "7576457",
        "avatar_url": "https://avatars.githubusercontent.com/u/105982046?u=e18cd02437bf9323114c248146ddd9719f7a8295&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfC5q",
      "number": 5051,
      "title": "v0.7.5 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.5a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-03-27 16:10 PST: 0.7.5a1 pre-release published for testing\r\n2025-03-31: Planned Public release of 0.7.5\r\n\r\n\r\n# Release Notes\r\n\r\n## NextJS back at latest version\r\n\r\nAs we have had more bugs related to the downgrade, we now have upgraded it back and disable turbopack by default. You can overwrite nextjs version with `NEXTJS_VERSION` but it is very much NOT SUPPORTED. Expect bugs when you do so.\r\n\r\n* expose NEXTJS_VERSION and upgrade nextjs by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5039\r\n* warn users about nextjs version by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5045\r\n\r\n## Event handlers as Vars\r\n\r\nNot flashy, but you can use handlers in conds and such\r\n\r\n```py\r\non_click=rx.cond(\r\n  SnakeState.game_over,\r\n  SnakeState.start_game,\r\n  SnakeState.pause_game\r\n)\r\n```\r\n\r\nThis only works when the event handler takes no arguments, however, you should use the much more reliable:\r\n\r\n```py\r\non_click=rx.cond(\r\n  SnakeState.game_over,\r\n  SnakeState.start_game(),\r\n  SnakeState.pause_game()\r\n)\r\n```\r\n\r\nWhere you call the event handlers. You can use lambda syntax to provide arguments for them.\r\n\r\n* allow event handlers to be turned into vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5032\r\n\r\n## Expose Socket constants for further customizability\r\n\r\nExposes `REFLEX_SOCKET_MAX_HTTP_BUFFER_SIZE`, `REFLEX_SOCKET_INTERVAL`, `REFLEX_SOCKET_TIMEOUT` to be modified.\r\n\r\n* expose socket constants by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5022\r\n\r\n## Add support for ndigits for dunder method __round__ for int vars\r\n\r\n```py\r\nround(State.int_field, 3)\r\n```\r\n\r\n* add ndigits to round dunder method by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5019\r\n\r\n## Expose run_in_thread\r\n\r\n`rx.run_in_thread` is a simple wrapper around asyncio to run a function in a different thread.\r\n\r\n* promote run_in_thread from experimental by @Lendemor in https://github.com/reflex-dev/reflex/pull/5016\r\n\r\n## Allow `None` as children of components\r\n\r\nPreviously we errored, but now we allow it, it doesn't render to anything.\r\n\r\n* allow none as a child of components by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5043\r\n\r\n## Allow arguments for rx.memo event handlers\r\n\r\n```py\r\n@rx.memo\r\ndef counter(on_text: rx.EventHandler[rx.event.passthrough_event_spec(str)]):\r\n    return rx.hstack(\r\n        rx.button(\"Increment\", on_click=on_text(\"Increment\")),\r\n        rx.button(\"Decrement\", on_click=on_text(\"Decrement\")),\r\n    )\r\n\r\n\r\ndef index():\r\n    return rx.vstack(rx.text(\"Counter\"), counter(on_text=rx.console_log))\r\n```\r\n\r\nYou can even define your own event spec\r\n\r\n```py\r\ndef hello_who(who: rx.Var[str]) -> tuple[rx.Var[str]]:\r\n    return (rx.Var.create(f\"Hello, {who}!\"),)\r\n\r\n\r\n@rx.memo\r\ndef counter(on_text: rx.EventHandler[hello_who]):\r\n    return rx.hstack(\r\n        rx.button(\"Masen\", on_click=on_text(\"Masen\")),\r\n        rx.button(\"Not Masen\", on_click=on_text(\"Not Masen\")),\r\n    )\r\n\r\n\r\ndef index():\r\n    return rx.vstack(rx.text(\"Who Are You?\"), counter(on_text=rx.console_log))\r\n```\r\n\r\n* allow arguments to be passed to rx memo event handlers by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5021\r\n\r\n## Bugfixes\r\n\r\n* load script directory from config [ENG-5131] by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5020\r\n* copy styles to the correct dir by @masenf in https://github.com/reflex-dev/reflex/pull/5024\r\n* fix wrong domain for gallery backend by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5036\r\n* make sure to str the value in console log by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5030\r\n* use package path for dynamic icon by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5028\r\n* use granian features to improve hot reload by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5023\r\n* Khaleel/eng 5281 typeerror unsupported type ellipsis for guess type by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5046\r\n* fix cert errors for package install by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5050\r\n\r\n## Chores\r\n\r\n* bump to 0.7.5dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5018\r\n* Improve AppHarness behavior when app already exists in a relative directory by @masenf in https://github.com/reflex-dev/reflex/pull/5025\r\n* make test_call_script more reliable by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5038\r\n* add integration test for icons by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5037\r\n* make pyright happier by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5006\r\n* fix iter parent class method by @Lendemor in https://github.com/reflex-dev/reflex/pull/5044\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.4...v0.7.5",
      "created_at": "2025-03-27T23:34:18Z",
      "updated_at": "2025-05-15T21:23:30Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfD_5",
      "number": 5060,
      "title": "getting error: CERT_HAS_EXPIRED downloading tarball",
      "body": "Hi all,\r\nSince yesterday I am getting errors \"error: CERT_HAS_EXPIRED downloading tarball\" when running \"reflex run\" the errors seems to pop up when trying to resolve the front end depencies. I have been playing around with Reflex for two weeks now without having issues, this error seems to be related to SSL certificates but I am running Reflex locally so I don't know why I get this error.\r\n\r\nBelow the logs :\r\n\r\nHi all,\r\nSince yesterday I am getting errors \"error: CERT_HAS_EXPIRED downloading tarball\" when running \"reflex run\" the errors seems to pop up when trying to resolve the front end depencies. I have been playing around with Reflex for two weeks now without having issues, this error seems to be related to SSL certificates but I am running Reflex locally so I don't know why I get this error.\r\n\r\nBelow the logs :\r\n\r\nPS C:\\Projects\\my_app> reflex run\r\nWarning: Windows Subsystem for Linux (WSL) is recommended for improving initial install times.\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Starting Reflex App ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n[08:52:30] Compiling: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 16/16 0:00:00\r\nInstalling base frontend packages failed with exit code 1\r\nbun install v1.2.4 (fd9a5ea6)                                                                                                                                                                                                                                                                                       \r\nResolving dependencies                                                                                                                                                                                                                                                                                              \r\nResolved, downloaded and extracted [264]                                                                                                                                                                                                                                                                            \r\nerror: CERT_HAS_EXPIRED downloading tarball is-arrayish@0.3.2                                                                                                                                                                                                                                                       \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball queue-microtask@1.2.3                                                                                                                                                                                                                                                   \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball is-arrayish@0.2.1                                                                                                                                                                                                                                                       \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball is-number@7.0.0                                                                                                                                                                                                                                                         \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball callsites@3.1.0                                                                                                                                                                                                                                                         \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball resolve-from@4.0.0                                                                                                                                                                                                                                                      \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball object-assign@4.1.1                                                                                                                                                                                                                                                     \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball asynckit@0.4.0                                                                                                                                                                                                                                                          \r\n\r\nerror: CERT_HAS_EXPIRED downloading tarball js-tokens@4.0.0                                                                                                                                                                                                                                                         \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball @nodelib/fs.walk@1.2.8                                                                                                                                                                                                                                                  \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball babel-plugin-macros@3.1.0                                                                                                                                                                                                                                               \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball pify@2.3.0                                                                                                                                                                                                                                                              \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball @nodelib/fs.stat@2.0.5                                                                                                                                                                                                                                                  \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball path-parse@1.0.7                                                                                                                                                                                                                                                        \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball merge2@1.4.1                                                                                                                                                                                                                                                            \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball error-ex@1.3.2                                                                                                                                                                                                                                                          \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball simple-swizzle@0.2.2                                                                                                                                                                                                                                                    \r\n\r\nerror: CERT_HAS_EXPIRED downloading tarball ms@2.1.3                                                                                                                                                                                                                                                                \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball is-glob@4.0.3                                                                                                                                                                                                                                                           \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball parent-module@1.0.1                                                                                                                                                                                                                                                     \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball to-regex-range@5.0.1                                                                                                                                                                                                                                                    \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball path-type@4.0.0                                                                                                                                                                                                                                                         \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball color-name@1.1.4                                                                                                                                                                                                                                                        \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball postcss-value-parser@4.2.0                                                                                                                                                                                                                                              \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball color-convert@2.0.1                                                                                                                                                                                                                                                     \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball read-cache@1.0.0                                                                                                                                                                                                                                                        \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball normalize-range@0.1.2                                                                                                                                                                                                                                                   \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball detect-node-es@1.1.0\r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball hoist-non-react-statics@3.3.2                                                                                                                                                                                                                                           \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball @nodelib/fs.scandir@2.1.5                                                                                                                                                                                                                                               \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball parse-json@5.2.0                                                                                                                                                                                                                                                        \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball delayed-stream@1.0.0                                                                                                                                                                                                                                                    \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball combined-stream@1.0.8                                                                                                                                                                                                                                                   \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball is-extglob@2.1.1                                                                                                                                                                                                                                                        \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball loose-envify@1.4.0                                                                                                                                                                                                                                                      \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball json-parse-even-better-errors@2.3.1                                                                                                                                                                                                                                     \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball run-parallel@1.2.0                                                                                                                                                                                                                                                      \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball proxy-from-env@1.1.0\r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball globals@11.12.0                                                                                                                                                                                                                                                         \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball escape-string-regexp@4.0.0                                                                                                                                                                                                                                              \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball lines-and-columns@1.2.4                                                                                                                                                                                                                                                 \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball source-map@0.5.7                                                                                                                                                                                                                                                        \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball streamsearch@1.1.0                                                                                                                                                                                                                                                      \r\n                                                                                                                                                                                                                                                                                                                    \r\nerror: CERT_HAS_EXPIRED downloading tarball find-root@1.1.0                                                                                                                                                                                                                                                         \r\nRun with --loglevel debug  for the full log.\r\nTraceback (most recent call last):                                                                                                                                                                                                                                                                                  \r\n  File \"C:\\Users\\ya\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\utils\\prerequisites.py\", line 509, in compile_or_validate_app                                                                                                                                                                          \r\n    compile_app()\r\n  File \"C:\\Users\\ya\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\utils\\prerequisites.py\", line 453, in compile_app\r\n    get_compiled_app(reload=reload, export=export)\r\n  File \"C:\\Users\\ya\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\utils\\prerequisites.py\", line 442, in get_compiled_app\r\n    app._compile(export=export)\r\n  File \"C:\\Users\\ya\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\app.py\", line 1357, in _compile\r\n    self._get_frontend_packages(all_imports)\r\n  File \"C:\\Users\\ya\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\app.py\", line 943, in _get_frontend_packages\r\n    prerequisites.install_frontend_packages(page_imports, get_config())\r\n  File \"C:\\Users\\ya\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\utils\\prerequisites.py\", line 1201, in _inner\r\n    func(*args, **kwargs)\r\n  File \"C:\\Users\\ya\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\utils\\prerequisites.py\", line 1230, in install_frontend_packages\r\n    processes.run_process_with_fallbacks(\r\n  File \"C:\\Users\\ya\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\utils\\processes.py\", line 428, in run_process_with_fallbacks\r\n    show_status(\r\n  File \"C:\\Users\\ya\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\utils\\processes.py\", line 352, in show_status\r\n    for line in stream_logs(\r\n  File \"C:\\Users\\ya\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\utils\\processes.py\", line 320, in stream_logs\r\n    raise typer.Exit(1)\r\nclick.exceptions.Exit: 1",
      "created_at": "2025-03-29T01:03:30Z",
      "updated_at": "2025-03-29T09:00:52Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "yochh",
        "avatar_url": "https://avatars.githubusercontent.com/u/4275851?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfDGs",
      "number": 5054,
      "title": "How can i do profiling in reflex ??",
      "body": "Here's my pc specs : \r\nModel : Lenovo Legion 5\r\nRAM : 24 GB\r\nCPU : 6-Cores\r\n AMD Ryzen 5-4600H Processor up to 4.0GHz\r\n \r\n Reflex takes around 2 minutes to detect the state change or initialize the first run. So, Is there any way to do profiling in reflex, So I can debug which file is taking more time?   \r\n",
      "created_at": "2025-03-28T06:04:32Z",
      "updated_at": "2025-03-28T20:57:26Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "HarshaMalla",
        "avatar_url": "https://avatars.githubusercontent.com/u/96933166?u=4149505831bca95184087adab9ee70f6ca1ecccd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfC2W",
      "number": 5048,
      "title": "How to record click events on an interactive leaflet map?",
      "body": "Looking for a way to create a custom component that captures click events on a leaflet map and records the lat-lon for further processing.\r\n\r\nSetup an initial version, but this does nor record the coordinates:\r\n\r\n```\r\nimport reflex as rx\r\nfrom reflex.components.component import NoSSRComponent\r\nfrom reflex import Component, Var\r\nfrom typing import Any\r\n\r\nclass MapClickEvent(rx.Base):\r\n    latlng: dict[str, float]\r\n\r\ndef map_click_signature(e: MapClickEvent) -> tuple[float, float]:\r\n    # Return as tuple to match event handler signature\r\n    return (e.latlng[\"lat\"], e.latlng[\"lng\"])\r\n\r\nclass MapContainer(NoSSRComponent):\r\n    library = \"react-leaflet\" \r\n    tag = \"MapContainer\"\r\n    \r\n    center: Var[list]\r\n    zoom: Var[int]\r\n    scroll_wheel_zoom: Var[bool]\r\n    \r\n    lib_dependencies: list[str] = [\r\n        \"react\",\r\n        \"react-dom\", \r\n        \"leaflet\",\r\n        \"react-leaflet\"\r\n    ]\r\n\r\n    def add_imports(self):\r\n        return {\"\": [\"leaflet/dist/leaflet.css\"]}\r\n        \r\n    def get_event_triggers(self) -> dict[str, Any]:\r\n        return {\r\n            **super().get_event_triggers(),\r\n            \"onClick\": map_click_signature  # Changed to onClick to match React event name\r\n        }\r\n\r\nclass TileLayer(NoSSRComponent):\r\n    library = \"react-leaflet\"\r\n    tag = \"TileLayer\"\r\n    url: Var[str]\r\n\r\nmap_container = MapContainer.create\r\ntile_layer = TileLayer.create\r\n\r\nclass State(rx.State):\r\n    \"\"\"The app state.\"\"\"\r\n    locations: list[tuple[float, float]] = []  # Changed to tuple for consistency\r\n    \r\n    def add_location(self, lat: float, lng: float):\r\n        \"\"\"Add a new location when map is clicked.\"\"\"\r\n        print(f\"Adding location: {lat}, {lng}\")  # Debug print\r\n        self.locations.append((lat, lng))\r\n\r\ndef index():\r\n    return rx.vstack(\r\n        map_container(\r\n            tile_layer(url=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\"),\r\n            center=[51.505, -0.09],\r\n            zoom=13,\r\n            scroll_wheel_zoom=True,  # Enable scroll wheel zoom\r\n            height=\"400px\",\r\n            width=\"100%\",\r\n            onClick=State.add_location,  # Changed to onClick\r\n        ),\r\n        rx.foreach(\r\n            State.locations,\r\n            lambda loc: rx.text(f\"Clicked at: {loc[0]}, {loc[1]}\")\r\n        ),\r\n    )\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n",
      "created_at": "2025-03-27T21:38:56Z",
      "updated_at": "2025-03-27T21:38:56Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "tanishquesuri",
        "avatar_url": "https://avatars.githubusercontent.com/u/132012082?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ae7hi",
      "number": 4998,
      "title": "How do I wrap Jbrowse as a custom component ?",
      "body": "The example codes are:\r\n\r\n```tsx\r\nimport '@fontsource/roboto'\r\nimport {\r\n  createViewState,\r\n  JBrowseLinearGenomeView,\r\n} from '@jbrowse/react-linear-genome-view'\r\n\r\nconst assembly = {\r\n  name: 'GRCh38',\r\n  sequence: {\r\n    type: 'ReferenceSequenceTrack',\r\n    trackId: 'GRCh38-ReferenceSequenceTrack',\r\n    adapter: {\r\n      type: 'BgzipFastaAdapter',\r\n      fastaLocation: {\r\n        uri: 'https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/fasta/GRCh38.fa.gz',\r\n        locationType: 'UriLocation',\r\n      },\r\n      faiLocation: {\r\n        uri: 'https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/fasta/GRCh38.fa.gz.fai',\r\n        locationType: 'UriLocation',\r\n      },\r\n      gziLocation: {\r\n        uri: 'https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/fasta/GRCh38.fa.gz.gzi',\r\n        locationType: 'UriLocation',\r\n      },\r\n    },\r\n  },\r\n  aliases: ['hg38'],\r\n  refNameAliases: {\r\n    adapter: {\r\n      type: 'RefNameAliasAdapter',\r\n      location: {\r\n        uri: 'https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/hg38_aliases.txt',\r\n        locationType: 'UriLocation',\r\n      },\r\n    },\r\n  },\r\n}\r\n\r\nconst tracks = [\r\n  {\r\n    type: 'FeatureTrack',\r\n    trackId: 'ncbi_refseq_109_hg38',\r\n    name: 'NCBI RefSeq (GFF3Tabix)',\r\n    assemblyNames: ['GRCh38'],\r\n    category: ['Annotation'],\r\n    adapter: {\r\n      type: 'Gff3TabixAdapter',\r\n      gffGzLocation: {\r\n        uri: 'https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/ncbi_refseq/GCA_000001405.15_GRCh38_full_analysis_set.refseq_annotation.sorted.gff.gz',\r\n        locationType: 'UriLocation',\r\n      },\r\n      index: {\r\n        location: {\r\n          uri: 'https://s3.amazonaws.com/jbrowse.org/genomes/GRCh38/ncbi_refseq/GCA_000001405.15_GRCh38_full_analysis_set.refseq_annotation.sorted.gff.gz.tbi',\r\n          locationType: 'UriLocation',\r\n        },\r\n      },\r\n    },\r\n  },\r\n]\r\n\r\nconst defaultSession = {\r\n  name: 'My session',\r\n  view: {\r\n    id: 'linearGenomeView',\r\n    type: 'LinearGenomeView',\r\n    tracks: [\r\n      {\r\n        type: 'ReferenceSequenceTrack',\r\n        configuration: 'GRCh38-ReferenceSequenceTrack',\r\n        displays: [\r\n          {\r\n            type: 'LinearReferenceSequenceDisplay',\r\n            configuration:\r\n              'GRCh38-ReferenceSequenceTrack-LinearReferenceSequenceDisplay',\r\n          },\r\n        ],\r\n      },\r\n      {\r\n        type: 'FeatureTrack',\r\n        configuration: 'ncbi_refseq_109_hg38',\r\n        displays: [\r\n          {\r\n            type: 'LinearBasicDisplay',\r\n            configuration: 'ncbi_refseq_109_hg38-LinearBasicDisplay',\r\n          },\r\n        ],\r\n      },\r\n    ],\r\n  },\r\n}\r\n\r\nfunction View() {\r\n  const state = createViewState({\r\n    assembly,\r\n    tracks,\r\n    location: '10:29,838,737..29,838,819',\r\n    defaultSession,\r\n  })\r\n  return <JBrowseLinearGenomeView viewState={state} />\r\n}\r\n\r\nexport default View\r\n```\r\nI don't know how I should create viewState because I need to use a function called 'createViewState' to wrap some variables to make them as a state variable in the react app. and I also have to define a type for the result of 'createViewState' so the component can receive it as props, but it's quite difficult.\r\n\r\nDoes anyone have good ideas to achieve it? \r\n",
      "created_at": "2025-03-20T07:59:31Z",
      "updated_at": "2025-03-27T05:40:43Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AwNC6",
        "body": "> > must be executed on the client side\r\n> \r\n> i would be surprised\r\n> \r\n> in any case, you can go to the `.web` folder and modify things there until they work, and then see what needs to be done on the reflex side to achieve that output\r\n\r\nYes, finally, with the help of the JBrowse author, the issue is because the version of Next.js in Reflex is a bit behind the latest version, so I simply changed the Next.js version in `.web/packages.json`.\r\n\r\n```json\r\n-    \"next\": \"15.0.4\",\r\n+    \"next\": \"15.2.3\",\r\n```\r\nand the go into `.web` folder, run\r\n\r\n```bash\r\nnpm install\r\nnpm run dev\r\n```\r\n\r\nand in main folder, run\r\n\r\n```bash\r\nREFLEX_BACKEND_ONLY=1 REFLEX_USE_NPM=1 reflex run\r\n```\r\n\r\nFinally, JBrowse can fetch any compressed data files. So how can I easily change the Nextjs version in reflex app ?"
      },
      "user": {
        "login": "SeqCrafter",
        "avatar_url": "https://avatars.githubusercontent.com/u/43256809?u=52b0b3f08e7957cd369561263bacfb63e45921dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfAGQ",
      "number": 5026,
      "title": "Get value of state variable",
      "body": "Hello,\r\n\r\nfollowing situation: I have this State class:\r\n\r\n```\r\n class StatisticState(rx.State):\r\n    test: List[Dict] = [{\"label\": \"Test\", \"value\": \"Test\"}]\r\n```\r\n\r\nI want to get the value of test variable within a component before rendering to work with the values and create derived information. Furthermore, I want to use dynoselect (https://github.com/woernerm/dynoselect) but dynoselect does not allow to use State class references as pararameters, instead the values have to be given:\r\n\r\n```\r\n@template(route=\"/\", title=\"Overview\", on_load=StatsState.randomize_data)\r\ndef index() -> rx.Component:\r\n    a = StatisticState.test\r\n    print(a) # However a is not the value of test, instead it is the class / variable name\r\n\r\n    return \r\n      dynoselect(options=[{\"label\": \"Test\", \"value\": \"Test2\"}],\r\n                  placeholder=\"Select a symbol\", search_placeholder=\"Search symbol\")\r\n```\r\n\r\nIs there a way to access the value of test within a component? Like rx.stateValue(StatisticState.test)? \r\n\r\nThank you",
      "created_at": "2025-03-25T11:45:22Z",
      "updated_at": "2025-03-25T19:30:47Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "miketech",
        "avatar_url": "https://avatars.githubusercontent.com/u/3193276?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ae8Md",
      "number": 5000,
      "title": "v0.7.4 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.4a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-03-20 11:50 PST: 0.7.4a1 pre-release published for testing\r\n2025-03-21 22:10 PST: 0.7.4a2 pre-release published for testing\r\n2025-03-24 13:50 PST: 0.7.4a3 pre-release published for testing\r\n2025-03-24: Planned Public release of 0.7.4\r\n\r\n## Changes in 0.7.4a3\r\n\r\n* fix: prevent AttributeError when using bare mixins by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/5011\r\n* disable ipv6 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5013\r\n* clean pycache after downloading template, fixes #4135 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5014\r\n* prevent repeat compiles on frontend only apps by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5017\r\n\r\n## Changes in 0.7.4a2\r\n\r\n* preserve the error message if it was reflex who threw it by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5004\r\n* fix str splatting in fallback command by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5005\r\n* do not fallback to key name and print tracebacks properly in compile by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5003\r\n* fix dynamic components removing all imports form the library by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5008\r\n* move granian to the sidelines by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5010\r\n* fix next themes no rerender by @adhami3310 in https://github.com/reflex-dev/reflex/pull/5001\r\n\r\n# Release Notes\r\n\r\n## SASS and SCSS\r\n\r\nThanks to @KronosDev-Pro, reflex can now compile your SASS and SCSS files for you! Simply reference a local SASS/SCSS file in the stylesheets key-word argument for rx.App. You need to have libsass installed.\r\n\r\n* [IMPL] - added support for sass and scss stylesheet languages by @KronosDev-Pro in https://github.com/reflex-dev/reflex/pull/4292\r\n* add libsass to the dev deps by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4982\r\n\r\n## Bun\r\n\r\nWe used to be using bun as a default for installation, and now we're using it as a runtime as well. In most cases it should work fine, but if it doesn't, you should install `node` in your global system.\r\n\r\nThis also removes fnm/npm automatic download from reflex and will cut down on the time for new system installs.\r\n\r\n* double down on bun over fnm/npm by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4906\r\n\r\n## Granian\r\n\r\n### Edit\r\n\r\nWe reversed our decision to move Granian *now*. We are working with Granian developers to add some bugfixes and features to make sure the change is as smooth as it could be. We do believe it's good enough for prod builds though. You can help us experiment by setting the `REFLEX_USE_GRANIAN` environment flag on.\r\n\r\n~~We're also moving off of uvicorn/gunicorn to [emmett-framework/granian](https://github.com/emmett-framework/granian). This lets us simplify our stack and improve runtime performance substantially. With this, we're also deprecating `timeout` and other gunicorn specific config fields. You can customize granian arguments by passing environment variables, for that, check the granian readme.~~\r\n\r\n~~If you have uvicorn/gunicorn installed, Reflex will use them. Otherwise, Granian will be used. Note that will change in 0.8.0 to only use Granian.~~\r\n\r\n~~But! you don't have to use Granian, or even reflex run.~~ With the new change, you can also run `reflex` from any asgi compliant program, for example:\r\n\r\n```\r\nuvicorn your_app_name.your_app_name:app --factory\r\n```\r\n\r\n* Remove app_module_for_backend by @masenf in https://github.com/reflex-dev/reflex/pull/4749\r\n* granian all the way by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4994\r\n\r\n## Specify multiple env files\r\n\r\nYou can pass multiple files (separated by : on linux, ; on windows) for the ENV_FILE environment variable.\r\n\r\n* Allow multiple env_file to be specified, split on os pathsep by @masenf in https://github.com/reflex-dev/reflex/pull/4993\r\n\r\n## NextJS downgrade :(\r\n\r\nDue to issues we're having with turbopack, we're temporarily downgrading to an earlier version of nextJS 15 until the issues get fixed.\r\n\r\n* [ENG-5099] 0.7.4 version bumps (and nextjs downgrade) by @masenf in https://github.com/reflex-dev/reflex/pull/4986\r\n\r\n## Components\r\n* allow cond to mix components and props by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4980\r\n* improve logic for icon name handling by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4988\r\n\r\n## Bugfixes\r\n* downgrade annoying log messages by @masenf in https://github.com/reflex-dev/reflex/pull/4977\r\n* Fix get_parent_state and get_root_state when using `mixin=True` by @masenf in https://github.com/reflex-dev/reflex/pull/4976\r\n* handle range value types [ENG-5143] by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4990\r\n\r\n## Chores\r\n* bump to 0.7.4dev by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4978\r\n* add missing pip to uv install in benchmarking action by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4979\r\n* make prettier not hog the system by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4981\r\n* Download Count by @Alek99 in https://github.com/reflex-dev/reflex/pull/4996\r\n* unbreak precommit :( by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4997\r\n\r\n## New Contributors\r\n* @KronosDev-Pro made their first contribution in https://github.com/reflex-dev/reflex/pull/4292\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.3...v0.7.4",
      "created_at": "2025-03-20T19:09:47Z",
      "updated_at": "2025-03-24T21:30:11Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY78M",
      "number": 3128,
      "title": "frontend-host options",
      "body": "I need to debug via a remote machine, but how can I change the port for a frontend webpage? I am currently able to access the API documentation via http://ip:8000/docs, but I cannot access the website through http://ip:3000.\"\r\n\r\nI couldn't find a `frontend-host` option when run `reflex run`\r\n\r\n```\r\nUsage: reflex run [OPTIONS]\r\n\r\n  Run the app in the current directory.\r\n\r\nOptions:\r\n  --env [dev|prod]                The environment to run the app in.\r\n                                  [default: dev]\r\n  --frontend-only                 Execute only frontend.\r\n  --backend-only                  Execute only backend.\r\n  --frontend-port TEXT            Specify a different frontend port.\r\n                                  [default: 3000]\r\n  --backend-port TEXT             Specify a different backend port.  [default:\r\n                                  8000]\r\n  --backend-host TEXT             Specify the backend host.  [default:\r\n                                  0.0.0.0]\r\n  --loglevel [debug|info|warning|error|critical]\r\n                                  The log level to use.  [default: info]\r\n  --help                          Show this message and exit.\r\n```",
      "created_at": "2024-04-21T15:48:39Z",
      "updated_at": "2025-03-24T15:39:01Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AjM3V",
        "body": "I think i'm still a bit confused by this discussion... the `deploy_url` _only_ affects the hosting service and the sitemap generation for export. From double checking the code, `deploy_url` seems to change nothing about how `reflex run` serves the site.\r\n\r\nBy default, the frontend should be available from other hosts without further configuration."
      },
      "user": {
        "login": "Jackiexiao",
        "avatar_url": "https://avatars.githubusercontent.com/u/18050469?u=a2003e21a7780477ba00bf87a9abef8af58e91d1&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ae-jK",
      "number": 5015,
      "title": "loading appears reflex",
      "body": "By default, when I click to go to a page in the sidebar, a reflex loading appears. How do I change the component of this default loading?",
      "created_at": "2025-03-23T22:07:42Z",
      "updated_at": "2025-03-23T22:07:43Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "maumauapf",
        "avatar_url": "https://avatars.githubusercontent.com/u/166998192?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ae8qy",
      "number": 5009,
      "title": "How do I wrap react-image-annotation library on reflex",
      "body": "Hello everyone, this is my first time wrapping a react library in reflex framework. I just wanted to ask on why the wrapping doesn't work or doesn't show anything at all. I'm sure that I'm missing something but not sure what it is.\r\nI am also using reflex 0.6.5\r\nLink for the react_image_annotation library:\r\nhttps://github.com/Secretmapper/react-image-annotation\r\nThis is my code:\r\nreact_image_annotation.py\r\n```py\r\nimport reflex as rx\r\n\r\nclass ReactImageAnnotation(rx.Component):\r\n    \"\"\"A Reflex wrapper for react-image-annotation.\"\"\"\r\n\r\n    library = \"react-image-annotation\"\r\n\r\n    tag = \"Annotation\"\r\n\r\n    src: rx.Var[str]\r\n    annotations: rx.Var[list]\r\n    value: rx.Var[dict]\r\n    type: rx.Var[str]\r\n    on_change: rx.EventHandler\r\n    on_submit: rx.EventHandler\r\n```\r\nstate.py\r\n```py\r\n    annotations: list = []\r\n    annotation: dict = {}\r\n\r\n    def update_annotation(self, annotation: dict):\r\n        \"\"\"Handles when an annotation is changed.\"\"\"\r\n        print(\"UPDATING ANNOTATION\")\r\n        self.annotation = annotation\r\n\r\n    def submit_annotation(self, annotation: dict):\r\n        \"\"\"Handles when a new annotation is submitted.\"\"\"\r\n        geometry, data = annotation.get(\"geometry\"), annotation.get(\"data\")\r\n        print(\"Submitted annotation\")\r\n        print(\"GEOMETRY\", geometry)\r\n        print(\"DATA\", data)\r\n        # Append the new annotation to the list\r\n        self.annotations.append(\r\n            {\r\n                \"geometry\": geometry,\r\n                \"data\": {**data, \"id\": uuid.uuid4()},\r\n            }\r\n        )\r\n\r\n        self.annotation = {}\r\n```\r\nfrontend part:\r\n```py\r\ndef index() -> rx.Component:\r\n    return ReactImageAnnotation.create(\r\n                src='assets/test.png',\r\n                annotations=State.annotations,\r\n                value=State.annotation,\r\n                type=\"RECTANGLE\",\r\n                on_change=State.update_annotation(State.annotation),\r\n                on_submit=State.submit_annotation(State.annotation),\r\n            )\r\n```\r\n\r\nThanks!!\r\n\r\n\r\n",
      "created_at": "2025-03-21T08:22:07Z",
      "updated_at": "2025-03-21T08:48:41Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "PaulBryanCo",
        "avatar_url": "https://avatars.githubusercontent.com/u/188946900?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ae2C4",
      "number": 4967,
      "title": "v0.7.3 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.3a2'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-03-14 22:20 PST: 0.7.3a1 pre-release published for testing\r\n2025-03-16 14:50 PST: 0.7.3a2 pre-release published for testing\r\n2025-03-17: Planned Public release of 0.7.3\r\n\r\n## Changes in 0.7.3a2\r\n\r\n* fix prettier by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4971\r\n* fix: allow multiple middleware postprocess update mutations by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4970\r\n* uv build fixes by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4968\r\n\r\n# Release Notes\r\n\r\n## New features\r\n\r\n### `,` and `_` options for formatted numbers\r\n\r\n```python\r\nclass State(rx.State):\r\n    large_number: float = 123123213.21321312\r\n\r\nrx.text(f\"{State.large_number:,.3f}\")\r\n```\r\n\r\n* add `,` and `_` operations by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4950\r\n\r\n### Add raw headers to router headers\r\n\r\n```python\r\nclass State(rx.State):\r\n    @rx.event\r\n    def on_event(self):\r\n        print(self.router.header.raw_headers) # read only header mapping\r\n```\r\n\r\n* add raw headers to headers by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4958\r\n\r\n### Expose SVG elements at the el level\r\n\r\nWe are trying to reach parity where all acceptable HTML elements are exposed at the .el scope, now you can use `text`, `line`, `circle`, `ellipse`, `rect`, `polygon`, `path`, `stop`, `linear_gradient`, `radial_gradient`, `defs`.\r\n\r\n* expose svg elements at the el level by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4962\r\n\r\n### New .get var operation\r\n\r\nUseful accessing State vars typed as dicts/dataclasses/pydantic modedls to provide a default if the key is possibly absent.\r\n\r\n```python\r\nclass State(rx.State):\r\n    field: rx.Field[dict[str, int]] = rx.field({\"josh\": 96, \"john\": 32})\r\n\r\nState.field.get(\"joseph\", 0)\r\n```\r\n\r\nThanks for @benedikt-bartscher for the contribution!\r\n\r\n* add Objectvar.get, Closes #4928 by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4956\r\n\r\n## Bug fixes\r\n\r\n* fix: every computed var should get it's own static deps by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4914\r\n* use noopener for window.open by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4933\r\n* Support event_actions in Form `on_submit` by @masenf in https://github.com/reflex-dev/reflex/pull/4912\r\n* add typehint_issubclass for var_type in style by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4946\r\n* be more careful with issubclass use with var_type by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4951\r\n* Dedupe custom codes emitted by rx.memo components by @masenf in https://github.com/reflex-dev/reflex/pull/4793\r\n* Prepend hydrate event when connecting by @masenf in https://github.com/reflex-dev/reflex/pull/4929\r\n* Disconnect old websockets by @masenf in https://github.com/reflex-dev/reflex/pull/4953\r\n* add overload for typeddict mapping since their value type is any by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4949\r\n* Handle setting loglevel earlier by @masenf in https://github.com/reflex-dev/reflex/pull/4964\r\n* remove all get_config at the global scope by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4965\r\n\r\n## Error messages\r\n\r\n* better error message for return type of computer var by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4911\r\n* improve error message for untyped vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4963\r\n* print warning instead of error with invalid icon by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4959\r\n\r\n## Chores\r\n\r\nWe are now using `uv` in the main repo. Or at least we moved off of poetry as it did not support certain features in pyproject.toml. Realistically, everything in pyproject.toml is standard and should be fine to use by any package manager.\r\n\r\n* add .env to gitignore just in case by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4909\r\n* @lendemor don't use __init__ in pyi_generator by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4910\r\n* simplify ai init by @Lendemor in https://github.com/reflex-dev/reflex/pull/4932\r\n* update pyproject.toml by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4944\r\n* migrate from poetry to uv by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4952\r\n* bump reflex to 0.7.3.dev1 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4957\r\n* add template for enterprise, cloud and build issues by @Lendemor in https://github.com/reflex-dev/reflex/pull/4961\r\n* middleware attr should be private by @Lendemor in https://github.com/reflex-dev/reflex/pull/4939\r\n* prettier by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4941\r\n\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.2...v0.7.3",
      "created_at": "2025-03-15T05:37:40Z",
      "updated_at": "2025-05-15T21:23:34Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "adhami3310",
        "avatar_url": "https://avatars.githubusercontent.com/u/27952765?u=1ad53fbd805e267bf89b210503c1260d2dfe3dfa&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aewwc",
      "number": 4937,
      "title": "rx.upload on mobile is not selecting/uploading files",
      "body": "I have a simple upload form as follows:\r\n```python\r\n\r\n\r\ndef upload_form():\r\n    color = \"rgb(48,164,108)\"\r\n    return rx.vstack(\r\n        rx.upload(\r\n            rx.vstack(\r\n                rx.button(\r\n                    \"Select File\",\r\n                ),\r\n                rx.text(\r\n                    \"Drag and drop the receipt files here or click to select files.\"\r\n                ),\r\n                align=\"center\",\r\n            ),\r\n            id=\"upload\",\r\n            padding=\"5em\",\r\n            multiple=True,\r\n            max_files=10,\r\n            max_size=1000000,\r\n            accept={\r\n                \"application/pdf\": [\".pdf\"],\r\n                \"image/png\": [\".png\"],\r\n                \"image/jpeg\": [\".jpg\", \".jpeg\"],\r\n                \"image/gif\": [\".gif\"],\r\n                \"image/webp\": [\".webp\"],\r\n                \"text/html\": [\".html\", \".htm\"],\r\n            },\r\n            width=\"100%\",\r\n            border=f\"1px dotted {color}\",\r\n        ),\r\n        rx.vstack(\r\n            rx.cond(\r\n                rx.selected_files(\"upload\").length() > 0,\r\n                rx.card(\r\n                    rx.vstack(\r\n                        rx.text(\r\n                            f\"{rx.selected_files('upload').length()} files selected:\"\r\n                        ),\r\n                        rx.foreach(rx.selected_files(\"upload\"), rx.text),\r\n                    ),\r\n                    width=\"100%\",\r\n                ),\r\n                rx.text(\"No files selected\", color=\"gray\", size=\"2\"),\r\n            ),\r\n            id=\"upload-files\",\r\n            width=\"100%\",\r\n        ),\r\n        rx.cond(\r\n            UploadState.processing,\r\n            rx.card(\r\n                rx.vstack(\r\n                    rx.hstack(\r\n                        rx.spinner(size=\"2\"),\r\n                        rx.text(UploadState.task_description),\r\n                        spacing=\"2\",\r\n                    ),\r\n                    rx.progress(value=UploadState.progress, max=100),\r\n                    spacing=\"2\",\r\n                ),\r\n                size=\"3\",\r\n                width=\"100%\",\r\n            ),\r\n            rx.spacer(),\r\n        ),\r\n        rx.hstack(\r\n            rx.cond(\r\n                UploadState.processing,\r\n                rx.button(\r\n                    \"Cancel\",\r\n                    on_click=UploadState.cancel_upload,\r\n                ),\r\n                rx.button(\r\n                    \"Upload\",\r\n                    on_click=UploadState.handle_upload(\r\n                        rx.upload_files(\r\n                            upload_id=\"upload\",\r\n                        ),\r\n                    ),\r\n                    disabled=rx.selected_files(\"upload\").length() == 0,\r\n                ),\r\n            ),\r\n            rx.alert_dialog.root(\r\n                rx.alert_dialog.trigger(\r\n                    rx.button(\r\n                        \"Clear\", disabled=rx.selected_files(\"upload\").length() == 0\r\n                    ),\r\n                ),\r\n                rx.alert_dialog.content(\r\n                    rx.alert_dialog.title(\"Clear selected files?\"),\r\n                    rx.alert_dialog.description(\r\n                        \"Are you sure?\",\r\n                    ),\r\n                    rx.flex(\r\n                        rx.alert_dialog.cancel(\r\n                            rx.button(\"Cancel\"),\r\n                        ),\r\n                        rx.alert_dialog.action(\r\n                            rx.button(\"Yes, clear\"),\r\n                            on_click=UploadState.reset_upload,\r\n                            color_scheme=\"red\",\r\n                            variant=\"solid\",\r\n                        ),\r\n                        spacing=\"3\",\r\n                        margin_top=\"16px\",\r\n                        justify=\"end\",\r\n                    ),\r\n                    style={\"max_width\": 450},\r\n                ),\r\n            ),\r\n            spacing=\"2\",\r\n        ),\r\n        align=\"center\",\r\n    )\r\n\r\n```\r\n\r\nOn a pc, I can select files and upload. That works ok.\r\n\r\nHowever, on mobile, **I can't:**\r\n\r\n1. Take a photo,\r\n2. Select files. When I click select file > Photos and Videos > Photos > Tick the files, and click add on my mobile, the selected files value is 0.\r\n\r\nI have ensured the selected files are in the formats accepted and they don't exceed the max size limit. \r\n\r\nHas anyone had this issue?",
      "created_at": "2025-03-11T06:32:22Z",
      "updated_at": "2025-03-19T16:50:00Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Av5AS",
        "body": "Turns out the parametre ` max_size=1000000 `was the issue. This was too small for photos and image files on my phone!"
      },
      "user": {
        "login": "davidmuraya",
        "avatar_url": "https://avatars.githubusercontent.com/u/27237980?u=313bffd4fde24bc0b6b4055fc773802b3cf2523b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY7B1",
      "number": 3125,
      "title": "Is there a way to have rx.markdown render mermaid diagrams?",
      "body": "Hi there, \r\n\r\nI would like to be able to add mermaid diagrams to my markdown but the rx.markdown doesn't render it.  \r\n\r\nFor example, the following code:\r\n\r\n```\r\n```mermaid\r\n    graph TD\r\n        A[Start] -->|Get books| B[Go to library]\r\n        B --> C{Books available?}\r\n        C -->|Yes| D[Borrow books]\r\n        C -->|No| E[Reserve books]\r\n        D --> F[Read books]\r\n        E --> F\r\n        F --> G[Return books]\r\n        G --> H[Finish]\r\n```\r\n\r\nshould yield:\r\n\r\n```mermaid\r\n    graph TD\r\n        A[Start] -->|Get books| B[Go to library]\r\n        B --> C{Books available?}\r\n        C -->|Yes| D[Borrow books]\r\n        C -->|No| E[Reserve books]\r\n        D --> F[Read books]\r\n        E --> F\r\n        F --> G[Return books]\r\n        G --> H[Finish]\r\n```\r\n\r\nbut instead it's rendering as \r\n\r\n\r\n<img width=\"972\" alt=\"Screenshot 2024-04-20 at 10 29 13 AM\" src=\"https://github.com/reflex-dev/reflex/assets/5995255/d83ce61b-6c97-4cec-aa7f-5db1f0fb1835\">\r\n\r\nThanks!",
      "created_at": "2024-04-20T17:30:31Z",
      "updated_at": "2025-03-19T15:23:55Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "hragbalian",
        "avatar_url": "https://avatars.githubusercontent.com/u/5995255?u=7ea536d96444e975ff82ef62349676109584134d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ae4qr",
      "number": 4983,
      "title": "To perfectly wrap a React component, how should I do it?",
      "body": "The Reflex document contains only a few very simple examples. There is no explanation about the principles of wrapping React.\r\n\r\nI want to perfectly wrap ReactFlow.\r\nHowever, the method provided in the Reflex documentation doesn't work.\r\n\r\nFor example,\r\nHow can I wrap ReactFlow.onNodeClick?\r\n[ReactFlow Document](https://reactflow.dev/api-reference/react-flow)\r\n\r\nHow can I wrap ReactFlow.CustomNode?\r\n[ReactFlow Custom Node Document](https://reactflow.dev/examples/nodes/custom-node)",
      "created_at": "2025-03-18T05:17:58Z",
      "updated_at": "2025-03-18T05:18:00Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "pipi-olo",
        "avatar_url": "https://avatars.githubusercontent.com/u/32050398?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ae3Ms",
      "number": 4973,
      "title": "AG Grid Error after version 0.7.0 - TypeError: Argument 1 ('target') to ResizeObserver.observe must be an instance of Element",
      "body": "I am getting a strange error after version 0.7.0. Any plan to fix it?",
      "created_at": "2025-03-16T15:17:57Z",
      "updated_at": "2025-03-16T21:58:02Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "ozgulkah",
        "avatar_url": "https://avatars.githubusercontent.com/u/77301420?u=3dd03be947267548f8072507d995e66cc5c1427a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aerf_",
      "number": 4900,
      "title": "Ag grid has an issue with release 0.7.1",
      "body": "Hi Everyone,\r\nWhen we upgrade our project to 0.7.1 we started to get an error: \r\n\r\nUnhandled Runtime Error\r\nTypeError: Argument 1 ('target') to ResizeObserver.observe must be an instance of Element\r\n\r\nThis error only occurs if we use ag grid in our code and it was perfectly working with previous release. Does anyone has same issue? Do we need to do anything with Next.js?\r\n\r\nYou may find full error message and our piece of code below.\r\n\r\nThank you.\r\n\r\n-------------------------------------\r\nFull error message:\r\n\r\nobserve@[native code]\r\nuseBrowserResizeObserver@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:28918:35\r\nregisterViewportResizeListener@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:26732:79\r\nlistenForResize@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:22951:64\r\n@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:22937:33\r\nwhenReady@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:35481:21\r\npostConstruct@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:22935:36\r\nforEach@[native code]\r\ninitBeans@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:10046:30\r\ncreateBean@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:10032:23\r\ncreateManagedBean@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:762:36\r\n@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:26613:62\r\nforContainers@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:26628:21\r\npostConstruct@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:26610:27\r\nforEach@[native code]\r\ninitBeans@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:10046:30\r\ncreateBean@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-community_dist_package_main_esm_mjs_8c7e5b._.js:10032:23\r\nRowContainerComp.useCallback11[setRef2]@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-react_dist_package_index_esm_mjs_bb3100._.js:2475:65\r\nRowContainerComp.useCallback11[setViewportRef]@http://localhost:3001/_next/static/chunks/node_modules_ag-grid-react_dist_package_index_esm_mjs_bb3100._.js:2494:20\r\ncommitAttachRef@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:5900:66\r\nrunWithFiberInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:631:28\r\nsafelyAttachRef@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:5910:30\r\nreappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6704:32\r\nrecursivelyTraverseReappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6733:89\r\nreappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6680:57\r\nrecursivelyTraverseReappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6733:89\r\nreappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6702:57\r\nrecursivelyTraverseReappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6733:89\r\nreappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6702:57\r\nrecursivelyTraverseReappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6733:89\r\nreappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6702:57\r\nrecursivelyTraverseReappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6733:89\r\nreappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6680:57\r\nrecursivelyTraverseReappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6733:89\r\nreappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6680:57\r\nrecursivelyTraverseReappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6733:89\r\nreappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6728:57\r\nrecursivelyTraverseReappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6733:89\r\nreappearLayoutEffects@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:6728:57\r\ndoubleInvokeEffectsOnFiber@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:8256:133\r\nrunWithFiberInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:631:28\r\nrecursivelyTraverseAndDoubleInvokeEffectsInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:8248:95\r\nrecursivelyTraverseAndDoubleInvokeEffectsInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:8248:246\r\nrecursivelyTraverseAndDoubleInvokeEffectsInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:8248:246\r\nrecursivelyTraverseAndDoubleInvokeEffectsInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:8248:246\r\nrecursivelyTraverseAndDoubleInvokeEffectsInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:8248:246\r\nrecursivelyTraverseAndDoubleInvokeEffectsInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:8248:246\r\nrecursivelyTraverseAndDoubleInvokeEffectsInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:8248:246\r\nrecursivelyTraverseAndDoubleInvokeEffectsInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:8248:246\r\nrecursivelyTraverseAndDoubleInvokeEffectsInDEV@http://localhost:3001/_next/static/chunks/node_modules_react-dom_82bb97._.js:8248:246\r\n-------------------------------------\r\n\r\nthe piece of code I am using for ag-grid \r\n\r\n```\r\nag_grid(\r\n                id=\"ag_grid\",\r\n                row_data=State.list,\r\n                column_defs=column_defs,\r\n                theme=\"quartz\",\r\n                row_selection=\"single\",\r\n                pagination=True,\r\n                pagination_page_size=10,\r\n                pagination_page_size_selector=[10, 20, 30],\r\n               on_selection_changed=State.handle_grid_selection,\r\n                width=\"100%\",  # Ensure full width\r\n                height=\"62vh\",  # Allow grid to fill available height\r\n        ),\r\n```",
      "created_at": "2025-03-05T13:07:03Z",
      "updated_at": "2025-03-16T21:57:53Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AvwTq",
        "body": "read: https://github.com/orgs/reflex-dev/discussions/4967#discussioncomment-12518633"
      },
      "user": {
        "login": "ozgulkah",
        "avatar_url": "https://avatars.githubusercontent.com/u/77301420?u=3dd03be947267548f8072507d995e66cc5c1427a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aevpe",
      "number": 4930,
      "title": "How to fully collapse an accordion from a function",
      "body": "I would like to add a button, which allows to fully collapse one or more accordions. The same for fully expanding one or more accordions.\r\nHow to access the corresponding internal state of accordion items from a function?",
      "created_at": "2025-03-10T07:58:42Z",
      "updated_at": "2025-03-16T20:52:13Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "coproc",
        "avatar_url": "https://avatars.githubusercontent.com/u/10478747?u=d12dfb5b79fd8c4366ea069d753554311288f480&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AefG7",
      "number": 4850,
      "title": "v0.7.1 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.1a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-02-19 16:00 PST: 0.7.1a1 pre-release published for testing\r\n2025-02-20 20:52 PST: 0.7.1a2 released\r\n2025-02-25 09:00 PST: 0.7.1a4 released\r\n2025-02-24: Planned Public release of 0.7.1\r\n2025-02-25 11:30 PST: Actual release of 0.7.1\r\n\r\n# Release Notes\r\n\r\n## NEw in 0.7.1a4\r\n\r\n* [ENG-4776] Write stateful pages marker earlier when should_compile is False (#4868)\r\n\r\n## New in 0.7.1a3\r\n\r\n* Override `react-is@19.0.0` for recharts compatibility (#4857)\r\n* fix autoscroll on stateful children (#4858)\r\n\r\n## New in 0.7.1a2\r\n\r\n* simplify toast banner logic (#4853)\r\n* simplify and fix set_color_mode (#4852)\r\n\r\n## New Features\r\n\r\n### `rx.auto_scroll`\r\n\r\nA new container that automatically scrolls to the bottom when new content is added.\r\n\r\n* Add auto scroll by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4790\r\n\r\n### New Var Operations for StringVar: `.title()`, `.capitalize()`\r\n\r\n* add capitalize and title var operations by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4840\r\n\r\n## Improvements\r\n\r\n### Compile with Main Thread by Default\r\n\r\nThe new default is to compile pages on the main thread, not using an executor. For most normal-sized apps, this is faster because it avoids spinning up threads and associated overhead.\r\n\r\n* give option to only use main thread by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4809\r\n\r\n### Component Props\r\n\r\nComponents as props was previously working, however in some situations, the necessary hooks/imports/custom_code associated with the component would not propagate up to the parent component and be lost. This change correctly propagates data from the component as prop for correct code generation.\r\n\r\n* components deserve to be first class props by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4827\r\n\r\n### Performance\r\n* import var perf improvements by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4813\r\n* only write if file changed by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4822\r\n* [ENG-4713] Cache pages which add states when evaluating by @masenf in https://github.com/reflex-dev/reflex/pull/4788\r\n\r\n### Typing\r\n* adjust setter to include type annotation by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4726\r\n* fix types for html elements by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4768\r\n* actually get rid of callable var fr fr by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4821\r\n\r\n### Miscellaneous\r\n* improve icon error message by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4796\r\n* improve hot reload handling by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4795\r\n* move overlays to _app.js by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4794\r\n* set global loglevel for subprocesses by @Lendemor in https://github.com/reflex-dev/reflex/pull/4791\r\n* raise error when passing a str(var) by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4769\r\n* Add toast.loading from the sonner package by @drbrady8800 in https://github.com/reflex-dev/reflex/pull/4792\r\n* improve into component conversion by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4754\r\n* standarize filename from upload by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4734\r\n* Wrapping extra components inside of the Context Menu Component  by @slackroo in https://github.com/reflex-dev/reflex/pull/4831\r\n* treat hyphen as underscore in keys of styles by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4810\r\n\r\n## Bug Fixes\r\n* fix toast provider needed by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4801\r\n* invert logic of default hot reload exclusion by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4807\r\n* [ENG-4647] Fix env_file handling by @masenf in https://github.com/reflex-dev/reflex/pull/4805\r\n* fix port handling by @Lendemor in https://github.com/reflex-dev/reflex/pull/4773\r\n* Update rx.get_upload_url signature to accept Var[str] by @masenf in https://github.com/reflex-dev/reflex/pull/4826\r\n\r\n## Version Bumps\r\n* update deps by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4804\r\n* upgrade deps as per python 3.10 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4842\r\n* react 19 time by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4848\r\n\r\n## Other Changes\r\n\r\n* fix readme typo and update gallery to templates by @PeterYusuke in https://github.com/reflex-dev/reflex/pull/4745\r\n* move benchmarks and add some more by @Lendemor in https://github.com/reflex-dev/reflex/pull/4758\r\n* Create codeql.yml by @Kastier1 in https://github.com/reflex-dev/reflex/pull/4799\r\n* test actions in codeql by @Kastier1 in https://github.com/reflex-dev/reflex/pull/4802\r\n* add stateful benchmarks by @Lendemor in https://github.com/reflex-dev/reflex/pull/4764\r\n* benchmark experimentation by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4811\r\n* bump ruff to 0.9.6 by @Lendemor in https://github.com/reflex-dev/reflex/pull/4817\r\n* cache get_type_hints for environment by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4820\r\n* remove some benchmarks from CI by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4812\r\n* auto hide badge for pro+ users for cloud deployments by @Lendemor in https://github.com/reflex-dev/reflex/pull/4819\r\n* Allow any user to set `show_built_with_reflex=False` in any mode by @masenf in https://github.com/reflex-dev/reflex/pull/4847\r\n* change error connecting to backend when backend is cold started by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4814\r\n\r\n## New Contributors\r\n* @drbrady8800 made their first contribution in https://github.com/reflex-dev/reflex/pull/4792\r\n* @slackroo made their first contribution in https://github.com/reflex-dev/reflex/pull/4831\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.0...release/reflex-0.7.1",
      "created_at": "2025-02-20T00:03:49Z",
      "updated_at": "2025-03-16T15:55:24Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aezfb",
      "number": 4960,
      "title": "Reflex Cloud deploy: Issue with python-decouple",
      "body": "I deployed my app on Reflex Cloud today. However, the front end was not able to connect to the backend. When I checked the logs, python-decouple could not get the env variables from the .env file. I used --envfile flag while deploying. I wonder where they keep the .env file? The app is working perfectly fine on my local machine.",
      "created_at": "2025-03-13T05:00:20Z",
      "updated_at": "2025-03-13T07:44:56Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "princegaurav",
        "avatar_url": "https://avatars.githubusercontent.com/u/16976181?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AetAd",
      "number": 4908,
      "title": "v0.7.2 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.2a'\r\n```\r\n\r\n# Schedule\r\n\r\n2025-03-06 14:30 PST: 0.7.2a1 pre-release published for testing\r\n2025-03-11 12:20 PST: 0.7.2a2 pre-release published for testing\r\n2025-03-11: Planned Public release of 0.7.2\r\n\r\n# Release Notes\r\n\r\n## New in 0.7.2a2\r\n\r\n* Support event_actions in Form `on_submit` by @masenf in https://github.com/reflex-dev/reflex/pull/4912\r\n* use `noopener` for `window.open` by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4933\r\n\r\n## What's Changed\r\n\r\n### Deprecated instantiating components through Component.__init__\r\n\r\nYou should have probably been doing `.create`.\r\n\r\n* deprecate Component __init__ by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4904\r\n\r\n### Overwrite rx.serializer\r\n\r\nYou can overwrite a serializer in reflex through `@rx.serializer` (previously we were erroring here), for example:\r\n\r\n```python\r\n@serializer(to=str, overwrite=True) # overwrite flag here suppresses warning about overriding a builtin serializer as an intentional decision\r\ndef serialize_uuid(uuid: UUID) -> str:\r\n    return \"UUID\" + str(uuid)\r\n```\r\n\r\n* serialize uuid and allow overwriting serializers by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4888\r\n\r\n### Use .f with Vars\r\n\r\nYou can now use the `.f` in f-strings with state Vars, for example:\r\n\r\n```python\r\nclass State(rx.State):\r\n  value_of_pi: float = 3.14159265359\r\n\r\nrx.text(f\"{State.value_of_pi:.2f}\")\r\n```\r\n\r\nNote that we now error when you provide a formatter that we don't support. PRs are welcome in extending the functionality beyond `:.Xf`.\r\n\r\n* add support for .f format by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4855\r\n\r\n### React 19 post-mitigation\r\n\r\n* migrate to new react 19 context api by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4849\r\n* Override `react-is@19.0.0` for recharts compatibility by @masenf in https://github.com/reflex-dev/reflex/pull/4857\r\n* remove temporary pin on radix ui themes by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4878\r\n* make npm behave like bun through legacy-peer-deps by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4887\r\n* update all radix deps by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4886\r\n* opt for powershell as opposed to wmic by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4862\r\n\r\n### Compiler\r\n\r\n* [ENG-4776] Write stateful pages marker earlier when should_compile is False by @masenf in https://github.com/reflex-dev/reflex/pull/4868\r\n* reduce badge perf impact on pages by @Lendemor in https://github.com/reflex-dev/reflex/pull/4872\r\n* error when computed var fails to compile as opposed to giving a warning by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4867\r\n* don't check types that  have defaults after what is provided by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4889\r\n* make array var sequence first by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4881\r\n* special case typed dict when getting value types of object vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4866\r\n* improve error messages for missing var operations by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4869\r\n* don't treat vars as their types for setting state fields by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4861\r\n* relax foreach to handle optional by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4901\r\n* treat component prop class as immutable when provided a non literal var by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4898\r\n* don't use _outer_type if we don't have to by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4528\r\n\r\n### Component changes\r\n\r\n* simplify toast banner logic by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4853\r\n* fix autoscroll on stateful children by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4858\r\n* unbreak accordion animations by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4882\r\n* scatter z-axis range fix by @tgberkeley in https://github.com/reflex-dev/reflex/pull/4800\r\n* Allow nested responsive container by @Alek99 in https://github.com/reflex-dev/reflex/pull/4903\r\n* add recursive memoization to auto scroll if key is provided by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4859\r\n\r\n### Misc\r\n\r\n* remove unused function by @Lendemor in https://github.com/reflex-dev/reflex/pull/4870\r\n* [ENG-4783] Handle keyspace notif for Redis logical DB > 0 by @masenf in https://github.com/reflex-dev/reflex/pull/4877\r\n* remove pynecone mention and update hosting readme by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4874\r\n* use lowercase datatypes typing by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4843\r\n* add a small guardrail in pyi_generator by @Lendemor in https://github.com/reflex-dev/reflex/pull/4885\r\n* fix pyright errors when importing from constants by @Lendemor in https://github.com/reflex-dev/reflex/pull/4907\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.7.1...release/reflex-0.7.2",
      "created_at": "2025-03-06T22:27:51Z",
      "updated_at": "2025-03-12T20:30:47Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aexta",
      "number": 4943,
      "title": "Wrapping a simple react component, but it errors on page refresh, why? (react-lasso-select)",
      "body": "I tried wrapping the [react-lasso-select](https://www.npmjs.com/package/react-lasso-select) assuming it would be a very easy example to get started with. For the most part it was, except that when the page is refreshed I get a Next.js error related to an infinite recursion. Does anyone know why?\r\n\r\nThe wrapped component is on github [here](https://github.com/TimChild/reflex-lasso-select).\r\n\r\nHere's a short video demonstrating the behaviour\r\n[Screencast from 2025-03-11 13-28-45.webm](https://github.com/user-attachments/assets/6d5f2bca-d9c5-4865-8cfd-e0b5ed602d5f)\r\n\r\nRefresh without selection works, refresh with selection results in error. \r\n\r\nIn the terminal this is shown:\r\n```bash\r\n[Reflex Frontend Exception]\r\n getCTM@http://localhost:3002/_next/static/chunks/node_modules_ec629a._.js:10792:98\r\nconvertRealPointsToViewbox@http://localhost:3002/_next/static/chunks/node_modules_ec629a._.js:10826:43\r\nsetPathStateFromProps@http://localhost:3002/_next/static/chunks/node_modules_ec629a._.js:11363:55\r\ncomponentDidUpdate@http://localhost:3002/_next/static/chunks/node_modules_ec629a._.js:11298:70\r\nreact-stack-bottom-frame@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:12414:26\r\nrunWithFiberInDEV@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:631:20\r\ncommitLayoutEffectOnFiber@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:6159:72\r\nrecursivelyTraverseLayoutEffects@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:6640:130\r\n...\r\ncommitLayoutEffectOnFiber@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:6149:49\r\nrecursivelyTraverseLayoutEffects@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:6640:130\r\ncommitLayoutEffectOnFiber@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:6166:49\r\ncommitLayoutEffects@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:6636:34\r\ncommitRootImpl@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:8087:767\r\ncommitRoot@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:8055:95\r\ncommitRootWhenReady@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:7661:19\r\nperformWorkOnRoot@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:7637:44\r\nperformWorkOnRootViaSchedulerTask@http://localhost:3002/_next/static/chunks/node_modules_react-dom_82bb97._.js:8386:26\r\nperformWorkUntilDeadline@http://localhost:3002/_next/static/chunks/node_modules_08b43c._.js:1875:72\r\n```\r\n\r\nA few things I've tried:\r\n- `rx.Component` or `rx.NoSSRComponent` -- no obvious difference in behaviour\r\n- using `on_complete` rather than `on_change`  events -- no difference to error\r\n\r\n\r\nThoughts on solution:\r\n- Maybe something can be done on mount or unmount to clear something?\r\n\r\n\r\nAdditional info:\r\n- Using a local image from assets folder does NOT show the same problem. In that case it works fine. So it's likely related to drawing the points before the image is loaded...",
      "created_at": "2025-03-11T20:31:46Z",
      "updated_at": "2025-03-12T00:45:52Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "TimChild",
        "avatar_url": "https://avatars.githubusercontent.com/u/48571510?u=461c39272e0c2fff29afc5ecc5957267f2f7aca9&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AexuT",
      "number": 4945,
      "title": "Wrapping a react component results in undefined `ReactCurrentOwner` error -- Incompatability with react 19?",
      "body": "Tried to wrap the [react-image-area](https://www.npmjs.com/package/@bmunozg/react-image-area), but the error below on rendering. \r\n\r\n![image](https://github.com/user-attachments/assets/9777c613-1458-4c1b-a4a6-57ba9676f12d)\r\n\r\nIf I use `rx.NoSSRComponent` instead, I don't get an error, but nothing is rendered (element is not in the DOM), but no errors in terminal either. \r\n\r\nLink to repo [here](https://github.com/TimChild/reflex-image-area)\r\n\r\nVery similar component to #4943 , thought it might allow me to avoid the issue I was having there, but apparently not...\r\n\r\n\r\nThoughts:\r\n- A bit of googling seems to indicate this was a problem several years ago with `react=16.0`, and maybe this is an issue again with `react=19` [e.g.](https://github.com/react-native-community/upgrade-support/issues/313#issuecomment-2646665310) \r\n\r\nI'm not sure if my issues is that there actually is an incompatibility, or whether I should be including some other lib or something?\r\n\r\n\r\nThanks",
      "created_at": "2025-03-11T20:53:33Z",
      "updated_at": "2025-03-11T21:12:50Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "TimChild",
        "avatar_url": "https://avatars.githubusercontent.com/u/48571510?u=461c39272e0c2fff29afc5ecc5957267f2f7aca9&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aew2c",
      "number": 4938,
      "title": "How to make a reusable component do an implicit, reactive, global state update?",
      "body": "I am trying to figure out how to conduct a reactive, implicit \"global state update\" from within my reusable component.\r\n\r\nImagine a reusable component with [component state](https://reflex.dev/docs/substates/component-state/) like \"Buy an item X\", so you can have components like \"Buy a house\" or \"Buy a car\". I have many such components in my app. When I click \"buy\" in any of them, I want for the global state of \"money available\" to be updated, and as such, reactively update & disable all \"Buy\" buttons across all reusable components where the user no longer has enough money to buy given item. There may be also other components requiring update based on the changed amount of available money.\r\n\r\nI would like to understand how to solve this problem in two cases:\r\n\r\nA) The global \"money available\" state is a frontend variable.\r\nB) The global \"money available\" state is a [backend-only variable](https://reflex.dev/docs/vars/base-vars/#backend-only-vars), so it doesn't synchronize automatically.\r\n\r\nI was experimenting with [computed vars](https://reflex.dev/docs/vars/computed-vars/#computed-vars), [multiple states](https://reflex.dev/docs/substates/overview/#multiple-states), [state inheritance](https://reflex.dev/docs/substates/overview/#state-inheritance), [accessing any state](https://reflex.dev/docs/substates/overview/#accessing-arbitrary-states) but I didn't figure out the solution yet.\r\n\r\nThe [computed vars](https://reflex.dev/docs/vars/computed-vars/#computed-vars) doc says \"A computed var is recomputed every time an event is processed in your app.\" but I am not sure how to leverage this for the scenario I described. And [backend-only variables](https://reflex.dev/docs/vars/base-vars/#backend-only-vars) unfortunately are not synchronized with frontend, but my \"money available\" variable is a backend-only variable.",
      "created_at": "2025-03-11T08:31:31Z",
      "updated_at": "2025-03-11T08:33:21Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "konrad-jamrozik",
        "avatar_url": "https://avatars.githubusercontent.com/u/4429827?u=8b4798cfe2019c26a3a08e6db20e912b05638cbb&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aeqeu",
      "number": 4896,
      "title": "Self Host on Google Cloud Run",
      "body": "",
      "created_at": "2025-03-04T13:39:10Z",
      "updated_at": "2025-03-10T10:25:51Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "vienna-analytics",
        "avatar_url": "https://avatars.githubusercontent.com/u/152799926?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aekgs",
      "number": 4875,
      "title": "How to draw directed Graph based on Node and Edge ?",
      "body": "I tried to draw a directed graph using the [ReactFlow ](https://www.npmjs.com/package/reactflow)library.\r\nHowever, ReactFlow has the issue of requiring manual input of position information for each node.\r\n\r\nTo solve this, I attempted to use the [Dagre ](https://www.npmjs.com/package/@dagrejs/dagre?activeTab=readme)library.\r\nHowever, the Dagre library is not React-based.\r\n\r\nHow can I use the nodes and edges information stored in a class State to obtain position information through Dagre’s JavaScript logic?\r\n\r\n**My goal is to draw LR directed graph based on node and edge using Reflex.**\r\nReactFlow and Dagre are not important.",
      "created_at": "2025-02-26T01:36:42Z",
      "updated_at": "2025-03-08T22:51:59Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "pipi-olo",
        "avatar_url": "https://avatars.githubusercontent.com/u/32050398?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AepSd",
      "number": 4892,
      "title": "Use a Reflex model outside of the web app",
      "body": "I have been checking out Reflex as a potential framework for a new project.\r\nI defined the model classes for my existing database in a models.py as per various examples.\r\nI currently fill the database through external means using the normal python mariadb client and executing sql directly.\r\nThe main thing I want from a framework is to be able to reuse the database connectivity and ORM.  \r\nIs it possible to reuse the models I created for the Reflex app in normal python scripts?\r\nIf so, could someone give me a minimal example on how to do this?",
      "created_at": "2025-03-03T12:53:48Z",
      "updated_at": "2025-03-08T01:03:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "scttstrck",
        "avatar_url": "https://avatars.githubusercontent.com/u/10063525?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aeqnc",
      "number": 4897,
      "title": "Self-host your Reflex app on Northflank",
      "body": "I have been experimenting with self-hosting Reflex apps, and I put together a guide on deploying one to [Northflank](https://northflank.com/). If you want more control over your Reflex app—whether to save on costs, avoid vendor lock-in, or just tinker with your own setup—this walks you through Dockerizing and deploying it step by step.\r\n\r\nCheck it out here: https://northflank.com/blog/how-to-self-host-reflex-with-docker-on-northflank",
      "created_at": "2025-03-04T15:49:53Z",
      "updated_at": "2025-03-04T15:49:54Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "AdeboyeDN",
        "avatar_url": "https://avatars.githubusercontent.com/u/65312338?u=b3199c084ff5fabd1d98e9a4cb14bb39ab4dd2fe&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AeqEc",
      "number": 4895,
      "title": "my AG_Grid is different from your docs.",
      "body": "### It's yours\r\n<img width=\"673\" alt=\"image\" src=\"https://github.com/user-attachments/assets/a7881fbd-1bc2-4125-b0e0-909997c2c9fb\" />\r\n\r\n### It's mine\r\n<img width=\"318\" alt=\"image\" src=\"https://github.com/user-attachments/assets/a7673aaf-4f6b-4f44-9828-7a4dab71a4a1\" />\r\n\r\n\r\nHello.\r\n\r\nI want this function but my ag_grid only can support filtering. How can I use this function? There is no comment  about this :(\r\nIs this an option specific to ag grid enterprise by any chance?\r\n\r\nThanks.",
      "created_at": "2025-03-04T06:05:35Z",
      "updated_at": "2025-03-04T06:06:12Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "sangmandu",
        "avatar_url": "https://avatars.githubusercontent.com/u/45033215?u=02bbbf22fd0b3dc67c288ed819c3ad8e7720f46d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AeZZ_",
      "number": 4828,
      "title": "Reflex Branding",
      "body": "## Edit\r\n\r\nBased on community feedback, the \"Built with Reflex\" badge was made optional for all users in 0.7.1. Although the badge is still shown by default in new apps, it can be removed without restriction by setting `show_built_with_reflex=False` in `rxconfig.py` (see link above).\r\n\r\nWe're still in the process of updating the documentation linked below.\r\n\r\nThe messaging from the community was clear, while monetization is important for the continued growth and development of the framework, but it must be in exchange for value added and not affect the basic usage and features of the open source framework.\r\n\r\nThanks to our users for taking the time to share your thoughts, your feedback is important to the team as we plan the development of the framework.\r\n\r\n-----------------------------\r\n\r\nAs of reflex-0.7.0, the newly introduced [Reflex Branding](https://reflex.dev/docs/hosting/reflex-branding/) is a badge in the lower right corner of each page showing the `[R]` logo and displaying the text \"Built with Reflex\" on viewports wider than 1024px. The badge is displayed in production mode and in exported apps.\r\n\r\n![image](https://github.com/user-attachments/assets/2eb9aa3f-75ca-4792-99ec-3d17a71d367e)\r\n\r\nThe branding can be removed for Reflex Cloud subscribers in Team or Enterprise tier by setting `show_built_with_reflex=False` in `rxconfig.py` (see link above).\r\n\r\n### Why are we doing this?\r\n\r\n- To raise awareness of the Reflex framework\r\n- To provide an incentive for commercial app deployments to fund and support ongoing development of the framework via the subscription.\r\n\r\n### Commitment to Open Source\r\n\r\nReflex is and always will be an open source project. As a user, if you don't like some aspect of the framework, you are encouraged to modify or remove it to suit your needs. The branding is one avenue being explored to offset development costs of the rapid pace at which the project has been evolving.\r\n\r\n----------------------------\r\n\r\n_This discussion will remain open as long as the commentary is constructive. We want to hear your feedback or suggestions, but posts that are solely complaints/rants or that contain instructions to hide the branding may be removed to keep the conversation focused._",
      "created_at": "2025-02-15T00:41:01Z",
      "updated_at": "2025-03-03T19:09:31Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AeeaC",
      "number": 4844,
      "title": "FastAPI + Reflex and NGINX in a production environment",
      "body": "I am using Reflex to develop a frontend application for a FastAPI app. \r\n\r\nThe reason I am doing this is because the frontend will be part of larger fastapi project. I want to gradually move the existing frontend to reflex. The reflex app is sending requests to the fastapi backend via HTTPX.\r\n\r\nI am exporting the frontend created with the reflex with the reflex export command to the directory .web/_static/ \r\nI am using fastapi to host the static files. Here is my fastapi application\r\n[fastapi-reflex/app/backend/main.py at main · davidmuraya/fastapi-reflex](https://github.com/davidmuraya/fastapi-reflex/blob/main/app/backend/main.py)\r\n\r\nOn my local dev environment, everything works OK, but I am having trouble deploying the reflex backend in nginx.\r\n\r\n_My rxconfig.py_\r\n![image](https://github.com/user-attachments/assets/44c86d23-a793-4339-bbc9-1e0d095ee481)\r\n\r\n\r\nMy reflex backend is working, as shown here:\r\n\r\n![image](https://github.com/user-attachments/assets/7b0d9fbb-b795-4d7e-a52a-7af071fd8b37)\r\n\r\n \r\nHere is my nginx configuration. The HTTP traffic is for the fastapi application:\r\nThe websocket is configured as shown below. This is for the reflex backend. I followed instructions be masenf here in this Q&A:\r\n[Nginx + Certbot for Reflex app · reflex-dev · Discussion #1752](https://github.com/orgs/reflex-dev/discussions/1752)\r\n \r\n![image](https://github.com/user-attachments/assets/25fd4544-c7bc-498f-9d8e-ed095ad213bc)\r\n\r\n\r\nThe websocket connects successfully:\r\n![image](https://github.com/user-attachments/assets/5360084a-d245-45d0-b489-b1c918bd425b)\r\n\r\nBut I get these errors in nginx:\r\n```\r\n2025/02/19 11:46:10 [error] 855#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 41.90.172.221, server: demo.bima-mo.com, request: \"GET /_event/?EIO=4&transport=websocket HTTP/1.1\", upstream: \"http://127.0.0.1:8000/_event/?EIO=4&transport=websocket\", host: \"demo.bima-mo.com\"\r\n2025/02/19 11:46:16 [error] 855#0: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 41.90.172.221, server: demo.bima-mo.com, request: \"GET /_event/?EIO=4&transport=websocket HTTP/1.1\", upstream: \"http://127.0.0.1:8000/_event/?EIO=4&transport=websocket\", host: \"demo.bima-mo.com\"\r\n2025/02/19 11:46:24 [error] 855#0: *5 connect() failed (111: Connection refused) while connecting to upstream, client: 41.90.172.221, server: demo.bima-mo.com, request: \"GET /_event/?EIO=4&transport=websocket HTTP/1.1\", upstream: \"http://127.0.0.1:8000/_event/?EIO=4&transport=websocket\", host: \"demo.bima-mo.com\"\r\n2025/02/19 11:56:53 [error] 1783#0: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 41.90.172.221, server: demo.bima-mo.com, request: \"GET /_event/?EIO=4&transport=websocket HTTP/1.1\", upstream: \"http://127.0.0.1:8000/_event/?EIO=4&transport=websocket\", host: \"demo.bima-mo.com\"\r\n```\r\n\r\nI cannot login for example – the following error is shown in my front end application:\r\n![image](https://github.com/user-attachments/assets/50d74a89-b46c-414d-b078-5d8383dc80fe)\r\n\r\nThis login for example works OK on my local dev env.\r\n\r\nI am inclined to think I have not configured nginx correctly?\r\n\r\nAny ideas are welcome.\r\n",
      "created_at": "2025-02-19T09:30:40Z",
      "updated_at": "2025-02-20T09:26:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AuxZI",
        "body": "I have tried deleting this question. Please ignore it.\r\n\r\nI had not set up the fastapi url correctly hence the \"Connection Refused\" error."
      },
      "user": {
        "login": "davidmuraya",
        "avatar_url": "https://avatars.githubusercontent.com/u/27237980?u=313bffd4fde24bc0b6b4055fc773802b3cf2523b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AX-Gh",
      "number": 2738,
      "title": "Reflex Release Cadence",
      "body": "As of Feb 26th, 2024 the Reflex team is aiming for weekly releases on Mondays.\r\n\r\n# Schedule\r\n\r\n## Thursday Afternoon (Pacific Time)\r\n\r\n**A release candidate branch is created from `main` in the form of `release/reflex-0.X.Y`.**\r\n\r\n  * A pre-release `reflex==0.X.Ya1` will be published to PyPI\r\n  * A pre-release topic will be posted on Github Discussions. If any bugs or issues are found in the pre-release, use this thread for further discussion with maintainers.\r\n  * The discussion thread will be linked on the [`#opensource`](https://discord.com/channels/1029853095527727165/1061493979889278986) discourse channel.\r\n\r\n## Thursday - Sunday\r\n\r\nAny **critical fixes to the pre-release payload should be targeted to `main`** and will be cherry-picked into the `release/reflex-0.X.Y` branch\r\n  * Subsequent pre-release builds will be published to PyPI as required.\r\n\r\n`main` branch remains open\r\n\r\n## Monday Afternoon (Pacific Time)\r\n\r\n**Release published to PyPI from `release/reflex-0.X.Y` branch**\r\n\r\n  * Release notes posted to Github and tag published from `release/reflex-0.X.Y` branch.\r\n  * Changelog and doc updates published to https://reflex.dev\r\n  * Announcement of the release will be made on the [`#announcements`](https://discord.com/channels/1029853095527727165/1062107638713831474) discourse channel and various social media channels.\r\n  * Pre-release discussion is closed.\r\n\r\n# Notes\r\n\r\n* All PRs should target `main`. The release candidate branch will never be merged back to `main`.\r\n* The `main` branch will accept PRs after the Thursday cutoff, but their payload will be delivered in the _next_ next release.",
      "created_at": "2024-02-27T20:31:21Z",
      "updated_at": "2025-02-18T23:24:39Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AURf_",
      "number": 1211,
      "title": "desktop and mobile packaging",
      "body": "I don't think pynecone be able to translate any python code to js so it probably handles all events on backend and returns the results so it's costly for a web application but not for a desktop or mobile app so I think pynecone is more suitable for desktop and mobile apps where both server and client are on same machine and latency is quite low so why not use pynecone for these applications instead of web ?",
      "created_at": "2023-06-19T04:22:23Z",
      "updated_at": "2025-02-17T09:22:29Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "rraammiinn",
        "avatar_url": "https://avatars.githubusercontent.com/u/67558318?u=05ff9d0bc69be3722d90b6ae877a166e037436c2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXm7k",
      "number": 2539,
      "title": "AAD MSAL Auth in Reflex",
      "body": "Can you someone help me with how can I do msal authentication in reflex ?  As my org uses aad.",
      "created_at": "2024-02-06T21:51:59Z",
      "updated_at": "2025-02-13T08:11:14Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "viswanadula8828",
        "avatar_url": "https://avatars.githubusercontent.com/u/144563900?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AeLvZ",
      "number": 4738,
      "title": "v0.7.0 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.7.0a'\r\n```\r\n\r\n**This release includes breaking changes and removal of deprecated features**\r\n\r\n# Schedule\r\n\r\n2025-02-03 13:00 PST: 0.7.0a1 pre-release published for testing\r\n2025-02-05 12:15 PST: 0.7.0a2 published\r\n2025-02-05 16:20 PST: 0.7.0a3 published\r\n2025-02-10 12:27 PST: 0.7.0a5 published\r\n2025-02-06: Planned Public release of 0.7.0\r\n2025-02-11 11:32 PST: Public release of 0.7.0\r\n\r\n# Release Notes\r\n\r\n## Changes in 0.7.0a5\r\n\r\n* b5de9775d Sticky tweaks: only show in prod mode (#4789)\r\n* f9d3fb3d8 fix bun path handling and add a test (#4785)\r\n\r\n## Changes in 0.7.0a4\r\n\r\n* 5246a6fa7 Add ComputedVar overloads for BASE_TYPE, SQLA_TYPE, and DATACLASS_TYPE (#4777)\r\n* 9c9491a2c provide plotly subpackages (#4776)\r\n* 8ef6fb545 Copy/update assets on compile (#4765)\r\n* 4b5c59c32 Ensure EventCallback exposes EventActionsMixin properties (#4772)\r\n* 0875a3eac use getattr when given str in getitem (#4761)\r\n\r\n## Changes in 0.7.0a3\r\n\r\n* 080d0c09 make computed var generic over mapping (#4762)\r\n* ead2796c Resolve custom component version dynamically (#4759)\r\n\r\n## Changes in 0.7.0a2\r\n\r\n* 310334ca remove base_state from event types (#4740)\r\n* 2832a3c6 Update disabled backend component (#4747)\r\n* 35954f74 throw error if computed var has args (#4753)\r\n* 810ead84 move id to trigger instead of root (#4752)\r\n* 7b72e3ae don't memoize tooltip or skeleton children (#4744)\r\n* 3778d774 [ENG-4570] Fix rx.foreach over dict (#4743)\r\n* 076b9988 Allow template with unspecified demo_url (#4741)\r\n* b6ca991c fix bun message (#4739)\r\n\r\n## Breaking Changes\r\n\r\n### Python 3.9 support is no longer supported.\r\n\r\n### Computed Vars are now `cache=True` by default\r\n\r\nExplicitly set `cache=False` on Computed Vars that should be updated after every\r\nevent, which was the previous default behavior.\r\n\r\nThe dependency tracking analysis for Computed Vars has been improved to support\r\nasync Computed Vars, so there is a possibility for unanticipated behavior change\r\naround tracking dependencies. Please report any bugs encountered in this area.\r\n\r\n* computed var default to cache=True by @Lendemor in https://github.com/reflex-dev/reflex/pull/4194\r\n\r\n### Previously \"CallableVar\" shims need to be explicitly called\r\n\r\n* `rx.upload_file` -> `rx.upload_file()`\r\n* `rx.selected_files` -> `rx.selected_files()`\r\n* `rx.clear_selected_files` -> `rx.clear_selected_files()`\r\n* `rx.set_color_mode` -> `rx.set_color_mode()`\r\n\r\n### Deprecation Removals\r\n\r\n* removing deprecated features for 0.7.0 and removing py3.9 support by @Lendemor in https://github.com/reflex-dev/reflex/pull/4586\r\n\r\n### `rx.App` fields for internal use now have a `_` prefix\r\n\r\n* rename private fields with leading underscore in App by @Lendemor in https://github.com/reflex-dev/reflex/pull/4642\r\n\r\n## New Features\r\n\r\n### `reflex rename`\r\n\r\nA new command to rename an app.\r\n\r\n* [ENG-1796]`reflex rename`- B by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4668\r\n\r\n### `rx.var` now supports `async` functions\r\n\r\nAn `rx.var` computed var can now wrap an async function, which can access\r\narbitrary state via `get_state` and var values via `get_var_value`.\r\n\r\nDependency tracking across states is supported, but there may be edge cases in\r\nthe new implementation that prevent depedencies from being automatically\r\nidentified. You can pass explicit dependencies to the `deps` argument, and can\r\nadd dependencies at runtime via `cls.computed_vars[var_name].add_dependency`.\r\nFor best results, pass a globally imported state class to `get_state` and assign\r\nthe return value to a local variable in the function.\r\n\r\n* [ENG-4326] Async ComputedVar by @masenf in https://github.com/reflex-dev/reflex/pull/4711\r\n\r\n### \"Built with Reflex\" badge\r\n\r\nTo raise awareness of Reflex, a sticky \"Built with Reflex\" badge is added to the\r\nlower right corner of each page.\r\n\r\nFor subscribers of Reflex Cloud, this badge can be disabled by setting\r\n`show_built_with_reflex=False` in `rxconfig.py` or `SHOW_BUILT_WITH_REFLEX=0` in\r\nthe environment.\r\n\r\nFor more information see: https://reflex.dev/docs/hosting/reflex-branding/\r\n\r\n* Add a sticky Built with Reflex badge by @Lendemor in https://github.com/reflex-dev/reflex/pull/4584\r\n\r\n## Improvements\r\n\r\n### Support For Dynamic Icon name\r\n\r\nPreviously the recommendation was to use `rx.match` to map icons, because the\r\nicon name itself could not be a Var.\r\n\r\nWith `rx.dynamic_icon`, the name can now be a Var, but performance may be\r\naffected by dynamic loading.\r\n\r\n* allow dynamic icons name by @Lendemor in https://github.com/reflex-dev/reflex/pull/4636\r\n\r\n### Support for Specifying Custom App Module\r\n\r\nA new config knob is added to `rxconfig.py`, to load the app from a module other than the default.\r\n\r\n```python\r\nconfig = rx.Config(\r\n    app_name=\"my_app\",\r\n    app_module_import=\"some_package.my_actual_app_module\",\r\n)\r\n```\r\n\r\nThe app module should be importable by name with the current `PYTHONPATH` / `sys.path`, and contain an `app` attribute.\r\n\r\n* [ENG-4134]Allow specifying custom app module in rxconfig by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4556\r\n\r\n### Display Warning for Frontend/Backend Version Mismatch\r\n\r\nWhen the frontend and backend versions do not match, a warning is displayed in the console.\r\n\r\n* check frontend version on connect by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4611\r\n* return websocket protocol when asked by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4683\r\n* fix subprotocol for granian by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4698\r\n\r\n### Typing\r\n* improve type support for .get_state by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4623\r\n* cast return_expr to Var all the time by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4649\r\n* make object var handle all mapping instead of just dict by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4602\r\n* add more type annotations through the code by @Lendemor in https://github.com/reflex-dev/reflex/pull/4401\r\n* improve var create typing by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4701\r\n* improve var base typing by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4718\r\n* improve rx.Field ObjectVar typing for sqlalchemy and dataclasses by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4728\r\n\r\n### Recharts\r\n\r\n* [ENG-4406] cell component wrapper by @LineIndent in https://github.com/reflex-dev/reflex/pull/4670\r\n* Fix recharts min width/height by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4672\r\n* pie chart type annotation fix by @LineIndent in https://github.com/reflex-dev/reflex/pull/4681\r\n\r\n### Avoid Leaked Websocket connections\r\n\r\n* disable react strict mode for event loop by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4720\r\n\r\n### Miscellaneous\r\n\r\n* make that one line better by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4610\r\n* EventChain.create accepts arbitrary kwargs by @masenf in https://github.com/reflex-dev/reflex/pull/4609\r\n* Skip saving page components when skipping compile output by @masenf in https://github.com/reflex-dev/reflex/pull/4653\r\n* Allow deploy with project name and app id by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4550\r\n* Remove token check in reflex deploy by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4640\r\n* [ENG-4444] move states out of .web by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4689\r\n* improve error message for failed compile_state by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4702\r\n* assert that .render returns jsonable values by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4708\r\n* fix tag render to be recursive by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4714\r\n* Handle python `range` passed to rx.Var.create by @masenf in https://github.com/reflex-dev/reflex/pull/4716\r\n* var_data fixes with hooks values by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4717\r\n* implement a global var cache by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4691\r\n* add evaluate time to the progress counter by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4722\r\n* better computed var static deps by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4729\r\n\r\n## Bug Fixes\r\n* [ENG-4351] Add mapping for lucide icons by @masenf in https://github.com/reflex-dev/reflex/pull/4622\r\n* small fix for color_mode_button by @Lendemor in https://github.com/reflex-dev/reflex/pull/4634\r\n* [ENG-4383] Handle special float values on frontend by @masenf in https://github.com/reflex-dev/reflex/pull/4638\r\n* put import at the top of dynamic component evaluation by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4632\r\n* fix boolean to boolen comparisons by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4620\r\n* don't need node when --backend_only is used by @Lendemor in https://github.com/reflex-dev/reflex/pull/4641\r\n* check for dict passed as children for component by @Lendemor in https://github.com/reflex-dev/reflex/pull/4656\r\n* attempt to fix usage when volta is installing node by @Lendemor in https://github.com/reflex-dev/reflex/pull/4664\r\n* reflex export environment should default to prod by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4673\r\n* refactor client state to restore prior API by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4674\r\n* Fix setting default color mode in dev mode by @masenf in https://github.com/reflex-dev/reflex/pull/4616\r\n* fix stuff with bun_path by @Lendemor in https://github.com/reflex-dev/reflex/pull/4688\r\n* import vars are not sortable by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4700\r\n* merging two style instance should give a style instance by @Lendemor in https://github.com/reflex-dev/reflex/pull/4706\r\n  * followup for merge style by @Lendemor in https://github.com/reflex-dev/reflex/pull/4721\r\n* fix padding style in textarea by @Lendemor in https://github.com/reflex-dev/reflex/pull/4696\r\n* only allow item inside root by @Lendemor in https://github.com/reflex-dev/reflex/pull/4697\r\n* allow functools partial with foreach by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4709\r\n* make all triggers disable recurisve memoization by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4719\r\n* include dynamic imports for custom components by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4725\r\n* fix: allow replacing of _var_type in ComputedVar by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4730\r\n\r\n## Version Bumps\r\n* bump nextJS to v15 by @Lendemor in https://github.com/reflex-dev/reflex/pull/4630\r\n* Bump frontend and backend deps by @masenf in https://github.com/reflex-dev/reflex/pull/4667\r\n* update bun to 1.2.0 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4678\r\n\r\n## Linting / Code Quality\r\n* add some of the TRY rules by @Lendemor in https://github.com/reflex-dev/reflex/pull/4651\r\n* add defensive checks against data being funny by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4633\r\n* enable N rules for naming conventions by @Lendemor in https://github.com/reflex-dev/reflex/pull/4666\r\n* fix version in pyproject and ruff version check by @Lendemor in https://github.com/reflex-dev/reflex/pull/4690\r\n* enable PGH, bump pyright and fix  all #type: ignore by @Lendemor in https://github.com/reflex-dev/reflex/pull/4699\r\n* bump ruff version to 0.9.3 by @Lendemor in https://github.com/reflex-dev/reflex/pull/4705\r\n\r\n## Other Changes\r\n* pyproject.toml: bump to 0.7.0dev1 for further development by @masenf in https://github.com/reflex-dev/reflex/pull/4604\r\n* Show file and line number in deprecation warnings by @masenf in https://github.com/reflex-dev/reflex/pull/4631\r\n* retry failed tests by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4675\r\n* remove integration screenshots by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4677\r\n* Do not track compile in posthog metrics by @masenf in https://github.com/reflex-dev/reflex/pull/4669\r\n* attempt to upgrade windows latest python version by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4679\r\n  * use older version of python for windows simple benchmarks by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4680\r\n* add codspeed by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4707\r\n* add backend disabled dialog by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4715\r\n* Remove upper pin by @Alek99 in https://github.com/reflex-dev/reflex/pull/4684\r\n* fix optional wrapping of static call methods in pyi by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4727\r\n\r\n## New Contributors\r\n* @LineIndent made their first contribution in https://github.com/reflex-dev/reflex/pull/4670\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.6.8...release/reflex-0.7.0",
      "created_at": "2025-02-03T21:12:34Z",
      "updated_at": "2025-02-11T19:34:54Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR9SS",
      "number": 195,
      "title": "What graphing libraries would you like to see implemented?",
      "body": "So far we have plotly but are looking to add more in the next milestone.\r\n\r\nRequirements:\r\n- Must be open source with MIT or fairly open license\r\n     - We are not able to include highcharts because of there restrictive license.\r\n   ",
      "created_at": "2022-12-31T07:13:57Z",
      "updated_at": "2025-02-11T04:46:26Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWodz",
      "number": 2272,
      "title": "Support for Apache ECharts",
      "body": "In addition to plotly support, it would be great to have apache echarts. Out of the box, echarts are the most visually appealing and have an incredibly large library of plot types which makes them attractive for visualization-based web apps - https://echarts.apache.org/examples/en/index.html\r\n\r\nCompetitors like NiceGUI and Solara already have this integration - \r\n1. https://nicegui.io/documentation/echart\r\n2. https://solara.dev/api/echarts",
      "created_at": "2023-12-07T03:02:35Z",
      "updated_at": "2025-02-11T04:16:58Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "rohitsathish",
        "avatar_url": "https://avatars.githubusercontent.com/u/46263358?u=a63bf280198d1fc2b7e2a290695fd652edf3eedd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATTWT",
      "number": 789,
      "title": "Integrate a pre-written FastAPI to Pynecone",
      "body": "I have made a FastAPI API and i wonder if i can integrate it to Pynecone directly or should i just run it elsewhere ",
      "created_at": "2023-04-09T00:50:16Z",
      "updated_at": "2025-02-02T18:21:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "ramsy0dev",
        "avatar_url": "https://avatars.githubusercontent.com/u/86024158?u=714763cc34cd04ae84c40f30ec8646a73fe47f44&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ad4pE",
      "number": 4655,
      "title": "Why is the reflex.dev website not working?",
      "body": "Since 01/15/2025, the Reflex.dev website has stopped working!  Is this happening all over the world, or is it just me?  ",
      "created_at": "2025-01-17T07:07:39Z",
      "updated_at": "2025-01-26T07:14:04Z",
      "category": {
        "name": "Polls",
        "emoji": ":ballot_box:"
      },
      "answer": null,
      "user": {
        "login": "xdilshodx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52802251?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbZRo",
      "number": 3924,
      "title": "Is there an existing component/library for a wiki/docs/help page with built-in functions like search and indexing?",
      "body": "Hey guys,\r\n\r\nI'm currently building a help page or docs page for my app. I am wondering if I can use any existing libraries rather than building it from scratch. Something similar to the reflex docs page would be great.\r\n\r\nThank you.",
      "created_at": "2024-09-14T06:10:45Z",
      "updated_at": "2025-01-21T07:11:28Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "egonsung",
        "avatar_url": "https://avatars.githubusercontent.com/u/11618999?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZm48",
      "number": 3370,
      "title": "Getting and Setting Reflex State Via API Routers",
      "body": "I'm curious what the intended method for interacting with State from an external process is in Reflex. I can setup an application with something like this:\r\n\r\n```{python}\r\nimport reflex as rx\r\n\r\napp = rx.App()\r\n\r\nclass ExampleState(rx.State):\r\n    example_integer:int = 1000\r\n\r\n    async def set_example_integer(self, new_integer:int) ->None:\r\n        self.example_integer = new_integer\r\n\r\n    async def get_example_integer(self) ->int:\r\n        return self.example_integer\r\n\r\nasync def set_example_integer(new_integer:int):\r\n    # How do we set the ExampleState's example_integer?\r\n    # ExampleState.example_integer = new_integer \r\n    # ExampleState.set_example_integer(new_integer) \r\n\r\nasync def get_example_integer():\r\n    # How do we get the ExampleState's example_integer?\r\n    # return ExampleState.example_integer \r\n    # return  ExampleState.get_example_integer() \r\n\r\napp.api.add_api_route(\"/example_integer\", set_example_integer,methods=['POST'])\r\napp.api.add_api_route(\"/example_integer\", get_example_integer,methods=['GET'])\r\n```\r\n\r\nIn this application, we have a variable 'example_integer' within ExampleState that we want to be able to get and set externally. However, the two patterns I've tried (commented out above) yield unexpected results. The GET returns an rx.Var object while the SET seems to fail silently -- the value doesn't change in the main application and when I print the returned and changed value, it also gives an rx.Var object. The rx.Var object doesn't seem to have an obvious way to see the actual value of the Var.\r\n\r\nIs there a better way within Reflex to enable the modification and retrieval of State from outside the application, ideally by adding API Routers? Thanks in advance!\r\n\r\nThere's some overlap with [this discussion](https://github.com/orgs/reflex-dev/discussions/3335) but unfortunately it didn't solve my question. \r\n",
      "created_at": "2024-05-22T16:49:31Z",
      "updated_at": "2025-01-18T16:30:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "tlifke",
        "avatar_url": "https://avatars.githubusercontent.com/u/29410053?u=a88495b41fac674f053de83cd03908be03292dca&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AdvJp",
      "number": 4603,
      "title": "v0.6.8 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.6.8a'\r\n```\r\n\r\n**This is expected to be the last 0.6.x feature release before breaking changes are introduced in 0.7.0**\r\n\r\n# Schedule\r\n\r\n2025-01-07 17:20 PST: 0.6.8a1 pre-release published for testing\r\n2025-01-09: Planned Public release of 0.6.8\r\n\r\n# Release Notes\r\n\r\n## New Features\r\n\r\n### New API: `rx.EventChain.create`\r\n\r\nThis new interface makes it easier to transform `EventType` (`EventHandler`, `EventSpec`, and `lambda` - as accepted by component event triggers) into `EventChain` to be rendered in hook calls or `rx.call_script` / `rx.call_function` invocations.\r\n\r\n* Move _create_event_chain to EventChain.create by @masenf in https://github.com/reflex-dev/reflex/pull/4557\r\n\r\n### New API: `BaseState.get_var_value`\r\n\r\nSimilar to `get_state`, this API provides access to a Var defined in another state. If the value is mutable, changing it will be reflected in the other state. This API is intended for use with `ComponentState` implementations that want to \"borrow\" data from another state.\r\n<details>\r\n\r\n<summary>\r\n\r\n#### Show Example Code\r\n</summary>\r\n\r\n```python\r\nfrom typing import ClassVar\r\n\r\nimport reflex as rx\r\n\r\n\r\nclass MyState(rx.State):\r\n    data: list[dict] = []\r\n\r\n\r\nclass Appender(rx.ComponentState):\r\n    _data: ClassVar[rx.Var]\r\n\r\n    async def add_value(self, form_data: dict):\r\n        (await self.get_var_value(self._data)).append(form_data)\r\n\r\n    @classmethod\r\n    def get_component(cls, data: rx.Var[list[dict]]) -> rx.Component:\r\n        cls._data = data\r\n        return rx.card(\r\n            rx.form(\r\n                rx.vstack(\r\n                    rx.input(placeholder=\"Name\", name=\"name\", autofocus=True),\r\n                    rx.input(placeholder=\"Email\", name=\"email\"),\r\n                    rx.button(\"Submit\", type=\"submit\"),\r\n                ),\r\n                reset_on_submit=True,\r\n                on_submit=cls.add_value,\r\n            ),\r\n        )\r\n\r\n\r\nappender = Appender.create\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.vstack(\r\n        rx.foreach(\r\n            MyState.data,\r\n            lambda d: rx.text(d.to_string()),\r\n        ),\r\n        appender(data=MyState.data),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\n</details>        \r\n\r\n* BaseState.get_var_value helper to get a value from a Var by @masenf in https://github.com/reflex-dev/reflex/pull/4553\r\n\r\n## Improvements\r\n\r\n### Add `.endswith()` var operation for strings\r\n\r\n* Add `endswith` method to String class by @5quinque in https://github.com/reflex-dev/reflex/pull/4577\r\n\r\n### Simpler API for `rx._x.client_state`\r\n\r\nUse client state vars anywhere in the tree instead of having to include them and use them separately.\r\n\r\n* improve client state by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4597\r\n\r\n### Support Recursive UI elements with `@rx.memo`\r\n\r\nSee example code in PR. This allows the rendering of trees and other self-referential structures using `rx.foreach`.\r\n\r\n* fix recursive UI by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4599\r\n\r\n### Performance\r\n* Minor performance improvements for state getattribute and setattr by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4543\r\n* improve dynamic route vars, no need to compute deps by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4551\r\n\r\n### Miscellaneous\r\n* fix health check and skip not needed tasks by @Lendemor in https://github.com/reflex-dev/reflex/pull/4563\r\n* [ENG-4083] Track internal changes in dataclass instances by @masenf in https://github.com/reflex-dev/reflex/pull/4558\r\n* use position in vardata to mark internal hooks by @Lendemor in https://github.com/reflex-dev/reflex/pull/4549\r\n* Enable automatic retry on redis errors by @masenf in https://github.com/reflex-dev/reflex/pull/4595\r\n\r\n## Bug Fixes\r\n\r\n* Add `expire_on_commit=False` for async sessions by @masenf in https://github.com/reflex-dev/reflex/pull/4582\r\n* Do not allow call_function `callback` argument to be added afterwards by @masenf in https://github.com/reflex-dev/reflex/pull/4552\r\n* [ENG-2157] [Refix] Allow `rx.download` to resolve `rx.get_upload_url` by @masenf in https://github.com/reflex-dev/reflex/pull/4470\r\n* fixes #4578 - correct the way dim_props created by @KanvaBhatia in https://github.com/reflex-dev/reflex/pull/4587\r\n* unbreak link _hover by @masenf in https://github.com/reflex-dev/reflex/pull/4537\r\n* [ENG-4255] Code blocks lead to redefined const in web page by @masenf in https://github.com/reflex-dev/reflex/pull/4598\r\n\r\n## Version Bumps\r\n* chore: update sonner (toast) by @JonZeolla in https://github.com/reflex-dev/reflex/pull/4572\r\n* Upgrade Lucide to version 0.469.0 by @celsiusnarhwal in https://github.com/reflex-dev/reflex/pull/4571\r\n* poetry 2.0.0 compatibility by @masenf in https://github.com/reflex-dev/reflex/pull/4593\r\n\r\n## Documentation\r\n\r\n## Other Changes\r\n* add codespell to pre-commit by @Lendemor in https://github.com/reflex-dev/reflex/pull/4559\r\n* autodetect print/breakpoints by @Lendemor in https://github.com/reflex-dev/reflex/pull/4581\r\n* HOS-400: adding support for config by @Kastier1 in https://github.com/reflex-dev/reflex/pull/4540\r\n* Add deprecation message for non-cached var by @masenf in https://github.com/reflex-dev/reflex/pull/4591\r\n* test_lifespan: stop periodic events by @masenf in https://github.com/reflex-dev/reflex/pull/4600\r\n* Use older python versions for macos actions by @masenf in https://github.com/reflex-dev/reflex/pull/4601\r\n\r\n## New Contributors\r\n* @5quinque made their first contribution in https://github.com/reflex-dev/reflex/pull/4577\r\n* @JonZeolla made their first contribution in https://github.com/reflex-dev/reflex/pull/4572\r\n* @celsiusnarhwal made their first contribution in https://github.com/reflex-dev/reflex/pull/4571\r\n* @KanvaBhatia made their first contribution in https://github.com/reflex-dev/reflex/pull/4587\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.6.7...release/reflex-0.6.8",
      "created_at": "2025-01-08T01:35:04Z",
      "updated_at": "2025-01-13T16:32:11Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXZnQ",
      "number": 2462,
      "title": "How to get viewport dimensions in reflex?",
      "body": "Reflex does not have some `on_resize` event, how can we update state when the viewport is resized?",
      "created_at": "2024-01-26T05:32:56Z",
      "updated_at": "2025-01-08T01:10:52Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Afe1y",
        "body": "# How to Get Viewport in JS\r\n\r\nThe viewport dimensions can be accessed in javascript via the `window.innerWidth` and `window.innerHeight` attributes. When the viewport size changes, the browser fires the `resize` event on the `window`.\r\n\r\n# How to Get Viewport in Reflex\r\n\r\nUsing a custom react hook, we can register a reflex state `EventHandler` as the `window.onresize` event handler and get the latest viewport dimensions whenever they change.\r\n\r\n## Custom Reflex Component\r\n\r\n_Edit: updated to work with Reflex 0.6.7+_\r\n\r\n`ResizeWatcher` will extend `rx.Fragment`, which does not render anything in the DOM.\r\n\r\nDefine `on_resize` as an EventHandler with the required function signature so that it can be linked to an event handler in the state. Note that we must explicitly remove this prop via `_exclude_props` method (which is a bit of a gotcha)\r\n\r\n```python\r\ndef _on_resize_signature(width: rx.Var[int], height: rx.Var[int]) -> tuple[rx.Var[int], rx.Var[int]]:\r\n    return width, height\r\n\r\n\r\nclass ResizeWatcher(rx.Fragment):\r\n    \"\"\"\r\n    A component that watches the window size and updates the state.\r\n    \r\n    The only event trigger in `on_resize` which is called once when the component mounts\r\n    and again each time the viewport dimensions change.\r\n    \"\"\"\r\n\r\n    on_resize: rx.EventHandler[_on_resize_signature]\r\n\r\n    def _exclude_props(self) -> list[str]:\r\n        return [\"on_resize\"]\r\n```\r\n\r\nDefining `add_imports` and `add_hooks` injects custom code directly into the component. In this case the `useEffect` allows us to register an event handler while respecting the react component lifecycle.\r\n\r\n```python\r\n    def add_imports(self) -> dict[str, str]:\r\n        return {\"react\": \"useEffect\"}\r\n\r\n    def add_hooks(self) -> list[str]:\r\n        \"\"\"Register backend on_resize as a handler for the browser window resize event.\"\"\"\r\n        return [\r\n            \"\"\"\r\n            useEffect(() => {\r\n                function handleResize() {\r\n                    %s(window.innerWidth, window.innerHeight);\r\n                }\r\n\r\n                // Fire initial resize event when the component mounts.\r\n                handleResize();\r\n\r\n                // Add the event listener with cleanup.\r\n                window.addEventListener(\"resize\", handleResize);\r\n                return () => window.removeEventListener(\"resize\", handleResize);\r\n            }, []);\"\"\" % (\r\n                self.event_triggers[\"on_resize\"]\r\n            )\r\n        ]\r\n```\r\n\r\n**This is a critical line `%s(window.innerWidth, window.innerHeight);`** where the actual viewport dimensions are passed to what will become the memoized event handler function that references the state event handler name.\r\n\r\n## Define Event Handler and State\r\n\r\nFirst define some attributes that we will render in the frontend.\r\n\r\n```python\r\nclass State(rx.State):\r\n    viewport_width: int = 0\r\n    viewport_height: int = 0\r\n    device: str = \"undetermined\"\r\n```\r\n\r\nThen define the event handler that will be called when the `resize` event fires. \r\n\r\n```python\r\n    def set_viewport(self, width: int, height: int) -> None:\r\n        self.viewport_width = width\r\n        self.viewport_height = height\r\n        self.device = device_guess(width)\r\n```\r\n\r\n# Putting it all together\r\n\r\n## Demo 📼\r\nhttps://github.com/reflex-dev/reflex/assets/1524005/06c38fef-bae0-419a-83b4-7a67f884f679\r\n\r\n```python\r\nimport reflex as rx\r\n\r\n\r\ndef device_guess(width: int) -> str:\r\n    if width < 520:\r\n        return \"phone\"\r\n    elif width < 768:\r\n        return \"phone-landscape\"\r\n    elif width < 1024:\r\n        return \"tablet\"\r\n    elif width < 1280:\r\n        return \"tablet-landscape\"\r\n    elif width < 1640:\r\n        return \"laptop\"\r\n    else:\r\n        return \"desktop\"\r\n\r\n\r\nclass State(rx.State):\r\n    viewport_width: int = 0\r\n    viewport_height: int = 0\r\n    device: str = \"undetermined\"\r\n\r\n    def set_viewport(self, width: int, height: int) -> None:\r\n        self.viewport_width = width\r\n        self.viewport_height = height\r\n        self.device = device_guess(width)\r\n\r\n\r\ndef _on_resize_signature(width: rx.Var[int], height: rx.Var[int]) -> tuple[rx.Var[int], rx.Var[int]]:\r\n    return width, height\r\n\r\n\r\nclass ResizeWatcher(rx.Fragment):\r\n    \"\"\"\r\n    A component that watches the window size and updates the state.\r\n    \r\n    The only event trigger in `on_resize` which is called once when the component mounts\r\n    and again each time the viewport dimensions change.\r\n    \"\"\"\r\n\r\n    on_resize: rx.EventHandler[_on_resize_signature]\r\n\r\n    def _exclude_props(self) -> list[str]:\r\n        return [\"on_resize\"]\r\n\r\n    def add_imports(self) -> dict[str, str]:\r\n        return {\"react\": \"useEffect\"}\r\n\r\n    def add_hooks(self) -> list[str]:\r\n        \"\"\"Register backend on_resize as a handler for the browser window resize event.\"\"\"\r\n        return [\r\n            \"\"\"\r\n            useEffect(() => {\r\n                function handleResize() {\r\n                    %s(window.innerWidth, window.innerHeight);\r\n                }\r\n\r\n                // Fire initial resize event when the component mounts.\r\n                handleResize();\r\n\r\n                // Add the event listener with cleanup.\r\n                window.addEventListener(\"resize\", handleResize);\r\n                return () => window.removeEventListener(\"resize\", handleResize);\r\n            }, []);\"\"\" % (\r\n                self.event_triggers[\"on_resize\"]\r\n            )\r\n        ]\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.vstack(\r\n        ResizeWatcher.create(on_resize=State.set_viewport),\r\n        rx.heading(\"Viewport Resize Watcher Demo\"),\r\n        rx.heading(f\"[{State.viewport_width}, {State.viewport_height}]\"),\r\n        rx.heading(f\"Device: {State.device}\"),\r\n        align=\"center\",\r\n        font_size=\"2em\",\r\n        padding_top=\"10%\",\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n"
      },
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AdSOM",
      "number": 4538,
      "title": "v0.6.7 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.6.7a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-12-13 16:20 PST: 0.6.7a1 pre-release published for testing\r\n2024-12-16: Planned Public release of 0.6.7\r\n2024-12-17 10:15 PST: 0.6.7 released\r\n\r\n# Release Notes\r\n\r\n## Deprecations\r\n\r\n* `app.add_custom_404_page` is deprecated -- use `app.add_page(..., route=\"/404\")` instead.\r\n* `external` prop of `rx.redirect` is renamed to `is_external` for consistency.\r\n  * Unify `is_external` prop in `rx.redirect` and `rx.link` by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4389\r\n\r\n## New Features\r\n\r\n### `async_db_url` and `rx.asession`\r\n\r\nBuiltin support for async database operations using sqlmodel. Proper usage requires the following:\r\n\r\n1. Install `greenlet` for sqlalchemy to use async operations.\r\n2. Install an appropriate async-capable database driver (aiosqlite, pyscopg)\r\n3. Set `ASYNC_DB_URL` in the environment that references the async db driver. This should point to the same database as specified in `DB_URL`, which should still be set for handling alembic migrations and for use in computed vars, etc.\r\n4. Use `async with rx.asession() as asession` -- await most operations on the asession.\r\n\r\nAsync DB operations are preferred in event handlers to avoid blocking other users on the server.\r\n\r\n### Var Operations for `datetime` values\r\n\r\n* add datetime var comparison operations by @Lendemor in https://github.com/reflex-dev/reflex/pull/4406\r\n\r\n### [Wrapping React] new `deps` and `position` fields in `VarData`\r\n\r\nThis allows for customization and control of where hooks are rendered relative to other hooks and memoized event handlers. Deps allows for specification of vars that memoized event handlers depend on.\r\n\r\n* add deps and position field in VarData by @Lendemor in https://github.com/reflex-dev/reflex/pull/4518\r\n\r\n## Improvements\r\n\r\n### More Efficient Database Connection Pooling\r\n\r\nEach time `rx.session` was used, it was creating a new pool and not reusing connections.\r\n\r\n* Reuse the sqlalchemy engine once it's created by @masenf in https://github.com/reflex-dev/reflex/pull/4493\r\n\r\n### Linting\r\n* enable RUF rules by @Lendemor in https://github.com/reflex-dev/reflex/pull/4465\r\n* enable FURB rules by @Lendemor in https://github.com/reflex-dev/reflex/pull/4466\r\n* add ERA rules to detect commented out code by @Lendemor in https://github.com/reflex-dev/reflex/pull/4472\r\n* enable C4 rule by @Lendemor in https://github.com/reflex-dev/reflex/pull/4536\r\n* enable PTH rule by @Lendemor in https://github.com/reflex-dev/reflex/pull/4476\r\n* enable PERF rules by @Lendemor in https://github.com/reflex-dev/reflex/pull/4469\r\n* style: prefer type() over __class__ by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4512\r\n\r\n### Performance\r\n* minor pickle improvement by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4499\r\n* Avoid double JSON encode/decode for socket.io by @masenf in https://github.com/reflex-dev/reflex/pull/4449\r\n  * [ENG-4194] TypeError: Cannot create property 'token' on string by @masenf in https://github.com/reflex-dev/reflex/pull/4534\r\n* simplify redis code, less redis calls by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4456\r\n\r\n### Miscellaneous\r\n\r\n* Avoid `set_log_level` foot gun by @masenf in https://github.com/reflex-dev/reflex/pull/4422\r\n* [HOS-333] Send a \"reload\" message to the frontend after state expiry by @masenf in https://github.com/reflex-dev/reflex/pull/4442\r\n* enable css props via wrapperStyle for recharts components by @Lendemor in https://github.com/reflex-dev/reflex/pull/4447\r\n* add default value for text area by @Lendemor in https://github.com/reflex-dev/reflex/pull/4462\r\n* <del>Do not mark unchanged backend var deps as dirty by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4494</del>\r\n* add __repr__ method to MutableProxy by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4506\r\n* [ENG-4135]Default `rx.link` href to `#` so `underline` prop works by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4509\r\n* raise StateSerializationError if the state cannot be serialized by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4453\r\n* disable polling by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4441\r\n* deprecate add_custom_404_page by @Lendemor in https://github.com/reflex-dev/reflex/pull/4505\r\n* [ENG-4100]Throw warnings when Redis lock is held for more than the allowed threshold by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4522\r\n* Wrap Checkbox component in Context Menu (partial fix for #4262) by @vydpnguyen in https://github.com/reflex-dev/reflex/pull/4479\r\n* Include step attribute in input by @Joodith in https://github.com/reflex-dev/reflex/pull/4073\r\n* improve StateManagerRedis error message by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4444\r\n\r\n## Bug Fixes\r\n\r\n* [ENG-4137] Handle generic alias passing inspect.isclass check by @masenf in https://github.com/reflex-dev/reflex/pull/4427\r\n* fix mutable default in EventNamespace by @Lendemor in https://github.com/reflex-dev/reflex/pull/4420\r\n* fix: state size was not checked for dill by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4431\r\n* allow for 'go.Figure | None' annotation in State by @Lendemor in https://github.com/reflex-dev/reflex/pull/4426\r\n  * follow up to #4426 by @Lendemor in https://github.com/reflex-dev/reflex/pull/4436\r\n* rx.upload must include _var_data from props by @masenf in https://github.com/reflex-dev/reflex/pull/4463\r\n* fix: multiple mismatched-type-assignment fixes by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4482\r\n* fix: migrate is_backend_only (deprecated) to EnvironmentVariables by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4495\r\n* Fix REFLEX_COMPILE_PROCESSES=0 by @masenf in https://github.com/reflex-dev/reflex/pull/4523\r\n* client_state: create Var from value when pushing from backend by @masenf in https://github.com/reflex-dev/reflex/pull/4474\r\n* fix: handle default_factory in get_attribute_access_type by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4517\r\n* [ENG-4165] Consider default and default_factory for state vars by @masenf in https://github.com/reflex-dev/reflex/pull/4510\r\n* Fix upload cancellation by @masenf in https://github.com/reflex-dev/reflex/pull/4527\r\n* [ENG-4153]Use empty string for None values in `rx.input` and `rx.el.input` by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4521\r\n* [ENG-3583] Respect cors_allowed_origins for backend HTTP requests by @masenf in https://github.com/reflex-dev/reflex/pull/4533\r\n\r\n## Documentation\r\n* Add production-one-port example by @masenf in https://github.com/reflex-dev/reflex/pull/4489\r\n* add issues templates by @Lendemor in https://github.com/reflex-dev/reflex/pull/4455\r\n* [HOS-466]Fix deploy help text by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4508\r\n\r\n## Version Bumps\r\n* bump ruff to 0.8 and relock poetry by @Lendemor in https://github.com/reflex-dev/reflex/pull/4451\r\n\r\n## Other Changes\r\n* Remove invitation code logic from reflex logoutv2 by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4433\r\n* test dynamic route flakiness (can't reproduce locally) by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4496\r\n* add test for color mode (initial and toggle) by @Lendemor in https://github.com/reflex-dev/reflex/pull/4467\r\n* Support python 3.13 by @Lendemor in https://github.com/reflex-dev/reflex/pull/4206\r\n* bump CI runners to `macos-latest` by @masenf in https://github.com/reflex-dev/reflex/pull/4526\r\n* raise_console_error during integration tests by @masenf in https://github.com/reflex-dev/reflex/pull/4535\r\n\r\n## New Contributors\r\n* @vydpnguyen made their first contribution in https://github.com/reflex-dev/reflex/pull/4479\r\n* @Joodith made their first contribution in https://github.com/reflex-dev/reflex/pull/4073\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.6.6.post3...release/reflex-0.6.7",
      "created_at": "2024-12-14T00:21:09Z",
      "updated_at": "2024-12-17T23:53:01Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AdEdg",
      "number": 4492,
      "title": "☁️ Reflex Cloud Launch",
      "body": "\r\n![Screenshot 2024-12-05 at 6 33 09 PM](https://github.com/user-attachments/assets/b4497444-d85a-4eda-a2bb-6bb62f5d42b1)\r\n\r\nWe released our open-source framework with a goal to simplify web development. Anyone who knows Python should be able to turn their ideas into web apps without Javascript. \r\n\r\nToday thousands of teams use Reflex for their data/AI apps, internal tools, and customer-facing web apps.  Now we're launching Reflex Cloud, a platform for deploying and managing Reflex apps.  \r\n\r\nWith Reflex Cloud we're extending that same simplicity to hosting. Just `reflex deploy`, and in a few minutes your app will be live to share with the world.   \r\n\r\nOur free tier lets you deploy your first app at no cost. Once you deploy, you can log in to your app dashboard to see the status of your apps, the resources they're using, and application logs all in one place.  \r\n\r\nWe also have Pro, Team, and Enterprise tiers to take your app from prototype to production. \r\n\r\n Reflex Pro lets you take your app from a prototype to a production app with: \r\n- Custom Domains: Use your own domain for your app - Larger Apps: Increased memory and CPU options, and deploy to multiple regions \r\n- Add Collaborators: Add team members to your project  We're previewing team and enterprise plans with advanced features like: - One-Click Auth: Add Github, Google, or other OAuth providers to your app with no code \r\n- Full Analytics: Comprehensive insight into your app's performance and usage  \r\n- On Premise Hosting: Run Reflex Cloud on your own infrastructure  \r\n- \r\n- With our open source framework and our cloud hosting, we're providing a unified platform to turn your ideas into deployed apps that you can share with your company, or the world!  \r\n\r\n\r\nGoals of Reflex: \r\n1. 🐍 Pure Python: Use one language for your web app.  \r\n2. 💡 Easy to get started: Build your ideas easily without needing web development experience.  \r\n3. ⚡ Full flexibility: Web apps should match the customizability and performance of traditional web frameworks.  \r\n4. 🔋 Batteries included: Handle the full-stack from the frontend, to the backend, to deployment. Deploy with a single `reflex deploy` command.  \r\n6. 🥞 Empower Your Team: Instead of having separate dedicated engineers for frontend, backend, and infra, every engineer can now understand and work across the whole stack.  \r\n\r\nIf your team uses Python, I'd love to learn more about your experience building data and web apps!\r\n\r\nLink to our launch here: https://www.producthunt.com/posts/reflex-cloud",
      "created_at": "2024-12-06T02:32:20Z",
      "updated_at": "2024-12-09T17:04:38Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AgAks",
      "number": 5382,
      "title": "RX callbacks for google picker API",
      "body": "We are trying to implement a callback to reflex to both update the frontend state and make a request to the backend when a user successfully completes a google file picker. Our flow is as follows:\r\n\r\n1. We load in javascript code using rx.script for the handling of a google docs file picker component\r\n2. A user clicks a button to open a google docs file picker.\r\n3. The button calls a function in state called show_folder_picker\r\n4. show_folder_picker calls a javascript function we had loaded in to open the google picker using rx.call_script\r\n5. rx.call_script uses the callback parameter to try to trigger a function to update the frontend / backend (self.picker_callback)-> This is the issue. The callback is called when the picker in opened, not when a user picks a file\r\n6. The user selects the folder using the google docs file picker\r\n7. The user saves their selection, closing the picker and calling a callback method we have defined in our javascript.\r\n\r\nIdeally we could pass self.picker_callback into the javascript code so that it can be called when the google picker succeeds. We can't find a way to do that and as far as we know there is no way to tie a reflex state function to our script.\r\n\r\n**Specifics (please complete the following information):**\r\n - Python Version: 3.11.10\r\n - Reflex Version:  0.5.9  \r\n - OS:  moacos\r\n - Browser (Optional): chrome\r\n \r\nWe have tried a lot of paths to solve this including reflex EventHandler.. no luck so far.\r\n",
      "created_at": "2024-11-25T18:50:17Z",
      "updated_at": "2025-05-30T01:19:55Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "alieralex",
        "avatar_url": "https://avatars.githubusercontent.com/u/7490390?u=96994f368e263d4d359ff0a5530128147d96c961&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Acuj1",
      "number": 4418,
      "title": "v0.6.6 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.6.6a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-11-21 19:45 PDT: 0.6.6a1 pre-release published for testing\r\n2024-11-25 13:02 PDT: 0.6.6a2 pre-release published\r\n2024-12-02 10:30 PDT: 0.6.6a3 pre-release published\r\n2024-12-02: Planned Public release of 0.6.6\r\n\r\n# Release Notes\r\n\r\n## Changes in 0.6.6a3\r\n\r\n* enable css props via wrapperStyle for recharts components by @Lendemor in #4447\r\n* [HOS-333] Send a \"reload\" message to the frontend after state expiry by @masenf in #4442\r\n\r\n## Changes in 0.6.6a2\r\n\r\n* Remove invitation code logic from reflex logoutv2 @ElijahAhianyo in #4433\r\n* allow for 'go.Figure | None' annotation in State by @Lendemor in #4426\r\n  * cb087acbe follow up to #4426 (#4436)\r\n* fix mutable default in EventNamespace by @Lendemor in #4420\r\n* [ENG-4137] Handle generic alias passing inspect.isclass check by @masenf in #4427\r\n\r\n## New Features\r\n\r\n### `.temporal` event action drops events when backend is not connected\r\n\r\n* New Event Action: temporal by @masenf in https://github.com/reflex-dev/reflex/pull/4404\r\n\r\n### New \"performance mode\" options\r\n\r\nAllow disabling or modifying various guardrails and checks performed by reflex.\r\n\r\n* implement performance mode for existing state size check by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4392\r\n\r\n### Builtin support for existing pydantic v1 and v2 models\r\n\r\nState vars can now be typed as pydantic models, with support for modification tracking.\r\n\r\n* [ENG-3953] Support pydantic BaseModel (v1 and v2) as state var by @masenf in https://github.com/reflex-dev/reflex/pull/4338\r\n\r\n### `rx.asset` promoted to non-experimental\r\n\r\nTBD: docs for new API\r\n\r\n* rx._x.asset improvements by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3624\r\n\r\n## Improvements\r\n\r\n### Streamlined `reflex init` workflow\r\n\r\n* [GTM-836]Rework Init workflow by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4377\r\n\r\n### Other Improvements\r\n* export Color and ImportDict in top-level namespace by @masenf in https://github.com/reflex-dev/reflex/pull/4352\r\n* redesign error boundary screen by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4329\r\n* add typing to function vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4372\r\n* Add template name to reflex init success msg by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4349\r\n  * Fix ternary logic when printing template name by @masenf in https://github.com/reflex-dev/reflex/pull/4393\r\n* fix: do not allow instantiation of State mixins by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4347\r\n* add typed dict type checking by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4340\r\n* Add datetime to moment by @Alek99 in https://github.com/reflex-dev/reflex/pull/4381\r\n* remove deprecation for drawer events by @Lendemor in https://github.com/reflex-dev/reflex/pull/4415\r\n* allow to disable checking for the latest package version via env by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4407\r\n* Allow bound method as event handler by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4348\r\n\r\n## Bug Fixes\r\n* fix upload argspec being missing by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4335\r\n* Only pass Model.__fields__ when casting event args by @masenf in https://github.com/reflex-dev/reflex/pull/4356\r\n* Path change after Astral 0.5.0 update by @1Codev in https://github.com/reflex-dev/reflex/pull/4336\r\n* [ENG-4098] Deconfuse key/value of State.get_value / dict / get_delta by @masenf in https://github.com/reflex-dev/reflex/pull/4371\r\n* fix noSSRComponent imports by @Lendemor in https://github.com/reflex-dev/reflex/pull/4386\r\n* fix: Failed to CreateArtifact by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4339\r\n* make list suggestions work in rx.input by @Lendemor in https://github.com/reflex-dev/reflex/pull/4391\r\n* Don't skip serialization when Var is callable by @masenf in https://github.com/reflex-dev/reflex/pull/4399\r\n* ignore rxconfig not in cwd by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4398\r\n  * protect sys.path manipulation with a mutex by @masenf in https://github.com/reflex-dev/reflex/pull/4408\r\n* fix appearance broken by #3812 by @Lendemor in https://github.com/reflex-dev/reflex/pull/4403\r\n* [ENG-4130] Disable typer/rich integration appropriately by @masenf in https://github.com/reflex-dev/reflex/pull/4412\r\n* [HOS-313] state.js: when a routing error occurs, delete it by @masenf in https://github.com/reflex-dev/reflex/pull/4410\r\n* fix for event handlers in py3.9 by @Lendemor in https://github.com/reflex-dev/reflex/pull/4416\r\n* Handle Var passed to `rx.toast` by @masenf in https://github.com/reflex-dev/reflex/pull/4405\r\n\r\n## Version Bumps\r\n* Bump reflex-hosting-cli dep to 0.1.15 for v2 by @masenf in https://github.com/reflex-dev/reflex/pull/4355\r\n* Temporarily downpin @radix-ui/themes <3.1.5 by @masenf in https://github.com/reflex-dev/reflex/pull/4370\r\n* require typing_extensions >= 4.6.0 by @masenf in https://github.com/reflex-dev/reflex/pull/4373\r\n* update cli version by @Kastier1 in https://github.com/reflex-dev/reflex/pull/4394\r\n* [maintenance] bump some packages versions by @Lendemor in https://github.com/reflex-dev/reflex/pull/4385\r\n* [ENG-4080]Downgrade syntax highlighter to fix `wrapLongLines` issue by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4368\r\n* Simon/hosting cli upgrades by @Kastier1 in https://github.com/reflex-dev/reflex/pull/4417\r\n\r\n## What's Changed\r\n\r\n* Update bug_report.md by @Alek99 in https://github.com/reflex-dev/reflex/pull/4382\r\n* add debug statement to evaluate page by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4396\r\n\r\n## New Contributors\r\n* @1Codev made their first contribution in https://github.com/reflex-dev/reflex/pull/4336\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.6.5...v0.6.6",
      "created_at": "2024-11-22T03:46:43Z",
      "updated_at": "2024-12-03T21:47:57Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaLV0",
      "number": 3561,
      "title": "A custom http_server parameter in the rx.Config (rxconfig.py)",
      "body": "Can we use a custom ASGI server for the Reflex app (**YES, WE CAN**)\r\nbut what if we add a parameter so that we don't need to do this\r\n```bash\r\n# Running these 2 commands separately.\r\ngranian --interface asgi my_app:app \r\nreflex run --frontend-only\r\n```\r\nINSTEAD, WE COULD DO THIS 🔽 AND RUN THE REFLEX APP WITH `reflex run`\r\n(**Let's say, this is my rxconfig.py file**)\r\nI've decided to use a fast web server for a better performance\r\n```python\r\nimport reflex as rx\r\n\r\nconfig = rx.Config(\r\n    app_name=\"cherrysaas\",\r\n# Using a custom HTTP server here like this\r\n   http_server=\"granian --interface asgi\" # This is evaluated as \"granian --interface asgi\" + \" <app_name>\" (app_name not to be included in server)\r\n)\r\n```\r\nSince it is not possible to spawn separate two shells for 2 commands in the REFLEX DEPLOY (reflex.run). This will become a problem for me to deploy using a custom HTTP server like granian. If you find my idea is legit, please convert this to an issue. **Somehow using a different HTTP server can boost FastAPI performance🤔**",
      "created_at": "2024-06-25T14:05:26Z",
      "updated_at": "2024-11-23T21:30:36Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "itsmeadarsh2008",
        "avatar_url": "https://avatars.githubusercontent.com/u/71959210?u=4bfd03e8722332b1b9dfc4ced2a3923bc401d540&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AV8Cd",
      "number": 1996,
      "title": "How to run arbitrary javascript in response to an event?",
      "body": "Now that `rx.client_side` is deprecated and removed in 0.3.0, how can I write an event handler that runs arbitrary javascript in response to an event and actually get the args?\r\n\r\n`rx.call_script` can be used to execute JS code, but it does not have access to the args of the event trigger unless they have been plumbed through via `get_event_triggers`. So for existing components, like `rx.button`, there is not a way to access the DOM event for an `on_click` without subclassing `rx.Button` and overwriting the event triggers... surely there must be an easier way?",
      "created_at": "2023-10-18T19:16:28Z",
      "updated_at": "2024-11-23T04:55:09Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Ab693",
        "body": "`rx.client_side` was just syntax sugar over arbitrary javascript inside a `Var` with type `EventChain`. These `Var` objects may be created directly with more control over the results.\r\n\r\n```python\r\nimport reflex as rx\r\n\r\n\r\ncustom_handler = rx.vars.BaseVar(\r\n    _var_name=\"ev => {window.alert(`You clicked at ${ev.clientX}, ${ev.clientY}`)}\",\r\n    _var_type=rx.EventChain,\r\n)\r\n\r\n\r\ndef index():\r\n    return rx.button(\r\n        \"Where Did I Click?\",\r\n        on_click=custom_handler,\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n\r\nNote: Custom event handlers added in this fashion can NOT be yielded from another event handler on the backend. For executing custom script from backend, `rx.call_script` must be used.\r\n\r\n----------------\r\n\r\nThe custom JS code may interact with the backend state by formatting custom event chains. Here is the same example, but with updating state instead of displaying a browser alert.\r\n\r\n```python\r\nimport reflex as rx\r\n\r\n\r\nclass State(rx.State):\r\n    coordinates: tuple[int, int] = (0, 0)\r\n\r\n    def update_coordinates(self, clientX, clientY):\r\n        self.coordinates = (clientX, clientY)\r\n\r\n\r\ncustom_event_chain = rx.EventChain(\r\n    events=[State.update_coordinates(\"${ev.clientX}\", \"${ev.clientY}\")]\r\n)\r\ncustom_handler = rx.vars.BaseVar(\r\n    _var_name=f\"ev => {rx.utils.format.format_event_chain(custom_event_chain)}\",\r\n    _var_type=rx.EventChain,\r\n)\r\n\r\ndef index():\r\n    return rx.vstack(\r\n        rx.heading(State.coordinates.to_string()),\r\n        rx.button(\r\n            \"Where Did I Click?\",\r\n            on_click=custom_handler,\r\n        )\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n\r\n--------------\r\n\r\nAnd for posterity, here is the \"proper\" way to accomplish the same result without custom code:\r\n\r\n```python\r\nfrom typing import Any\r\nimport reflex as rx\r\n\r\n\r\nclass State(rx.State):\r\n    coordinates: tuple[int, int] = (0, 0)\r\n\r\n    def update_coordinates(self, clientX, clientY):\r\n        self.coordinates = (clientX, clientY)\r\n\r\n\r\nclass DOMClickEvent(rx.Base):\r\n    clientX: int\r\n    clientY: int\r\n\r\n\r\ndef click_coordinate_signature(e: DOMClickEvent):\r\n    return [e.clientX, e.clientY]\r\n\r\n\r\nclass CoordinateCaptureButton(rx.Button):\r\n    def get_event_triggers(self) -> dict[str, Any]:\r\n        return {\r\n            **super().get_event_triggers(),\r\n            rx.constants.EventTriggers.ON_CLICK: click_coordinate_signature\r\n        }\r\n\r\n\r\ndef index():\r\n    return rx.vstack(\r\n        rx.heading(State.coordinates.to_string()),\r\n        CoordinateCaptureButton.create(\r\n            \"Where Did I Click?\",\r\n            on_click=State.update_coordinates,\r\n        )\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\napp.compile()\r\n```"
      },
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWv6y",
      "number": 2300,
      "title": "How to record audio and call openai's whisper recognition",
      "body": "Is anyone know: how to record audio and call openai's whisper recognition. I don't found any example.\r\nThanks.",
      "created_at": "2023-12-15T10:34:59Z",
      "updated_at": "2024-11-20T23:46:35Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "ching123",
        "avatar_url": "https://avatars.githubusercontent.com/u/6915022?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AcZPL",
      "number": 4334,
      "title": "v0.6.5 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.6.5a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-11-07 21:00 PDT: 0.6.5a1 pre-release published for testing\r\n2024-11-11 11:16 PDT: 0.6.5a2 pre-release published\r\n2024-11-12 09:40 PDT: 0.6.5a3 pre-release published\r\n2024-11-11: Planned Public release of 0.6.5\r\n2024-11-12 14:00 PDT: 0.6.5 released!\r\n\r\n# Release Notes\r\n\r\n## Changes in 0.6.5a3\r\n\r\n* Only pass Model.__fields__ when casting event args by @masenf in #4356\r\n* Bump reflex-hosting-cli dep to 0.1.15 for v2 by @masenf in #4355\r\n\r\n## Changes in 0.6.5a2\r\n\r\n* fix upload argspec being missing by @adhami3310 in #4335\r\n\r\n## Breaking Changes\r\n\r\n* `rx.App` is now a dataclass that does not accept additional kwargs. Any unrecognized kwargs passed to `rx.App` will now raise an exception.\r\n* Event handlers that accept annotated `rx.Base` subclasses as arguments will receive an instance of the annotated class instead of a regular `dict`\r\n\r\n## New Features\r\n\r\n### New `rx.get_state` interface\r\n\r\n* expose rx.get_state() to get instance of state from anywhere by @Lendemor in https://github.com/reflex-dev/reflex/pull/3959\r\n\r\n### Support custom `bunfig.toml`\r\n\r\n* allow custom bunfig.toml file by @Lendemor in https://github.com/reflex-dev/reflex/pull/4280\r\n\r\n### New Hosting Service CLI\r\n\r\n* Adding hosting v1 support by @Kastier1 in https://github.com/reflex-dev/reflex/pull/4309\r\n* update cli version by @Kastier1 in https://github.com/reflex-dev/reflex/pull/4333\r\n\r\n## Improvements\r\n\r\n### Better Typing Support\r\n* add type validation for state setattr by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4265\r\n  * handle none case in state setattr by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4301\r\n* use better typing for on_load by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4274\r\n* [ENG-3943]type check for event handler if spec arg are typed by @Lendemor in https://github.com/reflex-dev/reflex/pull/4046\r\n* add noop event by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4288\r\n* allow for event handlers to ignore args by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4282\r\n* improve typing for non decorated events by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4308\r\n* add type hinting for plotly by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4279\r\n  * unbreak pyi plotly by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4320\r\n* improve app_src typing by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4324\r\n* change custom attr to accept any by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4323\r\n* improve typing for serializer decorator by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4317\r\n* [ENG-3793] convert event return types to type hints by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4331\r\n\r\n### Experimental Shiki Code Block Features\r\n* [ENG-3892]Shiki codeblock support decorations by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4234\r\n* [ENG-4010]Codeblock cleanup in markdown by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4233\r\n\r\n### Refactor Environment Variable Handling\r\n* More env var cleanup by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4248\r\n\r\n### Other Improvements\r\n* Support `locale` prop in `rx.moment` by @masenf in https://github.com/reflex-dev/reflex/pull/4229\r\n* delay page until _compile gets called by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3812\r\n  * fix stateful components on delayed evaluation by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4247\r\n* make vardata merge not use classmethod by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4245\r\n* port enum env var support from #4248 by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4251\r\n* expose staticPageGenerationTimeout by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4266\r\n* rx.event(background=True) by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4263\r\n* components as literal vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4223\r\n* generate docs for event handlers by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4277\r\n* improve page title default by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4278\r\n* Add option to scroll to bottom by @picklelo in https://github.com/reflex-dev/reflex/pull/4276\r\n* [ENG-759] [ENG-1104] patch `json.dumps` to handle `__wrapped__` objects by @masenf in https://github.com/reflex-dev/reflex/pull/4166\r\n  * Support direct usage of `MutableProxy` wrapped objects in JSON APIs (OpenAI, httpx, etc)\r\n* improve object var symantics by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4290\r\n* add metainfo to keyevent by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4287\r\n\r\n## Bug Fixes\r\n* Include value._get_all_var_data when ClientStateVar.set_value is used by @masenf in https://github.com/reflex-dev/reflex/pull/4161\r\n* client_state: fix fault VarData.merge call by @masenf in https://github.com/reflex-dev/reflex/pull/4244\r\n* Remove Duplicated 'gray' colour from ColorType by @lb803 in https://github.com/reflex-dev/reflex/pull/4249\r\n* Handle props annotated as list/dict of EventHandler by @masenf in https://github.com/reflex-dev/reflex/pull/4257\r\n* add existing path subclass for env checks by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4260\r\n* [ENG-4012]Fix shiki copy button animation firing off after clicking copy button by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4252\r\n* [ENG-4013] Catch more exceptions for dill pickle fallback by @masenf in https://github.com/reflex-dev/reflex/pull/4270\r\n* fix typo in dataeditor prop by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4281\r\n* Bugfix/leave gitignore as is by @grahamannett in https://github.com/reflex-dev/reflex/pull/4291\r\n* Fix wrong hook by @abulvenz in https://github.com/reflex-dev/reflex/pull/4295\r\n* fix call_function events sent from backend by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4316\r\n* fix imports with alias from $ by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4332\r\n\r\n## Documentation\r\n* [ENG-4026]change gallery link to Templates by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4283\r\n* [GTM-345]Define component props in class for doc discoverability by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4183\r\n* Update overlay props by @tgberkeley in https://github.com/reflex-dev/reflex/pull/4261\r\n* default props comment for GraphinTooltip by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4101\r\n* add toast classname prop by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4310\r\n* [GTM-648]Add Missing Table props by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4322\r\n\r\n## Version Bumps\r\n* update nodejs to lts 22 for real this time by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4267\r\n* rollback to 14.2.16 until v15 is more stable by @Lendemor in https://github.com/reflex-dev/reflex/pull/4297\r\n* bump python packages version by @Lendemor in https://github.com/reflex-dev/reflex/pull/4302\r\n* pin marked to correct version by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4313\r\n\r\n## Other Changes\r\n* convert test_table to use playwright by @Lendemor in https://github.com/reflex-dev/reflex/pull/4241\r\n* cleanup dead code by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4271\r\n* unbreak ci lighthouse by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4273\r\n* resync steps with task advance by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4275\r\n* [ENG-3961] move \"warn_if_too_large\" logic into BaseState by @masenf in https://github.com/reflex-dev/reflex/pull/4284\r\n* raise error when get package manager is not found by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4289\r\n  * better missing system package message by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4306\r\n* move check of path to only check name by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4299\r\n* special case field in _isinstance by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4298\r\n* bypass pydantic runtime validation for state init by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4256\r\n* add codeowners by @Kastier1 in https://github.com/reflex-dev/reflex/pull/4312\r\n* stop ignoring some lint rules by @Lendemor in https://github.com/reflex-dev/reflex/pull/4311\r\n* mark var methods as private by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4319\r\n* test_exception_handlers: add test case that triggers ErrorBoundary by @masenf in https://github.com/reflex-dev/reflex/pull/4327\r\n\r\n## New Contributors\r\n* @lb803 made their first contribution in https://github.com/reflex-dev/reflex/pull/4249\r\n* @grahamannett made their first contribution in https://github.com/reflex-dev/reflex/pull/4291\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.6.4...release/reflex-0.6.5",
      "created_at": "2024-11-08T05:03:58Z",
      "updated_at": "2024-11-12T22:02:32Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASjk1",
      "number": 549,
      "title": "Playwright? Pytest? Testing?",
      "body": "Has anyone tried to incorporate testing in their pynecone apps using playwright or pytest?\r\n\r\nI am curious to find out ideas how to do CI with my pynecone app.",
      "created_at": "2023-02-16T06:36:10Z",
      "updated_at": "2024-11-12T17:20:01Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "houfu",
        "avatar_url": "https://avatars.githubusercontent.com/u/19525701?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUhWH",
      "number": 1317,
      "title": "How are people deploying their apps?",
      "body": "Can we start a show and tell about how people are deploying their pynecone apps?\nI am sure I am not the only one wanting to see examples of:\n- what hosting services are you using?\n- Dockerfiles\n- Reverse proxy use\n- DevOps pipelines\n- GitHub actions\nEtc.\n\nI know this is something I keep having trouble with the most.",
      "created_at": "2023-07-07T21:47:30Z",
      "updated_at": "2024-11-10T09:47:22Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbH7g",
      "number": 3858,
      "title": "How do I conditionally show a toast?",
      "body": "Brand new to reflex (looks fantastic btw!) so forgive me if this is obvious, but I'm missing something.\r\n\r\nI want to conditionally show a toast if a boolean is `True`\r\n\r\n```\r\nrx.cond(FormState.f_submitted, rx.toast.success(\"Form submitted. Thanks!\"))\r\n```\r\n\r\nFirst, [the docs state](https://reflex.dev/docs/library/dynamic-rendering/cond/): `The second component is optional and can be omitted. If it is omitted, nothing is rendered if the condition is False.` but with the above, I get:\r\n\r\n```\r\nValueError: For conditional vars, the second argument must be set.\r\n```\r\n\r\nSo I add a dummy `text` field to keep it happy:\r\n\r\n```\r\nrx.cond(FormState.f_submitted,\r\n                rx.toast.success(\"foo\"),\r\n                rx.text(\"\"))\r\n```\r\n\r\nand now get:\r\n\r\n```\r\nValueError: Both arguments must be props.\r\n```\r\n\r\n## Reflex Version\r\n\r\n```\r\nreflex --version\r\n0.5.10\r\n```",
      "created_at": "2024-08-29T21:24:55Z",
      "updated_at": "2024-11-08T03:05:12Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "agardnerIT",
        "avatar_url": "https://avatars.githubusercontent.com/u/26523841?u=13818462aa086d99525d0b7f78cd0d914da3045f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AcGG0",
      "number": 4240,
      "title": "v0.6.4 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.6.4a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-10-25 09:30 PDT: 0.6.4a1 pre-release published for testing\r\n2024-10-28 17:10 PDT: 0.6.4a2 pre-release published\r\n2024-10-29 13:09 PDT: 0.6.4a3 pre-release published\r\n2024-10-29: Planned Public release of 0.6.4\r\n\r\n# Release Notes\r\n\r\n## Changes in 0.6.4a3\r\n\r\n* add existing path subclass for env checks by @adhami3310 in #4260\r\n* port enum env var support from #4248 by @benedikt-bartscher in #4251\r\n\r\n## Changes in 0.6.4a2\r\n\r\n* Handle props annotated as list/dict of EventHandler (#4257)\r\n\r\n## New Features\r\n\r\n### Make Var System Expandable\r\n\r\nA new dispatch mechanism for converting python values into Var and LiteralVar subclasses. This allows component authors and downstream applications to better support custom frontend operations on Python values converted to Javascript values\r\n\r\n<details>\r\n\r\n<summary>See Example</summary>\r\n\r\nThis example allows for near drop-in support for working with SQLAlchemy `DeclarativeBase` models and will likely be included in a future release:\r\n\r\n```python\r\nfrom collections.abc import Mapping, MutableSet, Sequence\r\nfrom typing import TypeVar\r\nimport dataclasses\r\nimport sys\r\n\r\nimport reflex as rx\r\nimport sqlalchemy\r\nimport sqlalchemy.orm.exc\r\nfrom sqlalchemy.orm import DeclarativeBase\r\n\r\n\r\nclass DeclarativeBaseVar(rx.vars.ObjectVar, python_types=DeclarativeBase):\r\n    pass\r\n\r\n\r\n@dataclasses.dataclass(\r\n    eq=False,\r\n    frozen=True,\r\n    **{\"slots\": True} if sys.version_info >= (3, 10) else {},\r\n)\r\nclass LiteralDeclarativeBaseVar(rx.vars.LiteralObjectVar, DeclarativeBaseVar):\r\n    _var_value: DeclarativeBase | None = None\r\n\r\n\r\nT = TypeVar(\"T\")\r\nK = TypeVar(\"K\")\r\nV = TypeVar(\"V\")\r\n\r\n\r\n@rx.serializer\r\ndef serialize_Sequence(s: Sequence[T] | MutableSet[T]) -> list[T]:\r\n    return list(s)\r\n\r\n\r\n@rx.serializer\r\ndef serialize_Mapping(m: Mapping[K, V]) -> dict[K, V]:\r\n    return dict(m)\r\n\r\n\r\n@rx.serializer\r\ndef serialize_DeclarativeBase(obj: DeclarativeBase) -> dict[str, str]:\r\n    s = {}\r\n    for attr in sqlalchemy.inspect(type(obj)).all_orm_descriptors.keys():\r\n        try:\r\n            s[attr] = getattr(obj, attr)\r\n        except sqlalchemy.orm.exc.DetachedInstanceError:\r\n            # This happens when the relationship was never loaded and the session is closed.\r\n            continue\r\n    return s\r\n```\r\n\r\n</details>\r\n\r\n* make var system expandable by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4175\r\n\r\n### `max-requests` support to gunicorn (fixed memory leak)\r\n\r\nThis is a new configurable option in the rx.config but also now has default values. \r\n `gunicorn_max_requests` - ( gunicorn / uvicorn )max requests per worker \r\n Defaults value - `100`\r\n`gunicorn_max_requests_jitter` - (gunicorn only) variance in the max request limit. To prevent all workers restarting at same time \r\nDefaults value - `25`\r\n\r\n#### What is `max_requests`?\r\n\r\n`max_requests` is a the maximum number of requests a worker can serve before the manager will kill the worker and restart.\r\n\r\n#### Why is this needed?\r\n\r\ngunicorn workers don't release memory after a request. This can cause for a workers to hold on to more and more memory over time. Setting this flag means that after serving N requests the worker is killed, thus releasing the memory,  and a new worker is spun up. \r\n\r\n#### How to configure\r\n\r\n```python\r\nrx.config(\r\n    ...\r\n     gunicorn_max_requests=50\r\n    ...\r\n)\r\n```\r\n\r\n### Experimental Shiki Codeblock\r\n\r\n```python\r\nrx._x.code_block(\r\n\"\"\"\r\nprint(\"Original text\")   # [!code --]\r\nprint(\"Replace original with this\") # [!code ++]\r\n\r\nname = \"John Doe\"  # [!code highlight]\r\n\"\"\",\r\n    language=\"python\",\r\n    theme=\"dracula\",\r\n    use_transformers=True,\r\n    can_copy=True,\r\n    show_line_numbers=True\r\n)\r\n```\r\n\r\n* [ENG-3848][ENG-3861]Shiki Code block Experimental by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4030\r\n\r\n### `dotenv` support added\r\n\r\nTo use this feature, you must install `python-dotenv` separately from reflex.\r\n\r\n```python\r\nimport reflex as rx\r\n\r\nconfig = rx.Config(\r\n    app_name=\"mycoolapp\",\r\n    env_file=\".env\",\r\n)\r\n```\r\n\r\n* HOS-93: add support for .env file by @Kastier1 in https://github.com/reflex-dev/reflex/pull/4219\r\n* make python-dotenv optional by @Lendemor in https://github.com/reflex-dev/reflex/pull/4222\r\n\r\n### New `rx.dynamic` decorator\r\n\r\nUnlike normal UI functions, this decorator allows UI code to directly access State instance values, Python-only APIs, and typical `for` and `if` statements.\r\n\r\n<details>\r\n\r\n<summary>See Example</summary>\r\n\r\nWe can implement a simple Reflex fiddle, that evaluates component strings into UI components and render them. This was previously difficult, as all UI had to compile into react code in the `.web` folder. This works by dynamically compiling a JavaScript module using in-window react.\r\n\r\n```python\r\nimport reflex as rx\r\n\r\n\r\nclass State(rx.State):\r\n    component_str = \"rx.button('login')\"\r\n\r\n\r\n@rx.dynamic\r\ndef evaluated_component(state: State):\r\n    try:\r\n        component = eval(\r\n            state.component_str,\r\n            {\r\n                \"rx\": rx,\r\n                \"State\": State,\r\n            },\r\n        )\r\n    except Exception as e:\r\n        return rx.text(f\"Error: {e}\")\r\n    if not isinstance(component, rx.Component):\r\n        return rx.text(\"Invalid component\")\r\n    return component\r\n\r\n\r\ndef index():\r\n    return (\r\n        rx.hstack(\r\n            rx.text_area(\r\n                value=State.component_str,\r\n                on_change=State.set_component_str,\r\n                height=\"100%\",\r\n                flex=\"1\",\r\n            ),\r\n            rx.card(evaluated_component(), height=\"100%\", flex=\"1\"),\r\n            height=\"100vh\",\r\n            padding=\"1rem\",\r\n            box_size=\"border-box\",\r\n        ),\r\n    )\r\n```\r\n\r\n</details>\r\n\r\n* implement rx dynamic by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4195\r\n\r\n## Improvements\r\n\r\n### Better Type Hinting for Built in Components\r\n* add type hinting to error boundary by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4182\r\n* add event types to suneditor by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4209\r\n* Add type hinting to dataeditor events by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4210\r\n* Add on progress typing to react player by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4211\r\n* add additional typing for calling events by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4218\r\n\r\n### Other Improvements\r\n* allow setting run mode via env, add helpers to determine it by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4168\r\n* Raise TypeError when `ComputedVar.__init__` gets bad kwargs by @masenf in https://github.com/reflex-dev/reflex/pull/4199\r\n* move all environment variables to the same place by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4192\r\n* [ENG-3970] When normal pickle fails, try dill by @masenf in https://github.com/reflex-dev/reflex/pull/4239\r\n\r\n## Bug Fixes\r\n* use larger or equal for node version check by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4189\r\n* check for none before returning which by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4187\r\n* fix and test bug in config env loading by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4205\r\n* fix inverted alembic file check by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4238\r\n* fix: async default setters break setvar by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4169\r\n* Fix 'enter_key_submit=True' on 'rx.text_area' by carrying custom_code on debounce by @masenf in https://github.com/reflex-dev/reflex/pull/4142\r\n\r\n## Version Bumps\r\n* upgrade node to latest lts by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4191\r\n* versions bump before 0.6.4 by @Lendemor in https://github.com/reflex-dev/reflex/pull/4208\r\n* bump ruff to 0.7.0 by @Lendemor in https://github.com/reflex-dev/reflex/pull/4213\r\n\r\n## Other Changes\r\n* pin AppHarness tests to ubuntu-22.04 runner by @masenf in https://github.com/reflex-dev/reflex/pull/4173\r\n* Remove demo command by @Alek99 in https://github.com/reflex-dev/reflex/pull/4176\r\n* move client storage classes to their own file by @Lendemor in https://github.com/reflex-dev/reflex/pull/4216\r\n* use $ syntax by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4237\r\n* test for stateless apps by @Lendemor in https://github.com/reflex-dev/reflex/pull/3816\r\n\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.6.3.post1...release/reflex-0.6.4",
      "created_at": "2024-10-24T23:49:00Z",
      "updated_at": "2024-10-29T23:43:53Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaY03",
      "number": 3647,
      "title": "Reflex template on replit",
      "body": "In case anyone finds it useful, I set up a [Reflex template on replit](https://replit.com/@pglevy/Reflex-Template?v=1#README.md) so you can run a basic app and try it out with the click of a button—no local installation required.",
      "created_at": "2024-07-10T02:40:49Z",
      "updated_at": "2024-10-20T09:13:28Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "pglevy",
        "avatar_url": "https://avatars.githubusercontent.com/u/5177337?u=d037a5c607e15231558c6b29a6c58ae0de091015&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ab6e2",
      "number": 4171,
      "title": "v0.6.3 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.6.3a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-10-14 09:00 PDT: 0.6.3a1 pre-release published for testing\r\n2024-10-16 15:20 PDT: 0.6.3a2 pre-release published\r\n2024-10-17 17:00 PDT: 0.6.3a3 pre-release published\r\n2024-10-17 19:24 PDT: 0.6.3a4 pre-release published\r\n2024-10-18: Planned Public release of 0.6.3\r\n\r\n# Release Notes\r\n\r\n## Changes in 0.6.3a4\r\n\r\n* Fix runtime error on python 3.11.0 (#4197)\r\n\r\n## Changes in 0.6.3a3\r\n\r\n* When REDIS_URL is set, use redis, regardless of config preference. (#4196)\r\n* [ENG-3954] Treat ArrayVar.foreach index as int (#4193)\r\n\r\n## Changes in 0.6.3a2\r\n\r\n* fix pyi for untyped event handlers (#4186)\r\n* Arbitrary arg access two levels deep for untyped handler (#4180)\r\n* LiteralEventChainVar becomes an ArgsFunctionOperation (#4174)\r\n* disk is memory is disk (#4185)\r\n* only treat dict object vars as key value mapping (#4177)\r\n* pin AppHarness tests to ubuntu-22.04 runner (#4173)\r\n\r\n## New Features\r\n\r\n* Support aria and data props by @masenf in https://github.com/reflex-dev/reflex/pull/4149\r\n\r\n## Improvements\r\n* Optimize StateManagerDisk by @masenf in https://github.com/reflex-dev/reflex/pull/4056\r\n* Reduce pickle size by @masenf in https://github.com/reflex-dev/reflex/pull/4063\r\n* fail safely when pickling by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4085\r\n* [ENG-3749] type safe vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4066\r\n* First use environment variable as npm registry by @ruhz3 in https://github.com/reflex-dev/reflex/pull/4082\r\n* let users pick state manager mode by @Lendemor in https://github.com/reflex-dev/reflex/pull/4041\r\n* Allow setting a different invocation function for EventChain by @masenf in https://github.com/reflex-dev/reflex/pull/4160\r\n* add type hinting to events by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4145\r\n\r\n## Bug Fixes\r\n* convert literal type to its variants by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4062\r\n* catch CancelledError in lifespan hack for windows by @Lendemor in https://github.com/reflex-dev/reflex/pull/4083\r\n* Get default for backend var defined in mixin by @masenf in https://github.com/reflex-dev/reflex/pull/4060\r\n* [ENG-3903] bundle next link in window by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4064\r\n* misc var improvements by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4068\r\n* [ENG-2287] Avoid fetching same state from redis multiple times by @masenf in https://github.com/reflex-dev/reflex/pull/4055\r\n* reset backend vars in state.reset() by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4087\r\n* fix custom component init by @Lendemor in https://github.com/reflex-dev/reflex/pull/4123\r\n* use system npm when REFLEX_USE_SYSTEM_NODE is passed by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4133\r\n* Remove wrong event handlers by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4136\r\n* fix: Determine str type from value. by @abulvenz in https://github.com/reflex-dev/reflex/pull/4143\r\n* remove dictify from state dict by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4141\r\n* catch ValueError(\"I/O operation on closed file.\") if frontend crashes by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4150\r\n* fix union types for vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4152\r\n* Change bun link by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4162\r\n* change bun install link to main by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4164\r\n* only load json if it's *not* empty by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4165\r\n* Handle rx.State subclasses defined in function by @masenf in https://github.com/reflex-dev/reflex/pull/4129\r\n* Do not auto-determine generic args if already supplied by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4148\r\n* unionize base var fields types by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4153\r\n\r\n## Version Bumps\r\n* add workflow to check dependencies on release branch by @Lendemor in https://github.com/reflex-dev/reflex/pull/4050\r\n* upgrade default node to current lts by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4086\r\n* update ruff to latest version by @Lendemor in https://github.com/reflex-dev/reflex/pull/4081\r\n* Revert Markdown-related frontend dep bumps by @masenf in https://github.com/reflex-dev/reflex/pull/4088\r\n\r\n## Documentation\r\n* default props comment for CartesianAxis by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4127\r\n* default props comment for CartesianGrid by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4126\r\n* default props comment for ReferenceLine by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4122\r\n* default props comment for ReferenceArea by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4124\r\n* default props comment for Scatter by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4118\r\n* default props comment for Area by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4115\r\n* default props comment for Line by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4117\r\n* default props comment for Bar by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4116\r\n* default props comment for Brush by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4113\r\n* default props comment for ZAxis by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4112\r\n* default props comment for YAxis by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4111\r\n* default props comment for XAxis by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4110\r\n* default props comment for Legend by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4100\r\n* default props comment for PolarAngleAxis by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4106\r\n* default props comment for LabelList by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4102\r\n* default props comment for treemap by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4098\r\n* default props comment for ResponsiveContainer by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4099\r\n* default props comment for scatterchart by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4096\r\n* default props comment for radarchart by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4094\r\n* default props comment for radialbarchart by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4095\r\n* default props comment for barchart by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4092\r\n* default props comment for composedchart by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4093\r\n* areachart default value for base_value by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4090\r\n* default props comment for categoricalchartbase by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4091\r\n* default props comment for PolarGrid by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4107\r\n* default props comment for Reference by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4121\r\n* default props comment for funnelchart by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4097\r\n* default props comment for Radar by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4104\r\n* Add Vietnamese README docs by @nguyenmphu in https://github.com/reflex-dev/reflex/pull/4138\r\n* fix docstring by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/4140\r\n* default props comment for Grid by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4125\r\n* default props comment for Funnel by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4119\r\n* default props comment for ErrorBar by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4120\r\n* default props comment for Cartesian by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4114\r\n* default props comment for RadialBar by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4105\r\n* default props comment for PolarRadiusAxis by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4108\r\n* default props comment for Pie by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4103\r\n* default props comment for Axis by @carlosabadia in https://github.com/reflex-dev/reflex/pull/4109\r\n\r\n## Other Changes\r\n* bump version to 0.6.3dev1 by @masenf in https://github.com/reflex-dev/reflex/pull/4061\r\n* test_dynamic_routes: log on_loads and poll for 60 seconds on order by @masenf in https://github.com/reflex-dev/reflex/pull/4089\r\n* only run macOS job on merge by @Lendemor in https://github.com/reflex-dev/reflex/pull/4139\r\n* Change the defalut direction of radio group by @Manojvbhat in https://github.com/reflex-dev/reflex/pull/4146\r\n\r\n## New Contributors\r\n* @nguyenmphu made their first contribution in https://github.com/reflex-dev/reflex/pull/4138\r\n* @ruhz3 made their first contribution in https://github.com/reflex-dev/reflex/pull/4082\r\n* @Manojvbhat made their first contribution in https://github.com/reflex-dev/reflex/pull/4146\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.6.2...release/reflex-0.6.3",
      "created_at": "2024-10-14T15:56:57Z",
      "updated_at": "2024-10-18T19:15:56Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYRyZ",
      "number": 2845,
      "title": "How to handle click events with Plotly charts",
      "body": "# Update 2024/10/17: Click events are supported out of the box as of reflex 0.5.3\r\n\r\n**The following hack is _no longer necessary_, see https://reflex.dev/docs/library/graphing/other-charts/plotly/#api-reference**\r\n\r\nOn [discord](https://discord.com/channels/1029853095527727165/1061874061250150441/1217153783700652052) user `sgaseretto` asks:\r\n\r\n> Are there any examples on how to handle events in plotly charts? I found that you can define [callbacks for charts](https://plotly.com/python/click-events/) but when trying to implement it with a test chart, moving what I can to a `MapState`, I get errors or nothing happens. Can someone help me with this? This one is the last version I tryied, and it does not work:\r\n\r\n```python\r\nimport reflex as rx\r\nimport plotly.graph_objects as go\r\n\r\nimport numpy as np\r\nnp.random.seed(1)\r\n\r\nclass MapState(rx.State):\r\n    fig: go.Figure\r\n    # scatter: go.Scatter\r\n    colors: List[str] = ['#a3a7e4'] * 100\r\n    size: List[int] = [10] * 100\r\n\r\n\r\n    def update_point(self, trace, points, selector):\r\n        print('click made')\r\n        c = list(self.scatter.marker.color)\r\n        s = list(self.scatter.marker.size)\r\n        for i in points.point_inds:\r\n            c[i] = '#bae2be'\r\n            s[i] = 20\r\n            with self.fig.batch_update():\r\n                self.scatter.marker.color = c\r\n                self.scatter.marker.size = s\r\n\r\ndef map():\r\n    x = np.random.rand(100)\r\n    y = np.random.rand(100)\r\n    MapState.fig = go.Figure([go.Scatter(x=x, y=y, mode='markers')])\r\n    # fig = go.FigureWidget([go.Scatter(x=x, y=y, mode='markers')])\r\n    # fig = go.Figure([go.Scatter(x=x, y=y, mode='markers')])\r\n\r\n    # MapState.scatter = MapState.fig.data[0]\r\n    scatter = MapState.fig.data[0]\r\n    # colors = ['#a3a7e4'] * 100\r\n    # scatter.marker.color = colors\r\n    # MapState.scatter.marker.color = MapState.colors\r\n    scatter.marker.color = MapState.colors\r\n    # scatter.marker.size = [10] * 100\r\n    # MapState.scatter.marker.size = MapState.size\r\n    scatter.marker.size = MapState.size\r\n    MapState.fig.layout.hovermode = 'closest'\r\n\r\n\r\n    scatter.on_click(MapState.update_point)\r\n\r\n    return rx.center(\r\n        rx.text(\"Map\"),\r\n        rx.plotly(data=MapState.fig, height=\"400px\")\r\n    )\r\n\r\napp = rx.App()\r\napp.add_page(map, route=\"/map\")\r\n```",
      "created_at": "2024-03-12T18:11:43Z",
      "updated_at": "2024-10-17T17:34:14Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZ-Zz",
      "number": 3479,
      "title": "Removing Rich",
      "body": "Rich is too heavy with bloatware in the dependency. Would it be a better idea to make a progress bar using `tqdm` only because using rich doesn't make any sense with web apps in the production? It will be a good idea if we replace it with them and keep it simple. You can convert it to an issue if you want. Here are some example sentences. (No Boxes, Just Logs And These Sentences)\r\n1.  ⚡ Compiling ETA: `{seconds}`\r\n2. 🚧 Stopping the server\r\n3. 🏓 Frontend is playing ping-pong on `{port}`\r\n4. 🖥 Backend is serving food on `{port}` \r\n5. Your server is ready to go 🚀",
      "created_at": "2024-06-11T19:00:15Z",
      "updated_at": "2024-10-17T17:13:26Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "itsmeadarsh2008",
        "avatar_url": "https://avatars.githubusercontent.com/u/71959210?u=4bfd03e8722332b1b9dfc4ced2a3923bc401d540&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ab3u6",
      "number": 4158,
      "title": "How can I build a wrapped react component that",
      "body": "Sorry, this shouldn't be listed as a poll but no other categories were available to choose. I am trying to build an icon component that takes a dynamic tag as the name of the icon and then renders that icon based on what is passed into it. You can do this in normal ready simply by importing the entire icon library and then indexing the tag you would like:\r\n```\r\nimport * as tb from 'react-icons/tb';\r\nconst tag = \"SomeTag\";\r\nconst Icon = tb[tag];\r\n```\r\n\r\nThis is what I have so far. The issue is that you can't pass a var as a tag, it needs to be a string\r\n```\r\nclass ToolIcon(rx.Component):\r\n\tsize: rx.Var[int | None]\r\n\r\n\tdef add_imports(self):\r\n\t\ticon_library = self.tag.split(\".\")[0]\r\n\t\treturn {f\"react-icons/{icon_library}\": [\r\n\t\t\trx.ImportVar(\r\n\t\t\t\tinstall=False,\r\n\t\t\t\t# Hacky way around reflex to get the whole import in\r\n\t\t\t\ttag=f\"* as {icon_library}\",\r\n\t\t\t\tis_default=True,\r\n\t\t\t)\r\n\t\t]}\r\n\r\n# Icon is of the form ${icon_library).${icon_name} e.g. \"tb.TbBolt\"\r\ndef tool_icon(icon: str, tool_size: int = 16) -> rx.Component:\r\n\treturn ToolIcon(tag=icon, size=tool_size)\r\n```\r\n\r\nIs it possible at all to do this type of dynamic rendering in reflex (possibly using a StatefulComponent)? If not it would be a really nice feature to have.",
      "created_at": "2024-10-11T15:55:49Z",
      "updated_at": "2024-10-11T15:55:49Z",
      "category": {
        "name": "Polls",
        "emoji": ":ballot_box:"
      },
      "answer": null,
      "user": {
        "login": "drbrady8800",
        "avatar_url": "https://avatars.githubusercontent.com/u/36574477?u=b520343106b9cb604afc8934f4abcc5ec5916405&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Ab224",
      "number": 4151,
      "title": "Reflex on Python Developer Survey",
      "body": "If you have time please fill out the Python Developer Survey 2024 and mark that you use Reflex under web frameworks, you have to write it in under \"other\"! https://survey.alchemer.com/s3/8009809/python-developers-survey-2024",
      "created_at": "2024-10-10T22:26:02Z",
      "updated_at": "2024-10-11T13:54:02Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbfSH",
      "number": 3953,
      "title": "Interactive maps 🌍",
      "body": "Hi, I'm developing a social networking application where the main feature is an interactive map. Users click where they want and a form opens. when the user saves, an icon is displayed.\r\n\r\nI don't know how to develop this in Reflex. In React you can use **_react-map-gl_.** \r\n\r\nAny ideas?\r\n\r\nThanks.",
      "created_at": "2024-09-19T08:25:58Z",
      "updated_at": "2024-10-10T13:35:41Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "theripnono",
        "avatar_url": "https://avatars.githubusercontent.com/u/119405797?u=6bbb46f188cae0f59449a22c1673a72401037ac0&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AS-Ar",
      "number": 699,
      "title": "Is any chance to integrate with 3rd party js library, such as ag-grid",
      "body": "AG Grid Community is fridendly to use with high performance, also free. (https://www.ag-grid.com)\r\nIf can integrate it, we can display intensive datatable in a more professional way.\r\n",
      "created_at": "2023-03-17T01:28:49Z",
      "updated_at": "2024-10-09T23:54:19Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "chorylee",
        "avatar_url": "https://avatars.githubusercontent.com/u/1695120?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbwCn",
      "number": 4057,
      "title": "v0.6.2 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.6.2a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-10-03 19:35 PDT: 0.6.2a1 pre-release published for testing\r\n2024-10-07 13:20 PDT: 0.6.2a2 pre-release published\r\n2024-10-08 09:30 PDT: Public release of 0.6.2\r\n\r\n# Release Notes\r\n\r\n## Changes in 0.6.2a2\r\n\r\n* fail safely when pickling (#4085)\r\n* Get default for backend var defined in mixin (#4060)\r\n* catch CancelledError in lifespan hack for windows (#4083)\r\n* convert literal type to its variants (#4062)\r\n\r\n## Improvements\r\n\r\n* All SVG elements are now supported\r\n  * feat: Add support for missing SVGs by @ChinoUkaegbu in https://github.com/reflex-dev/reflex/pull/3962\r\n* Event triggers can now use `rx.cond`\r\n  * support eventspec/eventchain in var operations by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4038\r\n* Faster state serialization by replacing `dill` with normal `pickle`\r\n  * [ENG-3867] Garden Variety Pickle by @masenf in https://github.com/reflex-dev/reflex/pull/4054\r\n\r\n## Bug Fixes\r\n\r\n* Handle `primary_key` defined in `sa_column`\r\n  * a friendly little helper by @Kastier1 in https://github.com/reflex-dev/reflex/pull/4021\r\n* [ENG-3870] rx.call_script with f-string var produces incorrect code by @masenf in https://github.com/reflex-dev/reflex/pull/4039\r\n\r\n## Dynamic Components\r\n\r\n* Use an equality check instead of startswith by @masenf in https://github.com/reflex-dev/reflex/pull/4024\r\n* add of_type to _evaluate by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4051\r\n* bundle chakra in window for CSR by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4042\r\n* Include emotion inside of dynamic components by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4052\r\n\r\n## Error Messages\r\n\r\n* improve granian error message when not installed by @Lendemor in https://github.com/reflex-dev/reflex/pull/4037\r\n* [ENG-3476]Setting State Vars that are not defined should raise an error by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4007\r\n* set loglevel to info with hosting cli by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4043\r\n* default should be warning for subprocesses not info by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4049\r\n* remove var operation error by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4053\r\n\r\n## Other Changes\r\n* use pathlib as much as possible by @Lendemor in https://github.com/reflex-dev/reflex/pull/3967\r\n* Track the last reflex run time by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/4045\r\n* move router dataclasses in their own file by @Lendemor in https://github.com/reflex-dev/reflex/pull/4044\r\n\r\n## New Contributors\r\n* @ChinoUkaegbu made their first contribution in https://github.com/reflex-dev/reflex/pull/3962\r\n* @Kastier1 made their first contribution in https://github.com/reflex-dev/reflex/pull/4021\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.6.1...release/reflex-0.6.2\r\n",
      "created_at": "2024-10-04T02:33:24Z",
      "updated_at": "2024-10-08T17:01:56Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbUom",
      "number": 3903,
      "title": "What do you want to see improved the most?",
      "body": "Hi everyone doing a quick poll to see what people want improved the most.",
      "created_at": "2024-09-09T23:23:13Z",
      "updated_at": "2024-10-03T19:55:34Z",
      "category": {
        "name": "Polls",
        "emoji": ":ballot_box:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Abpju",
      "number": 4023,
      "title": "v0.6.1 Pre-release thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.6.1a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-09-28 09:40 PDT: 0.6.1a1 pre-release published for testing\r\n2024-09-30 17:30 PDT: Public release of 0.6.1\r\n\r\n# Release Notes\r\n\r\n## Regression Fixes\r\n\r\n* re add removed method with better behaviour and tests by @Lendemor in https://github.com/reflex-dev/reflex/pull/3986\r\n* hash the state file name by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4000\r\n* EventFnArgMismatch fix to support defaults args by @LeoGrosjean in https://github.com/reflex-dev/reflex/pull/4004\r\n* serialize default value for disk state manager by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4008\r\n* remove format_state and override behavior for bare by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3979\r\n* Handle bool cast for optional NumberVar by @masenf in https://github.com/reflex-dev/reflex/pull/4010\r\n* use literal var instead of serialize for toast props by @adhami3310 in #4027\r\n\r\n## New Features\r\n\r\n### Experimental Dynamic Components\r\n\r\nIn this release, state vars can be of `rx.Component` type and `@rx.var` computed vars can return `rx.Component`, allowing dynamic component structures to be created on the backend at runtime. This enables the full use of python expressions in generated components, as opposed to `rx.cond` and `rx.foreach`.\r\n\r\nThere are performance implications when using dynamic components so prefer static components where possible.\r\n\r\n* Component as Var type by @masenf in https://github.com/reflex-dev/reflex/pull/3732\r\n* add basic integration test for dynamic components by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3990\r\n* use bundled radix ui for dynamic components by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3993\r\n* implement _evaluate in state by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4018\r\n\r\n### Run Backend with Granian server\r\n\r\ninstall `granian` package and set `REFLEX_USE_GRANIAN=1` to run with the new, experimental granian backend (instead of the default uvicorn).\r\n\r\n* can run with granian by setting REFLEX_USE_GRANIAN var by @Lendemor in https://github.com/reflex-dev/reflex/pull/3919\r\n* change loglevel and fix granian on linux by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4012\r\n\r\n### `USE_SYSTEM_NODE` and `USE_SYSTEM_BUN`\r\n\r\nIf you prefer to run your own versions of `node` and `bun`, ensure they are on the `PATH` and set these environment variables to `1`.\r\n\r\n* add env var to enable using system node and bun by @Lendemor in https://github.com/reflex-dev/reflex/pull/4006\r\n\r\n## Improvements\r\n\r\n### Bump nextjs to 14.2.13\r\n\r\n* bump nextjs version by @Lendemor in https://github.com/reflex-dev/reflex/pull/3992\r\n\r\n### Miscellaneous\r\n\r\n* [ENG-3717] [flexgen] Initialize app from refactored code by @masenf in https://github.com/reflex-dev/reflex/pull/3918\r\n* Added fill color for progress by @wassafshahzad in https://github.com/reflex-dev/reflex/pull/3926\r\n* Use tailwind typography plugin by default by @minimav in https://github.com/reflex-dev/reflex/pull/3593\r\n  * disable prose by default for rx.html by @adhami3310 in https://github.com/reflex-dev/reflex/pull/4001\r\n  * use `class_name=\"prose\"` to enable default formatting for `rx.html`\r\n* allow link as metatags by @Lendemor in https://github.com/reflex-dev/reflex/pull/3980\r\n* allow classname to be state vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3991\r\n* default on_submit in form set to prevent_default by @Lendemor in https://github.com/reflex-dev/reflex/pull/4005\r\n\r\n## Bug Fixes\r\n\r\n* [ENG-3824]Make AI template use light mode by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3963\r\n* don't camel case keys of dicts in style by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3982\r\n* add missing message when running in backend_only by @Lendemor in https://github.com/reflex-dev/reflex/pull/4002\r\n* [ENG-3849] Track backend-only vars that are declared without a default value by @masenf in https://github.com/reflex-dev/reflex/pull/4016\r\n* improve lifespan typecheck and debug by @Lendemor in https://github.com/reflex-dev/reflex/pull/4014\r\n\r\n## Documentation\r\n\r\n* fix: Adding in-line comments for the segmented control: value and on_change by @elviskahoro in https://github.com/reflex-dev/reflex/pull/3933\r\n* fix: Adding code comments for segmented control type by @elviskahoro in https://github.com/reflex-dev/reflex/pull/3935\r\n\r\n## Other Changes\r\n\r\n* add some unit tests for coverage by @Lendemor in https://github.com/reflex-dev/reflex/pull/3947\r\n* always print passed_type by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3950\r\n* remove unused badge by @Lendemor in https://github.com/reflex-dev/reflex/pull/3955\r\n* add some more tests by @Lendemor in https://github.com/reflex-dev/reflex/pull/3965\r\n* use svg elements instead of raw html for logo by @Lendemor in https://github.com/reflex-dev/reflex/pull/3978\r\n* bump to 0.6.1 for further dev by @masenf in https://github.com/reflex-dev/reflex/pull/3995\r\n* reorganize all tests in a single top folder by @Lendemor in https://github.com/reflex-dev/reflex/pull/3981\r\n* Update markdown component map to use new rx.code_block.theme enum by @masenf in https://github.com/reflex-dev/reflex/pull/3996\r\n* remove all runtime asserts by @Lendemor in https://github.com/reflex-dev/reflex/pull/4019\r\n\r\n## New Contributors\r\n* @minimav made their first contribution in https://github.com/reflex-dev/reflex/pull/3593\r\n* @LeoGrosjean made their first contribution in https://github.com/reflex-dev/reflex/pull/4004\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.6.0...reflex-0.6.1",
      "created_at": "2024-09-28T16:40:53Z",
      "updated_at": "2024-10-01T00:41:15Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbWi2",
      "number": 3912,
      "title": "v0.6.0 Pre-release thread",
      "body": "# Try out the Prerelease\r\n\r\n### If you are a **third party component developer or have complex wrapped components**, _please test your code against the 0.6.0 pre-release as **semantics of `rx.Var` have changed significantly**_.\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.6.0a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-09-11 13:00 PDT: 0.6.0a1 pre-release published for testing\r\n2024-09-17 11:45 PDT: 0.6.0a2 pre-release published for testing\r\n2024-09-20 10:00 PDT: 0.6.0a3 pre-release published\r\n2024-09-24 08:30 PDT: 0.6.0a4 pre-release published\r\n2024-09-24 2:45 PDT: 0.6.0 final release\r\n\r\n# Changes in 0.6.0a4\r\n\r\n* Bring back py3.9 support with a deprecation warning. (#3976)\r\n* [ENG-3833] handle object in is bool (#3974)\r\n* suggest bool() for wrong values (#3975)\r\n* use is true for bool var (#3973)\r\n* fix set value logix for client state (#3966)\r\n\r\n# Changes in 0.6.0a3\r\n\r\n* bump python>=3.10 for 0.6.0 (#3956)\r\n* use current version as default for new custom components (#3957)\r\n* Add shim for `format_event_chain` (#3958)\r\n* use serializer before serializing base yourself (#3960)\r\n* [ENG-3817] deprecate _var_name_unwrapped (instead of removing it) (#3951)\r\n* move the filterwarning to appropriate file (#3952)\r\n* fix unionize recursion (#3948)\r\n* add special handling for infinity and nan (#3943)\r\n* use is true (#3946)\r\n\r\n# Changes in 0.6.0a2\r\n\r\n* [0.6.0 blocker] state: update inherited_vars and tracking dicts when adding vars (#2822)\r\n* expose radix primitive progress under rx.radix.primitives.progress (#3930)\r\n* use serializer for state update and rework serializers (#3934)\r\n* better errors in state.py (#3929)\r\n* fix template fetch during init (#3932)\r\n* Fix string color (#3922)\r\n* replace old var system with immutable one (#3916)\r\n* Remove Pydantic from some classes (#3907)\r\n* [REF-3562][REF-3563] Replace chakra usage (#3872)\r\n\r\n# Release Notes\r\n\r\n## Breaking Changes\r\n\r\n### Drop support for <del>python 3.8 and</del> python3.9\r\n* bump python>=3.10 for 0.6.0 (#3956)\r\n\r\n### Remove Deprecated Features\r\n* `rx.input.root`\r\n* ... ⚠️\r\n\r\n* [REF-3568][REF-3569]Remove deprecations by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3852\r\n* [REF-3570] Remove deprecated REDIS_URL syntax by @masenf in https://github.com/reflex-dev/reflex/pull/3892\r\n\r\n### New Var System\r\n\r\nA `Var` is a placeholder for a value which is sent to the frontend or rendered as Javascript code in the app. Most users of Reflex do not interact with the var system directly, but it becomes relevant for advanced users that are wrapping components or handling custom types.\r\n\r\n* `rx.Var.create` now returns an `ImmutableVar` or `LiteralVar` subclass wrapping the provided value\r\n* `_var_is_local` - removed, use `rx.ivars.ImmutableVar.create`\r\n* `_var_is_string` - removed, passing a string will always create a `StringVar`\r\n* Vars are not automatically cast as `bool`, when passing a non-bool var to a prop that expects a boolean, add `.bool()` after the var.\r\n\r\nThe new `Var` system brings a much more accurate translation of literal python values into javascript, especially of object and array types.\r\n\r\n### `rx.chakra` removed from main repo\r\n\r\nFirst, `pip install reflex-chakra`. Then `import reflex_chakra as rc`. `rx.chakra` will still work until 0.7.0, but it is recommended to move now to avoid deprecation warning.\r\n\r\n* Upper bound for reflex-chakra dependency by @masenf in https://github.com/reflex-dev/reflex/pull/3824\r\n* [REF-3566]Remove demo template by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3888\r\n\r\n### Var Shadowing Detection\r\n\r\nWhen a dynamic route arg name conflicts with the name of an existing state Var, the framework will raise `DynamicRouteArgShadowsStateVar`. This is intended to avoid unexpected behavior wherein the dynamic var takes precedence over the state var, even in a substate. A fix for the underlying cause is forthcoming.\r\n\r\nIn the meantime, define any pages that use dynamic route arguments _early_, so the dynamic var is available for use in the page functions.\r\n\r\n* Dynamic route vars silently shadow all other vars by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3805\r\n* cleanup dead test code by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3909\r\n\r\n-----------------\r\n\r\nWhen a computed var name conflicts with the name of an existing state Var, the framework will raise `ComputedVarShadowsStateVar`. ⚠️ [ENG-3758]\r\n\r\n* Forbid Computed var shadowing by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3843\r\n* remove reference to computed var by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3906\r\n\r\n\r\n### `rx.progress` is now Radix Themes Progress\r\n\r\nThe previous Radis Primitives progress is available as `rx.radix.primitives.progress` ⚠️ [ENG-3756]\r\n\r\n* [REF-3592]Promote `rx.progress` from radix themes by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3878\r\n\r\n### Watchfiles dependency removed\r\n\r\nIf you are upgrading reflex in an existing environment run `pip uninstall watchfiles` first to ensure the hot reload mechanism is properly ignoring the `.web` directory.\r\n\r\n## New Features\r\n\r\n### `DiskStateManager` - preserve state across hot reloads in dev mode\r\n* implement disk state manager by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3826\r\n* Disk state manager don't use byref by @picklelo in https://github.com/reflex-dev/reflex/pull/3874\r\n* delete states if it exists on run by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3901\r\n\r\n### `/_health` endpoint\r\n\r\n```\r\nhttp://localhost:8000/_health\r\n```\r\n\r\n```json\r\n{\"status\":true,\"db\":true,\"redis\":false}\r\n```\r\n\r\n* /health endpoint for K8 Liveness and Readiness probes by @samarth9201 in https://github.com/reflex-dev/reflex/pull/3855\r\n\r\n## Improvements\r\n\r\n* improve state hierarchy validation, drop old testing special case by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3894\r\n* fix var dependency dicts by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3842\r\n* Update docker-example by @masenf in https://github.com/reflex-dev/reflex/pull/3324\r\n\r\n## Var System\r\n\r\n* fully migrate vars into new system by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3743\r\n* guess_type: if the type is optional, treat it like it's \"not None\" by @masenf in https://github.com/reflex-dev/reflex/pull/3839\r\n* Fix double-quoting of defaultColorMode by @masenf in https://github.com/reflex-dev/reflex/pull/3840\r\n* ImmutableVar perf optimizations by @masenf in https://github.com/reflex-dev/reflex/pull/3814\r\n* Get attribute access type fix by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3803\r\n* fix var in bare by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3873\r\n* add var_operation and move some operations to the new style by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3841\r\n* Adding array to array pluck operation. by @abulvenz in https://github.com/reflex-dev/reflex/pull/3868\r\n* simplify ImmutableComputedVar.__get__ by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3902\r\n* Use old serializer system in LiteralVar by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3875\r\n* Fix type propagation in ToStringOperation by @abulvenz in https://github.com/reflex-dev/reflex/pull/3895\r\n\r\n## Documentation / Error Messages\r\n* Add comments to DataList components by @elviskahoro in https://github.com/reflex-dev/reflex/pull/3827\r\n* [REF-3589] raise EventHandlerArgMismatch when event handler args don't match spec by @masenf in https://github.com/reflex-dev/reflex/pull/3853\r\n\r\n## Other Changes\r\n* Fix benchmark tests by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3822\r\n* [REF-3416] [REF-3632] Update fastapi, gunicorn, watchdog deps by @masenf in https://github.com/reflex-dev/reflex/pull/3859\r\n* Remove watchfiles and watchdog [REF-2133] [REF-3694] by @picklelo in https://github.com/reflex-dev/reflex/pull/3862\r\n\r\n## Bug Fixes\r\n\r\n* [REF-3597]Type check Radio items by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3856\r\n* Bug fix rx.toast. Allow passing `title` kwarg  by @TimChild in https://github.com/reflex-dev/reflex/pull/3857\r\n* Update find_replace by @samarth9201 in https://github.com/reflex-dev/reflex/pull/3886\r\n* Use correct flexgen backend URL by @masenf in https://github.com/reflex-dev/reflex/pull/3891\r\n* gitignore .web by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3885\r\n* [bugfix] Allow scroll in text_area when limited by max_height by @VishDev12 in https://github.com/reflex-dev/reflex/pull/3882\r\n* Retain mutability inside `async with self` block by @masenf in https://github.com/reflex-dev/reflex/pull/3884\r\n* Include child imports in markdown component_map by @masenf in https://github.com/reflex-dev/reflex/pull/3883\r\n* mixin computed vars should only be applied to highest level state in … by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3833\r\n* fix initial state without cv fallback by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3670\r\n* add fragment to foreach by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3877\r\n\r\n## New Contributors\r\n* @elviskahoro made their first contribution in https://github.com/reflex-dev/reflex/pull/3827\r\n* @TimChild made their first contribution in https://github.com/reflex-dev/reflex/pull/3857\r\n* @samarth9201 made their first contribution in https://github.com/reflex-dev/reflex/pull/3855\r\n* @VishDev12 made their first contribution in https://github.com/reflex-dev/reflex/pull/3882\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.10...reflex-0.6.0",
      "created_at": "2024-09-11T20:00:49Z",
      "updated_at": "2024-09-25T16:53:12Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbloG",
      "number": 3987,
      "title": "Hacktoberfest 2024",
      "body": "We're participating in Hacktoberfest this year! Please navigate to our Hacktoberfest repository for more details: https://github.com/reflex-dev/hacktoberfest",
      "created_at": "2024-09-24T19:58:16Z",
      "updated_at": "2024-10-10T22:25:26Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "elviskahoro",
        "avatar_url": "https://avatars.githubusercontent.com/u/29553206?u=85e4a60618fcf49112ca201ad7505ee35f39ea7b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbliU",
      "number": 3985,
      "title": "Can't get AG Grid to work",
      "body": "I've attempted to dive into reflex-ag-grid, but I'm unable to get it to work. Does anyone have any pointers on fixing this?\r\n\r\nHere's my environment, followed by my app page, and then the error.\r\nPython 3.12.0\r\nPandas 2.2.3\r\nReflex 0.5.10\r\nReflex-ag-grid 0.0.5\r\n\r\nRan reflex init and chose 0 for a blank, single page project. Copied the first example from the docs and fit it into the project.\r\n```\r\nimport reflex as rx\r\nfrom reflex_ag_grid import ag_grid\r\nimport pandas as pd\r\n\r\n\r\ndf = pd.read_csv(\r\n    \"https://raw.githubusercontent.com/plotly/datasets/master/wind_dataset.csv\"\r\n)\r\n\r\ncolumn_defs = [\r\n    ag_grid.column_def(field=\"direction\"),\r\n    ag_grid.column_def(field=\"strength\"),\r\n    ag_grid.column_def(field=\"frequency\"),\r\n]\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return ag_grid(\r\n        id=\"ag_grid_basic_1\",\r\n        row_data=df.to_dict(\"records\"),\r\n        column_defs=column_defs,\r\n        width=\"100%\",\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n\r\n```\r\n\r\nHere's the error minus the github csv data:\r\n```\r\nFailed to compile\r\n./pages/index.js\r\nError: \r\n  x Expected ',', got ':'\r\n    ,-[P:\\PycharmProjects\\ReflexTableTest\\.web\\pages\\index.js:58:1]\r\n 58 | \r\n 59 | \r\n 60 |   return (\r\n 61 |     <AgGridReact animateRows={false} autoGroupColumnDef={{}} className={(() => { switch (JSON.stringify(`quartz`)) {case JSON.stringify(`quartz`):  return (isTrue(((resolvedColorMode) === (`light`))) ? `ag-theme-quartz` : `ag-theme-quartz-dark`);  break;case JSON.stringify(`balham`):  return (isTrue(((resolvedColorMode) === (`light`))) ? `ag-theme-balham` : `ag-theme-balham-dark`);  break;case JSON.stringify(`alpine`):  return (isTrue(((resolvedColorMode) === (`light`))) ? `ag-theme-alpine` : `ag-theme-alpine-dark`);  break;case JSON.stringify(`material`):  return (isTrue(((resolvedColorMode) === (`light`))) ? `ag-theme-material` : `ag-theme-material-dark`);  break;default:  return (``);  break;};})()} columnDefs={[\"field\": \"direction\", \"colId\": null, \"type\": null, \"cellDataType\": null, \"hide\": false, \"editable\": false, \"filter\": null, \"floatingFilter\": false, \"headerName\": null, \"headerTooltip\": null, \"checkboxSelection\": false, \"cellEditor\": null, \"cellEditorParams\": null, \"field\": \"strength\", \"colId\": null, \"type\": null, \"cellDataType\": null, \"hide\": false, \"editable\": false, \"filter\": null, \"floatingFilter\": false, \"headerName\": null, \"headerTooltip\": null, \"checkboxSelection\": false, \"cellEditor\": null, \"cellEditorParams\": null, \"field\": \"frequency\", \"colId\": null, \"type\": null, \"cellDataType\": null, \"hide\": false, \"editable\": false, \"filter\": null, \"floatingFilter\": false, \"headerName\": null, \"headerTooltip\": null, \"checkboxSelection\": false, \"cellEditor\": null, \"cellEditorParams\": null]} defaultColDef={{}} groupAllowUnbalanced={false} groupDefaultExpanded={-1} groupLockGroupColumns={0} groupSelectsChildren={false} id={`ag_grid_basic_1`} maintainColumnOrder={false} pagination={false} paginationPageSize={10} paginationPageSizeSelector={[10, 25, 50]} pinnedBottomRowData={[]} pivotPanelShow={`never`} ref={ref_ag_grid_basic_1} rowData={[long list of data from csv cut out to reduce error size]} rowGroupPanelShow={`never`} rowSelection={`single`} serverSideEnableClientSideSort={false} sideBar={``} suppressAggFuncInHeader={false} suppressRowClickSelection={false} treeData={false}/>\r\n    :                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ^\r\n 62 |   )\r\n 63 | }\r\n 63 | \r\n\r\n    `----\r\n\r\nCaused by:\r\n    Syntax Error\r\n\r\n```",
      "created_at": "2024-09-24T18:21:45Z",
      "updated_at": "2024-09-24T19:06:32Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "chimeracle",
        "avatar_url": "https://avatars.githubusercontent.com/u/87193612?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Abgdk",
      "number": 3961,
      "title": "security concept in reflex",
      "body": "Dear all,\r\ni am newbie for reflex. i am wondering how should security concept implemented properly in reflex? for example, do i need implement rate limiting and throttling for backend?",
      "created_at": "2024-09-20T09:48:46Z",
      "updated_at": "2024-09-20T09:48:47Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "jixian01",
        "avatar_url": "https://avatars.githubusercontent.com/u/10184331?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Abdib",
      "number": 3942,
      "title": "Bottom  sheet",
      "body": "![flutter-bottom-sheet-rounded-corners.jpeg](https://github.com/user-attachments/assets/fcd194bc-b4fc-4fc0-ba4b-14beb627afa9)\n\nHow to make it",
      "created_at": "2024-09-17T14:46:09Z",
      "updated_at": "2024-09-17T14:46:31Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aravindmu",
        "avatar_url": "https://avatars.githubusercontent.com/u/146928881?u=533f23db45c7fd6386f167c40a19dbf54dfb5ac5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbdiK",
      "number": 3941,
      "title": "App bar, bottom bar,and floating icon",
      "body": "![OIP~3.jpeg](https://github.com/user-attachments/assets/b653400b-4979-44b6-a9ed-01b0cbbad4af)\n\n\n\nHow to create app bar, bottom bar,floating icon and bottom up sheet ,is it under development?\n\n",
      "created_at": "2024-09-17T14:40:11Z",
      "updated_at": "2024-09-17T14:41:14Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aravindmu",
        "avatar_url": "https://avatars.githubusercontent.com/u/146928881?u=533f23db45c7fd6386f167c40a19dbf54dfb5ac5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbJtC",
      "number": 3864,
      "title": "App bar",
      "body": "how to setup a appbar for reflex apps, and how to create a bottom up sheet?\r\n",
      "created_at": "2024-09-01T11:55:52Z",
      "updated_at": "2024-09-17T14:37:13Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aravindmu",
        "avatar_url": "https://avatars.githubusercontent.com/u/146928881?u=533f23db45c7fd6386f167c40a19dbf54dfb5ac5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbdCl",
      "number": 3940,
      "title": "App development",
      "body": "I interested to develop a complex social media app ,can I adopt reflex framework is it good choice, please explain what are the things I mainly focusing for app development ",
      "created_at": "2024-09-17T04:33:32Z",
      "updated_at": "2024-09-17T04:33:33Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aravindmu",
        "avatar_url": "https://avatars.githubusercontent.com/u/146928881?u=533f23db45c7fd6386f167c40a19dbf54dfb5ac5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Abcoh",
      "number": 3928,
      "title": "Page routes",
      "body": "Can you please give some programs for navigating pages by buttons and  bottom app bars like home,menu ...",
      "created_at": "2024-09-16T15:55:38Z",
      "updated_at": "2024-09-16T15:56:29Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aravindmu",
        "avatar_url": "https://avatars.githubusercontent.com/u/146928881?u=533f23db45c7fd6386f167c40a19dbf54dfb5ac5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbcoW",
      "number": 3927,
      "title": "Doubt",
      "body": "I can create a youtube clone app with its full features without attaching other ui frameworks like react,flutter..",
      "created_at": "2024-09-16T15:50:48Z",
      "updated_at": "2024-09-16T15:50:49Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aravindmu",
        "avatar_url": "https://avatars.githubusercontent.com/u/146928881?u=533f23db45c7fd6386f167c40a19dbf54dfb5ac5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbNYc",
      "number": 3871,
      "title": "Able to create WhatsApp interface ?",
      "body": "Able to create WhatsApp interface with reflex,leading, trailing, subtitles,title etc",
      "created_at": "2024-09-03T12:39:46Z",
      "updated_at": "2024-09-16T15:46:48Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aravindmu",
        "avatar_url": "https://avatars.githubusercontent.com/u/146928881?u=533f23db45c7fd6386f167c40a19dbf54dfb5ac5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbJ9w",
      "number": 3866,
      "title": "Hot reload is very slow",
      "body": "What is the reason hot reload is so slow,how to slow ",
      "created_at": "2024-09-01T14:39:09Z",
      "updated_at": "2024-09-16T15:45:56Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aravindmu",
        "avatar_url": "https://avatars.githubusercontent.com/u/146928881?u=533f23db45c7fd6386f167c40a19dbf54dfb5ac5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbaXs",
      "number": 3925,
      "title": "Struggling to wrap component",
      "body": "Hello, \r\n\r\nTrying to implement a 3d dice roller in a project and having issues. If anyone could help me out or advise that I should find a different library/solution, let me know. Docs are here https://fantasticdice.games/docs/intro\r\n\r\ncurrently renders, but when clicking \"roll\" it throws a TypeError in the console \"cannot get undefined of current\" which I believe is happening at the api_spec call. I found guidance in the discussion on how to interact with component api's but the implementation may have been at fault lol\r\n\r\n\r\ndice_roller.py\r\n```python\r\nclass DiceRoller(rx.Component):\r\n    library = \"@3d-dice/dice-box\"\r\n    tag = \"DiceBox\"\r\n    assetPath: rx.Var[str]\r\n\r\n    @classmethod\r\n    def create(cls, *children, **props) -> DiceRoller:\r\n        props.setdefault(\"id\", rx.vars.get_unique_variable_name())\r\n        return super().create(*children, **props)\r\n\r\n    def _get_api_spec(self, fn_name):\r\n        return rx.call_script(f\"refs['{self.get_ref()}'].current?.getApi().{fn_name}('1d20')\")\r\n\r\n    def roll(self) -> rx.event.EventSpec:\r\n        return self._get_api_spec(\"roll\")\r\n\r\n\r\ndice_roller = DiceRoller.create\r\n``` \r\n\r\ndice.py\r\n```python\r\nfrom Components.dice_roller import dice_roller\r\n\r\n\r\ndef dice() -> rx.Component:\r\n    roller = dice_roller(assetPath=rx._x.asset(\"assets\"))\r\n\r\n    return rx.container(\r\n        rx.button(\"roll\", on_click=roller.roll())\r\n    )\r\n``` \r\n`",
      "created_at": "2024-09-15T13:21:44Z",
      "updated_at": "2024-09-15T13:21:44Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "garrickisgross",
        "avatar_url": "https://avatars.githubusercontent.com/u/86489022?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbN2k",
      "number": 3876,
      "title": "OTP Verification",
      "body": "What is the best to create OTP Verification?\r\nSince the OTP in state variables, how can I secure it?",
      "created_at": "2024-09-03T22:23:19Z",
      "updated_at": "2024-09-04T17:32:59Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "m7mdhka",
        "avatar_url": "https://avatars.githubusercontent.com/u/43252562?u=b92c998a61fee5362ca687be17772ba420f59f42&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbJuA",
      "number": 3865,
      "title": "sliding deletion",
      "body": "how to delete a message by sliding method(swipe) ",
      "created_at": "2024-09-01T12:07:07Z",
      "updated_at": "2024-09-01T12:07:08Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aravindmu",
        "avatar_url": "https://avatars.githubusercontent.com/u/146928881?u=533f23db45c7fd6386f167c40a19dbf54dfb5ac5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbEh5",
      "number": 3831,
      "title": "How to override style on some containers that is generated from some components?",
      "body": "Hey everyone, I've come across this on a few occasions. I will start with the more straightforward one:\r\nI wanted to fill in the width of the input field and the code looks like this:\r\n`rx.flex(\r\n        rx.text(_('License key:'), whiteSpace=\"nowrap\"),\r\n        rx.flex(\r\n            rx.debounce_input(\r\n                rx.input(\r\n                    placeholder=_(\"Paste your license key here\"), width=\"100%\", margin=\"1em\",\r\n                    on_change=State_a1.handle_license_key),\r\n                debounce_timeout=5000, width=\"100%\", alignSelf=\"stretch\"\r\n            ),\r\n            width=\"100%\", alignSelf=\"stretch\"\r\n        ),\r\n        flexDirection=\"row\", alignItems=\"center\", justify=\"center\", width=\"100%\"\r\n    ),`\r\nWhen I look into the inspection, something with the class \"rt-TextFieldRoot\" is preventing it from filling in the width.\r\n<img width=\"1131\" alt=\"Screenshot 2024-08-26 at 6 51 20 PM\" src=\"https://github.com/user-attachments/assets/4aec2158-5d51-4299-85fa-484baf641a67\">\r\n\r\nOn other occasions, like rx.table, I wanted to implement position:sticky, but there are a few containers with overflow:scroll and overflow:hidden, which anything other than overflow: inherit messes up how position:sticky works.\r\n\r\nWhat are some of the ways to override those generated divs in reflex components?\r\n\r\nThank you.",
      "created_at": "2024-08-26T10:56:47Z",
      "updated_at": "2024-08-30T13:32:07Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4An46D",
        "body": "@egonsung Yeah the base Radix input (our rx.input) is a bit hard to customize as it has some predefined styles. You can use any of the base HTML components in the `rx.el` namespace - so for example you can use `rx.el.input` here instead and it will be unstyled. The downside is that it may not hook into the themes by default.\r\n\r\nSee here for more: https://reflex.dev/docs/library/html/html/"
      },
      "user": {
        "login": "egonsung",
        "avatar_url": "https://avatars.githubusercontent.com/u/11618999?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbGbV",
      "number": 3850,
      "title": "DOUBT",
      "body": "Can able to develop a instagram clone with reflex",
      "created_at": "2024-08-28T09:57:15Z",
      "updated_at": "2024-08-31T04:55:52Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aravindmu",
        "avatar_url": "https://avatars.githubusercontent.com/u/146928881?u=533f23db45c7fd6386f167c40a19dbf54dfb5ac5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbGhg",
      "number": 3851,
      "title": "Client side file encryption - beginner question",
      "body": "I'm wondering what's the \"reflex way\" of implementing a client-side file encryption, without uploading anything to the backend? I want the user to pick a file from their computer, the app would generate a key, encrypt the file and save it locally.",
      "created_at": "2024-08-28T12:05:56Z",
      "updated_at": "2024-08-29T08:35:56Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4An-Qi",
        "body": "Any logic written in the state will happen on the backend by default. If you want to have client side logic, you can use `rx.call_script` to run Javascript on the browser. See [here](https://reflex.dev/docs/api-reference/browser-javascript/#inline-scripts) for more (this is our backdoor to use plain JS within Reflex)"
      },
      "user": {
        "login": "kalmarz",
        "avatar_url": "https://avatars.githubusercontent.com/u/65083756?u=3d73678e1503f335da580081091a6317bfd4a05c&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbBpP",
      "number": 3823,
      "title": "v0.5.10 Pre-release thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.5.10a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-08-22 15:50 PDT: 0.5.10a1 pre-release published for testing\r\n2024-08-28 09:40: Public release of 0.5.10\r\n\r\n# Release Notes\r\n\r\n## Improvements\r\n* add message when installing requirements.txt is needed for chosen template during init by @Lendemor in https://github.com/reflex-dev/reflex/pull/3750\r\n* use different registry when in china, fixes #3700 by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3702\r\n* [REF-3536][REF-3537][REF-3541]**Move chakra components into its repo(reflex-chakra)** by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3798\r\n  * Preparing for the eventual removal of chakra from the core reflex package\r\n\r\n## Bug Fixes\r\n* #3752 bugfix add domain for XAxis by @dimritium in https://github.com/reflex-dev/reflex/pull/3764\r\n* fix appharness app_source typing by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3777\r\n* fix import clash between connectionToaster and hooks.useState by @Lendemor in https://github.com/reflex-dev/reflex/pull/3749\r\n* do not reload compilation if using local app in AppHarness by @Lendemor in https://github.com/reflex-dev/reflex/pull/3790\r\n* [REF-3334]Validate Toast Props by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3793\r\n* fix get_uuid_string_var by @dimritium in https://github.com/reflex-dev/reflex/pull/3795\r\n* minor State cleanup by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3768\r\n* Fix code wrap in markdown by @Alek99 in https://github.com/reflex-dev/reflex/pull/3755\r\n\r\n## Other Changes\r\n* Bump memory on relevant actions by @Alek99 in https://github.com/reflex-dev/reflex/pull/3781\r\n\r\n## New Contributors\r\n* @dimritium made their first contribution in https://github.com/reflex-dev/reflex/pull/3764\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.9...reflex-0.5.10",
      "created_at": "2024-08-22T22:51:15Z",
      "updated_at": "2024-08-28T16:42:33Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYaNj",
      "number": 2885,
      "title": "How to hide page content before javascript execution, hydration and on_load event",
      "body": "Hi,\r\n\r\nright now, the frontend code of our application is structured like this:\r\n\r\n```\r\n  rx.cond(AppState.is_hydrated,\r\n    component(),\r\n    loading_spinner(),\r\n  )\r\n```\r\nAlso, for each page we have defined an `on_load` event which fetches some remote content and updates the state accordingly.\r\n\r\nWhat's happening is that when we navigate from one page to another, first the page is immediately displayed without any loading spinner using the previous state, then after 1-2 seconds the javascript is fetched and executed (I guess), the loading spinner is displayed for a little while and finally the page is displayed again with the new updated state.\r\n\r\nThe app works just fine but this kind of flickering effect is a bit annoying.\r\n\r\nOf course we could just remove the condition and remove the flickering effect too, but what we're trying to achieve is that the page shouldn't be interactive (or displayed at all) until we have fetched content in the on_load event.\r\n\r\nHow can we achieve that?\r\n\r\nThanks\r\n\r\n",
      "created_at": "2024-03-20T09:32:37Z",
      "updated_at": "2024-08-26T22:44:44Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aa8ik",
      "number": 3807,
      "title": "multiple foreign keys",
      "body": "I am trying to create attributes for database objects with more than one foreign key relationships to the same object(s) e.g. object(s) with _multiple_ many to many relations between them. \r\nTried sqlalchemy docs but still unclear in reflex. \r\nAny ideas? Thanks in advance",
      "created_at": "2024-08-18T00:32:12Z",
      "updated_at": "2024-08-26T02:54:10Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "StackTrace18",
        "avatar_url": "https://avatars.githubusercontent.com/u/42659310?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbDDY",
      "number": 3829,
      "title": "How to handle per-user network resources in a Reflex app",
      "body": "Can anyone suggest a good pattern for managing network-listening resources on a per session basis? \r\n\r\nI want to have a separate Redis pubsub connection for each Reflex session. But I can't put the Redis connection inside the app state because it's not serializable. I had been storing at module level, but that means the connections aren't per-session. \r\n\r\nMy current plan is to override the serialization so that I can include the Redis conn in the state, but I will serialize it in some benign form and then hopefully try to \"reconnect\" it on the other side of the state replication. But I'm open to a better suggestion...\r\n\r\nI suppose I could keep my own session->connection dictionary at module level, and index into it with the current Rx session id...",
      "created_at": "2024-08-24T20:45:20Z",
      "updated_at": "2024-08-25T23:02:16Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "scottpersinger",
        "avatar_url": "https://avatars.githubusercontent.com/u/80947?u=62ccb98c92d221f379ef13f284ea80b70a7f82ca&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aa_uv",
      "number": 3813,
      "title": "The app doesn't work",
      "body": "The api_url and the cors configuration is not been takken by the app, I'm deploying the frontend in vercel and the backend in render, when I try to run the app changing the url it doesn't break. It's steel working even in the local host.\r\nimport reflex as rx\r\n\r\nconfig = rx.Config(\r\n    app_name=\"link_bio\",\r\n    cors_allowed_origins=[\r\n       \"https://grone-web-bice.vercel.app/\"\r\n    ]\r\n)",
      "created_at": "2024-08-20T23:45:54Z",
      "updated_at": "2024-08-21T21:03:46Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "dcn0907",
        "avatar_url": "https://avatars.githubusercontent.com/u/99447860?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbApJ",
      "number": 3818,
      "title": "Begginer Guide",
      "body": "I am new to contributing to Reflex as an open-source project. Could anyone provide guidance on how to get started? I have already set up my initial project.",
      "created_at": "2024-08-21T20:57:44Z",
      "updated_at": "2024-08-21T21:02:27Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "mosafdarr",
        "avatar_url": "https://avatars.githubusercontent.com/u/107248111?u=95c952eb671ec68a09a2c13efc984a7ce363388c&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AbAHW",
      "number": 3815,
      "title": "\"any()\" equivalent in a state var?",
      "body": "Hi there, I've been struggling with trying to find out if any value inside a list state var matches a condition. My state has a list of objects (broadcasters) with a name. The same state also has a list of paths, I now want to check for each path if any of the broadcasters names is contained within it. So for instance:\r\n```py\r\nrx.foreach(\r\n    MyState.Paths,\r\n    lambda path: any(broadcaster.name in path.source for broadcaster in MyState.Broadcasters)\r\n),\r\n```\r\nThe result of this will then be assigned to the `checked` value of a switch in my UI. I've tried using foreach, but that hasn't worked so far (and also doesnt really seem appropriate in the first place, as it's not really meant to be used for assigning values). I've also tried a method within the state itself that takes a path as an argument (because we need to do this for each path), without success:\r\n```py\r\nrx.switch(\r\n    checked=MyState.has_broadcaster(row),\r\n),\r\n```\r\nIs there an elegant way to achieve this? Thanks.",
      "created_at": "2024-08-21T10:24:45Z",
      "updated_at": "2024-08-29T13:48:06Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AntxE",
        "body": "you could use a cached computed var that computed a dictionary for each row and then index into that dictionary by row id or similar identifier"
      },
      "user": {
        "login": "DeepQuantum",
        "avatar_url": "https://avatars.githubusercontent.com/u/29970920?u=8981f7041be7ecb5b5477a999254faa3b669bbb1&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aa6of",
      "number": 3796,
      "title": "Launching test app correctly",
      "body": "Good day community, \r\n\r\nHope you are well! \r\n\r\nI have recently started with python web app development and came across reflex - what a cool product! I am trying to use the customer data app as an example and cloned the code from Github (https://github.com/reflex-dev/reflex-examples/tree/main/customer_data_app)\r\n\r\nI opened the folder in VS Code and tried to run the python file in the terminal. At first, it gave errors regarding referencing modules in other directories. I thought I would cross that bridge by placing all the required modules in the same file so no referencing is needed and that seemed to work since there are no errors / problems in the code. Here is the python code (just in txt file version) for reference: [customer_data_app_v2.txt](https://github.com/user-attachments/files/16624364/customer_data_app_v2.txt)\r\n\r\nMy problem is when I execute the code in the terminal, no output is created... it just shows that the code executed but that is it. Any idea how I can \"activate\" the output? I hope to end up with something like \"your session is active at this URL: ...\" which I can launch? \r\n\r\nThanks in advance for your help! ",
      "created_at": "2024-08-15T10:42:32Z",
      "updated_at": "2024-08-16T08:50:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AnfoY",
        "body": "Hey! Are you doing `reflex run`? What errors do you get?"
      },
      "user": {
        "login": "Ruandup90",
        "avatar_url": "https://avatars.githubusercontent.com/u/177860917?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aa7IK",
      "number": 3802,
      "title": "Page refreshing automatically",
      "body": "Hello,\r\n\r\nI am a newbie. I want to integrate [okta hosted login (python)](https://github.com/okta/samples-python-flask/tree/master/okta-hosted-login) to the [reflex-chat](https://github.com/reflex-dev/reflex-chat). Below are the code changes I did. Please guide me.\r\n\r\nAddition in state.py\r\n\r\n```\r\nclass State(rx.State):\r\n\r\n   ......\r\n\r\n  def load_config(fname='./client_secrets.json'):\r\n          config = None\r\n          with open(fname) as f:\r\n              config = json.load(f)\r\n          return config\r\n  \r\n  \r\n      config = load_config()\r\n      \r\n      ########################################################################################\r\n      \r\n      auth_token: str = rx.LocalStorage()\r\n      auth_display = \" Authorized. Redirecting. \"\r\n      # auth_token: str = rx.Cookie()\r\n      \r\n      should_redirect: bool = False\r\n  \r\n      def store_query_params(self):\r\n          params = self.router.page.params\r\n          print(\"params : \", params)\r\n          if len(params) > 0 :\r\n              serialized_params = rx.utils.serializers.serialize(params)\r\n          else :\r\n              serialized_params = \"\"\r\n          self.auth_token = json.dumps(serialized_params)\r\n          print(\"self.auth_token : \", self.auth_token)\r\n          self.should_redirect = True\r\n  \r\n      @rx.var(cache=True)\r\n      def is_authenticated(self) -> bool:\r\n  \r\n          print(bool(self.auth_token))\r\n          return bool(self.auth_token)\r\n```\r\n\r\nIn chat.py\r\n```\r\n\r\nfrom fastapi.responses import RedirectResponse\r\n\r\n\r\n\r\n\r\ndef login() -> rx.Component:\r\n    \r\n    query_params = {\r\n        'client_id': config[\"client_id\"],\r\n        'redirect_uri': config[\"redirect_uri\"],\r\n        'scope': \"openid email profile\",\r\n        'state': APP_STATE,\r\n        'nonce': NONCE,\r\n        'response_type': 'code',\r\n        'response_mode': 'query'\r\n    }\r\n\r\n    request_uri = \"{base_url}?{query_params}\".format(\r\n                                                        base_url=config[\"auth_uri\"],\r\n                                                        query_params=requests.compat.urlencode(query_params))\r\n    \r\n    return rx.redirect(request_uri)\r\n    # return rx.vstack(\r\n    #     rx.redirect(request_uri)\r\n    # )\r\n    \r\ndef require_okta_login(page):\r\n                                                        \r\n    @functools.wraps(page)\r\n    def _auth_wrapper():\r\n        return rx.cond(\r\n            State.is_hydrated & State.is_hydrated,\r\n            rx.cond(\r\n                State.is_authenticated,\r\n                page(),\r\n                rx.chakra.spinner(on_mount=login())\r\n            ),\r\n\r\n        )\r\n    return _auth_wrapper\r\n\r\n\r\nasync def callback(code: str):\r\n    ..... # All code copied from okta example mentioned above \r\n\r\n    AUTH_TOKEN_LOCAL_STORAGE_KEY = {\"unique_id\" : okta_response[\"sub\"],\r\n                                    \"user_email\" : okta_response[\"email\"],\r\n                                    \"user_name\" : okta_response[\"given_name\"],}\r\n\r\n    url=str(\"http://localhost:3000/?\" + urlencode(AUTH_TOKEN_LOCAL_STORAGE_KEY))\r\n    print(\"url : \", url)\r\n    return RedirectResponse(url)\r\n\r\n\r\n@require_okta_login\r\ndef index() -> rx.Component:\r\n    \"\"\"The main app.\"\"\"\r\n    return rx.chakra.vstack(\r\n        navbar(),\r\n      .......\r\n\r\napp.api.add_api_route(\"/authorization-code/callback\", callback, methods=[\"GET\"])\r\n\r\n```\r\n\r\n**I can see in output logs as below**\r\n\r\n\r\n[23:29:10] Compiling: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 13/13 0:00:00\r\nparams :  {}\r\nself.auth_token :  \"\"\r\nTrue\r\nurl :  http://localhost:3000/?unique_id=00uhxbd873czJjHzQ5d7&user_email=<###masked_email###>&user_name=<###masked_name###>\r\nparams :  {'unique_id': '00uhxbd873czJjHzQ5d7', 'user_email': '<###masked_name###>', 'user_name': '<###masked_name###>'}\r\nself.auth_token :  \"{\\\"unique_id\\\": \\\"00uhxbd873czJjHzQ5d7\\\", \\\"user_email\\\": \\\"<###masked_name###>\\\", \\\"user_name\\\": \\\"<###masked_name###>\\\"}\"\r\nTrue\r\nurl :  http://localhost:3000/?unique_id=00uhxbd873czJjHzQ5d7&user_email=<###masked_email###>&user_name=<###masked_name###>\r\nparams :  {'unique_id': '00uhxbd873czJjHzQ5d7', 'user_email': '<###masked_name###>', 'user_name': '<###masked_name###>'}\r\nself.auth_token :  \"{\\\"unique_id\\\": \\\"00uhxbd873czJjHzQ5d7\\\", \\\"user_email\\\": \\\"<###masked_name###>\\\", \\\"user_name\\\": \\\"<###masked_name###>\\\"}\"\r\nTrue\r\nurl :  http://localhost:3000/?unique_id=00uhxbd873czJjHzQ5d7&user_email=<###masked_email###>&user_name=<###masked_name###>\r\n\r\n.....\r\n.....\r\n\r\n\r\nI masked confidential data. \r\n\r\nAlso I can see self.auth_token value in browser local storage with same serialised value as terminal log \r\n\r\nBut this page is continuously refreshing all by itself and thus the output in terminal.\r\n\r\nPlease anyone help me ? @adhami3310, @Alek99, @elviskahoro",
      "created_at": "2024-08-15T22:47:43Z",
      "updated_at": "2024-08-15T23:02:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "amd-srijaroy",
        "avatar_url": "https://avatars.githubusercontent.com/u/152904880?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AfziE",
      "number": 5306,
      "title": "Is there a way to set column width in data table or data editor?",
      "body": "I wanted to have a table with custom column width: The first column has be much wider as seen below.\r\n\r\n### data table\r\nA **data table** doesn't seem to have that option.\r\n```\r\n    columns: List[dict] = [\"column0\", \"column1\", \"column2\"]\r\n```\r\n<img width=\"1116\" alt=\"image\" src=\"https://github.com/user-attachments/assets/a9256312-20f5-4974-8d43-f792876c9891\">\r\n\r\n### data editor\r\nA **data editor** have an option like:\r\n```\r\n    columns: list[dict[str, Any]] = [\r\n        { \"title\": \"column0\", \"type\": \"int\", \"width\": 220 },\r\n        { \"title\": \"column1\", \"type\": \"str\", \"width\": 100 },\r\n        { \"title\": \"column2\", \"type\": \"str\", \"width\": 100 },\r\n```\r\n<img width=\"1118\" alt=\"image\" src=\"https://github.com/user-attachments/assets/927b87d7-d05e-490c-8495-94fc568af68c\">\r\n\r\nBut the width is based on px. Is there a way to set as percentage so that the entire table fits to the screen?\r\n\r\n\r\n\r\nFYI, this is a code that I'm using\r\n```\r\n    return rx.container(\r\n        rx.color_mode.button(position=\"top-right\"),\r\n        rx.vstack(\r\n            rx.hstack(\r\n                rx.data_editor(\r\n                    data=State.data_src,\r\n                    columns=State.columns,\r\n                    search=True,\r\n                    sort=True,\r\n                ),\r\n                rx.data_editor(\r\n                    data=State.data_dst,\r\n                    columns=State.columns,\r\n                    search=True,\r\n                    sort=True,\r\n                ),\r\n            ),\r\n            rx.box(\r\n                rx.container(\r\n                    rx.card(\r\n                        \"this is full width\",\r\n                        width=\"100%\",\r\n                    ),\r\n                    size=\"1\",\r\n                ),\r\n                background_color=\"var(--gray-3)\",\r\n                width=\"100%\",\r\n            ),\r\n```",
      "created_at": "2024-07-17T23:05:01Z",
      "updated_at": "2025-05-17T00:56:45Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "ywpkwon",
        "avatar_url": "https://avatars.githubusercontent.com/u/18429284?u=046004676c4b58e355e0df480bf1aa1ecc1e6608&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AazV1",
      "number": 3758,
      "title": "How to change FastAPI root_path from reflex?",
      "body": "is there a way to use rxconfig to set this FastAPI param?\r\nIn my case is very useful if you have the routes under a reverse_proxy in a suburl www.url.com/suburl",
      "created_at": "2024-08-08T13:50:39Z",
      "updated_at": "2024-08-08T13:50:40Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "deroki",
        "avatar_url": "https://avatars.githubusercontent.com/u/12788929?u=8ea1d817a210c5568eae752d1fe3a91f82119e14&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aawo0",
      "number": 3742,
      "title": "rx.redirect() to HTTP referer",
      "body": "Hi all!\r\n\r\nI have multiple pages with `on_load=State.check_login`. I want the user to be able to bookmark the pages. Thus I need the authentication method to `rx.redirect()` to the referer. How do I do that? Thanks",
      "created_at": "2024-08-05T15:37:17Z",
      "updated_at": "2024-08-08T01:08:03Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AnLRS",
        "body": "Hi! Thanks for the response.\r\n\r\nI had checked the docs and the method you pointed out before asking. That method doesn't answer my question.\r\n\r\nFor the benefit of others trying to figure out the same issue:\r\n\r\nLendemor (Legendmor) in Reflex's Discord helped me out with the following response:\r\n\r\n\"When running check_login, you can store the current page URL before going to /login/. \r\nThen when the login is complete, do a rx.redirect to the URL you stored previously.\""
      },
      "user": {
        "login": "ijohn",
        "avatar_url": "https://avatars.githubusercontent.com/u/992933?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aaw5Y",
      "number": 3744,
      "title": "v0.5.9 Pre-release thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.5.9a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-08-05 15:23 PDT: 0.5.9a1 pre-release published for testing\r\n2024-08-06 16:25 PDT: Public release of 0.5.9\r\n\r\n# Release Notes\r\n\r\n## Bug Fixes\r\n* fix silly bug when style is set directly to breakpoints by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3719\r\n* Fix event actions like `stop_propagation` for recharts event triggers\r\n  * [REF-3203] Find a DOM event-like object in addEvents by @masenf in https://github.com/reflex-dev/reflex/pull/3706\r\n* fix initial_value for computed_var by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3726\r\n  * add test for initial state dict by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3727\r\n* Improve Client-Side Routing on Page Not Found by @Manas1820 in https://github.com/reflex-dev/reflex/pull/3723\r\n* Use the new state name when setting `is_hydrated` to false by @masenf in https://github.com/reflex-dev/reflex/pull/3738\r\n* Use `._is_mutable()` to account for parent state proxy by @masenf in https://github.com/reflex-dev/reflex/pull/3739\r\n\r\n## Doc Updates\r\n\r\n* Add comments to html by @Alek99 in https://github.com/reflex-dev/reflex/pull/3731\r\n\r\n## Var Refactor\r\n\r\nThis release includes some new experimental features being developed incrementally in reflex._x.vars.\r\n\r\n* [REF-3328] Implement __getitem__ for ArrayVar by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3705\r\n* add type hinting to existing types by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3729\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.8...reflex-0.5.9",
      "created_at": "2024-08-05T22:24:11Z",
      "updated_at": "2024-08-06T23:25:35Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaoH-",
      "number": 3709,
      "title": "support AgGrid for data app",
      "body": "I am an streamlit user for 2 years, heard about reflex yesterday and start learning because it looks promising due to its performance and deployment features. \r\nMost apps I built use AgGrid  (https://www.ag-grid.com/) component for data application, \r\nwill aggrid be on the roadmap?\r\n\r\nWilling to help out with its integration as I learn more about reflex.\r\n\r\nThanks \r\n\r\n\r\n",
      "created_at": "2024-07-26T12:15:59Z",
      "updated_at": "2024-08-06T04:45:47Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "wgong",
        "avatar_url": "https://avatars.githubusercontent.com/u/329928?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaqsS",
      "number": 3714,
      "title": "v0.5.8 Pre-release thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.5.8a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-07-29 04:25 PDT: 0.5.8a1 pre-release published for testing\r\n2024-07-29 13:00 PDT: Public release of 0.5.8\r\n\r\n# Release Notes\r\n\r\n## New Features\r\n* update init prompt to use new templates from reflex-dev/templates by @Lendemor in https://github.com/reflex-dev/reflex/pull/3677\r\n\r\n## Improvements\r\n\r\n* Recharts Improvements\r\n  * Update Radial Bar Component by @Manas1820 in https://github.com/reflex-dev/reflex/pull/3662\r\n  * Improve graphing asethetic by @Alek99 in https://github.com/reflex-dev/reflex/pull/3611\r\n  * fix typo in rx.recharts.line props by @Lendemor in https://github.com/reflex-dev/reflex/pull/3689\r\n* [REF-3273]Add SVG circle, polygon and rect components by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3684\r\n* notifying frontend about backend error looks better by @Lendemor in https://github.com/reflex-dev/reflex/pull/3491\r\n\r\n## Bug Fixes\r\n* debounce: pass through key and special_props by @masenf in https://github.com/reflex-dev/reflex/pull/3655\r\n* [REF-3135]Radix Primitive components should not ignore provided `class_name` prop by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3676\r\n* [REF-3101] `rx.list` Dont set/hardcode `list_style_position` css prop by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3695\r\n* [REF-3184] [REF-3339] Background task locking improvements by @masenf in https://github.com/reflex-dev/reflex/pull/3696\r\n* [REF-3375] useMemo on generateUUID props to maintain consistent value by @masenf in https://github.com/reflex-dev/reflex/pull/3708\r\n* Define BaseVar fields on ComputedVar by @paoloemilioserra in https://github.com/reflex-dev/reflex/pull/3659\r\n\r\n## Var Refactor\r\n\r\nThis release includes some new experimental features being developed incrementally in reflex._x.vars.\r\n\r\n* [REF-3222] define new JS-type var classes by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3668\r\n* [REF-3228] implement LiteralStringVar and format/retrieval mechanism by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3669\r\n* [REF-3227] implement more literal vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3687\r\n* [REF-3321] implement var operation decorator by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3698\r\n\r\n## Other Changes\r\n* cleanup unused useReducer import by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3667\r\n* feat: Improve documentation in Japanese README.md file by @l-melon in https://github.com/reflex-dev/reflex/pull/3650\r\n* Benchmarking Updates by @Alek99 in https://github.com/reflex-dev/reflex/pull/3680\r\n* add Persian translation and update the language links in the README.m… by @BenyaminZojaji in https://github.com/reflex-dev/reflex/pull/3666\r\n* fix var warning by @Lendemor in https://github.com/reflex-dev/reflex/pull/3704\r\n\r\n## New Contributors\r\n* @Manas1820 made their first contribution in https://github.com/reflex-dev/reflex/pull/3662\r\n* @l-melon made their first contribution in https://github.com/reflex-dev/reflex/pull/3650\r\n* @BenyaminZojaji made their first contribution in https://github.com/reflex-dev/reflex/pull/3666\r\n* @paoloemilioserra made their first contribution in https://github.com/reflex-dev/reflex/pull/3659\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.7...reflex-0.5.8",
      "created_at": "2024-07-29T11:31:13Z",
      "updated_at": "2024-07-29T20:03:34Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaoIa",
      "number": 3710,
      "title": "Streamlit user share Reflex experience",
      "body": "Start learning Reflex yesterday by watching videos, trying https://github.com/reflex-dev/reflex-examples, and reading docs,\r\ncan someone with both Reflex and Streamlit experiences comment on pros and cons of respective framework?\r\nThanks for your guidance",
      "created_at": "2024-07-26T12:26:25Z",
      "updated_at": "2024-07-28T10:58:18Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "wgong",
        "avatar_url": "https://avatars.githubusercontent.com/u/329928?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aakt4",
      "number": 3697,
      "title": "Easy way to get the input element inside the Upload component?",
      "body": "We need to allow the user to select directories, not files, on the client side. The only thing that has to be done is add the \"webkitdirectory\" attribute to the <input> tag that is used in the Upload component. I was hoping that one could use a useRef() hook easily to get a handle on the input element and then set the attribute on the element. Is there an easy way to do this?",
      "created_at": "2024-07-22T22:09:47Z",
      "updated_at": "2024-07-25T00:06:24Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "VictorNorman",
        "avatar_url": "https://avatars.githubusercontent.com/u/6807900?u=c2508294b331190d08457e11cae75c1278e6f11f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaeOu",
      "number": 3674,
      "title": "How to parse an rss feed",
      "body": "I'm having trouble with data types in State (I think).\r\n\r\nI'm trying to do something like this with an rss feed (from regular python):\r\n```\r\n# main.py\r\nimport feedparser\r\n\r\nfeed = \"https://feedparser.readthedocs.io/en/latest/examples/rss20.xml\"\r\n\r\nparsedFeed = feedparser.parse(feed)\r\n\r\nfor i in range(10):\r\n    entry = parsedFeed.entries[i]\r\n    print(entry.title)\r\n    print(entry.description)\r\n    # etc\r\n```\r\n\r\nMy two main questions when trying to do this in Reflex:\r\n1. How do I set a state variable to the value of the parsed feed? (I don't see many examples beyond a few primitive types.)\r\n2. Do I do the iteration in the State function? Or use rx.foreach with the components?\r\n\r\n```\r\n# state.py\r\nclass State(rx.State):\r\n\r\n    feed: str = \"https://feeds.transistor.fm/acquired\"\r\n\r\n    parsedFeed: ??? = feedparser.parse(feed)\r\n```\r\n\r\nThanks for any help!",
      "created_at": "2024-07-15T23:35:41Z",
      "updated_at": "2024-07-17T01:37:43Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "pglevy",
        "avatar_url": "https://avatars.githubusercontent.com/u/5177337?u=d037a5c607e15231558c6b29a6c58ae0de091015&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaasC",
      "number": 3664,
      "title": "v0.5.7 Pre-release thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.5.7a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-07-11 17:35 PDT: 0.5.7a1 pre-release published for testing\r\n2024-07-16 13:45: Public release of 0.5.7\r\n\r\n# Release Notes\r\n\r\n## New Features\r\n\r\n* Catch unhandled errors on both frontend and backend by @maximvlah in https://github.com/reflex-dev/reflex/pull/3572\r\n  * `rx.App` now supports `frontend_exception_handler` and `backend_exception_handler` which are called when unhandled exceptions occur.\r\n  * Fix the error boundary by @maximvlah in https://github.com/reflex-dev/reflex/pull/3637\r\n* Bare SQLAlchemy mutation tracking by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3628\r\n* feat: Adding an event to go back just as the user would. by @abulvenz in https://github.com/reflex-dev/reflex/pull/3636\r\n  * `return rx.event.back()`\r\n\r\n## Improvements\r\n\r\n* Recharts Improvements\r\n  * minor chart clean up by @Alek99 in https://github.com/reflex-dev/reflex/pull/3551\r\n  * update graphing by @tgberkeley in https://github.com/reflex-dev/reflex/pull/3606\r\n  * Tom/recharts missing props by @tgberkeley in https://github.com/reflex-dev/reflex/pull/3645\r\n  * add warning when using css props on recharts by @Lendemor in https://github.com/reflex-dev/reflex/pull/3651\r\n  * Make domain props work for `y_axis` by @Lendemor in https://github.com/reflex-dev/reflex/pull/3652\r\n* dedupe config overrides by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3600\r\n* gitignore external assets by default by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3621\r\n* only write .gitignore if needed by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3618\r\n* [REF-3160] fix rx.Var._replace raise TypeError on invalid kwargs by @Jishnu-Nandhiath in https://github.com/reflex-dev/reflex/pull/3625\r\n* add module prefix to generated state names by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3214\r\n* Allow DebounceInput as child of FormControl Component by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3660\r\n\r\n## Bug Fixes\r\n\r\n* fix sqla python_type issues, add tests by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3613\r\n* Fix 404 on dynamic routes during hot reload\r\n  * [REF-3076] Do not purge .web/pages in dev mode by @masenf in https://github.com/reflex-dev/reflex/pull/3592\r\n* Avoid model metaclass error with pydantic < 1.10.15\r\n  * [REF-3266] Check for pydantic v1 outside of try/except by @masenf in https://github.com/reflex-dev/reflex/pull/3643\r\n* Fix warnings\r\n  * fix unclosed file by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3639\r\n  * migrate deprecated connections to net_connections by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3641\r\n  * Pkg resources deprecation by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3646\r\n  * fix Var.contains pyi by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3663\r\n\r\n## Documentation\r\n\r\n* [Graphing Docs] small update by @tgberkeley in https://github.com/reflex-dev/reflex/pull/3612\r\n\r\n## Var Refactor\r\n\r\nThis release includes some new experimental features being developed incrementally in reflex._x.vars.\r\n\r\n* add immutable var class by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3607\r\n* [REF-3225] implement __format__ for immutable vars by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3617\r\n\r\n## Other Changes\r\n* pyproject.toml: bump to 0.5.6 by @masenf in https://github.com/reflex-dev/reflex/pull/3635\r\n* benchmarks.yml: use node 18.x with reflex-web@main by @masenf in https://github.com/reflex-dev/reflex/pull/3657\r\n\r\n## New Contributors\r\n* @maximvlah made their first contribution in https://github.com/reflex-dev/reflex/pull/3572\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.6...reflex-0.5.7",
      "created_at": "2024-07-12T00:34:57Z",
      "updated_at": "2024-07-29T11:31:20Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4Aad0e",
      "number": 3672,
      "title": "how to return a rx.redirect from rx.cond?",
      "body": "Hi to all,\r\n\r\nI'm using reflex from 2 days, but now i m in front of a problem.\r\n\r\nI have to redirect an user if a bool in a class rx.state is not true.\r\n\r\nSo, i have this class:\r\n![image](https://github.com/user-attachments/assets/4226db47-8106-4b4e-b3a6-adb041e84bf6)\r\n\r\nand from another page and another component i want to read my \"logged\" bool.\r\nSo i started doing this:\r\n\r\n![image](https://github.com/user-attachments/assets/d8bf4deb-f40c-4c7b-97f7-400f6f41a998)\r\n\r\nBut the console say this:\r\n\r\n![image](https://github.com/user-attachments/assets/3bc9d661-3b3d-4424-abf7-15b7872f1412)\r\n\r\n\r\nDo you have any hints?\r\n\r\nThank you.",
      "created_at": "2024-07-15T13:23:09Z",
      "updated_at": "2024-07-15T13:23:09Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "RomeoVir",
        "avatar_url": "https://avatars.githubusercontent.com/u/43968111?u=7a084bb97bf502702fbb767243f5d6b65532cbd2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWGWT",
      "number": 2081,
      "title": "Disable certificate check when initializing a project?",
      "body": "When i try to initialize a project, got the certificate error:\r\n\r\n```\r\n─────────────────────────────────────────────────────── Initializing app ───────────────────────────────────────────────────────\r\nDebug: Downloading https://github.com/Schniz/fnm/releases/download/v1.35.1/fnm-linux.zip\r\nDebug: Skipping bun installation as it is already installed.\r\nAn error occurred while downloading fnm package: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local\r\nissuer certificate (_ssl.c:1000)\r\n```\r\n\r\nWill it better to disable the certificate check or make it an optional choice from cli? \r\n\r\nFor example, add `verify=False` to:\r\n```python3\r\ndef download_and_extract_fnm_zip():\r\n    ...\r\n    try:\r\n        # Download the FNM zip release.\r\n        # TODO: show progress to improve UX\r\n        with httpx.stream(\"GET\", url, follow_redirects=True) as response:\r\n    ...\r\n```\r\n\r\n```python3\r\ndef download_and_extract_fnm_zip():\r\n    ...\r\n    try:\r\n        # Download the FNM zip release.\r\n        # TODO: show progress to improve UX\r\n        with httpx.stream(\"GET\", url, follow_redirects=True, verify=False) as response:\r\n    ...\r\n```\r\n\r\nOr, from cli:\r\n`reflex init --disable-cert-check`\r\n\r\nI initialize this project with docker, and the `Dockerfile`:\r\n```dockerfile\r\nFROM python:3.12\r\n\r\nWORKDIR /app\r\n\r\nRUN pip install poetry\r\n\r\nRUN apt-get update -y && apt-get install -y fish git\r\n\r\nRUN chsh -s /usr/bin/fish\r\n\r\nEXPOSE 3333\r\n\r\nCMD [\"tail\", \"-f\", \"/dev/null\"]\r\n```",
      "created_at": "2023-10-30T08:50:25Z",
      "updated_at": "2024-07-14T07:09:30Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "iiicebearrr",
        "avatar_url": "https://avatars.githubusercontent.com/u/110714291?u=0529bb564e297b16f42edc2d3ac62438a2e58047&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaWFV",
      "number": 3629,
      "title": "Trouble with basic form field behavior",
      "body": "Hi there,\r\n\r\nI'm just starting to play around with Reflex and was going through the Chat App tutorial, but I'm having trouble with the form field behavior when trying to use a label.\r\n\r\nHere's a [reference on codepen](https://codepen.io/pglevy/pen/RwzwaZa?editors=1111) of what I'm trying to achieve: a text input with a programmatically associated label (so the input receives focus when you click the label) that you can interact with by typing into it.\r\n\r\nI started with this [basic example](https://reflex.dev/docs/library/forms/form/low/#basic-example), which seems to work, but when I start using state, I run into two problems:\r\n\r\n1. When I try to use the `value` parameter on the input to reference the state variable, it loses the connection to the label. (Looks like the id doesn't get rendered on the input.) Also, I can't change the value of the input by typing into it.\r\n2. When I try to use `on_change` to listen for changes and update the variable, compiling fails with the error: `TypeError: Only Radix TextFieldRoot is allowed as child of FormControl`.\r\n\r\nIt seems like I'm not grasping something about state and how it works, so I appreciate any help pointing me in the right direction.\r\n\r\nI have this [here on a repl](https://replit.com/@pglevy/Form-Control-Test#Reflex_Template/Reflex_Template.py) and the code pasted below. \r\n\r\n```\r\nimport reflex as rx\r\n\r\n# from rxconfig import config\r\n\r\nclass State(rx.State):\r\n    \"\"\"The app state.\"\"\"\r\n    message: str = \"Default\"\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        rx.form.root(\r\n            rx.form.field(\r\n                rx.form.label(\"Message\"),\r\n                rx.form.control(\r\n                    rx.input(\r\n                        name=\"message\",\r\n                        type=\"text\",\r\n                        value=State.message,\r\n                        on_change=State.set_message,\r\n                    ),\r\n                    as_child=True,\r\n                ),\r\n                rx.form.message(\"There was a problem\"),\r\n                name=\"Message\"\r\n            ),\r\n            rx.form.submit(\r\n                rx.button(\"Send message\"),\r\n                as_child=True,\r\n            ),\r\n        ),\r\n        rx.text(f\"Your message: \", State.message)\r\n    )\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\n",
      "created_at": "2024-07-07T14:15:24Z",
      "updated_at": "2024-07-13T21:15:56Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AmKv4",
        "body": "Hi @pglevy, \r\nThis seems to be a bug.\r\nWhen both `value`and `on_change` are defined `rx.input()` returns a `DebounceInput`, which should also be allowed by `rx.form.control()`."
      },
      "user": {
        "login": "pglevy",
        "avatar_url": "https://avatars.githubusercontent.com/u/5177337?u=d037a5c607e15231558c6b29a6c58ae0de091015&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaUir",
      "number": 3627,
      "title": "Table displaying incorrectly",
      "body": "So, I have a table with dynamic data and inputs that I display, and I cannot format it correctly.  \r\n\r\nI would want the two pairs of select and input to be side-by-side i.e., in two different columns, but instead they are displayed on top of each other.\r\n\r\n<img width=\"913\" alt=\"image\" src=\"https://github.com/reflex-dev/reflex/assets/32127232/7b77f9a0-8262-462e-af54-961c766c98f7\">\r\n\r\nMy table definition is as such:\r\n```rx.table.root(\r\n            rx.table.header(\r\n                rx.table.row(\r\n                    rx.table.column_header_cell(\"Date\"),\r\n                    rx.table.column_header_cell(\"Time\"),\r\n                    rx.table.column_header_cell(\"Country\"),\r\n                    rx.table.column_header_cell(\"Event\"),\r\n                    rx.table.column_header_cell(\"Previous Condition\"),\r\n                    rx.table.column_header_cell(\"Actual Condition\"),\r\n                ),\r\n            ),\r\n            rx.table.body(\r\n                rx.foreach(\r\n                    CalendarState.get_included_events,\r\n                    show_conditions_event,\r\n                )\r\n            ),\r\n        ),\r\n```\r\nand the function that populates it is:\r\n```\r\ndef show_conditions_event(cal_event: EventDate):\r\n    return rx.table.row(\r\n        rx.table.cell(cal_event.day),\r\n        rx.table.cell(cal_event.time),\r\n        rx.table.cell(cal_event.countryCode),\r\n        rx.table.cell(cal_event.name),\r\n        rx.hstack(\r\n            rx.select(\r\n                [\"<\", \">\", \"<=\", \">=\"],\r\n                on_change=CalendarState.save_event_condition(\r\n                    cal_event,\r\n                    \"actual\",\r\n                    \"operator\",\r\n                ),\r\n            ),\r\n            rx.input(\r\n                placeholder=\"Actual value\",\r\n                default_value=\"0\",\r\n                on_blur=CalendarState.save_event_condition(\r\n                    cal_event,\r\n                    \"actual\",\r\n                    \"value\",\r\n                ),\r\n            ),\r\n        ),\r\n        rx.hstack(\r\n            rx.select(\r\n                [\"<\", \">\", \"<=\", \">=\"],\r\n                on_change=CalendarState.save_event_condition(\r\n                    cal_event,\r\n                    \"previous\",\r\n                    \"operator\",\r\n                ),\r\n            ),\r\n            rx.input(\r\n                placeholder=\"Previous value\",\r\n                default_value=\"0\",\r\n                on_blur=CalendarState.save_event_condition(\r\n                    cal_event,\r\n                    \"previous\",\r\n                    \"value\",\r\n                ),\r\n            ),\r\n        ),\r\n    )\r\n```\r\n\r\nAm I doing anything wrong or is this a bug in Reflex?\r\n\r\nThanks!",
      "created_at": "2024-07-05T07:10:27Z",
      "updated_at": "2024-07-10T08:18:49Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AmHHu",
        "body": "@thomastiotto I think you need to put both your `rx.select` and `rx.input` within an `rx.table_cell` - then they should appear in two separate cells."
      },
      "user": {
        "login": "thomast8",
        "avatar_url": "https://avatars.githubusercontent.com/u/32127232?u=6b091dcc7c35e423847fb744500ae849b93f6086&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaXAQ",
      "number": 3631,
      "title": "button on_click problem",
      "body": "After I clicked edit, the input displayed the previous value\r\n\r\n```\r\nimport reflex as rx\r\nimport random\r\n\r\nclass State(rx.State):\r\n    table = {'name':'111'}\r\n\r\n    def button_click(self):\r\n        elements = ['apple', 'banana', 'cherry']\r\n        self.table = {'name':random.choice(elements)}\r\n        print(self.table)\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        rx.vstack(\r\n            rx.dialog.root(\r\n                rx.dialog.trigger(\r\n                    rx.button(rx.text('edit'),on_click=State.button_click)\r\n                ),\r\n                rx.dialog.content(\r\n                    rx.form.root(\r\n                        rx.foreach(State.table, lambda key,value:rx.input(default_value=key.to(str),name='name'),),\r\n                        rx.form.submit(rx.button('submit'))\r\n                    )\r\n                )\r\n            )\r\n        ),\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n![微信截图_20240708093658](https://github.com/reflex-dev/reflex/assets/25957813/9dcc5e23-c6a6-4711-998c-a27414040c1a)\r\n\r\nHow should I deal with this problem? Thank you",
      "created_at": "2024-07-08T01:37:56Z",
      "updated_at": "2024-07-09T03:36:53Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AmHLr",
        "body": "When rendering an input in a foreach, you should pass the `key` prop:\r\n\r\n```python\r\nlambda key, value:rx.input(default_value=key.to(str), name='name', key=key.to(str))\r\n```\r\n\r\nAdding the `key` prop to the `rx.input` will cause it to be re-rendered whenever the key changes. Otherwise the React javascript framework tries to optimize the DOM updates and won't re-create the input box with the new default_value, and default_value is only ever set once, when the component is created."
      },
      "user": {
        "login": "w1249841003",
        "avatar_url": "https://avatars.githubusercontent.com/u/25957813?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaO0V",
      "number": 3594,
      "title": "v0.5.6 Pre-release thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.5.6a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-06-29 09:05 PDT: 0.5.6a1 pre-release published for testing\r\n2024-07-08 11:52 PDT: 0.5.6a2 published\r\n2024-07-08: Scheduled release of 0.5.6\r\n\r\n# Release Notes\r\n\r\n## New Features\r\n\r\n### `rx.clipboard`\r\n\r\nHandle global and component-scoped `on_paste` with multi-type data\r\n\r\n* Add Clipboard component for handling global on_paste event by @masenf in https://github.com/reflex-dev/reflex/pull/3513\r\n\r\n### `rx.breakpoints` - Set breakpoints by name\r\n\r\n* introduce customizable breakpoints by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3568\r\n* add responsive props to radix components by @adhami3310 in https://github.com/reflex-dev/reflex/pull/3583\r\n\r\n### Computed Backend Vars\r\n\r\n* add computed backend vars by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3573\r\n  * improve backend var determination by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3587\r\n\r\n## Improvements\r\n\r\n* [REF-3056]Config knob for redis StateManager expiration times by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3523\r\n* [Perf] Ensure rx.match gets memoized to avoid excessive re-rendering by @masenf in https://github.com/reflex-dev/reflex/pull/3552\r\n* bare sqlalchemy session + tests by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3522\r\n* Remove chakra from codeblock by @abulvenz in https://github.com/reflex-dev/reflex/pull/3570\r\n* add compilation timestamp in log by @Lendemor in https://github.com/reflex-dev/reflex/pull/3563\r\n* [REF-3148] add props for tabs by @Lendemor in https://github.com/reflex-dev/reflex/pull/3560\r\n* show the value causing problem in deprecation warning by @Lendemor in https://github.com/reflex-dev/reflex/pull/3558\r\n* Better support for Github Codespaces\r\n  * Add a link to backend in connection error by @masenf in https://github.com/reflex-dev/reflex/pull/3044\r\n* Better hot reload times on Windows with python 3.12 and uvicorn > 0.20\r\n  * [REF-3164] Hack to fix Windows hot reload + Uvicorn upgrade by @masenf in https://github.com/reflex-dev/reflex/pull/3584\r\n* `rx.theme` appearance is reset in dev mode\r\n  * [REF-2588]Clear color mode local storage for dev mode by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3548\r\n\r\n## Bug Fixes\r\n\r\n* Fix radix radio cards component by @emmakodes in https://github.com/reflex-dev/reflex/pull/3545\r\n* fix small typing issue by @Lendemor in https://github.com/reflex-dev/reflex/pull/3562\r\n* [REF-3185][REF-3180]Dont escape backticks in JS string interpolation by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3566\r\n* classvars should not be backend vars by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3578\r\n* ComponentState and State mixins now work with backend vars\r\n  * copy backend vars from mixins by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3580\r\n* fix var dependency over properties by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3588\r\n* [REF-3157] Avoid SQLModel metaclass conflict (#3610)\r\n* [REF-3220] Fix rx.cancel_upload EventSpec (#3608)\r\n* do not get_config in global scope (#3597)\r\n\r\n## Other Changes\r\n\r\n* Validate ComputedVar dependencies, add tests by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3527\r\n  * do not validate non-cached var deps by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3576\r\n* Radio group fix deprecation warning for creating vars with strings by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3567\r\n* update dependencies pinning by @Lendemor in https://github.com/reflex-dev/reflex/pull/3556\r\n* fix formatting by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3574\r\n* order type annotations in pyi_generator by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3585\r\n* Deprecate cached var by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3582\r\n* Change Strategy Prop to Literal by @Alek99 in https://github.com/reflex-dev/reflex/pull/3575\r\n* pyi_generator cleanup: ruff, remove fully qualified reflex. names by @masenf in https://github.com/reflex-dev/reflex/pull/3591\r\n* cleanup unused check by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3590\r\n* split lifespan and middleware logic in separate mixin files by @Lendemor in https://github.com/reflex-dev/reflex/pull/3557\r\n* Update links to /docs/library/dynamic-rendering/foreach/ (#3609)\r\n\r\n## New Contributors\r\n\r\n### Welcome Khaleel to the Core Team\r\n\r\n* @adhami3310 made their first contribution in https://github.com/reflex-dev/reflex/pull/3568\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.5...reflex-0.5.6",
      "created_at": "2024-06-29T16:04:22Z",
      "updated_at": "2024-07-09T00:32:52Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaUQs",
      "number": 3626,
      "title": "langgraph",
      "body": "Looking to run a langgraph chatbot inside reflex, i am trying to add a tool using the decorate tool, but getting the errors \r\n\r\nState vars must be primitive Python types, Plotly figures, Pandas dataframes, or subclasses of rx.Base. Found var \"tool_getJobDetails\" with type <class 'langchain_core.tools.StructuredTool'>\r\n\r\nAny ideas on how i can overcome ?\r\n",
      "created_at": "2024-07-04T20:21:57Z",
      "updated_at": "2024-07-04T21:04:44Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "colinrees",
        "avatar_url": "https://avatars.githubusercontent.com/u/65425712?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaGRl",
      "number": 3526,
      "title": "How to download requirements behind company proxy",
      "body": "Hello,\r\nI started to use reflex.dev and with direct internet connection it's downloading NPM requirements but when I'm trying to install it with limited internet I get error messages because of the company restrictions about internet downloads.\r\n\r\nIs there a way to configure proxy properly within reflex CLI or do I need to modify some files to be able to download through a proxy?\r\n\r\nThanks.",
      "created_at": "2024-06-20T06:51:13Z",
      "updated_at": "2024-07-01T08:25:15Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AlksR",
        "body": "there are a lot of ways for this; list some below:\r\n1. maybe you can try to use http_proxy(https_proxy) environ, lot of tools support this way; (I don't have try this for reflex)\r\n2. you can use global proxy tools when http_proxy isn't work; proxy tools like clash, tun2proxy.....\r\n3. if you have some computer's internet connection is ok, you can use \"tailscale\" make your all computers in your own private network, and config the compony computer use other computer as \"exit node\", so compony computer's network will through the \"exit node\", bypass the company limit;\r\n\r\n"
      },
      "user": {
        "login": "n4rk0o",
        "avatar_url": "https://avatars.githubusercontent.com/u/11425001?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZ9Xb",
      "number": 3469,
      "title": "Heads up about 3.12.4",
      "body": "Good day, good people.\r\n\r\nI spent the day trying to figure out a bug in my Docker container all day that I just couldn't wrap my brain around:\r\n\r\nTypeError: ForwardRef._evaluate() missing 1 required keyword-only argument: 'recursive_guard'\r\n\r\nI couldn't figure it out because nothing in my CODE had changed. However...\r\n\r\nBecause I was pulling Docker image python:3.12-slim-bookworm as my base image, I missed that 3.12.4 had been pushed as the base image. This change contains this problem:\r\n\r\nFix missing recursive_guard parameter in Pydantic v1 for python 3.12.4+ #9611\r\nhttps://github.com/pydantic/pydantic/pull/9611\r\n\r\nAfter setting the base image python:3.12.3-slim-bookworm it was working again.\r\n\r\nSo, long story short: Avoid 3.12.4 for the time being.",
      "created_at": "2024-06-10T18:51:09Z",
      "updated_at": "2024-06-30T19:29:48Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "paul-stork",
        "avatar_url": "https://avatars.githubusercontent.com/u/103065624?u=a57fa026d01da5057880906a99a463d74a62c9fc&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaPxA",
      "number": 3598,
      "title": "Problemas al correr reflex",
      "body": "me sale el siguiente cartel al correr el reflex init y no entiendo como solucionarlo, \"The command `wmic cpu get addresswidth,caption,manufacturer /FORMAT:csv` failed with error: Command 'wmic  \r\ncpu get addresswidth,caption,manufacturer /FORMAT:csv' returned non-zero exit status 44210.. This will     \r\nreturn None.\" a alguien le paso?",
      "created_at": "2024-06-30T16:26:44Z",
      "updated_at": "2024-06-30T16:26:45Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Tomas-Roggio",
        "avatar_url": "https://avatars.githubusercontent.com/u/114022126?u=3c822ea72c5a5e1d64f71f67e2a6564dede82187&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZoZm",
      "number": 3378,
      "title": "Event on page closed for stop a watchdog",
      "body": "Hello\r\n\r\nI am playing around with reflex and the test I am doing is as follow:\r\n\r\nBefore start the reflex APP I call a socket from back end to provide some data to states. \r\nThen in the main page load event \"on_load\" I call an app state method to enable a watchdog with the socket, to conditionally render some message in the page about socket not connected.\r\n\r\nApp start:\r\n```python\r\nfrom rxconfig import config\r\nfrom .main import main\r\nfrom .state import AppState\r\nimport reflex as rx\r\n\r\nfilename = f\"{config.app_name}/{config.app_name}.py\"\r\n\r\n@rx.page(on_load=AppState.enable_watchdog)\r\ndef index() -> rx.Component:\r\n    return  rx.hstack(\r\n                main()\r\n            )\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```\r\n\r\nThe App state looks like this:\r\n```python\r\nimport asyncio\r\nimport reflex as rx\r\nfrom .config import SIOMANAGER\r\n\r\nclass AppState(rx.State):\r\n    _watchdog: bool = False\r\n    sup_sioConnected : bool = False\r\n    _n_tasks: int = 0`\r\n\r\n    @rx.background\r\n    async def background_task(self):\r\n        async with self:\r\n            if self._n_tasks > 0:\r\n                return\r\n            self._n_tasks +=1\r\n        while True:\r\n            print(\"bucle\")\r\n            async with self:\r\n                if SIOMANAGER.IsConnected:\r\n                    self.sup_sioConnected = True\r\n                    self._n_tasks -= 1\r\n                    return\r\n                else:\r\n                    SIOMANAGER.open_connection()\r\n                    print(\"Connect\")\r\n            await asyncio.sleep(1.0)\r\n         return\r\n\r\n    def enable_watchdog(self):\r\n        self._watchdog = True\r\n        return AppState.background_task\r\n```\r\nAs you can see there is a background task checking for the connection, and if not connected tries to reconnect it every 1 second.\r\n\r\nWhat is the problem?\r\nI set some logs (basic print functions) and the background task starts when the page is loaded, it works as expected. But when the page is closed on browser I have noted that the background task still running forever, as stated even with the web browser closed.\r\n\r\nFirst question:\r\nIs my approach to watchdog the socket connection ok?\r\nThen second question:\r\nIs there an event about \"closed page\"? or \"on closing\" page? to stop the background event for the watchdodg.\r\n\r\nRegards\r\n\r\nFran Galan",
      "created_at": "2024-05-23T17:32:43Z",
      "updated_at": "2024-06-23T16:29:26Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "fjosegalan",
        "avatar_url": "https://avatars.githubusercontent.com/u/8409519?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaHwz",
      "number": 3546,
      "title": "Does this framework provides better speed and user experience and features compared to streamlit ?",
      "body": "Asking this because i have used and created ui with streamlit and it was great experience so just wanted to ask about other users experience on this thing when compared with streamlit.",
      "created_at": "2024-06-21T15:59:11Z",
      "updated_at": "2024-06-21T15:59:12Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Greatz08",
        "avatar_url": "https://avatars.githubusercontent.com/u/55040435?u=1d3751acf272cf5597b70db85c4d0d4422740dfd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZ8--",
      "number": 3466,
      "title": "Reflex start abort",
      "body": "Hello everyone,\r\nI am developing a simple demo of a RAG application with an LLM and a vector store: LLM on Ollama in the host machine and the vector store in a separate container. I am using the reflex-chat component.\r\nI develop with Visual studio code with the python environment in a container using Visual Studio container development.\r\nEvery now and then, I don't understand why, reflex crashes with a \"killed\" message.  I include an example of the terminal screen.\r\nSome details:\r\nMac OS Sonoma 14.5, M2 Pro\r\nreflex==0.5.2\r\nreflex-chat==0.0.1\r\nreflex-hosting-cli==0.1.13\r\nPython 3.12.3\r\n\r\nAny ideas?\r\n\r\n![Screenshot 2024-06-10 alle 12 09 20](https://github.com/reflex-dev/reflex/assets/956527/a114b080-ba8d-4ea2-b409-7b35bfca8b27)\r\n",
      "created_at": "2024-06-10T10:27:48Z",
      "updated_at": "2024-06-20T18:55:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "planti",
        "avatar_url": "https://avatars.githubusercontent.com/u/956527?u=d02d9deb390b889807c9f03e1f4a4bb620dc40ae&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXhGw",
      "number": 2509,
      "title": "Feature: Custom exception handler",
      "body": "Currently reflex catches all exceptions during the execution of event handlers, and just uses `print()` to dump them to the console. Could we maybe add a config option to register a simple function which handles exeptions? Users could them f.e. ignore some exceptions, reraise others, or pass everything to a tracing system like sentry.",
      "created_at": "2024-02-01T01:40:44Z",
      "updated_at": "2024-06-17T12:45:00Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "benedikt-bartscher",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854409?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaCMV",
      "number": 3500,
      "title": "Get var from js script and send to Reflex",
      "body": "I need help with python reflex get var from js script and send to Reflex\r\n\r\n ```\r\n   class TelegramState(rx.State):\r\n        telegram: dict = {}\r\n    \r\n        def get_telegram(self):\r\n            data = rx.call_script(\r\n                \"\"\"\r\n                const initData = window.Telegram.WebApp.initData;\r\n                const initDataObj = Object.fromEntries(new URLSearchParams(initData));\r\n                return JSON.stringify(initDataObj, null, 2);\r\n                \"\"\")\r\n            print(data)\r\n    \r\n    def index() -> rx.Component:\r\n        return rx.container(\r\n            rx.script(src=\"https://telegram.org/js/telegram-web-app.js\", strategy=\"beforeInteractive\"),\r\n            rx.button(\r\n                \"Получить данные Telegram\",\r\n                on_click=TelegramState.get_telegram,\r\n            ),\r\n        )\r\n```",
      "created_at": "2024-06-16T11:22:33Z",
      "updated_at": "2024-06-16T14:38:13Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "fungalspores",
        "avatar_url": "https://avatars.githubusercontent.com/u/71810524?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaCP9",
      "number": 3501,
      "title": "How get data from SessionStorage",
      "body": "Hello, help please\r\n\r\nHow get data from SessionStorage\r\n\r\n<img width=\"1000\" alt=\"Снимок экрана 2024-06-16 в 15 18 11\" src=\"https://github.com/reflex-dev/reflex/assets/71810524/ec04432d-635e-461b-a52f-ac52e60df55c\">\r\n",
      "created_at": "2024-06-16T12:18:38Z",
      "updated_at": "2024-06-16T12:39:17Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "fungalspores",
        "avatar_url": "https://avatars.githubusercontent.com/u/71810524?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AaBGf",
      "number": 3494,
      "title": "How to import from a subdir in a React library when creating a Custom Component?",
      "body": "[react-map-gl](http://visgl.github.io/react-map-gl/) requires importing `Map` from `'react-map-gl/maplibre'` (note the subdir) when using MapLibre (rather than the default Mapbox, which imports from the root dir)\r\n\r\nSee: [http://visgl.github.io/react-map-gl/docs/get-started#example](http://visgl.github.io/react-map-gl/docs/get-started#example)\r\n\r\nMapbox seems to be wrapped fine however I cannot get MapLibre to work (eg, it looks for the wrong npm package if specifying `react-map-gl/maplibre` as the library) \r\n\r\nHow can I properly specify the import statement in the `rx.Component` subclass when defining the React library to wrap?",
      "created_at": "2024-06-14T13:13:18Z",
      "updated_at": "2024-06-14T13:13:19Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "daniel-fink",
        "avatar_url": "https://avatars.githubusercontent.com/u/32397975?u=5237ca5e5b6b1635361064cf4f9b65f4af49e39b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZ6YB",
      "number": 3459,
      "title": "v0.5.4 Pre-release thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.5.4a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-06-07 16:09 PDT: 0.5.4a1 pre-release published for testing\r\n2024-06-13 10:45 PDT: Public Release of 0.5.4\r\n\r\n# Release Notes\r\n\r\n## Improvements\r\n* [REF-2956]Fail When Backend port or frontend port is explicitly provided and the port is in use by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3432\r\n* promote toast to main namespace by @Lendemor in https://github.com/reflex-dev/reflex/pull/3422\r\n* [REF-2977] [REF-2982] Plotly: Merge layout prop and automatic darkmode by @masenf in https://github.com/reflex-dev/reflex/pull/3442\r\n* Recharts supporting radix color, add event triggers by @HongyuHansonYao in https://github.com/reflex-dev/reflex/pull/3430\r\n* [REF-3009] type transforming serializers by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3227\r\n* default color_mode is now system color by @Lendemor in https://github.com/reflex-dev/reflex/pull/3457\r\n* Refactor: make better/less use of dict.keys() calls by @alexandermorgan in https://github.com/reflex-dev/reflex/pull/3455\r\n\r\n## Bug Fixes\r\n* [REF-2602]Do not suppress import errors in rxconfig by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3434\r\n* [REF-3006] Inline code rendered in rx.markdown has extra trailing space by @masenf in https://github.com/reflex-dev/reflex/pull/3426\r\n* Address an issue with pydantic v2 models as Vars by @kroo in https://github.com/reflex-dev/reflex/pull/3396\r\n* state.js: set event_processing = false when websocket connects by @masenf in https://github.com/reflex-dev/reflex/pull/3443\r\n* [REF-2879] Make client_state work without global refs (local only) by @masenf in https://github.com/reflex-dev/reflex/pull/3379\r\n\r\n## Other Changes\r\n* PR zh/zh_tw readme update for relex 0.5.2 by @milochen0418 in https://github.com/reflex-dev/reflex/pull/3415\r\n* fix: correct zh_tw and zh_cn README for hyperlink issues by @milochen0418 in https://github.com/reflex-dev/reflex/pull/3440\r\n* clean up hooks and update component to use add_hooks by @Lendemor in https://github.com/reflex-dev/reflex/pull/3439\r\n* fix warning about props by @Lendemor in https://github.com/reflex-dev/reflex/pull/3451\r\n* Webdriver ArgOptions improvements by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3429\r\n* [bug] Avoid deleting endpoint port when running on Replit by @blast-hardcheese in https://github.com/reflex-dev/reflex/pull/3447\r\n* [REF-3013] Only run `pyi_generator` on files in reflex/components or reflex/__init__.py by @masenf in https://github.com/reflex-dev/reflex/pull/3452\r\n* Pass _var_is_string parameter to Var.create by @masenf in https://github.com/reflex-dev/reflex/pull/3470\r\n* Override _var_is_string when handling str literals by @masenf in https://github.com/reflex-dev/reflex/pull/3473\r\n* compat: do not patch pydantic if the installed version starts with \"1.\" by @masenf in https://github.com/reflex-dev/reflex/pull/3482\r\n\r\n## New Contributors\r\n* @blast-hardcheese made their first contribution in https://github.com/reflex-dev/reflex/pull/3447\r\n* @kroo made their first contribution in https://github.com/reflex-dev/reflex/pull/3396\r\n* @alexandermorgan made their first contribution in https://github.com/reflex-dev/reflex/pull/3455\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.3...reflex-0.5.4",
      "created_at": "2024-06-07T23:07:28Z",
      "updated_at": "2024-06-13T17:46:23Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZ66Q",
      "number": 3463,
      "title": "Recipe to set Select values dynamically?",
      "body": "I'm trying to implement a Select component whose values are not hardcoded but loaded dynamically.\r\nTo this end I have a `State.get_values()` function that generates these values and writes them to `State._values`.  As I couldn't get the Select to work as I would have expected (i.e. `rx.select(State._values)`) I tried to define a `read_values()` function that returns the `State._values` variable.\r\n\r\nMy frontend code is as follows:\r\n```\r\ndef read_values() -> list[str]:\r\n    return State._values\r\n\r\n@rx.page(on_load=State.get_values)\r\ndef symbols() -> rx.Component:\r\n    return rx.select(State.get_values)\r\n```\r\nwhile my backend is like this:\r\n```\r\nclass State(rx.State):\r\n    _values : list[str] = []\r\n\r\n    def get_values(self):\r\n        self._values = [\"a\",\"b\"]\r\n```\r\n\r\nNo matter what I try I can't get the Select to show the values that I have loaded into the State.  By debugging I see that `read_values()` is called before the page loads and that `State.get_values` is called after that, but then I can't get `read_values()` to be called again, so it makes sense that the component is displaying `[]`.\r\n\r\nAm I approaching this the correct way or is there another way or dealing with this kind of problem?\r\n\r\nEDIT:\r\nI finally managed to get it to work by changing my code this way, even though I'm not sure what `@rx.cached_var` is doing:\r\nfrontend:\r\n```\r\n@rx.page(on_load=State.load_values)\r\ndef symbols() -> rx.Component:\r\n    return rx.select(read_values())\r\n```\r\nwhile my backend is like this:\r\n```\r\nclass State(rx.State):\r\n    _values : list[str] = []\r\n\r\n    @rx.cached_var\r\n    def get_values(self) -> list[str]:\r\n        values = self._values\r\n        return values\r\n\r\n    def load_values(self):\r\n        self._values = [\"a\",\"b\"]\r\n```",
      "created_at": "2024-06-08T14:00:49Z",
      "updated_at": "2024-06-22T18:17:30Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AlQKj",
        "body": "@thomastiotto take a look at our [select docs](https://reflex.dev/docs/library/forms/select) to see how to bind your select to state.\r\n\r\nYour code can be simplified to be\r\n\r\n```python\r\nclass State(rx.State):\r\n    values : list[str] = []\r\n\r\n    def load_values(self):\r\n        self.values = [\"a\",\"b\"]\r\n```\r\nand\r\n```python\r\nrx.page(on_load=State.load_values)\r\ndef symbols() -> rx.Component:\r\n    return rx.select(State.values)\r\n```\r\n"
      },
      "user": {
        "login": "thomast8",
        "avatar_url": "https://avatars.githubusercontent.com/u/32127232?u=6b091dcc7c35e423847fb744500ae849b93f6086&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZ_Tb",
      "number": 3484,
      "title": "What types of columns are available for the DataEditor?",
      "body": "What types of columns are available for the DataEditor? I cannot find that info anywhere.",
      "created_at": "2024-06-12T15:34:41Z",
      "updated_at": "2024-06-12T15:34:42Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NotAnyMike",
        "avatar_url": "https://avatars.githubusercontent.com/u/7406833?u=762055a5126892df236041a20c2bf0c8d6cfac78&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZ8wR",
      "number": 3465,
      "title": "Pages with dynamic routes often lead to 404 on hot reload",
      "body": "Hello,\r\n\r\nI'm running into a strange issue where pages with regular dynamic routes often lead to 404 on hot reload.  By often, I would say it's about 40-50% of my reloads result in this outcome... and when it occurs, it almost always resolves on a subsequent reload, with zero changes to my code.  The issue only occurs on pages with dynamic routes, and I've never observed it on static routes. \r\n\r\nI'm wondering if this is a known issue and if there's a workaround.  \r\n\r\nThanks!",
      "created_at": "2024-06-10T04:47:46Z",
      "updated_at": "2024-06-11T20:41:43Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "hragbalian",
        "avatar_url": "https://avatars.githubusercontent.com/u/5995255?u=7ea536d96444e975ff82ef62349676109584134d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZyHs",
      "number": 3414,
      "title": "v0.5.3 Pre-release thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.5.3a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-05-31 17:45 PDT: 0.5.3a1 pre-release published for testing\r\n2024-06-03: Planned Release of 0.5.3\r\n2024-06-05 13:27 PDT: Public release of 0.5.3\r\n\r\n# Release Notes\r\n\r\n## New Features\r\n\r\n* External assets by @abulvenz in https://github.com/reflex-dev/reflex/pull/3220\r\n* add mapping between client_token and socket id by @Lendemor in https://github.com/reflex-dev/reflex/pull/3388\r\n* add config knob for react_strict_mode by @Lendemor in https://github.com/reflex-dev/reflex/pull/3389\r\n* [REF-2202] Implement event handlers for Plotly by @masenf in https://github.com/reflex-dev/reflex/pull/3397\r\n\r\n## Improvements\r\n* Radix Themes + Tailwind Harmony by @masenf in https://github.com/reflex-dev/reflex/pull/3355\r\n* Explicit deps and interval for computed vars by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3231\r\n* Add domain prop for the PolarRadiusAxis component by @TG199 in https://github.com/reflex-dev/reflex/pull/3349\r\n* [REF-2710]Recommend Running with `REFLEX_USE_NPM=1` if npm run fails after installing packages with bun. by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3399\r\n* refactor: radix section default size by @Jishnu-Nandhiath in https://github.com/reflex-dev/reflex/pull/3406\r\n* [REF-2978] Ignore Redis config_set for AWS ElastiCache by @masenf in https://github.com/reflex-dev/reflex/pull/3401\r\n* [REF-1356] Track changes applied to `Base` subclass via helper method. by @masenf in https://github.com/reflex-dev/reflex/pull/2242\r\n* include resize and radius props to the text area component by @carlosabadia in https://github.com/reflex-dev/reflex/pull/3383\r\n\r\n### Each component import is now independently lazy\r\n\r\nSave time by avoiding imports for components which are not used in the app.\r\n\r\n* [REF-2821]Improve Dynamic Imports by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3345\r\n\r\n## Bug Fixes\r\n\r\n* Layout property not pushed through on rx.plotly by @HongyuHansonYao in https://github.com/reflex-dev/reflex/pull/3394\r\n\r\n## Other Changes\r\n\r\n* [REF-2895]Benchmarks getting skipped on merge by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3369\r\n* Updated in/readme.md with current readme  by @sagarhedaoo in https://github.com/reflex-dev/reflex/pull/3333\r\n* update image for readme by @tgberkeley in https://github.com/reflex-dev/reflex/pull/3395\r\n\r\n## New Contributors\r\n* @sagarhedaoo made their first contribution in https://github.com/reflex-dev/reflex/pull/3333\r\n* @TG199 made their first contribution in https://github.com/reflex-dev/reflex/pull/3349\r\n* @HongyuHansonYao made their first contribution in https://github.com/reflex-dev/reflex/pull/3394\r\n* @carlosabadia made their first contribution in https://github.com/reflex-dev/reflex/pull/3383\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.2...reflex-0.5.3",
      "created_at": "2024-06-01T00:52:50Z",
      "updated_at": "2024-06-05T20:29:54Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY_nq",
      "number": 3152,
      "title": "Has 'capacitor' been considered for mobile app development",
      "body": "It would seem that [capacitor](https://capacitorjs.com/) is a great way to take a web app's ui to a 'native' (sort of) mobile app. \r\n\r\nI don't think this would be especially hard. As long as the front end JS can be passed into capacitor, and told what base url the backend is on, it should be easy.\r\n\r\nOne step further would be to wrap the [ionic framework](https://ionicframework.com/) widget react components, which I beleive is the magic of reflex.\r\n\r\nHas anyone spoken / considered this?\r\n\r\nWhile it's a bit of a slog, I would be happy to work on these things. Building ionic/capacitor apps in python reflex would be just awesome.\r\n\r\nBut to be truly awesome, PWA capabilities would be important, the mobile world is all about 'offline first'",
      "created_at": "2024-04-24T05:46:05Z",
      "updated_at": "2024-06-05T15:50:06Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "camstuart",
        "avatar_url": "https://avatars.githubusercontent.com/u/3146022?u=72273755c89161ede8e3a8ff7c0ca37c12a6c323&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZlel",
      "number": 3361,
      "title": "Can't run the basic reflex app on the 'arm64' packages of my M1 chip mac",
      "body": "Did anybody else see this issue while trying to run reflex on their M1+ mac? Looks like it wants `charset_normalizer` in the x86_64 version. Tried to pip uninstall and install charset_normalizer with and without the default binaries and that didn't fix it. \r\n\r\n```\r\n(venv) adityaarolkar@Aditya-Arolkar-MacBook-Pro my_reflex_project % reflex init --template reflex\r\nTraceback (most recent call last):\r\n  File \"/Library/Frameworks/Python.framework/Versions/3.12/bin/reflex\", line 5, in <module>\r\n    from reflex.reflex import cli\r\n  File \"/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/reflex/reflex.py\", line 14, in <module>\r\n    from reflex_cli.utils import dependency\r\n  File \"/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/reflex_cli/utils/dependency.py\", line 11, in <module>\r\n    import charset_normalizer\r\n  File \"/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/charset_normalizer/__init__.py\", line 24, in <module>\r\n    from .api import from_bytes, from_fp, from_path, is_binary\r\n  File \"/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/charset_normalizer/api.py\", line 5, in <module>\r\n    from .cd import (\r\n  File \"/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/charset_normalizer/cd.py\", line 14, in <module>\r\n    from .md import is_suspiciously_successive_range\r\nImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-darwin.so, 0x0002): tried: '/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-darwin.so' (no such file), '/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))\r\n\r\n```",
      "created_at": "2024-05-21T20:22:55Z",
      "updated_at": "2024-06-03T22:59:53Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AkiIc",
        "body": "Ah the issue wasn't reflex - it was the IDE I was running it on. Was an older version of the Pycharm CE. After updating it, I was able to execute `reflex run` with no issues. "
      },
      "user": {
        "login": "aditya-arolkar-swe",
        "avatar_url": "https://avatars.githubusercontent.com/u/13171215?u=ad8a15e0ac58e5b206e13b9874b88027d42f5279&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZxZ9",
      "number": 3409,
      "title": "[Question] How to disable websockets when only deploy a pure frontend app(no backend need)?",
      "body": "How to disable websockets when only deploy a pure frontend app(no backend need)?",
      "created_at": "2024-05-31T11:12:11Z",
      "updated_at": "2024-06-03T01:37:39Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Aks5B",
        "body": "If the app uses any events, then it requires the backend. Even for frontend events like rx.redirect and rx.toggle_color_mode\n\nThis is something that we need to fix, but idk when we will be able to get to it."
      },
      "user": {
        "login": "luozhouyang",
        "avatar_url": "https://avatars.githubusercontent.com/u/34032031?u=75321239081352e31cb74e6343d500824685ef13&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZsPB",
      "number": 3386,
      "title": "v0.5.2 Pre-release Thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.5.2a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-05-26 14:35 PDT: 0.5.2a1 pre-release published for testing\r\n2024-05-30 17:00 PDT: Public Release of 0.5.2\r\n\r\n# Release Notes\r\n\r\n## New Features\r\n\r\n### Lifespan Tasks\r\n\r\nA lifespan task is either a coroutine which runs while the backend server is running and is cancelled when the server stops, or is can be an `asynccontextmanager` in which case it will run at server startup until `yield` is called, then it will resume as the server is shutting down. In either case, the task is started and stopped during hot reload.\r\n\r\nAny keyword arguments passed to `app.register_lifespan_task` will be passed to the coroutine/contextmanager. If the coroutine takes a parameter called `app`, this will be an instance of the underlying FastAPI object.\r\n\r\n<summary>\r\nSample Code\r\n\r\n<details>\r\n\r\n```python\r\nimport asyncio\r\nfrom contextlib import asynccontextmanager\r\n\r\n\r\ndef fake_answer_to_everything_ml_model(x: float):\r\n    return x * 42\r\n\r\n\r\nml_models = {}\r\n\r\n\r\n@asynccontextmanager\r\nasync def setup_model(app: FastAPI):\r\n    # Load the ML model\r\n    ml_models[\"answer_to_everything\"] = fake_answer_to_everything_ml_model\r\n    yield\r\n    # Clean up the ML models and release the resources\r\n    ml_models.clear()\r\n\r\n\r\nasync def long_running_task(foo, bar):\r\n    print(f\"Starting {foo} {bar} task\")\r\n    some_api = SomeApi(foo)\r\n    try:\r\n        while True:\r\n            updates = some_api.poll_for_updates()\r\n            other_api.push_changes(updates, bar)\r\n            await asyncio.sleep(5)  # add some polling delay to avoid running too often\r\n    except asyncio.CancelledError:\r\n        some_api.close()  # clean up the API if needed\r\n        print(\"Task was stopped\")\r\n\r\n\r\napp = rx.App()\r\napp.register_lifespan_task(setup_model)\r\napp.register_lifespan_task(long_running_task, foo=42, bar=os.environ[\"BAR_PARAM\"])\r\n```\r\n</details>\r\n</summary>\r\n\r\n* add support for lifespan tasks by @Lendemor in https://github.com/reflex-dev/reflex/pull/3312\r\n\r\n## Improvements\r\n* Catch more errors in frontend/backend by @picklelo in https://github.com/reflex-dev/reflex/pull/3346\r\n* Use twine environment variables if set by @ericwb in https://github.com/reflex-dev/reflex/pull/3353\r\n* add style for orientation=vertical in tabs by @Lendemor in https://github.com/reflex-dev/reflex/pull/3332\r\n* Added config for number of gunicorn workers by @Snaipergelka in https://github.com/reflex-dev/reflex/pull/3351\r\n* feat: Optionally comparing fields in Var.contains, e.g. on rx.Base based types. by @abulvenz in https://github.com/reflex-dev/reflex/pull/3375\r\n\r\n## Bug Fixes\r\n* fix rx.cond with ComputedVars and use union type by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3336\r\n* do not check attribute type for var internals by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3357\r\n* [REF-2915] ComponentState subclasses are always treated as mixin by @masenf in https://github.com/reflex-dev/reflex/pull/3372\r\n  * Fix regression when subclassing a ComponentState subclass.\r\n* set config.deploy_url during AppHarness tests by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3359\r\n* [REF-2878] Map fontFamily to fontFamily and --default-font-family by @masenf in https://github.com/reflex-dev/reflex/pull/3380\r\n* url quote the str data passed to rx.download by @masenf in https://github.com/reflex-dev/reflex/pull/3381\r\n\r\n## Readme Updates\r\n* update README to use 0.5.0 by @Lendemor in https://github.com/reflex-dev/reflex/pull/3313\r\n* #3321: Update Chinese README.md by @seewindcn in https://github.com/reflex-dev/reflex/pull/3350\r\n* Update Spanish README.md by @boterop in https://github.com/reflex-dev/reflex/pull/3330\r\n* Update Korean README.md by @owlur in https://github.com/reflex-dev/reflex/pull/3337\r\n\r\n## Other Changes\r\n* Add some minimal validation of pyproject.toml by @ericwb in https://github.com/reflex-dev/reflex/pull/3339\r\n* Suppress runtime warnings by @picklelo in https://github.com/reflex-dev/reflex/pull/3354\r\n\r\n## New Contributors\r\n* @owlur made their first contribution in https://github.com/reflex-dev/reflex/pull/3337\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.1..reflex-0.5.2",
      "created_at": "2024-05-26T21:35:46Z",
      "updated_at": "2024-05-31T00:01:37Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZu3u",
      "number": 3398,
      "title": "Do you guys have support for domain change from <appname>.reflex.run? (to name.tld) (This is self-hosting but a domain change for *.reflex.run)",
      "body": "Do you guys have support for domain change from <appname>.reflex.run to name.tld? This is for self-hosting, and I would like to change the domain for all subdomains under reflex.run. ",
      "created_at": "2024-05-29T06:00:12Z",
      "updated_at": "2024-05-29T20:25:00Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "itsmeadarsh2008",
        "avatar_url": "https://avatars.githubusercontent.com/u/71959210?u=4bfd03e8722332b1b9dfc4ced2a3923bc401d540&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZuNS",
      "number": 3392,
      "title": "[Question] How to manage states correctly and efficiently?",
      "body": "I hava three questions about how to use states  management in Reflex:\r\n* If the websocket reconnects, will the state be restored automatically? \r\n* If I deploy multiple pods in a k8s cluster, how do I store state correctly?\r\n* Using Redis as a state manager will consume a lot of memory when there are a large number of users. Is there any other solution that saves memory and has high performance?",
      "created_at": "2024-05-28T13:59:14Z",
      "updated_at": "2024-05-29T02:30:35Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AkjsZ",
        "body": "> If the websocket reconnects, will the state be restored automatically?\r\n\r\nYes, each user tab has a token that maintains a state on the backend. So even through reconnects / refreshes the state should maintain. See the [architecture post](https://reflex.dev/blog/2024-03-21-reflex-architecture/) for more info.\r\n\r\n> If I deploy multiple pods in a k8s cluster, how do I store state correctly?\r\n\r\nYou will want to use Redis in this case, and set the `redis_url` in the `rxconfig.py` or as an environment variable. This will use Redis as the state manager instead of the in-memory one. [See here](https://github.com/reflex-dev/reflex/tree/main/docker-example#more-robust-deployment) - we need to link this in our main website docs.\r\n\r\n> Using Redis as a state manager will consume a lot of memory when there are a large number of users. Is there any other solution that saves memory and has high performance?\r\n\r\nHow many users are you expecting? How large is your state? The states expire after 1 hour so it won't accumulate, generally it shouldn't take too much memory in Redis. At the end of the day, we will have to store the same data whether it's in Redis or another store."
      },
      "user": {
        "login": "luozhouyang",
        "avatar_url": "https://avatars.githubusercontent.com/u/34032031?u=75321239081352e31cb74e6343d500824685ef13&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZoOW",
      "number": 3377,
      "title": "Deploy Reflex frontend web in Windows Server IIS",
      "body": "Hello all,\r\n\r\nAs a test in my company, we are trying to deploy a small website.\r\nif we run the project directly with \"reflex run\", the web looks fine.\r\n\r\nBut if I export the frontend content, and try to put it in Windows Server's IIS (Windows Server 2022), the web page content looks really bad (seems is not loading colors, styles, css). \r\nlooks like a plain html website with no css at all.\r\n\r\nanyone already deployed the frontend in IIS? any steps on how to achieve it?\r\n\r\nthanks!",
      "created_at": "2024-05-23T14:50:39Z",
      "updated_at": "2024-05-23T14:50:40Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "DrummerViking",
        "avatar_url": "https://avatars.githubusercontent.com/u/62895191?u=3a981f4f8edb03b9aabe430db71b8dd6b32329b1&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZggl",
      "number": 3335,
      "title": "How to extract primitive types from Var?",
      "body": "Hi, I'm looking to implement color assignment for parameters in Reflex, where each parameter name is assigned a color and this mapping is stored. When a parameter name key is encountered, the stored color should be applied. The following code snippet achieves the desired functionality:\r\n``` python\r\nclass ColorState(rx.State):\r\n    colors: list[str] = [\"indigo\", \"cyan\", \"orange\", \"crimson\"]\r\n    parameter_color: dict[str, str] = {}\r\n\r\n    parameter_names: list[str] = []\r\n    parameter_items: list[dict[str, str]] = [{}]\r\n\r\n    def load(self):\r\n        # result from any api\r\n        self.parameter_names = [\"param_a\", \"param_b\"]\r\n        self.parameter_items = [{\r\n            \"param_a\": \"a-1\",\r\n            \"param_b\": \"b-1\"\r\n        }, {\r\n            \"param_a\": \"a-2\",\r\n            \"param_b\": \"b-2\"\r\n        }]\r\n\r\n        self.parameter_color = {\r\n            parameter: self.colors[i % len(self.colors)]\r\n            for i, parameter in enumerate(self.parameter_names)\r\n        }\r\n\r\n\r\ndef show_param_name(param_name: str) -> rx.Component:\r\n    return rx.badge(param_name, color_scheme=ColorState.parameter_color[param_name])\r\n\r\n\r\ndef show_param_dict(param: tuple[str, str]):\r\n    return rx.badge(f\"{param[0]}: {param[1]}\", color_scheme=ColorState.parameter_color[param[0]])\r\n\r\n\r\ndef show_param_items(param_dict) -> rx.Component:\r\n    return rx.hstack(\r\n        rx.foreach(\r\n            param_dict, show_param_dict\r\n        )\r\n    )\r\n\r\n\r\n@rx.page(route=\"/test\", on_load=ColorState.load)\r\ndef example():\r\n    return rx.vstack(\r\n        rx.hstack(\r\n            rx.foreach(\r\n                ColorState.parameter_names, show_param_name\r\n            )\r\n        ),\r\n        rx.foreach(\r\n            ColorState.parameter_items, show_param_items\r\n        ),\r\n        margin=\"10px\"\r\n    )\r\n```\r\n<img width=\"237\" alt=\"스크린샷 2024-05-18 오후 7 43 25\" src=\"https://github.com/reflex-dev/reflex/assets/20010787/57aafa41-0ca8-4eab-a74c-10625062e873\">\r\n\r\nUsing `on_load` to directly retrieve the dictionary works correctly and I can write the code as I intended.\r\n\r\nHowever, the problem arises when I want to separate it using `ComponentState`. Below is the attempt I made to separate it into `ComponentState`. This is not the complete code, and I tried to output only the parameter names:\r\n``` py\r\nclass ParameterComponent(rx.ComponentState):\r\n    colors: list[str] = [\"indigo\", \"cyan\", \"orange\", \"crimson\"]\r\n    parameter_color: dict[str, str] = {}\r\n\r\n    param_names: list[str] = []\r\n    parameter_items: list[dict[str, str]] = [{}]\r\n\r\n    @classmethod\r\n    def show_param_name(cls, param_name: str) -> rx.Component:\r\n        return rx.badge(param_name, color_scheme=cls.parameter_color[param_name])\r\n\r\n    @classmethod\r\n    def get_component(cls, **props):\r\n        cls.param_names: list[str] = props.pop(\"param_names\")\r\n        cls.parameter_items = props.pop(\"parameter_items\")\r\n\r\n        cls.parameter_color = {\r\n            parameter: cls.colors[i % cls.colors.length()]\r\n            for i, parameter in enumerate(cls.param_names)\r\n        }\r\n\r\n        return rx.vstack(\r\n            rx.hstack(\r\n                rx.foreach(\r\n                    cls.param_names, lambda v: cls.show_param_name(v)\r\n                )\r\n            ),\r\n            margin=\"10px\"\r\n        )\r\n\r\nparameter_component = ParameterComponent.create\r\n\r\n@rx.page(route=\"/test2\")\r\ndef example2():\r\n    return parameter_component(\r\n        param_names=[\"param_a\", \"param_b\"],\r\n        parameter_items=[{\r\n            \"param_a\": \"a-1\",\r\n            \"param_b\": \"b-1\"\r\n        }, {\r\n            \"param_a\": \"a-2\",\r\n            \"param_b\": \"b-2\"\r\n        }]\r\n    )\r\n```\r\nWhen running the above code, a `KeyError` occurs as shown below, which seems to be due to `param_name` being converted to a `Var` during the `foreach` iteration:\r\n\r\n```\r\n    return rx.badge(param_name, color_scheme=cls.parameter_color[param_name])\r\n                                             ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^\r\nKeyError: BaseVar(_var_name='v', _var_type=typing.Any, _var_is_local=False, _var_is_string=False, _var_full_name_needs_state_prefix=False, _var_data=None)\r\n```\r\n\r\nI have tried various methods, but it becomes difficult to write the desired logic because primitive types are converted to BaseVar in some way. Is there a way to extract primitive types from Var, or any appropriate methods to handle this in the code above?",
      "created_at": "2024-05-18T10:47:38Z",
      "updated_at": "2024-05-22T11:41:10Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "owlur",
        "avatar_url": "https://avatars.githubusercontent.com/u/20010787?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZfuR",
      "number": 3328,
      "title": "v0.5.1 Pre-release Thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.5.1a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-05-17 08:37 PDT: 0.5.1a1 pre-release published for testing\r\n2024-05-20 10:47 PDT: 0.5.1a2 pre-release published\r\n2024-05-21 12:41 PDT: 0.5.1a3 pre-release published\r\n2024-05-21 17:21 PDT: 0.5.1 Public release\r\n\r\n# Release Notes\r\n\r\n## New Features\r\n* Connection Error modal is now a dismissable toast by @Lendemor in https://github.com/reflex-dev/reflex/pull/3242\r\n* rx._x.client_state: react useState Var integration for frontend and backend by @masenf in https://github.com/reflex-dev/reflex/pull/3269\r\n  * Work in progress, API subject to change\r\n* Support replacing route on redirect by @masenf in https://github.com/reflex-dev/reflex/pull/3072\r\n\r\n## Improvements\r\n* rx.accordion customizability overhaul by @masenf in https://github.com/reflex-dev/reflex/pull/3266\r\n* #3185 fix tailwind.config.js: support corePlugins, important, prefix,… by @seewindcn in https://github.com/reflex-dev/reflex/pull/3260\r\n* FIX - Error: img is a self-closing tag and must neither have children nor use dangerouslySetInnerHTML. by @Yummy-Yums in https://github.com/reflex-dev/reflex/pull/3307\r\n* Get `action`, `cancel`, `on_dismiss` and `on_auto_close` working for rx._x.toast by @masenf in https://github.com/reflex-dev/reflex/pull/3216\r\n* typed mixins and ComponentState by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3196\r\n* [REF-2787] add_hooks supports Var-wrapped hooks by @masenf in https://github.com/reflex-dev/reflex/pull/3248\r\n* Add end line in .gitignore when `reflex init` by @boterop in https://github.com/reflex-dev/reflex/pull/3309\r\n* allow passing kwargs and options to selenium webdriver by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2894\r\n\r\n## Bugfixes\r\n* Only import PyiGenerator when needed by @masenf in https://github.com/reflex-dev/reflex/pull/3291\r\n* Typo in contact email address by @ericwb in https://github.com/reflex-dev/reflex/pull/3292\r\n* properly replace ComputedVars by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3254\r\n* throw error for componentstate in foreach by @Lendemor in https://github.com/reflex-dev/reflex/pull/3243\r\n\r\n## Dependencies\r\n* Bump Bun version by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3281\r\n\r\n## Other Changes\r\n* [REF-2776] enable telemetry for frontend package download subprocess by @martinxu9 in https://github.com/reflex-dev/reflex/pull/3270\r\n* [REF-2774] Add ReflexError and subclasses, send in telemetry by @martinxu9 in https://github.com/reflex-dev/reflex/pull/3271\r\n* [REF-2774] Send runtime error in telemetry by @martinxu9 in https://github.com/reflex-dev/reflex/pull/3276\r\n* Automatically label bug report issues with bug tag by @ericwb in https://github.com/reflex-dev/reflex/pull/3288\r\n* [REF-2803]Add imports benchmarks by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3272\r\n* Mirgrate from pip to uv by @ericwb in https://github.com/reflex-dev/reflex/pull/3285\r\n* Adds dependency review action to verify allowed licensed dependencies by @ericwb in https://github.com/reflex-dev/reflex/pull/3306\r\n\r\n## New Contributors\r\n* @seewindcn made their first contribution in https://github.com/reflex-dev/reflex/pull/3260\r\n* @ericwb made their first contribution in https://github.com/reflex-dev/reflex/pull/3288\r\n* @boterop made their first contribution in https://github.com/reflex-dev/reflex/pull/3309\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.5.0.post1...reflex-0.5.1",
      "created_at": "2024-05-17T15:40:01Z",
      "updated_at": "2024-06-07T23:01:43Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZlcC",
      "number": 3358,
      "title": "The by_alias=True parameter for the dict() and model_dump() functions is not selecting the alias in a class derived from rx.Model correctly.",
      "body": "We are using reflex version 0.5.0post1.  Our code used the dict() function with by_alias=True to get a dictionary from an object of a data class.  The data class inherited from rx.Base and has a few field names.  This is a sample field definition: name: str = Field(alias=\"Name\").  Function dict() worked in the past but stopped working recently.  The key value in the resulting dictionary was \"name\" instead of the alias \"Name\".  We heard that function dict() was deprecated so we tried using the model_dump() function with the parameter by_alias=True.  We changed the data class to inherit from rx.Model instead of rx.Base.  The dictionary returned by model_dump() doesn't use the alias.  We have the same issue as using the dict() function (key name \"name\" in the dictionary instead of the alias \"Name\")",
      "created_at": "2024-05-21T19:39:19Z",
      "updated_at": "2024-05-21T19:39:19Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "aden-collector",
        "avatar_url": "https://avatars.githubusercontent.com/u/9436785?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZd4g",
      "number": 3310,
      "title": "Configuring FastAPI Settings in Reflex",
      "body": "I would like to disable the auto-generated documentation and openapi.json in FastAPI.\r\nTypically, this can be achieved by creating an instance of FastAPI as follows:\r\n\r\n```python\r\napi = FastAPI(docs_url=None, redoc_url=None, openapi_url=None)\r\n```\r\n\r\nHowever, within the `reflex.app.App` class, the FastAPI instance is created as shown below, making it difficult to configure FastAPI in the same manner:\r\n```python\r\n        # Set up the API.\r\n        self.api = FastAPI()\r\n```\r\n\r\nMoreover,\r\n```python\r\napp = rx.App()\r\napp.api.docs_url = None\r\napp.api.redoc_url = None\r\napp.api.openapi_url = None\r\n```\r\ndoes not work as expected.\r\n\r\nWhile\r\n```python\r\napp = rx.App()\r\napp.api = FastAPI(docs_url=None, redoc_url=None, openapi_url=None)\r\napp._add_cors()\r\napp._add_default_endpoints()\r\n```\r\ncurrently seems to work as intended, it involves calling private methods.\r\n\r\nIs there an official way to modify FastAPI settings, including the docs_url configuration?",
      "created_at": "2024-05-16T08:38:41Z",
      "updated_at": "2024-05-20T18:34:50Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jtsuru",
        "avatar_url": "https://avatars.githubusercontent.com/u/33685861?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYrb_",
      "number": 3030,
      "title": "Replace Webpack with a fast bundler",
      "body": "![image](https://github.com/reflex-dev/reflex/assets/71959210/4b868c0d-41d2-49cb-9d9c-8e96bc204a0a)\r\n",
      "created_at": "2024-04-07T04:47:23Z",
      "updated_at": "2024-05-18T03:18:38Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "itsmeadarsh2008",
        "avatar_url": "https://avatars.githubusercontent.com/u/71959210?u=4bfd03e8722332b1b9dfc4ced2a3923bc401d540&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYrcr",
      "number": 3031,
      "title": "This might not be a bug but a request. Please use any performance-based language like Rust to build reflex CLI.",
      "body": "I'm posting this request because the hot reload is very delayed in starting up the web app. It installs the same npm modules whenever I start the app. It is very time-consuming. It would be better if we switch to another language maybe **rust** which has become very popular because of its performance in developer tools like CLIs and package-managers. I predict it would be speedy if we switch to Rust replacing the current `reflex run`. It takes too much time to compile.",
      "created_at": "2024-04-06T11:21:04Z",
      "updated_at": "2025-02-07T13:42:20Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "itsmeadarsh2008",
        "avatar_url": "https://avatars.githubusercontent.com/u/71959210?u=4bfd03e8722332b1b9dfc4ced2a3923bc401d540&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVIxX",
      "number": 1635,
      "title": "Understanding and Resolving Common Error Messages",
      "body": "# object null is not iterable\r\n\r\n> Server Error\r\n> TypeError: object null is not iterable (cannot read property Symbol(Symbol.iterator))\r\n\r\n## This is caused by using an older version of nodejs.\r\n\r\n👉 Ensure the latest version of reflex is being used.\r\n👉 Remove the `.web` and `~/.reflex` directories and re-run `reflex init`.\r\n\r\n# Hydration failed because the initial UI does not match\r\n\r\n> Unhandled Runtime Error\r\n> Error: Hydration failed because the initial UI does not match what was rendered on the server.\r\n\r\n## Often caused by incorrect nesting of components\r\n\r\nParticularly `<p>` and `<div>`, but may also occur with tables.\r\n\r\n👉 Ensure there are no nested `rx.text` or layout components within `rx.text`.\r\n👉 Ensure that all tables are using `rx.thead` and `rx.tbody` to wrap the `rx.tr` rows.\r\n\r\n### No ❌\r\n```python\r\nrx.text(rx.text(\"foo\"))\r\nrx.text(rx.box(\"foo\"))\r\nrx.text(rx.center(\"foo\"))\r\n```\r\n\r\n```python\r\nrx.table(\r\n    rx.tr(\r\n        rx.td(\"foo\"),\r\n    )\r\n)\r\n```\r\n\r\n### Yes ✅\r\n```python\r\nrx.text(\"foo\")\r\nrx.box(rx.text(\"foo\"))\r\nrx.center(rx.text(\"foo\"))\r\n```\r\n\r\n```python\r\nrx.table(\r\n    rx.tbody(\r\n        rx.tr(\r\n            rx.td(\"foo\"),\r\n        ),\r\n    )\r\n)\r\n```\r\n\r\n\r\nSee upstream docs: https://nextjs.org/docs/messages/react-hydration-error\r\n\r\n# Invalid var passed for prop\r\n\r\n> TypeError: Invalid var passed for prop href, expected type <class 'str'>, got value ${state.my_list.at(i)} of type typing.Any.\r\n\r\n## Add a type annotation for list Vars\r\n\r\nFor certain props, reflex validates type correctness of the variable. Expecially when de-referencing lists and dicts, it is important to supply the correct annotation.\r\n\r\n```python\r\nclass State(rx.State):\r\n    # NO\r\n    my_list = [\"a\", \"b\", \"c\"]\r\n\r\n    # YES\r\n    my_indexable_list: list[str] = [\"a\", \"b\", \"c\"]\r\n```\r\n\r\n👉 Add type annotations to all state Vars.\r\n\r\n# Could not format prop\r\n\r\n> TypeError: Could not format prop: {'onSubmit': EventHandler(fn=<function State.submit at 0x105c59a60>)} of type <class 'reflex.style.Style'>\r\n\r\n## Check the component where the event handler is attached\r\n\r\nIf a component receives a prop that is not recognized, it assumes that it is a style property. So if the code is attaching an `on_submit` event handler to a component that does not understand `on_submit`, it will be treated as a style prop, but an event handler will never be a valid style prop, so this exception is raised.\r\n\r\n👉 Ensure `on_submit` or other event handlers are attached to the appropriate component.\r\n\r\n### Common Issue\r\n\r\n```python\r\ndef index() -> rx.Component:\r\n    return rx.form(\r\n        rx.input(id=\"foo\"),\r\n        rx.button(\r\n            \"Submit\",\r\n            type_=\"submit\",\r\n            on_submit=State.submit  # NO! button does not handle on_submit\r\n        ),\r\n    )\r\n```\r\n\r\nInstead attach `on_submit` to the `rx.form` component:\r\n\r\n```python\r\ndef index() -> rx.Component:\r\n    return rx.form(\r\n        rx.input(id=\"foo\"),\r\n        rx.button(\r\n            \"Submit\",\r\n            type_=\"submit\",\r\n        ),\r\n        on_submit=State.submit  # YES\r\n    )\r\n```",
      "created_at": "2023-08-20T19:47:02Z",
      "updated_at": "2024-05-17T18:08:15Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZe0V",
      "number": 3325,
      "title": "Azure Production Deployment (with pictures)",
      "body": "In this walkthrough, I will deploy the app [rx_shout](https://github.com/masenf/rx_shout) to Azure, using an Azure Container App to host the backend and an Azure Static Web App to host the frontend.\r\n\r\nWe will go step by step.\r\n\r\n# Prerequisites\r\n\r\n* Check out a copy of https://github.com/masenf/rx_shout (or use your own app).\r\n* Docker installation and a Docker Hub account registered to push the container image that we will build. (Alternatively you can use an Azure Container Registry, but that will not be covered here)\r\n* Copy the `Dockerfile` from [`docker-examples/production-app-platform`](https://github.com/reflex-dev/reflex/blob/2a7b963469390c3efe8fbcd92c5e4b3d800fc822/docker-example/production-app-platform/Dockerfile) into the project root.\r\n\r\n## Workaround no per-message-deflate\r\n\r\nAzure Container App load balancers do not support per-message-deflate on the websocket, so we have to update the `rxconfig.py` to disable this feature.\r\n\r\n```python\r\nimport uvicorn.workers\r\n\r\nimport reflex as rx\r\n\r\nclass NoWSPerMessageDeflate(uvicorn.workers.UvicornH11Worker):\r\n    CONFIG_KWARGS = {\r\n        **uvicorn.workers.UvicornH11Worker.CONFIG_KWARGS,\r\n        \"ws_per_message_deflate\": False,\r\n    }\r\n\r\n\r\nconfig = rx.Config(\r\n    app_name=\"rx_shout\",\r\n    gunicorn_worker_class=\"rxconfig.NoWSPerMessageDeflate\",\r\n)\r\n```\r\n\r\n## Publish Container\r\n\r\nIn your app directory, build a docker container image and publish it to the registry of your choice.\r\n\r\n```\r\ndocker build -t masenreflex/rx_shout --platform linux/amd64 .\r\ndocker push masenreflex/rx_shout\r\n```\r\n\r\nI had to specify the `--platform linux/amd64` otherwise my Mac will build an arm image, which will not run in Azure Container App.\r\n\r\n\r\n# Resources\r\n\r\n## Resource Group\r\n\r\nIn Azure portal, create a new Resource Group that will hold all objects related to this app deployment.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/21d212ee-48f0-46a0-883b-8777f709280f)\r\n\r\n## Virtual Network\r\n\r\nIn Azure portal, create a new **Virtual Network** that will link the redis cache, app containers, and database.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/e532fd38-f8b2-43c5-a04b-d9848f48655e)\r\n\r\nOn the **IP Addresses** tab, create a 10.0.0.0/16 network with 2 subnets, default and database.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/360cbd1f-a93f-4799-acb9-1f1da464bf4f)\r\n\r\n# Redis\r\n\r\nIn a multi-container deployment, it is essential to use redis so the same user retains their state when moving between application instances. Azure does provide managed redis clusters, which may provide better performance and reliability, at a significant cost.\r\n\r\nIn this deployment, I will go with the low cost option of running the `redis` container as a **Container Instances** resource type.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/be8915ad-c082-4513-ba34-299a6770af9c)\r\n\r\nFlip over to the **Networking** tab and assign it to the default subnet of the vnet we previously created. Ensure the redis port, 6379, is allowed.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/0cf6340e-1618-45d5-acb3-be901f7b7164)\r\n\r\nAfter the container is created, take note of the private IP address it was assigned:\r\n\r\n![Screenshot 2024-05-16 at 16 28 10](https://github.com/reflex-dev/reflex/assets/1524005/ff782b45-88c4-4207-b128-7e25264fb830)\r\n\r\n```\r\nREDIS_URL=redis://10.0.0.4\r\n```\r\n\r\n# Database\r\n\r\nWe will use the **Azure Database for PostgreSQL** resource type to easily deploy the database. For this example, I'm using \"development mode\" because it's much cheaper. Adjust accordingly for heavier workloads.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/5d9f02d0-e119-4e60-a4ac-212109732735)\r\n\r\nSet the database superuser name and password and retain this information for later.\r\n\r\n```\r\nUsername: reflex\r\nPassword: wowjyg-civgy7-nYxpis\r\n```\r\n\r\nOn the **Networking** tab, select Private Access and assign the server to the existing vnet and database subnet that were created earlier.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/ab3b0fe6-3fb9-453f-a201-719ef1d9d523)\r\n\r\nAfter the resource is created, create a new database for the app, called `rx_shout`.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/51c3c56e-b81b-4161-8b6c-7a8ce2d74f71)\r\n\r\nWith the new database created, we can formulate the `DB_URL` which should be passed to the app\r\n\r\n```\r\nDB_URL=postgresql+psycopg2://reflex:wowjyg-civgy7-nYxpis@database.postgres.database.azure.com/rx_shout\r\n```\r\n\r\n# File Storage\r\n\r\nContainers are ephemeral and cannot store persistent data. Since this app accepts user uploads, it needs a place to save them.\r\n\r\nWe will create a new **Storage Account** resource to store our app's files. Ensure that the storage account is created in the same resource group created earlier.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/2372309d-a743-4457-8656-3cb31112bbab)\r\n\r\nFlip over to the **Networking** tab. Select \"Enable public access from selected virtual networks and IP addresses\".\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/370ae60e-2a5e-4935-b5bc-8bbf313d40f4)\r\n\r\nAfter the resource is created, add a new File Share that will store the uploaded files from the app.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/bb599be8-5533-4810-8517-ca15347bc537)\r\n\r\nWhile we're here, open the **Access Keys** page and copy down the access key for this storage account.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/fef9abd9-2804-4783-8a70-9f6df4045bd2)\r\n\r\n```\r\nw9pjDYY5tVH8cZCabKmULDWmTRgVr0oHi74cAb+NczbUGVLmcVzMs0NFNI2f6U8wKNw8nPkc7k0W+AStaZrZNQ==\r\n```\r\n\r\n# Container App\r\n\r\nNow it's time to create the **Azure Container App**, and link it up with the redis, database, and storage that we just created.\r\n\r\nSelect the resource group that we created earlier, and choose the appropriate Region.\r\n\r\n**Important**: Under Container Apps Environment, click \"Create New\" to customize the environment. This is needed to link up the container with the vnet that we created earlier.\r\n\r\n![Screenshot 2024-05-17 at 09 38 11](https://github.com/reflex-dev/reflex/assets/1524005/a4643091-896a-4b6b-91c4-b91bd3408ac7)\r\n\r\nIn the new Container Apps Environment, flip over to the **Networking** tab. Select Yes to use your own virtual network and select the vnet1 that we created earlier.\r\n\r\nFor Infrastructure Subnet select Create New.\r\n\r\n![Screenshot 2024-05-17 at 09 45 24](https://github.com/reflex-dev/reflex/assets/1524005/73093f7a-dbdd-486f-8fc9-002430fc9914)\r\n\r\nCreate a new /24 subnet in the existing address space. I'm calling this one `container-env`.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/9dd30b04-6bc8-44ed-8f47-354f1058bbe1)\r\n\r\nIf you already created a \"container-env\" subnet earlier, just create a new one now.\r\n\r\nSave the Subnet and create the Container Apps Environment.\r\n\r\nOn the Container Apps, select the **Container** tab. Uncheck \"Use quickstart image\". Enter the details of the container that was previously uploaded to the registry.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/194ddf87-fccc-43b6-a435-3e0d9491fec0)\r\n\r\nAt the bottom of this tab, enter the Environment Variables that were noted earlier.\r\n\r\n```\r\nREDIS_URL=redis://10.0.0.4\r\n```\r\n\r\nWe will enter the db url later as a secret.\r\n\r\nOn the **Ingress** tab, enable Ingress. Accept traffic from anywhere. Ignore Client Certificate. Set target port to 8000 (Reflex default backend), and enable Session affinity.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/c0e04050-f26f-4ff8-8f0c-4dc6601421ee)\r\n\r\n# Linkages\r\n\r\nNow that the Container App and Environment are created, we need to make a few tweaks to the other resources to enable communications.\r\n\r\nGo back to the resource group, open the Storage account resource, and open the Networking panel. Select \"Add Existing Virtual Network\" and select the vnet and newly created container-env subnet. Click Enable. Then click Add. Then click Save again after the virtual network modal closes.\r\n\r\n![Screenshot 2024-05-17 at 10 02 35](https://github.com/reflex-dev/reflex/assets/1524005/fc29ee86-f387-4f86-a199-38e7158fd27e)\r\n\r\nGo back to the resource group, open the Container Apps Environment resource, and open the Azure Files panel. Click Add. Enter a name for the volume, the name of the Storage account (why is this not a dropdown??), the Storage Key that we copied earlier, and the name of the share that we created earlier.\r\n\r\nEnsure Access mode is set to Read/Write\r\n\r\n![Screenshot 2024-05-17 at 10 08 07](https://github.com/reflex-dev/reflex/assets/1524005/385b1832-2bd9-4197-81d3-0e48e8f2dcf7)\r\n\r\nGo back to the resource group, open the Container App resource, and open the Secrets panel and add a new secret for `db-url`\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/4c07848c-324d-4306-b0fc-db6b240123ac)\r\n\r\nOpen the Volumes tab. Click Add. Enter the Azure Files information that we added earlier. Click Add, then Save as a New Revision.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/781cbc9a-0d63-4429-8d07-5b30ea7dfebb)\r\n\r\nOpen the Containers tab and click Edit and Deploy.\r\n\r\nClick the name of the container in the bottom half of the page.\r\n\r\n![Screenshot 2024-05-17 at 10 11 54](https://github.com/reflex-dev/reflex/assets/1524005/763a162a-cc9b-4f74-bc94-b50639223bf5)\r\n\r\nScroll down to the environment variables and add DB_URL referencing the secret that we created earlier.\r\n\r\n![Screenshot 2024-05-17 at 10 13 05](https://github.com/reflex-dev/reflex/assets/1524005/19503e59-8ca9-484b-8ec5-f20f4bd5a8ec)\r\n\r\nSwitch over to the **Volume mounts** tab. Select the Volume created earlier. Set Mount path to `/app/uploaded_files`\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/ca55d9e4-0e9b-49d7-846c-453ba7d43c38)\r\n\r\nClick Save. Click Create.\r\n\r\nIt will take a moment to deploy. When the replica is reported as \"Running\", we can check the backend status.\r\n\r\nOpen the Overview panel, copy the application URL and add `/ping` to the end. The browser should display `\"pong\"`\r\n\r\n![Screenshot 2024-05-17 at 10 23 07](https://github.com/reflex-dev/reflex/assets/1524005/3a86bdac-f808-4a8b-af1e-16dc50f516f1)\r\n\r\nTake note of the application URL as this will need to be passed as `API_URL` when exporting the frontend.\r\n\r\n```\r\nAPI_URL=https://rx-shout-backend.gentlemushroom-01fc3053.eastus.azurecontainerapps.io\r\n```\r\n\r\n# Frontend\r\n\r\nCreate a new **Static Web App** resource type.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/575cbb8b-ac96-40f5-9150-845b54605325)\r\n\r\nFor this deployment, I have chosen \"Other\" as the source, because I will be pushing the static files manually using the `@azure/static-web-apps-cli` utility.\r\n\r\n## Export\r\n\r\nBack to the app directory on your development machine, run the following command to create the static files for export.\r\n\r\n```\r\nAPI_URL=https://rx-shout-backend.gentlemushroom-01fc3053.eastus.azurecontainerapps.io reflex export --frontend-only --no-zip\r\n```\r\n\r\n```\r\n(.venv) masenf@minicone deploy-azure2 % API_URL=https://rx-shout-backend.gentlemushroom-01fc3053.eastus.azurecontainerapps.io reflex export --frontend-only --no-zip\r\nInfo: Overriding config value api_url with env var API_URL=https://rx-shout-backend.gentlemushroom-01fc3053.eastus.azurecontainerapps.io\r\n───────────────────────────────────────────────────────────────────────────────── Initializing rx_shout ─────────────────────────────────────────────────────────────────────────────────\r\n[10:29:22] Initializing the web directory.                                                                                                                                  console.py:95\r\nSuccess: Initialized rx_shout\r\n────────────────────────────────────────────────────────────────── Compiling production app and preparing for export. ───────────────────────────────────────────────────────────────────\r\nDeprecationWarning: rx.input.root has been deprecated in version 0.5.0 use rx.input without the .root suffix. It will be completely removed in 0.6.0\r\nCompiling: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 13/13 0:00:00\r\nCreating Production Build:  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 9/9 0:00:16\r\n```\r\n\r\n### Enable 404 Redirect\r\n\r\nFor dynamic routes to work properly, the static frontend needs to redirect missing pages to `/404.html`. Add `staticwebapps.config.json` inside `.web/_static` in your project directory:\r\n\r\n```json\r\n{\r\n  \"responseOverrides\": {\r\n    \"404\": {\r\n      \"rewrite\": \"/404.html\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## Upload To Azure\r\n\r\nGet the deploy key from the Static Web App resource Overview tab\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/284b418a-6133-483e-b14f-4ac48d993cee)\r\n\r\nRun the following command inside the app directory\r\n\r\n```\r\nnpx @azure/static-web-apps-cli deploy --env production --app-location .web/_static --deployment-token d1c0c7a28b86b435d5c53730fc7022bbf3e0afcdfcd1856c410ca87d6984f8b05-4970f971-091b-456f-95a7-e0ce1a98285300f231962\r\n```\r\n\r\nIf successful, it should print a line like\r\n\r\n```\r\n✔ Project deployed to https://gentle-cliff-0d983f20f.5.azurestaticapps.net 🚀\r\n```\r\n\r\n# Testing\r\n\r\nOpen the frontend in the browser and check that the functionality is working.\r\n\r\n## Google Sign In\r\n\r\nBecause this app uses Sign in with Google for authentication, I need to go to my Google Cloud account and enable the frontend address for this Oauth integration. Then I need to add `GOOGLE_CLIENT_ID` as an env var for the container, similarly to how the `DB_URL` was added.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/ccaa01b7-ac64-46e4-b503-c8f37fa0e3ad)\r\n\r\nCopy the Client ID in the upper right corner and add it as an Environment Variable.\r\n\r\n![Screenshot 2024-05-17 at 10 42 10](https://github.com/reflex-dev/reflex/assets/1524005/ba0f1506-8f4a-404f-9e7f-fc87bfbf16c0)\r\n\r\nClick Save. Click Create.\r\n\r\n## Check Again\r\n\r\nOnce the new replica/revision is deployed, open the frontend URL again and check that the app is functional.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1524005/fe67b061-64d6-4624-b3d7-d52dc4c15919)\r\n\r\n# Done\r\n\r\nAt this point, the app is deployed on Azure with persistent database and uploaded files. The number of backend replicas may be scaled up as traffic to the app increases.",
      "created_at": "2024-05-16T23:50:03Z",
      "updated_at": "2024-05-17T17:58:10Z",
      "category": {
        "name": "Guides",
        "emoji": ":books:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZfR8",
      "number": 3327,
      "title": "Warning for Reflex Users in China-中国用户使用reflex前须知",
      "body": "Warning for Reflex Users in China\r\n\r\nHey there!\r\n\r\nIf you're trying to use Reflex in China, heads up—it needs a special network setup (due to china's great firewall). Without it, you'll probably hit a wall and feel frustrated because Reflex just won't run smoothly, if at all. Most Chinese cloud servers face this issue too.\r\n\r\n如果你是中国用户，使用 reflex 前请确保你能科学上网，否则你可能会感到沮丧\r\n\r\n因为众所周日的原因... 使用 reflex 需要特殊的网络环境，如果你无法配置这样的环境，请不要使用 reflex，因为你会很沮丧，因为你根本无法运行 reflex，据我所知在中国国内的云服务器中都是如此。 reflex 有很多依赖（比如 github，比如 bun）在国内环境是无法安装的",
      "created_at": "2024-05-17T09:34:24Z",
      "updated_at": "2024-05-17T09:34:25Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "Jackiexiao",
        "avatar_url": "https://avatars.githubusercontent.com/u/18050469?u=a2003e21a7780477ba00bf87a9abef8af58e91d1&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZeqi",
      "number": 3323,
      "title": "When testing a reflex web app, is there a way to select a file if the rx.upload() component is used to select files to upload?",
      "body": "I've been able to write pytest python code to test a reflex web app.  I use the AppHarness module and am able to locate elements on a reflex web page and manipulate them (click object, etc.).  I am trying to test uploading of files on the app.  The app uses the rx.upload() component to select the files to upload.  I am unable to use a web component identifier (xpath, etc.) to select a file.  Are there any workarounds to select a file for testing like triggering an event or running a javas script function?",
      "created_at": "2024-05-16T20:30:51Z",
      "updated_at": "2024-05-16T22:41:06Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "aden-collector",
        "avatar_url": "https://avatars.githubusercontent.com/u/9436785?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZBJ_",
      "number": 3164,
      "title": "Deploying on Google Cloud",
      "body": "Is it possible to get the complied code of a Reflex app in Fast API and React, so I can deploy on Google?",
      "created_at": "2024-04-25T09:01:55Z",
      "updated_at": "2024-05-16T18:31:38Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AjNiO",
        "body": "`reflex export` should provide a `frontend.zip` which can be hosted with any static webserver, and a `backend.zip` which contains the python code that can be executed via `reflex run --backend-only`.\r\n\r\nThe only limitation with this approach is that you must configure missing pages to redirect to `/404` so that dynamic routes (which don 't have actual html files) can be properly loaded on the client side."
      },
      "user": {
        "login": "dvaryani-bit",
        "avatar_url": "https://avatars.githubusercontent.com/u/77307956?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZUHb",
      "number": 3267,
      "title": "Is ther any repo which has some sample of web apps created with this project?",
      "body": "I have seen somewhere in frameworks in which they have created seperate example repo which contains many example with code so that people can get much better practical idea so my question is - Is there something similar for this project? And if now then are there any plans on it :-))",
      "created_at": "2024-05-09T15:26:49Z",
      "updated_at": "2024-05-15T19:49:19Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Greatz08",
        "avatar_url": "https://avatars.githubusercontent.com/u/55040435?u=1d3751acf272cf5597b70db85c4d0d4422740dfd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZbnT",
      "number": 3303,
      "title": "Querying multiple tables",
      "body": "I'm trying to query two tables inside a single database using the example in the Reflex docs as a base(code directly below), but I get the error \"Warning: Failed to compile initial state with computed vars, excluding them: 'function' object has no attribute 'options'\".\r\n\r\n```\r\nself.locations = session.exec(\r\n                Properties.select.options(\r\n                    sqlalchemy.orm.selectinload(Properties.Name),\r\n                    sqlalchemy.orm.selectinload(Properties.PropertyID).options(\r\n                        sqlalchemy.orm.selectinload(PropertyManagement.Manager)))).all()\r\n```\r\n\r\nI've also tried the select_from method from the SQLAlchemy docs to join the tables(code below) and do get the joined results, but as a sqlalchemy result object that I'm unable to understand how to pass to the frontend.\r\n\r\n```\r\nstmt = select(Properties.Name, PropertyManagement.Manager).select_from(Properties).join(PropertyManagement, PropertyManagement.PropertyID == Properties.PropertyID)\r\n            locations = session.execute(stmt)\r\n```\r\n\r\nDoes anyone have any guidance on how to either solve the error regarding the options attribute or how to use a \"<class 'sqlalchemy.engine.result.ChunkedIteratorResult'>\" in a rx.foreach operation inside a table?",
      "created_at": "2024-05-14T13:34:20Z",
      "updated_at": "2024-05-14T13:34:21Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "chimeracle",
        "avatar_url": "https://avatars.githubusercontent.com/u/87193612?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZa8H",
      "number": 3297,
      "title": "Unexpected Connection Error dialog behavior",
      "body": "I realize Reflex probably designed to maintain a constant connection so the backend can serve the site. However, when viewing pages such as the Reflex documentation, I didn't expect to see a Connection Error dialog whenever my wifi drops. What's worse, is that I can't scroll or navigate the page when this dialog appears. \r\n\r\nI haven't seen any website behave like this except sites that are expected to have an active connection open. For example, if I use a web site that opens remove console of a remote system (think VNC in the browser), I would expect a dropped connection dialog when wifi is down.\r\n\r\nIn the case of Reflex, the [docs site](https://reflex.dev/docs/library/datadisplay/datatable/) will throw a connection error. I think of a docs site as more of a static single page application. And if I ever wanted to read Reflex docs on an airplane, this wouldn't work.\r\n\r\n<img width=\"1045\" alt=\"Screenshot 2024-05-13 at 7 08 56 PM\" src=\"https://github.com/reflex-dev/reflex/assets/5316833/eda30b16-4c19-4d41-90fa-917fabe4bdb1\">\r\n",
      "created_at": "2024-05-14T02:31:09Z",
      "updated_at": "2024-05-14T03:00:17Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "ericwb",
        "avatar_url": "https://avatars.githubusercontent.com/u/5316833?u=19feb96f4a62b2d924a6af94ec7cd319e89910b7&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZS55",
      "number": 3258,
      "title": "v0.5.0 Pre-release thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.5.0a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-05-08 17:06 PDT: 0.5.0a1 pre-release published for testing\r\n2024-05-13 18:00 PDT: 0.5.0 Public release\r\n\r\n# Release Notes\r\n\r\n## Breaking Changes\r\n\r\n### Radix Themes 3.0\r\n\r\n* `rx.badge` now has `size=\"3\"` available, and sizes `\"2\"` and `\"1\"` have been adjusted accordingly\r\n* `rx.input.root` and `rx.input.input` are deprecated. Just use `rx.input` as the root. It accepts `rx.input.slot` as a child.\r\n  * [REF-2789] Graceful deprecation of `rx.input.root` and `rx.input.input` #3249 \r\n\r\n### Previously Deprecated Features Removed\r\n\r\n* `get_asset_path` removed\r\n* passing `state` to `rx.App`\r\n* passing `script_tags` to `rx.App.add_page`\r\n* passing `custom_styles` to `rx.markdown` (use `component_map` instead)\r\n* `rx.State` getters removed (use `self.router` instead)\r\n  * `get_token`\r\n  * `get_sid`\r\n  * `get_headers`\r\n  * `get_client_ip`\r\n  * `get_current_page`\r\n  * `get_query_params`\r\n  * `get_cookies` \r\n\r\nRemove deprecations for 0.5.0 by @picklelo in https://github.com/reflex-dev/reflex/pull/3222\r\n\r\n## New Features\r\n\r\n### Radix Themes 3.0\r\n\r\n* `rx.spinner` - new component for indeterminate loading\r\n* `rx.skeleton` - new component for placeholder loading\r\n* `loading` prop available for\r\n  * `rx.button`\r\n  * `rx.icon_button`\r\n  * `rx.spinner` and `rx.skeleton` -- use `loading=State.is_loading` instead of using `rx.cond`\r\n* `rx.data_list` - new component for showing key value pairs\r\n* `rx._x.progress` - experimental radix themes progress component, supports `duration` for indeterminate progress.\r\n\r\nRadix 3.0 by @Lendemor in https://github.com/reflex-dev/reflex/pull/3159\r\n\r\n### New Public API for wrapping Components\r\n\r\nTo make wrapping components easier and less error prone, the following functions should be overridden when wrapping components:\r\n\r\n* `add_style` - return an `rx.style.Style` for default component styles\r\n* `add_imports` - return a dictionary of `{\"library-name@0.5.0\": {\"tag1\", \"tag2\", \"tag3\"}}` of required imports -- it will automatically be merged with the other component imports.\r\n* `add_hooks` - return a list of javascript snippets that will go inside the component function -- it will be deduped automatically with any other hooks\r\n* `add_custom_code` - return a list of javascript snippets that will go inside the module for each page the component is included in.\r\n\r\nWith these new methods, Reflex will internally call them for each parent class your component inherits from, so there is no need to call `super().add_*` or do any merging yourself.\r\n\r\n* [REF-2523] Implement new public Component API by @masenf in https://github.com/reflex-dev/reflex/pull/3203\r\n* add_style api by @Lendemor in https://github.com/reflex-dev/reflex/pull/3202\r\n\r\n### `State.setvar(var_name, value)`\r\n\r\nA less magic version of the automatic `State.set_x` setter functions which accept the `var_name` as a string.\r\n\r\n* [REF-2273] Implement .setvar special EventHandler by @masenf in https://github.com/reflex-dev/reflex/pull/3163\r\n\r\n### Experimental Toast Component\r\n\r\n```python\r\ndef try_some_toast():\r\n    return rx.fragment(\r\n        rx.button(\"🥂\", on_click=rx._x.toast.info(\"Cheers\"), variant=\"outline\"),\r\n        rx._x.toast.provider(),\r\n    )\r\n```\r\n\r\n* add toast component by @Lendemor in https://github.com/reflex-dev/reflex/pull/3186\r\n### Generic `.throttle` and `.debounce` for all Event types\r\n\r\n```python\r\nclass ThrottleState(rx.State):\r\n    last_event: datetime.datetime = datetime.datetime.now()\r\n\r\n    def handle_mouse_move(self):\r\n        self.last_event = datetime.datetime.now()\r\n\r\ndef throttle_example():\r\n    return rx.box(\r\n        ThrottleState.last_event,\r\n        background_color=rx.color(\"red\", 7),\r\n        width=\"500px\",\r\n        height=\"500px\",\r\n        on_mouse_move=ThrottleState.handle_mouse_move.throttle(500),  # one event every 500ms\r\n    )\r\n```\r\n\r\n* Implement `throttle` and `debounce` as event actions by @masenf in https://github.com/reflex-dev/reflex/pull/3091\r\n\r\n### `rx.container` new prop `stack_children_full_width`\r\n\r\nFor a nice streamlit-like wide layout, use the following snippet:\r\n\r\n```python\r\ndef index():\r\n    return rx.container(\r\n        rx.vstack(content()),\r\n        stack_children_full_width=True,\r\n    )\r\n```\r\n\r\nThis will cause all vstack/hstack children and most stack child components to have `width=\"100%\"` automatically, which provides a nice aesthetic for many apps without applying CSS to individual components.\r\n\r\n* [REF-2574] Default width for Stack (+children) and default padding for container by @masenf in https://github.com/reflex-dev/reflex/pull/3104\r\n\r\n## Improvements\r\n\r\n### Unify on `ruff-format`\r\n* ruff-format: unify Black with Ruff `v0.1` by @Borda in https://github.com/reflex-dev/reflex/pull/2837\r\n* sync ruff version in pyproject.toml with the precommit one by @Lendemor in https://github.com/reflex-dev/reflex/pull/3150\r\n\r\n### Error Messages\r\n* [REF-2636]Improve Error message for unsupported event trigger by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3147\r\n* prevent shadowing by @Lendemor in https://github.com/reflex-dev/reflex/pull/3221\r\n  * Better error when a computed var has the same name as an existing state var.\r\n* [REF-2643]Throw Errors for duplicate Routes by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3155\r\n* [REF-2622]Throw warning for incompatible uvicorn version on windows by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3246\r\n\r\n### `rx.color_mode` changes\r\n\r\n* `rx.color_mode.button` now has built in positioning prop for floating button\r\n  * IconButton for color_mode with nice default and a position props to control it by @Lendemor in https://github.com/reflex-dev/reflex/pull/3165\r\n\r\n### Default style for `rx.upload`\r\n\r\n* Refactor upload component and add styled upload component by @Ifechukwu001 in https://github.com/reflex-dev/reflex/pull/3035\r\n\r\n### Use Alembic Batch Mode for `reflex db makemigrations`\r\n\r\nThis improves compatibility with the default sqlite database when re-typing columns.\r\n\r\n* [REF-2658] Alembic should use batch mode for autogenerate by @masenf in https://github.com/reflex-dev/reflex/pull/3223\r\n\r\n### README\r\n* add color dalle code example by @tgberkeley in https://github.com/reflex-dev/reflex/pull/3108\r\n* a little correction in the \"es\" docs by @JLDev-coder in https://github.com/reflex-dev/reflex/pull/3127\r\n* Add Japanese README.md file by @PeterYusuke in https://github.com/reflex-dev/reflex/pull/3234\r\n\r\n### Miscellaneous\r\n\r\n* add default underline for links by @Lendemor in https://github.com/reflex-dev/reflex/pull/3148\r\n* Expose `color_scheme` on TabsTrigger by @masenf in https://github.com/reflex-dev/reflex/pull/3112\r\n* update blank template by @Lendemor in https://github.com/reflex-dev/reflex/pull/3219\r\n* Clean up config and app API by @picklelo in https://github.com/reflex-dev/reflex/pull/3197\r\n* Fixed unused kwargs in reflex.App by @Snaipergelka in https://github.com/reflex-dev/reflex/pull/3170\r\n  * Now able to pass a custom `SocketIO` instance\r\n\r\n## Bugfixes\r\n\r\n* [REF-2587] Ignore top-level theme appearance by @masenf in https://github.com/reflex-dev/reflex/pull/3119\r\n  * avoids \"flickering\" when the top-level appearance differs from user selected mode\r\n* [REF-2619] Re-init when the template is out of date by @masenf in https://github.com/reflex-dev/reflex/pull/3121\r\n* Fixed app name validation by @Snaipergelka in https://github.com/reflex-dev/reflex/pull/3146\r\n* extend rx.input allowed types by @Lendemor in https://github.com/reflex-dev/reflex/pull/3149\r\n* [REF-2682] Foreach over dict uses Tuple arg value by @masenf in https://github.com/reflex-dev/reflex/pull/3160\r\n  * Improve nested foreach when dict has complex values\r\n* Update CodeBlock class to accept rx.color in custom_style by @khhan0130 in https://github.com/reflex-dev/reflex/pull/3168\r\n* Windows `--frontend-only`  fix ctrl + c by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3181\r\n* [REF-2676][REF-2751]Windows Skip ARM devices on bun install + Telemetry by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3212\r\n* icon_button: Icon size should be specified as int pixels, not str by @masenf in https://github.com/reflex-dev/reflex/pull/3247\r\n* copy background task marker by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3255\r\n  * Can now define background tasks in a state mixin\r\n* Dynamic NoSSRComponent properly renders in prod mode when using State/event handlers\r\n\r\n## Dependencies\r\n* Bump bun version to 1.1.5 by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3176\r\n  * Windows Pin Bun version by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3192\r\n  * Windows Pin Version followup (Use Windows Install Link) by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3193\r\n* [REF-2764] dep update 0.5.0 by @masenf in https://github.com/reflex-dev/reflex/pull/3245\r\n  * gunicorn 22.0.0 with security fix\r\n\r\n## Other Changes\r\n* separate DECORATED_PAGES per reflex app by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3102\r\n* fix: args issue in `__init__` of App class by @nautics889 in https://github.com/reflex-dev/reflex/pull/3141\r\n* [REF-2620] Fallback to npm (not bun) by @masenf in https://github.com/reflex-dev/reflex/pull/3138\r\n* pin macos version for CI by @Lendemor in https://github.com/reflex-dev/reflex/pull/3145\r\n* [REF-2618] Send template info in init telemetry event by @martinxu9 in https://github.com/reflex-dev/reflex/pull/3153\r\n* Integration testing: Firefox compatibility by @masenf in https://github.com/reflex-dev/reflex/pull/3162\r\n* Improved get_attribute_access_type by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3156\r\n* custom component install command to install current project in editable mode by @martinxu9 in https://github.com/reflex-dev/reflex/pull/3200\r\n* migrate deprecated redis.close to redis.aclose by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3199\r\n* allow optional props with None default value by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3179\r\n* Allow StatefulComponent to also be rendered via `__str__` by @masenf in https://github.com/reflex-dev/reflex/pull/3211\r\n* Improved get_attribute_access_type tests by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3180\r\n* Improved implicit harness app names by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3237\r\n* do not access state `__subclasses__`, prevent issues with AppHarness by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3143\r\n* fix screenshot filenames by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3241\r\n* minor test exp_not_equal fixup by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3256\r\n\r\n\r\n## New Contributors\r\n* @nautics889 made their first contribution in https://github.com/reflex-dev/reflex/pull/3141\r\n* @Borda made their first contribution in https://github.com/reflex-dev/reflex/pull/2837\r\n* @Snaipergelka made their first contribution in https://github.com/reflex-dev/reflex/pull/3146\r\n* @Ifechukwu001 made their first contribution in https://github.com/reflex-dev/reflex/pull/3035\r\n* @JLDev-coder made their first contribution in https://github.com/reflex-dev/reflex/pull/3127\r\n* @khhan0130 made their first contribution in https://github.com/reflex-dev/reflex/pull/3168\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.4.9...reflex-0.5.0",
      "created_at": "2024-05-08T21:40:36Z",
      "updated_at": "2024-05-14T01:10:30Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZV41",
      "number": 3275,
      "title": "Do I have to use lambda for rx.foreach?",
      "body": "I'm going through the tutorial in the [docs ](https://reflex.dev/docs/tutorial/adding-state/)for the chat app and I see in `rx.foreach`, lambda is used here:\r\n\r\n```python \r\ndef chat() -> rx.Component:\r\n    return rx.box(\r\n        rx.foreach(\r\n            State.chat_history,\r\n            lambda messages: qa(messages[0], messages[1]),\r\n        )\r\n    )\r\n```\r\n\r\nIf I didn't want to use lambda, how would I go about that?\r\n\r\nFirst I thought I could do:\r\n```python\r\nqa(State.chat_history[0], State.chat_history[1])\r\n```\r\nbut that was dumb.\r\n\r\nSo I though I could just convert to a function because that's what lambda is:\r\n\r\n```python\r\ndef chat() -> rx.Component:\r\n    return rx.box(\r\n        rx.foreach(\r\n            State.chat_history,\r\n            test(State.chat_history),\r\n        )\r\n    )\r\n\r\ndef test(messages):\r\n    return qa(messages[0], messages[1])\r\n```\r\n\r\nAnd then I realized idk wtf i'm doing here. For reference:\r\n\r\n**qa function**\r\n```python\r\ndef qa(question: str, answer: str) -> rx.Component:\r\n    return rx.box(\r\n\r\n        rx.box(\r\n            rx.text(question, style=style.question_style),\r\n            text_align=\"right\",\r\n            ),\r\n\r\n        rx.box(\r\n            rx.text(answer, style=style.answer_style),\r\n            text_align=\"left\",\r\n            ),\r\n\r\n        margin_y=\"1em\",\r\n    )\r\n```\r\n**State class for chat history list**\r\n```python\r\nclass State(rx.State):\r\n    # The current question being asked.\r\n    question: str\r\n\r\n    # Keep track of the chat history as a list of (question, answer) tuples.\r\n    chat_history: list[tuple[str, str]]\r\n\r\n    def answer(self):\r\n        # Our chatbot is not very smart right now...\r\n        answer = \"I don't know!\"\r\n        self.chat_history.append((self.question, answer))\r\n        self.question = ''\r\n```\r\n\r\nSo I'm just curious at this point, how would I go about not using lambda, or is it necessary for this? ",
      "created_at": "2024-05-10T19:13:43Z",
      "updated_at": "2024-05-13T18:28:36Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Aj8-p",
        "body": "I asked the discord. I was close but the alternative was\r\n\r\n```python\r\ndef chat() -> rx.Component:\r\n    return rx.box(\r\n        rx.foreach(\r\n            State.chat_history,\r\n            test\r\n        )\r\n    )\r\n\r\ndef test(messages):\r\n    return qa(messages[0], messages[1])\r\n```"
      },
      "user": {
        "login": "Dekubaka",
        "avatar_url": "https://avatars.githubusercontent.com/u/66179176?u=4f656b65456551e9df079a477389c591d42edae7&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZTJx",
      "number": 3259,
      "title": "只能本地访问端口，无法其他设备访问",
      "body": "![image](https://github.com/reflex-dev/reflex/assets/104618660/eb39570a-4b2d-4007-bee9-34407c3b7525)\r\nreflex run 之后查看监听端口只有tcp6的，没有tcp的，其他设备无法访问到\r\n![image](https://github.com/reflex-dev/reflex/assets/104618660/efb3275c-830f-4ce9-a869-f7d27478b5c9)\r\n",
      "created_at": "2024-05-09T03:00:44Z",
      "updated_at": "2024-05-09T08:05:43Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "wwxlll",
        "avatar_url": "https://avatars.githubusercontent.com/u/104618660?u=8449eb25f605929ff7733c28fefd38202f5e173a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZSfT",
      "number": 3251,
      "title": "How can I set rx.Config to deploy self-hosting on Kubernetes (GKE)?",
      "body": "Hi, I have some questions.\r\n\r\nI want to deploy my app on Kubernetes using self-hosting.\r\n\r\nBut I have some problems.\r\n\r\nMy problem is this:\r\n\r\nWhen I set the ingress as blah.blah.com, the pod is okay, but I can't find the backend server. I receive this error message:\r\n\r\n```\r\nCannot connect to server: timeout. Check if server is reachable at ws://blah.blah.com:8000/_event\r\n```\r\n\r\nIt's not the situation that I expected, I expected to route to `http://localhost:8000/_event`\r\n\r\nHowever, when I set the api_url value and ingress to \"http://blah-api.blah.com\", it works well.\r\n\r\nWhy does it route to ws://blah.blah.com:8000/_event when I set api_url to http://localhost:8000?\r\n\r\n---\r\n\r\nI attaching my kubernetes deployment's code and python reflex rxconfig code\r\n\r\n```yaml\r\n          env:\r\n            - name: API_URL\r\n              value: \"http://localhost:8000\"\r\n            - name: DEPLOY_URL\r\n              value: \"http://localhost:3000\"\r\n          command: [\"sh\", \"-c\", \"poetry run reflex run --env prod\"]\r\n          ports:\r\n            - name: http\r\n              containerPort: 3000\r\n              protocol: TCP\r\n            - name: api\r\n              containerPort: 8000\r\n              protocol: TCP\r\n```\r\n\r\n\r\n```python\r\nconfig = rx.Config(\r\n    app_name=\"blahblah\",\r\n    api_url=os.getenv(\"API_URL\", 'http://localhost:8000'),\r\n    deploy_url=os.getenv(\"DEPLOY_URL\", 'http://localhost:3000'),\r\n    backend_host=os.getenv(\"BACKEND_HOST\", '0.0.0.0'),\r\n)\r\n```",
      "created_at": "2024-05-08T16:19:00Z",
      "updated_at": "2024-05-12T08:43:46Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "ppippi-dev",
        "avatar_url": "https://avatars.githubusercontent.com/u/61408680?u=4ac146513d5ee62d7dc650a142fa25d7db4bffb3&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZLhv",
      "number": 3217,
      "title": "Accessing multiple databases",
      "body": "What would be the best way to go about accessing multiple databases? Currently, I'm using the db_url in the rxconfig file for the main database and passing the whole connection string for a second database in the rx.session(). Is there a cleaner, more secure way to do it with a second db_url or something in the rxconfig file?",
      "created_at": "2024-05-03T13:17:28Z",
      "updated_at": "2024-05-06T18:59:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Ajmkp",
        "body": "@chimeracle Currently the models aren't really tied to a database, it's the sessions themselves. Could you use your original approach with a helper function to achieve this? I think it should be pretty clean:\r\n\r\n```python\r\ndef session2():\r\n    return rx.session(db_url2)\r\n\r\n...\r\n\r\nwith session2() as session:\r\n   ...\r\n```"
      },
      "user": {
        "login": "chimeracle",
        "avatar_url": "https://avatars.githubusercontent.com/u/87193612?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZKxO",
      "number": 3215,
      "title": "Error removing .web/_static/server in deploy",
      "body": "I get errors while deploying. Somehow the reflex deploy statement tries to delete .web/_static/server but it is nog empty. See output below.\r\n\r\nMy command is\r\n```bash\r\nreflex deploy  --no-interactive -k electudetranslate -r fra\r\n```\r\nand then some environment variables.\r\nThe funny thing is: it always works when I immediately try the same command again.\r\n\r\n```bash\r\nCreating Production Build failed with exit code 1\r\n\r\n> export-sitemap\r\n> next build && next-sitemap\r\n\r\n   Linting and checking validity of types ...\r\n   ▲ Next.js 14.0.1\r\n\r\n   Creating an optimized production build ...\r\n ✓ Compiled successfully\r\n   Collecting page data ...\r\n   Generating static pages (0/3) ...\r\n\r\n ✓ Generating static pages (3/3)\r\n   Finalizing page optimization ...\r\n   Collecting build traces ...\r\n\r\n> Build error occurred\r\n[Error: ENOTEMPTY: directory not empty, rmdir '/Users/hp/proj/reflextranslate/.web/_static/server'] {\r\n  errno: -66,\r\n  code: 'ENOTEMPTY',\r\n  syscall: 'rmdir',\r\n  path: '/Users/hp/proj/reflextranslate/.web/_static/server'\r\n}\r\nRun with --loglevel debug  for the full log.\r\nCreating Production Build:  ━━━━━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━  56% 5/9 0:00:11\r\nUnable to export due to: 1```",
      "created_at": "2024-05-02T19:19:20Z",
      "updated_at": "2024-05-07T07:44:27Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AjmdW",
        "body": "@hpharmsen Ah got it that makes sense now. The website reloads whenever there's changes in the `.web` directory so doing an export while it's running may mess things up. There's probably a workaround for this, but I'd suggest just stopping the app before exporting or deploying as quick fix."
      },
      "user": {
        "login": "hpharmsen",
        "avatar_url": "https://avatars.githubusercontent.com/u/16463806?u=285ed11d59031d0e249e0a351affd3fefe7b6415&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZMbb",
      "number": 3225,
      "title": "Implementing useState similar to React to achieve stateful functional components",
      "body": "Hello,\r\n\r\nJust discovered Reflex recently. Amazing piece of work here.\r\n\r\nI've been lurking at the source code and played around with the framework to get to know its internal workings better.\r\n\r\nHere is what I came up with : \r\n\r\n```python\r\nimport reflex as rx\r\nimport uuid\r\n\r\ndef use_state(default,vartype=None):\r\n    \"\"\"\r\n    Creates a state with a single var 'value' set to default and returns the corresponding state var and setter\r\n    \"\"\"\r\n    vartype=vartype or type(default)\r\n    attributes={\r\n        'value':default,\r\n        '__annotations__':{'value':vartype}\r\n    }\r\n    cls_name=\"State_\"+str(uuid.uuid4())\r\n    state=type(cls_name,(rx.State,),attributes)\r\n    state_var=state.value\r\n    state_setter=state.set_value\r\n    return state_var,state_setter\r\n\r\n#Usage:\r\n\r\ndef button(initial_count:int=0) -> rx.Component:\r\n    count,set_count=use_state(initial_count)\r\n    return rx.button(count,on_click=set_count(count+1))\r\n\r\n@rx.page()\r\ndef index() -> rx.Component:\r\n    return rx.box(\r\n        button(),\r\n        button(10)\r\n    )\r\n\r\napp = rx.App()\r\n```\r\n\r\nWhich successfully produces two stateful buttons with independent states.\r\nThe state is purely internal to the button and can't be referenced from outside.\r\nIdk, maybe this has some relevance for some use cases where you just want to quickly use a state in a purely functional component.  \r\n",
      "created_at": "2024-05-04T10:16:23Z",
      "updated_at": "2024-05-06T16:36:19Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "B4PT0R",
        "avatar_url": "https://avatars.githubusercontent.com/u/139615657?u=586a4d09a79d487e20d790d3898e07994ed26e27&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZH4M",
      "number": 3190,
      "title": "How to mix React JS code with Reflex to add components and Providers?",
      "body": "I would like to add some code for Authentication in the reflex app, which is [msal-react](https://www.npmjs.com/package/@azure/msal-react) so that I can wrap `<MsalProvider>` around the whole app. Other use would be to import JSX components and use them from a local folder. Can this be achieved?",
      "created_at": "2024-04-30T11:16:50Z",
      "updated_at": "2024-05-03T23:37:17Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "nb-programmer",
        "avatar_url": "https://avatars.githubusercontent.com/u/46126206?u=dae1fccfed8490320e84332511597818f72c9f87&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZMBV",
      "number": 3224,
      "title": "Capture id of components that scrolls off screen",
      "body": "Hello,\r\n\r\nI'm wondering if there's a straightforward way to capture the id of components that scrolls off screen?  As a basic example, I've got a list of cards that I've populated with a foreach where each card has an id that is also the header for the card.  When I scroll through the cards, I'd like to capture the id that scrolled out of the viewport so that I can display the header in a sticky area at the top of the screen. \r\n",
      "created_at": "2024-05-03T20:56:56Z",
      "updated_at": "2024-05-03T21:11:39Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "hragbalian",
        "avatar_url": "https://avatars.githubusercontent.com/u/5995255?u=7ea536d96444e975ff82ef62349676109584134d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZJxA",
      "number": 3209,
      "title": "I have problems accessing the parameters of the dynamic routes",
      "body": "I have a project with dynamic routes which are suposed to be an integer but i don't know how to access the parameter in order to extract the integer information it should have, please help.",
      "created_at": "2024-05-01T22:13:43Z",
      "updated_at": "2024-05-02T00:37:16Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Unlucko",
        "avatar_url": "https://avatars.githubusercontent.com/u/82614744?u=d8b3f7f635e4b3019f6b58ca18478471367dd622&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXtHH",
      "number": 2592,
      "title": "How to implement stateful, reusable components?",
      "body": "Hello,\r\n\r\nI'm trying to implement a generic modal component that can be specialized for different use cases. The modal component knows how to show/hide, has a close button and can display error messages. Individual components can contain forms, ask to confirm actions etc.\r\n\r\nI was thinking to define a `@modal` wrapper to decorate individual components and a `ModalState` \"superclass\", like:\r\n```python\r\nclass ModalState(rx.State):\r\n    is_visible: bool = False\r\n\r\n    def _show(self):\r\n        if self.is_visible:\r\n            return\r\n        self.is_visible = True\r\n        self._on_show()\r\n\r\n    def _hide(self):\r\n        if not self.is_visible:\r\n            return\r\n        self.is_visible = False\r\n        chained_event = self._on_hide()\r\n        return chained_event\r\n\r\n    def _on_show(self):\r\n        pass\r\n\r\n    def _on_hide(self):\r\n        pass\r\n\r\ndef modal(header: str, state: type(ModalState)):\r\n    def decorator(rx_component_generator):\r\n        def wrapper():\r\n            return rx.box(\r\n                rx.modal(\r\n                    rx.modal_overlay(\r\n                        rx.modal_content(\r\n                            rx.modal_header(header),\r\n                            rx.modal_body(\r\n                                rx_component_generator()\r\n                            ),\r\n                            rx.modal_footer(\r\n                                rx.button(\r\n                                    \"Close\",\r\n                                    on_click=state.hide\r\n                                )\r\n                            ),\r\n                        )\r\n                    ),\r\n                    is_open=state.is_visible,\r\n                ),\r\n            )\r\n        return wrapper\r\n    return decorator\r\n\r\n\r\nclass CreateAllocationState(modal.ModalState):\r\n    ...\r\n\r\n@modal.modal(\r\n        header=\"Create a new user\",\r\n        state=CreateUserState)\r\ndef create_user_modal() -> rx.Component:\r\n    return rx.form(...)\r\n```\r\n\r\n`CreateUserState` would inherit from `ModalState`, which holds state and accessors (e.g. `is_visible`) owned by the modal, and add its own logic.\r\n\r\nThe problem I'm facing is that -in my understanding- the same `ModalState` is shared across all its children, so `CreateUserState(ModalState)` and `DeleteUserState(ModalState)` share the same `is_visible` value, which is obviously not desired.\r\n\r\nIs such use case supported? What is the recommended way to implement components that can reuse front-end as well as state logic?\r\n\r\nThank you!",
      "created_at": "2024-02-13T15:34:21Z",
      "updated_at": "2024-05-01T19:59:20Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AgQ9x",
        "body": "This is a possible use case, but reflex currently does not support it very well.\r\n\r\nA potential option is to have `is_visible` as a dict mapping some id to the bool value. Then each modal created by the decorator can generate an `id` and use it to index into the dict (and event handlers) to control the state for that particular modal."
      },
      "user": {
        "login": "Clemen-G",
        "avatar_url": "https://avatars.githubusercontent.com/u/3084704?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZJno",
      "number": 3208,
      "title": "Horizontal scalability on k8s",
      "body": "I'm wondering how a reflex app can scale on k8s. I guess that with several users accessing an app, a single pod won't be enough.\n\nWould scaling additional frontend and backend containers in different pods work?\n",
      "created_at": "2024-05-01T18:55:15Z",
      "updated_at": "2024-05-01T19:23:17Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "fabricebrito",
        "avatar_url": "https://avatars.githubusercontent.com/u/1178901?u=9a585320f2439b4281d00077915889431af32c9f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZIC4",
      "number": 3191,
      "title": "Send a file blob to the front-end",
      "body": "My back-end generates a temporary (xml) file which I want to offer to the user as a download.\r\n\r\nIn JavaScript I would do:\r\n`let blob = new Blob([myXml], {type: 'application/xml'}); `\r\n`let url = URL.createObjectURL(blob);`\r\n  \r\n  How can I do this in Reflex?\r\n",
      "created_at": "2024-04-30T13:51:58Z",
      "updated_at": "2024-04-30T18:15:35Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AjZKA",
        "body": "See examples here: https://reflex.dev/docs/assets/upload-and-download-files/#with-\r\n\r\nYou can pass `str` or `bytes` to the `rx.download` special event to trigger a download of temporary data."
      },
      "user": {
        "login": "hpharmsen",
        "avatar_url": "https://avatars.githubusercontent.com/u/16463806?u=285ed11d59031d0e249e0a351affd3fefe7b6415&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZBqo",
      "number": 3167,
      "title": "Wrapping external module",
      "body": "Hello,\r\n\r\nI would like to know how can I wrap a custom module dedicated to authentication.\r\n\r\nI have the documentation of this module for a typical usage in a React application but I'm not sure how to implement it in my Reflex app.\r\n\r\nI have already read the Reflex documentation regarding how to wrap an external module an I'm able to install it but I don't know how to use it, like how to call methods from this module.\r\n\r\nBy the way, I'm using the twitter example as a template to implement it.\r\n\r\nI think I could use the example in this discussion [here](https://github.com/orgs/reflex-dev/discussions/2539) to implement it but I'm not using a Python module.\r\n\r\nThanks",
      "created_at": "2024-04-25T16:46:54Z",
      "updated_at": "2024-04-29T13:36:23Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "n4rk0o",
        "avatar_url": "https://avatars.githubusercontent.com/u/11425001?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY9o3",
      "number": 3130,
      "title": "Getting data from database",
      "body": "I have a question, how do you easily get data from the database so that it can be processed?\r\n\r\nwith rx.session() as session:\r\n            self.lines = session.exec(select(line)).all()\r\n\r\nreturns Var that is is difficult to iterate over and process further",
      "created_at": "2024-04-22T13:45:13Z",
      "updated_at": "2024-04-26T18:49:22Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "edvard-bjarnason",
        "avatar_url": "https://avatars.githubusercontent.com/u/13382663?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZCTL",
      "number": 3169,
      "title": "Reflex Hosting Feedback",
      "body": "Hi everyone, we want to know what we can do to improve your hosting experience.\r\n\r\nPlease fill out this 5-question survey if you have time and let us know the problems you are facing and the new features you want to see next: https://docs.google.com/forms/d/e/1FAIpQLSd2wKQ_ZDa6ayiT3juurFG7IvWxhxbTJqzmlBz_R2tSlEShkg/viewform?usp=sharing ",
      "created_at": "2024-04-26T07:56:28Z",
      "updated_at": "2024-04-26T07:56:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AZAzt",
      "number": 3161,
      "title": "HTML and Style rendering",
      "body": "When you make an HTML component via rx.html(\"\"), what path does it take to convert the Python code to JavaScript (or something that the browser can process)? Or like what files does it interact with?",
      "created_at": "2024-04-25T02:16:28Z",
      "updated_at": "2024-04-25T22:39:46Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "kylelee1027",
        "avatar_url": "https://avatars.githubusercontent.com/u/114262078?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY-w4",
      "number": 3144,
      "title": "Where do Reflex backend (fastapi) logs go?",
      "body": "Where can I see the log statements generated by the python logging library?",
      "created_at": "2024-04-23T12:01:34Z",
      "updated_at": "2024-04-24T18:23:46Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "btbytes",
        "avatar_url": "https://avatars.githubusercontent.com/u/1047?u=36d591672a3f572453b5f3f7b4a5e685fde218d4&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUrNp",
      "number": 1380,
      "title": "can pynecone be used for Mobile app in future? like cross-platform",
      "body": "It is not a bug, i just wonder, can pynecone be used for mobile app in future development? Thanks for good work",
      "created_at": "2023-07-10T09:50:43Z",
      "updated_at": "2024-04-24T05:47:12Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "ahmad-shahi",
        "avatar_url": "https://avatars.githubusercontent.com/u/24645016?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY6Ev",
      "number": 3118,
      "title": "v0.4.9 Pre-release Thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.4.9a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-04-19 08:29 PDT: 0.4.9a1 is released for  testing\r\n2024-04-22 10:57 PDT: 0.4.9a2 is released for testing\r\n2024-04-23 09:56 PDT: 0.4.9 is released!\r\n\r\n# Release Notes\r\n\r\n## New Features\r\n\r\n* add pathlib.Path serializer by @Lendemor in https://github.com/reflex-dev/reflex/pull/3082\r\n\r\n## Improvements\r\n\r\n* Simplify `run_process_with_fallback` logic by @masenf in https://github.com/reflex-dev/reflex/pull/3089\r\n* Use Fallback command on all platforms by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3099\r\n* allow set in var.contains by @martinxu9 in https://github.com/reflex-dev/reflex/pull/3113\r\n\r\n## Bug Fixes\r\n\r\n* [REF-2586] Pass child event_trigger through DebounceInput by @masenf in https://github.com/reflex-dev/reflex/pull/3092\r\n  * `on_key_down` / `on_key_up` work with controlled inputs \r\n* [REF-2589] Use errors='replace' with subprocess by @masenf in https://github.com/reflex-dev/reflex/pull/3096\r\n  * Avoid UnicodeDecodeError on windows\r\n* [REF-2587] Ignore top-level theme appearance (#3119)\r\n\r\n## Experimental\r\n\r\n* Layout components by @Lendemor in https://github.com/reflex-dev/reflex/pull/3066\r\n\r\n## Other Changes\r\n\r\n* do not clear all decorated pages during AppHarness tests by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3093\r\n* improve auto-generated AppHarness app_name with partials by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3088\r\n* app_source can be partial by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/3100\r\n* pin react-focus-lock to 2.11.3 (#3123)\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.4.8...reflex-0.4.9",
      "created_at": "2024-04-19T15:30:27Z",
      "updated_at": "2024-04-23T16:57:54Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY3YM",
      "number": 3097,
      "title": "Is there a way to view /cancel running backend tasks?",
      "body": "Hi, all, \r\n\r\nthanks for all the great work\r\n\r\nI'm wondering , if in a web tab, I started a long-run backend task, is there a way to view all the long running tasks and then preferably, an ID associated with each of the long-run tasks, user then has the option to kill these long running tasks ? ",
      "created_at": "2024-04-17T09:22:44Z",
      "updated_at": "2024-04-22T18:42:14Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVjI2",
      "number": 1838,
      "title": "[RFC] New background task API",
      "body": "The next release (0.2.8) will include support for **background tasks** to allow long running jobs to interact with the state without blocking UI interactions.\r\n\r\nA background task is a _special_ event handler which runs concurrently with other event handlers.\r\n\r\nTo avoid two event handlers modifying the state at the same time, a background task may only set state vars in a context block. Within an `async with self` context block an **exclusive lock** is acquired on the state, preventing other event handlers and background tasks from also modifying the state. After exiting the context, any updates are sent to the frontend, similar to using `yield` in a normal event handler.\r\n\r\n```python\r\nclass State(rx.State):\r\n\r\n    counter: int = 0\r\n\r\n    @rx.background\r\n    async def bg_task(self):\r\n        for ix in range(10):\r\n            async with self:\r\n                # state mutation is only allowed inside context block\r\n                self.counter += 1\r\n\r\n            # await long operations outside the context to avoid blocking\r\n            await asyncio.sleep(0.5)\r\n```\r\n\r\nYour feedback, suggestions, and comments are welcome 🙏.\r\n\r\n### Want to test it?\r\n\r\n```console\r\npip install git+https://github.com/reflex-dev/reflex@masenf/oob-state-update\r\n```",
      "created_at": "2023-09-19T21:19:35Z",
      "updated_at": "2024-04-22T17:34:55Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY5Jh",
      "number": 3110,
      "title": "Is there a way to expand the width of the dialog?",
      "body": "I've tried modifying the size of the content to \"4\" and inserting an inline style modifying \"width\", but neither seem to have any effect.",
      "created_at": "2024-04-18T19:10:31Z",
      "updated_at": "2024-04-19T21:53:03Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Ai8p5",
        "body": "@hragbalian It looks like they're setting a `max_width` prop on the content - I was able to make it wider like this:\r\n\r\n```python\r\nrx.dialog.root(\r\n    rx.dialog.trigger(rx.button(\"Open Dialog\")),\r\n    rx.dialog.content(\r\n        rx.dialog.title(\"Welcome to Reflex!\"),\r\n        rx.dialog.description(\r\n            \"This is a dialog component. You can render anything you want in here.\",\r\n        ),\r\n        rx.dialog.close(\r\n            rx.button(\"Close Dialog\", size=\"3\"),\r\n        ),\r\n        max_width=\"100vw\", # Make this a bigger value, it's fixed by default.\r\n        width=\"100vw\",\r\n    ),\r\n)\r\n```\r\n        "
      },
      "user": {
        "login": "hragbalian",
        "avatar_url": "https://avatars.githubusercontent.com/u/5995255?u=7ea536d96444e975ff82ef62349676109584134d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY585",
      "number": 3117,
      "title": "How to add <link> tag to <head> ?",
      "body": "Hello. There was an issue #662 (Possibly to add link tags in <head>). It's closed as completed. But I can't find how to do it. Every bit of information I find is about `rx.script`. Is there a way to do it?",
      "created_at": "2024-04-19T13:38:39Z",
      "updated_at": "2024-04-19T19:04:48Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Ai-yv",
        "body": "You can only do it for the whole app, but it looks something like this\r\n\r\n```python\r\napp = rx.App(\r\n    head_components=[\r\n        rx.el.link(\r\n            href=\"fancy.css\",\r\n            rel=\"alternate stylesheet\",\r\n            title=\"Fancy\",\r\n        ),\r\n    ]\r\n)\r\n```\r\n\r\nYou can also add meta tags via the same method with `rx.el.meta`.\r\n\r\nAnd it's not really supported, but you can also include raw inline styles via\r\n\r\n```python\r\nrx.el.element.Element.create(\"p {color: blue}\", tag=\"style\"),\r\n```"
      },
      "user": {
        "login": "regul8or",
        "avatar_url": "https://avatars.githubusercontent.com/u/21054394?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AY4Kj",
      "number": 3105,
      "title": "Run tasks for duration of client connection (i.e. start/stop on connect/disconnect)",
      "body": "I'd like to run some tasks in the background that can periodically push updates to the user, but I'm not sure how best to handle the lifetime of the task. \r\n\r\nTo give a bit more context, here is a minimal example of the sort of thing I'm trying to do.\r\n```\r\nclass SomeState(rx.State):\r\n    some_value: int = 0\r\n    \r\n    @rx.background\r\n    async def long_running_task(self):\r\n        r = get_redis()\r\n        async with r.pubsub(ignore_subscribe_messages=True) as pubsub:\r\n            await pubsub.subscribe(\"some_client_specific_channel\")\r\n            async for message in pubsub.listen():\r\n                if message[\"type\"] == \"message\":\r\n                    if message['data'] == 'STOP':\r\n                        break\r\n                    else:\r\n                        self.some_value = int(message[\"data\"])\r\n```\r\n\r\n\r\n\r\n@masenf Gave a nice suggestion a while ago in #1857 that was similar. This is the relevant part:\r\n```\r\napp = rx.App()\r\napp.compile()\r\n\r\n\r\n# Handle websocket disconnect events to avoid memory leaks when sessions are closed\r\norig_disconnect = app.event_namespace.on_disconnect\r\n\r\ndef disconnect_handler(sid):\r\n    orig_disconnect(sid)\r\n\r\n    clientToken, token = tokens_by_sid.get(sid, (None, None))\r\n    print(f\"Disconnect event received for {sid}. Removing {token} from shared {clientToken}\")\r\n\r\n    shared_sessions_by_token.get(clientToken, set()).discard(token)\r\n    tokens_by_sid.pop(sid, None)\r\n\r\napp.event_namespace.on_disconnect = disconnect_handler\r\n```\r\n\r\nWhere something similar could be done for `on_connect`. \r\n\r\nThis is close to what I am looking for in that the events trigger at client connect/disconnect. I'm just not sure how I can start a background task from the `on_connect` equivalent. In my case, I'd use the `on_disconnect` to send `STOP` to  \"some_client_specific_channel\". \r\n\r\n\r\nThere is also this #1970, which is also similar in nature. In fact, I am currently using a recommendation there to use `rx.moment` to periodically start the long running background task with a timeout that will prevent it running forever if the user closes the tab. \r\nIn this case, to prevent two tasks running at once per user, I just send a `STOP` to the channel immediately before beginning to listen again. Overall, this is a bit messy though, and I'd prefer to just use the actual connect/disconnect events directly.\r\n\r\nOr is there a much simpler approach I am overlooking entirely?\r\n",
      "created_at": "2024-04-17T22:29:05Z",
      "updated_at": "2024-04-18T22:31:42Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "TimChild",
        "avatar_url": "https://avatars.githubusercontent.com/u/48571510?u=461c39272e0c2fff29afc5ecc5957267f2f7aca9&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYuEx",
      "number": 3046,
      "title": "Wrapping Creatable Component from React-Select",
      "body": "Hi!\r\nI am new to reflex and would like to implement a select component which allows the user to add non-existing options. Since I could not find anything like this in the core library, I am currently trying to wrap [react-select](https://react-select.com/home). The standard `Select` component of react-select works fine. However, I cannot get the `Creatable` component to work. \r\n\r\nIn particular, I find configuring the imports difficult (the code below is from the most [simple example](https://react-select.com/creatable)):\r\n```js\r\nimport Creatable, { useCreatable } from 'react-select/creatable';\r\nReact from 'react';\r\n\r\nimport CreatableSelect from 'react-select/creatable';\r\nimport { colourOptions } from '../data';\r\n\r\nexport default () => <CreatableSelect isClearable options={colourOptions} />;\r\n```\r\n\r\nThus far I tried:\r\n```py\r\nclass Creatable(rx.Component):\r\n    library = \"react-select\"\r\n    tag = \"CreatableSelect\"\r\n    is_default = True\r\n\r\n    options: rx.Var[List[Dict[str, Any]]]\r\n    default_value: rx.Var[Dict[str, Any]]\r\n    ...\r\n\r\ncreatable = Creatable.create\r\n```\r\n\r\nI have tried several variations for the `library`, `tag` and `is_default` attribute but nothing worked as expected.\r\n",
      "created_at": "2024-04-08T21:02:30Z",
      "updated_at": "2024-04-17T20:34:22Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "woernerm",
        "avatar_url": "https://avatars.githubusercontent.com/u/61889355?u=382c76cc7299ebf4fffa7295344bcae9761c49f8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYxV_",
      "number": 3079,
      "title": "v0.4.8 Pre-release Thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.4.8a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-04-11 18:15 PDT: 0.4.8a1 is released for general testing\r\n2024-04-15 15:13 PDT: General release of 0.4.8\r\n\r\n# Release Notes\r\n\r\n## New Features\r\n\r\n### new `transpile_packages` field in rx.Component\r\n\r\nFor packages on npm which are not exported as modules, these can now be transpiled by Next.JS and used directly.\r\n\r\n* [REF-2392] Expose next.config.js transpilePackages key by @masenf in https://github.com/reflex-dev/reflex/pull/3006\r\n\r\n## Improvements\r\n\r\n### Use `bun` as a package manager on windows\r\n\r\n_Much faster_ package installation on windows!\r\n\r\nx64 only (no x86 or ARM support)\r\n\r\n* [REF-1586] Use bun as a package manager on windows by @masenf in https://github.com/reflex-dev/reflex/pull/2359\r\n\r\n### Upload with no files selected still calls event handler\r\n\r\nNote: you need to specify a default value for your files parameter to take advantage of this change.\r\n\r\n* Fix For When user selects Empty files using File Upload by @Yummy-Yums in https://github.com/reflex-dev/reflex/pull/3051\r\n\r\n### Enum types are now serialized to their value\r\n\r\n* added serializer for enums by @wassafshahzad in https://github.com/reflex-dev/reflex/pull/3058\r\n\r\n### Automatic tuple unpacking also works for Component children\r\n\r\n* [REF-2524]Tuple unpacking should apply at component level by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/3062\r\n\r\n## Bug Fixes\r\n\r\n* minimal fix for upload_url in rx.download by @Lendemor in https://github.com/reflex-dev/reflex/pull/3073\r\n* Force pydantic v1 for sqlmodel compatibility by @masenf in https://github.com/reflex-dev/reflex/pull/3026\r\n* Fix annotated EventHandler by @masenf in https://github.com/reflex-dev/reflex/pull/3076\r\n\r\n## Experimental\r\n\r\n* add run_in_thread by @Lendemor in https://github.com/reflex-dev/reflex/pull/3077\r\n\r\n## Other Changes\r\n\r\n* chore: fix some typos in comments by @hugehope in https://github.com/reflex-dev/reflex/pull/3071\r\n* fix: removed .git in template URL by @wassafshahzad in https://github.com/reflex-dev/reflex/pull/3049\r\n\r\n## New Contributors\r\n* @hugehope made their first contribution in https://github.com/reflex-dev/reflex/pull/3071\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.4.7...reflex-0.4.8",
      "created_at": "2024-04-12T01:21:36Z",
      "updated_at": "2024-04-15T22:13:52Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYzRf",
      "number": 3084,
      "title": "Custom layout for select items",
      "body": "Hi, I would like to understand how to add a custom design for the items in the select component. My requirement is simply show images along with text when the select component is clicked.\r\n\r\nHere is my current implementation, but I'm unable to compile it. \r\n\r\n```python\r\ndef select_item_layout(name, icon):\r\n    item = rx.flex(\r\n        rx.image(src=icon),\r\n        rx.text(\r\n            name,\r\n            size=\"2\",\r\n            mb=\"1\",\r\n            color_scheme=\"gray\",\r\n        ),\r\n        direction=\"row\",\r\n    )\r\n    return item\r\n    \r\nrx.select(\r\n            [\r\n                select_item_layout(\"box\", \"/menu.png\"),\r\n                select_item_layout(\"left_fill\", \"/left.png\"),\r\n                select_item_layout(\"right_fill\", \"/right.png\"),\r\n                select_item_layout(\"fill_page\", \"/minimize.png\"),\r\n            ], \r\n            default_value=\"box\",\r\n),\r\n\r\n``` \r\n\r\nThis is the error I got.\r\n\r\n```shell\r\nTypeError: Invalid var passed for prop value, expected type <class 'str'>, got value <RadixThemesFlex direction={`row`}>\r\n  <img src={`/menu.png`}/>\r\n  <RadixThemesText as={`p`} color={`gray`} css={{\"mb\": \"1\"}} size={`2`}>\r\n  {`box`}\r\n</RadixThemesText>\r\n</RadixThemesFlex> of type <class 'reflex.components.radix.themes.layout.flex.Flex'>.\r\n``` \r\n\r\nPlease help!\r\n\r\nThanks in advance.\r\n",
      "created_at": "2024-04-14T06:58:21Z",
      "updated_at": "2024-04-23T08:03:30Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Aiy9C",
        "body": "See the [low-level docs ](https://reflex.dev/docs/library/forms/select/low/)for select which show how to do more customizability"
      },
      "user": {
        "login": "sathish-a",
        "avatar_url": "https://avatars.githubusercontent.com/u/14220737?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYxd6",
      "number": 3080,
      "title": "How about add \"isEmpty()\" to vars ?",
      "body": "for vars with type of `dict` or `list` \r\n\r\nI usually to create extra variable to serve as flag to display a component or not .\r\n\r\n\r\n  class FormState(rx.State):\r\n  \r\n      messages: list[str]\r\n      user: dict[str, str]\r\n\r\n      @rx.var\r\n      def isMessagesEmpty() -> bool :\r\n          return len(self.messages)==0\r\n\r\n      @rx.var\r\n      def isUserEmpty() -> bool :\r\n          return len(self.user.keys())==0\r\n\r\n\r\nThen in the UI component..\r\n\r\n    rx.cond(State.isUserEmpty ....)\r\n\r\n\r\nWould it be better off to save noise code by adding a method like `isEmpty()` to the vars ?\r\n\r\n\r\n    class FormState(rx.State):\r\n    \r\n        messages: list[str]\r\n        user: dict[str, str]\r\n\r\n\r\nThen in the UI component..\r\n\r\n    rx.cond(State.user.isEmpty() ....)\r\n\r\n",
      "created_at": "2024-04-12T05:46:51Z",
      "updated_at": "2024-04-12T21:00:43Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYwHC",
      "number": 3065,
      "title": "Accessing a variable contained in the state",
      "body": "Good day!\r\n\r\nI have a question for those who are much smarter than I...\r\n\r\nI'm currently working on a proof of concept app that accesses 3 API's that all use the same set of credentials.\r\n\r\nI currently get the credentials from a form and then pass them to:\r\n```\r\nclass UserInfo(rx.Base):\r\n    current_user: str\r\n    user_pass: str\r\n\r\nclass FormState(rx.State):\r\n\r\n    current_user_info: UserInfo = UserInfo(\r\n        current_user='',\r\n        user_pass = ''\r\n    )\r\n```\r\n\r\nWhat I'm stuck on is figuring out how to use the credentials stored in the UserInfo base to authenticate the other two APIs on other pages without asking for their credentials over and over. \r\n\r\nWhile I would prefer to save a JWT, and use that to authenticate: I can't right now.\r\n\r\nLong story short: I need to access something stored in Base or State and be able to use it in my Python code to authenticate an API call and I'm lost.",
      "created_at": "2024-04-10T19:14:53Z",
      "updated_at": "2024-04-12T15:41:08Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AirEv",
        "body": "When do you want to validate them, when they submit the form? I recommend going through the [local auth app](https://github.com/reflex-dev/reflex-examples/tree/8ed4a74023e71361596c2c1fad24e151f1c4c92f/local_auth). You should be able to authenticate in an event handler.\r\n\r\n```python\r\nclass FormState(rx.State):\r\n\r\n    current_user_info: UserInfo = UserInfo(\r\n        current_user='',\r\n        user_pass = ''\r\n    )\r\n    \r\n    def authenticate(self):\r\n        # Call your api here\r\n        is_valid = my_api(self.current_user, self.user_pass)\r\n```\r\n\r\nYou can then call the `authenticate` event handler whenever you want to run your API call."
      },
      "user": {
        "login": "paul-stork",
        "avatar_url": "https://avatars.githubusercontent.com/u/103065624?u=a57fa026d01da5057880906a99a463d74a62c9fc&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYQxg",
      "number": 2836,
      "title": "Reflex Office Hours: Thursdays 4pm PT",
      "body": "Come hang out with the Reflex team!\r\n\r\nThis is an open session in our [Discord](https://discord.gg/T5WSbC2YtQ) where you can ask for help on Reflex, learn how to get started contributing, or ask about the Reflex Roadmap.\r\n\r\nhttps://discord.com/events/1029853095527727165/1216897937909485568\r\n",
      "created_at": "2024-03-12T00:00:59Z",
      "updated_at": "2024-09-05T18:38:35Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYxHS",
      "number": 3075,
      "title": "Guidance on rx.chakra.stepper usage",
      "body": "Hi there,\r\n\r\nI'm looking for some guidance on how to use the rx.chakra.stepper component.  I couldn't find any documentation on it so had to go into the code to get some understanding of usage, but I don't think my understanding is complete.  \r\n\r\nHere's what I've got so far:\r\n\r\n```\r\nrx.chakra.stepper(\r\n            items=[\r\n                (\r\n                    rx.chakra.step_indicator(\r\n                        rx.chakra.step_icon(\r\n                            rx.icon(tag=\"calendar-check\")\r\n                        ),  \r\n                    ),\r\n                    rx.chakra.step(\r\n                        rx.chakra.step_description(\"Start of the timeline\"),\r\n                    ), \r\n                    rx.chakra.step_separator()\r\n                ),\r\n            \r\n                (\r\n                    rx.chakra.step_indicator(\r\n                        rx.chakra.step_icon(\r\n                            rx.icon(tag=\"calendar-check\")\r\n                        ),  \r\n                    ),\r\n                    rx.chakra.step(\r\n                        rx.chakra.step_description(\"Middle of timeline\"),\r\n                    ), \r\n                    rx.chakra.step_separator()\r\n                ),\r\n                \r\n                (\r\n                    rx.chakra.step_indicator(\r\n                        rx.chakra.step_icon(\r\n                            rx.icon(tag=\"calendar-check\")\r\n                        ),  \r\n                    ),\r\n                    rx.chakra.step(\r\n                        rx.chakra.step_description(\"End of timeline\"),\r\n                    ), \r\n                    rx.chakra.step_separator()\r\n                ),\r\n\r\n            ],\r\n            orientation=\"horizontal\",\r\n\r\n        )\r\n```\r\n\r\nI'm trying to:\r\n* customize the distances between the steps, so that the distance between the steps are not necessarily equidistant\r\n* customize the look of the step, including fill color, in addition to the icon which I can change\r\n* customize the color and thickness of the step separator\r\n\r\nAny guidance would be appreciated. \r\n\r\nThanks!",
      "created_at": "2024-04-11T18:25:52Z",
      "updated_at": "2024-04-11T18:25:52Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "hragbalian",
        "avatar_url": "https://avatars.githubusercontent.com/u/5995255?u=7ea536d96444e975ff82ef62349676109584134d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYwDf",
      "number": 3063,
      "title": "Shouldn't rx.Config.app_name be the module/app path?",
      "body": "I'm organizing a larger reflex project and wanted to place my reflex app in a subpackage, but `rx.Config(app_name=\"X\")` constrains the application to be `X.X` ([reflex.config.py](https://github.com/reflex-dev/reflex/blob/9073a2781b88d36cfb830a43c5505ec8e0081d62/reflex/config.py#L233)) - which is a weird behavior if `X` is a general module path.\r\n\r\nIt would be nice if we change this behavior to what [Flask does](https://github.com/reflex-dev/reflex/blob/9073a2781b88d36cfb830a43c5505ec8e0081d62/reflex/config.py#L233) (without the defaults). quoting from Flask's documentation:\r\n\r\n> `--app` has three parts: an optional path that sets the current working directory, a Python file or dotted import path, and an optional variable name of the instance or factory. If the name is a factory, it can optionally be followed by arguments in parentheses. The following values demonstrate these parts:\r\n>\r\n> `--app src/hello`\r\nSets the current working directory to src then imports hello.\r\n>\r\n> `--app hello.web`\r\nImports the path hello.web.\r\n>\r\n> `--app hello:app2`\r\n> Uses the app2 Flask instance in hello.\r\n>\r\n> `--app 'hello:create_app(\"dev\")'`\r\n>The create_app factory in hello is called with the string 'dev' as the argument.\r\n\r\nThis proposal is backwards incompatible, so it will need a new parameter (`app`?) and `app_name` deprecation.\r\n\r\nNOTE: I'm just joining the community, so please excuse if this was already discussed or I'm overlooking something major.",
      "created_at": "2024-04-10T18:00:09Z",
      "updated_at": "2024-04-10T18:52:10Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "rodrigosetti",
        "avatar_url": "https://avatars.githubusercontent.com/u/99732?u=51a7cf59393c07d26534676fa0f4f21ff3e43c54&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYvcP",
      "number": 3061,
      "title": "How to change the rx.component ?",
      "body": "I've build a function to generate a rx.table.root with list of strings as input.\r\n\r\nNow , I would like to make an other function, which takes in a table component. ( rx.table.root) and return a new table component with extra column attached `patchActionToTbl`, \r\n\r\nBut an error show up :\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1008321/1b1dc787-cac8-405b-81a1-8c72de9cb9df)\r\n\r\ncode to reproduce\r\n\r\n\r\n```python\r\ndef patchActionToTbl(tbl:rx.Component) -> rx.Component:\r\n    header = tbl.children[0]\r\n    header.children.append(rx.table.column_header_cell(\"Action\"))\r\n    body = tbl.children[1]\r\n    for r in body.children:\r\n        r.children.append(rx.table.cell(\" action \"))\r\n    return tbl\r\n\r\n\r\nclass State(rx.State):\r\n    \"\"\"The app state.\"\"\"\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.center(\r\n        rx.theme_panel(),\r\n        patchActionToTbl(\r\n            rx.table.root(\r\n                rx.table.header(\r\n                    rx.table.row(\r\n                        rx.table.column_header_cell(\"Full name\"),\r\n                        rx.table.column_header_cell(\"Email\"),\r\n                        rx.table.column_header_cell(\"Group\"),\r\n                    ),\r\n                ),\r\n                rx.table.body(\r\n                    rx.table.row(\r\n                        rx.table.row_header_cell(\"Danilo Sousa\"),\r\n                        rx.table.cell(\"danilo@example.com\"),\r\n                        rx.table.cell(\"Developer\"),\r\n                    ),\r\n                    rx.table.row(\r\n                        rx.table.row_header_cell(\"Zahra Ambessa\"),\r\n                        rx.table.cell(\"zahra@example.com\"),\r\n                        rx.table.cell(\"Admin\"),\r\n                    ),\r\n                    rx.table.row(\r\n                        rx.table.row_header_cell(\"Jasper Eriksson\"),\r\n                        rx.table.cell(\"jasper@example.com\"),\r\n                        rx.table.cell(\"Developer\"),\r\n                    ),\r\n                ),\r\n            )\r\n        ),\r\n        height=\"100vh\",\r\n    )\r\n```",
      "created_at": "2024-04-10T07:09:32Z",
      "updated_at": "2024-04-10T18:32:42Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYvJe",
      "number": 3056,
      "title": "Drag & Drop Components",
      "body": "Was wondering if there was a way to make a drag-and-drop component (where you can drag an item between columns) - without wrapping some sort of react code. Can you do this just with the current Reflex components?",
      "created_at": "2024-04-09T20:22:31Z",
      "updated_at": "2024-04-10T08:31:07Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Aik1m",
        "body": "@Sprocketer I haven't seen this done yet, I think it would probably require wrapping a react component."
      },
      "user": {
        "login": "Sprocketer",
        "avatar_url": "https://avatars.githubusercontent.com/u/90787028?u=aa05a73d771398c24ad3e4763e4dc76f1764698b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYuqj",
      "number": 3050,
      "title": "Box vs Container",
      "body": "What's the difference in use-cases / features between boxes and containers?",
      "created_at": "2024-04-09T11:23:44Z",
      "updated_at": "2024-04-09T17:11:51Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AikV0",
        "body": "Containers have a width limit on their content and applies margin to center itself - see [here](https://www.radix-ui.com/themes/docs/components/container)"
      },
      "user": {
        "login": "Sprocketer",
        "avatar_url": "https://avatars.githubusercontent.com/u/90787028?u=aa05a73d771398c24ad3e4763e4dc76f1764698b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYVDZ",
      "number": 2865,
      "title": "Dialog box from Dropdown menu selection.",
      "body": "I would like to open appropriate dialog boxes for items present in the Dropdown menu. Assume I have menus like share, delete, download, etc. On selecting these items should open its corresponding dialog box.\r\n![Screenshot 2024-03-15 at 5 40 41 PM](https://github.com/reflex-dev/reflex/assets/14220737/4cf17416-6df5-4124-9a04-981d01318966)\r\nPlease guide me on how to implement this\r\nThanks a ton.",
      "created_at": "2024-03-15T12:11:59Z",
      "updated_at": "2024-04-09T00:20:48Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "sathish-a",
        "avatar_url": "https://avatars.githubusercontent.com/u/14220737?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYtPJ",
      "number": 3036,
      "title": "Add event with custom JS call ?",
      "body": "Hi, guys\r\n\r\nThanks for your all kind support and great work ! \r\n\r\nI've encountered an issue, I've build a custom js library and would like to call functions inside of it. \r\n\r\nthe function can be called in developer console after including:\r\n\r\n    rx.script(src=\"/my-custom.js\"),\r\n\r\n\r\nThe question is how to call custom function by a button click event ? pseudo code may look like this \r\n\r\n    rx.button(\"Highlight Diff\", on_click=rx.script(\"myCustFunction()\")),",
      "created_at": "2024-04-08T07:49:05Z",
      "updated_at": "2024-04-10T04:16:56Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AiheK",
        "body": "@yellowbean Does your original code with `rx.call_script` not work? That's the recommended way of doing this."
      },
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYrjd",
      "number": 3033,
      "title": "A reflex command called `reflex run --skip-install` to skip continuous install of npm packages.",
      "body": "We can reduce the time in `reflex run` if we could skip the npm installation part in `reflex run` by passing additional flags. We can pass the flag after all packages are installed properly in (1st run). So that we won't need to run install again while running `reflex run` for 2nd time by passing the flag (`--skip-install`). The command should be `reflex run --skip-install` (this skips the installation part of npm packages and goes to the compilation part immediately at the start of the command)\r\n\r\nHowever, a yellow warning should be given before using the command (`FEATURE IN ALPHA - CAN BREAK OUTPUT FILES IF DEPENDENCIES ARE NOT PROPERLY INSTALLED`)",
      "created_at": "2024-04-07T09:08:11Z",
      "updated_at": "2024-09-10T03:11:23Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "itsmeadarsh2008",
        "avatar_url": "https://avatars.githubusercontent.com/u/71959210?u=4bfd03e8722332b1b9dfc4ced2a3923bc401d540&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYq4B",
      "number": 3027,
      "title": "Add Keys() and Values() for dict-type vars ?",
      "body": "## Background\r\n\r\nThere are couple useful operators for vars\r\n\r\nhttps://reflex.dev/docs/vars/var-operations/\r\n\r\nSince it's quite common to have `dict` type as vars , `  myDict: dict[str,int]` \r\n\r\ndo you think it would be great to have Keys() or Values() on the `myDict` ?\r\n\r\nthen equivalent to \r\n\r\n    State(rx.State):\r\n       myDict: dict[str, str]\r\n\r\n       @rx.var\r\n       def myDictKeys():\r\n             return list(myDict.keys())\r\n\r\nIf there is a lot of vars like `myDict` , then the code just will have unnecessary lines.\r\n\r\n## Expected behavior \r\n\r\nIn the component\r\n\r\n    # build all keys to text component.\r\n    rx.foreach( State.myDict.Keys(), rx.text)\r\n",
      "created_at": "2024-04-06T10:28:55Z",
      "updated_at": "2024-04-06T19:23:49Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYq4w",
      "number": 3028,
      "title": "How to change background color to #HEX value",
      "body": "",
      "created_at": "2024-04-06T11:02:48Z",
      "updated_at": "2024-04-06T15:25:18Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Sprocketer",
        "avatar_url": "https://avatars.githubusercontent.com/u/90787028?u=aa05a73d771398c24ad3e4763e4dc76f1764698b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYqS5",
      "number": 3020,
      "title": "Is it possible to render table value with style ?",
      "body": "Great library work ! Thank you guys\r\n\r\nI'm trying to render data using table component : https://reflex.dev/docs/library/datadisplay/table/\r\n\r\nThe goal is to render a string with different color in the parenthesis .\r\n\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1008321/7a65bac3-cf7f-4fda-8d0b-44c2daf61ff2)\r\n\r\nIf above highlight doesn't work, is there a way to render cells with style like below ? \r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1008321/ed6a7289-77b1-498e-8400-154ba646337d)\r\n\r\n",
      "created_at": "2024-04-05T15:59:52Z",
      "updated_at": "2024-04-05T19:21:51Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYo0R",
      "number": 3002,
      "title": "Does State.Vars store values in the backend or frontend ?",
      "body": "Great framework ! Thank you guys !\r\n\r\nI would like to store a field of State with large values ( probably a dict of map ( dict[str,str] )  with 100 MB.\r\n\r\nIs the var is being store in backend ( thus being hold in memory ?) or the var is being stored at frontend ,like the browser ? ",
      "created_at": "2024-04-04T09:26:46Z",
      "updated_at": "2024-04-05T17:00:30Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AibIW",
        "body": "Yes the state manager is pretty much a dictionary from a user token to their state. If you're using the in-memory state manager then yes the state will be there until the server is killed, but if you use Redis by setting a `redis_url`in the `rxconfig.py`, as we do in our hosting service, then there is an expiration that will wipe it out.\r\n\r\nWe can add an issue for implementing an expiration for the memory state manager. We couldn't do it on the socket disconnect as then if someone has intermittent connection issues. I made this issue as many of our Docker examples don't use Redis and can lead people to this issue: https://github.com/reflex-dev/reflex/issues/3021"
      },
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYqO6",
      "number": 3018,
      "title": "How can I make a column of a data_editor a link or show an image?",
      "body": "Hello everyone,\r\n\r\nAmazing project and I cannot wait to start using it more and more. I was wondering if it is possible to make a column of a data_editor a link or show an image?\r\n\r\nIf someone can help me I would greatly appreciate it (: ",
      "created_at": "2024-04-05T14:49:46Z",
      "updated_at": "2024-04-05T14:49:47Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NotAnyMike",
        "avatar_url": "https://avatars.githubusercontent.com/u/7406833?u=762055a5126892df236041a20c2bf0c8d6cfac78&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYpk2",
      "number": 3016,
      "title": "v0.4.7 Pre-Release Thread",
      "body": "Please report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```\r\npip install 'reflex~=0.4.7a'\r\n```\r\n\r\n# Schedule \r\n\r\n2024-04-04 17:20 PDT: 0.4.7a1 is released for general testing\r\n\r\n#  Release Notes\r\n\r\n## New Features\r\n\r\n### New `reflex init` templates\r\n\r\nWe've added 4 new base templates to `reflex init`.\r\n\r\n```bash\r\n(0) blank (https://blank-template.reflex.run) - A minimal template\r\n(1) dashboard (https://dashboard.reflex.run) - A dashboard with tables and graphs\r\n(2) chat (https://chat.reflex.run) - A ChatGPT clone\r\n(3) sidebar (https://sidebar-template.reflex.run) - A template with a sidebar to navigate pages\r\n```\r\n\r\nYou can also specify the template directly\r\n\r\n```\r\nreflex init --template chat\r\n```\r\n\r\n* Update sidebar temp by @Alek99 in https://github.com/reflex-dev/reflex/pull/2959\r\n* Support reflex app creation from templates from github by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2490\r\n\r\n## Use any Reflex app on Github as an initial template\r\n\r\n`reflex init` now also supports passing in any Github url as a template. Currently the Reflex app must be in the root of the Github directory (meaning the `rxconfig.py` should be in the root.\r\n\r\n```\r\nreflex init --template https://github.com/reflex-dev/reflex-chat\r\n```\r\n\r\n* Support reflex app creation from templates from github by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2490\r\n\r\n## `reflex run` will automatically init the app when required\r\n\r\nPreviously when updating versions of Reflex or cloning an existing Reflex app, you would have to run `reflex init` before you can `reflex run`. From 0.4.7, `reflex init` is only required the very first time you create an app. If you are missing a `.web` folder or there's a new version of Reflex, `reflex run` and `reflex export` will automatically `init` the app for you.\r\n\r\n* Reflex run automatically inits when needed by @picklelo in https://github.com/reflex-dev/reflex/pull/3011\r\n\r\n## `rx.logo()` component to display the Reflex logo\r\n\r\nShow Built with Reflex logo. \r\n```python\r\nrx.logo()\r\n```\r\n\r\n* adding a reflex logo component by @tgberkeley in https://github.com/reflex-dev/reflex/pull/2994\r\n\r\n## Reflex Experimental Namespace\r\n\r\nWe've introduced a new `rx._x` namespace where we will be putting experimental features for early testers before they go into general release. This will help us make sure new features have time to mature with real users before we make them public\r\n\r\n* add experimental namespace under rx._x by @Lendemor in https://github.com/reflex-dev/reflex/pull/2951\r\n\r\n\r\n## Improvements\r\n\r\n### `None` can be passed in as a component prop and it will be skipped\r\n* Logic for removing the 'None' property along with its corresponding test cases by @AmanSal1 in https://github.com/reflex-dev/reflex/pull/2969\r\n### Leaving a trailing comma on a reflex component won't throw an error anymore as we unpack the tuple\r\n* Unpack component tuples in a fragment by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2985\r\n\r\n## Bug Fixes\r\n* [REF-2425] Reduce unnecessary CI runs by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2966\r\n* adjust share command prompt by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2965\r\n* Windows uvicorn bug fix  by @sid-38 in https://github.com/reflex-dev/reflex/pull/2954\r\n* use dict instead of set to store hooks by @Lendemor in https://github.com/reflex-dev/reflex/pull/2995\r\n* Added custom_attrs to the list of trigger props by @SwarajBaral in https://github.com/reflex-dev/reflex/pull/2980\r\n* Exclude .web dir when running uvicorn by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2986\r\n* Fix typo in page.py by @thphuc in https://github.com/reflex-dev/reflex/pull/3001\r\n\r\n## Misc\r\n* Lendemor/improve coverage by @Lendemor in https://github.com/reflex-dev/reflex/pull/2988\r\n* Include architecture post in readme by @picklelo in https://github.com/reflex-dev/reflex/pull/2993\r\n* Remove extra spaces in the keywords in pyproject.toml template by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2990\r\n* add logo to blank template by @tgberkeley in https://github.com/reflex-dev/reflex/pull/3014\r\n* Revert \"[REF-2269] Add `add_imports` API for component class (#2937)\" by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2978\r\n* [REF-2296] Rename recursive functions by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2999\r\n## Loosen dependencies\r\n* [REF-2303] Update custom component template for new API by @martinxu9 in https://github.com/reflex-dev/reflex/pull/3007\r\n* Pin uvicorn and typer versions by @picklelo in https://github.com/reflex-dev/reflex/pull/2974\r\n* Relax typer pin by @picklelo in https://github.com/reflex-dev/reflex/pull/2976\r\n* remove types-tabulate from dev dependencies by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2977\r\n\r\n## New Contributors\r\n* @AmanSal1 made their first contribution in https://github.com/reflex-dev/reflex/pull/2969\r\n* @sid-38 made their first contribution in https://github.com/reflex-dev/reflex/pull/2954\r\n* @SwarajBaral made their first contribution in https://github.com/reflex-dev/reflex/pull/2980\r\n* @thphuc made their first contribution in https://github.com/reflex-dev/reflex/pull/3001\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.4.6...v0.4.7\r\n\r\n",
      "created_at": "2024-04-05T01:04:49Z",
      "updated_at": "2024-04-09T22:09:02Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "picklelo",
        "avatar_url": "https://avatars.githubusercontent.com/u/6270214?u=d4f6ecc83a3a136ecde2033f902ad243ee76f853&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYpel",
      "number": 3013,
      "title": "Can't serialize a list that I cobble together in State",
      "body": "Hi there, \r\n\r\nI have a list that I'm cobbling together in the State through a series of checkbox selections but it looks like the list is no longer serializable once `append`, `remove` or other common list operations are applied to it. The list becomes a MutableProxy type.  I need the list to be serializable to pass it through as a payload in an API call.\r\n\r\nHere is the gist for what I'm doing:\r\n\r\n```\r\nimport reflex as rx\r\n\r\nclass MyItem(rx.Base):\r\n    mykey: str\r\n\r\nclass MyState(rx.State):\r\n    my_list: list[str] = []\r\n    items: list[MyItem] = [ MyItem(mykey = f\"a{str(i)}\" ) for i in range(10) ]\r\n\r\n\r\n    async def add_item_to_my_list(self, item: MyItem):\r\n\r\n        if item[\"mykey\"] in self.my_list:\r\n            self.my_list.remove(item[\"mykey\"])\r\n        else:\r\n            self.my_list.append(item[\"mykey\"])\r\n\r\n        print(type(self.my_list))\r\n\r\n\r\ndef mycard(item: rx.Var[MyItem]) -> rx.Component:\r\n\r\n    return rx.card(\r\n\r\n        rx.hstack(\r\n            rx.checkbox(\r\n                rx.text(item.mykey),\r\n                spacing=\"2\",\r\n                on_click=MyState.add_item_to_my_list(item)\r\n            )\r\n        )\r\n\r\n    )\r\n\r\ndef list_of_cards() -> rx.Component:\r\n\r\n    return rx.grid(\r\n            rx.foreach(\r\n                MyState.items, \r\n                lambda item: rx.grid(\r\n                    mycard(item),\r\n                    width=\"100%\"\r\n                    )\r\n                ),\r\n        spacing=\"1\",\r\n        width=\"100%\"\r\n        )\r\n\r\n```\r\n\r\nAny guidance would be greatly appreciated. ",
      "created_at": "2024-04-04T21:52:30Z",
      "updated_at": "2024-04-04T23:26:52Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AiY_c",
        "body": "@hragbalian The list and dict types are wrapped so that we can detect mutations in them. Try this to get the underlying values:\r\n\r\n```python\r\nmy_list = self.get_value(self.my_list)\r\nprint(type(self.my_list))\r\nprint(type(my_list))\r\n```"
      },
      "user": {
        "login": "hragbalian",
        "avatar_url": "https://avatars.githubusercontent.com/u/5995255?u=7ea536d96444e975ff82ef62349676109584134d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYogj",
      "number": 3000,
      "title": "Using custom class for list inside rx.State",
      "body": "Hello! I am trying to use my own class inside State like this:\r\n\r\n```python\r\nclass SourceFile:\r\n    file_name: str\r\n    file_marker: bool\r\n\r\n    def __init__(self, file_name: str, file_marker: bool):\r\n        self.file_name = file_name\r\n        self.file_marker = file_marker\r\n\r\n@serializer\r\ndef serialize_source_file(value: SourceFile) -> str:\r\n    return format.json_dumps({\r\n        \"file_name\": value.file_name,\r\n        \"file_marker\": value.file_marker\r\n    })\r\n\r\nclass UploadState(rx.State):\r\n    files: list[SourceFile] = []\r\n```\r\n\r\nThe problem here is that I can't access these fields from `rx.foreach`.\r\n```python\r\nrx.foreach(\r\n    UploadState.files,\r\n    lambda file, index: rx.text(file.file_marker) # file is BaseVar, it doesn't have file_marker field :(\r\n)\r\n```\r\nI understand that it would be quite naive to assume that I can simply access this field, since Var knows nothing about custom objects.\r\nI tried to dig into `Var`, `BaseVar` and `Foreach`, but my experience is not enough to find the place where everything breaks.\r\nAt the same time, it is completely unclear how to connect the pyCharm debugger to the `reflex run` process (the web server does not start, nothing works)...\r\nWould be nice if you have some solution for my approach..\r\n\r\n\r\n ",
      "created_at": "2024-04-04T01:08:01Z",
      "updated_at": "2024-04-04T16:38:25Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "a0s",
        "avatar_url": "https://avatars.githubusercontent.com/u/418868?u=1f2b8157c61fa2d3b4d3116f8b5576d26f1c049c&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYpIa",
      "number": 3005,
      "title": "How to access POST data",
      "body": "Hi,\r\n\r\nwe were wondering if there's a way to access POST data.\r\n\r\nLet's suppose a page is loaded with a POST request containing some data, is there a way to read this data?\r\nWe had a look at _PageData_ but it looks like it only contains query params.\r\n\r\nThanks",
      "created_at": "2024-04-04T15:09:21Z",
      "updated_at": "2024-04-04T15:09:22Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYn7s",
      "number": 2996,
      "title": "How to generate events from the browser using Javascript",
      "body": "Hi,\r\n\r\nwe need to integrate with an external service using their Javascript SDK.\r\n\r\nThe SDK is pretty simple to integrate as it should trigger an event which needs to be handled by the application.\r\n\r\nThe problem is that we need to send the data contained in the event to the Reflex backend and the ideal why to do that is to trigger an event and deliver the corresponding message to the backend via the websocket.\r\nIs there a way (even undocumented) to achieve that from the browser using Javascript? Can we craft an event and send it over the websocket?\r\n\r\nAs an alternative, we may just redirect the user to a URL containing in the query the information we need to process, but that wouldn't great from a security point of view.",
      "created_at": "2024-04-03T13:11:11Z",
      "updated_at": "2024-04-04T07:02:08Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYnV2",
      "number": 2991,
      "title": "How do we create Horizontal bar chart?",
      "body": "Hello\r\nI am wondering if there is a way to create a horizontal bar chart?\r\nby default the rx.recharts.bar_chart() plots vertically.\r\n\r\ni tried the 'layout' attribute on rx.recharts.bar_chart() as shown below but it did not help.\r\n\r\nany help is appreciated?\r\nthank you\r\n\r\n\r\n```\r\ndata = [\r\n    {\"name\": \"Item A\", \"value\": 100},\r\n    {\"name\": \"Item B\", \"value\": 80},\r\n    {\"name\": \"Item C\", \"value\": 65},\r\n]\r\n\r\n\r\ndef index():\r\n    return rx.recharts.bar_chart(\r\n        rx.recharts.bar(data_key=\"value\", fill=\"#8884d8\"),\r\n        rx.recharts.x_axis(data_key=\"name\"),\r\n        rx.recharts.y_axis(),\r\n        data=data,\r\n        layout=\"horizontal\",  # Thought is might set it horizontal but it does not?\r\n    )\r\n``` ",
      "created_at": "2024-04-02T23:06:32Z",
      "updated_at": "2024-04-02T23:06:33Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jturnercode",
        "avatar_url": "https://avatars.githubusercontent.com/u/58652887?u=7f5965d49d46e65e76ec79e8f836f25d13fad065&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYmdp",
      "number": 2982,
      "title": "How to disable the Theme ?",
      "body": "I can use the short-cut in Mac to close this every time ( it is pretty annoying and distraction, it will hide html elements, especially at early stage of development which doesn't pay much attention to the `style` ) \r\n\r\nbut I can't not do it in Windows , which key binding to remove this ? \r\n\r\nIs this related to `tailwind`?  I've set this field to `None` but it still shows up \r\n\r\n\r\n```\r\nconfig = rx.Config(\r\n    app_name=\"prophet\",\r\n    frontend_port=3001,\r\n    loglevel=\"debug\",\r\n    tailwind=None\r\n)\r\n```\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/1008321/9284e1a8-afa2-4682-96b1-d7dddd30ed44)\r\n",
      "created_at": "2024-04-02T06:19:59Z",
      "updated_at": "2024-04-04T18:36:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AiR4w",
        "body": "Just remove the `rx.theme_panel()` line from within your UI code and it will go away"
      },
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYja2",
      "number": 2964,
      "title": "v0.4.6 Pre-release Thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.4.6a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-03-29 10:00 PDT: 0.4.6a1 is released for general testing\r\n2024-04-01 11:35 PDT: 0.4.6a2 is published with minor fixes\r\n2024-04-01 12:08 PDT 0.4.6a3 is published with typer re-relaxed\r\n2024-04-01 16:00 PDT: 0.4.6a4 is published, removing `add_imports`API  and `types-tabulate` package\r\n2024-04-01 16:45 PDT: General availability of 0.4.6 (No Joke 😁)\r\n\r\n# Release Notes\r\n\r\n## Breaking Changes\r\n\r\n### Use `dill` instead of `cloudpickle`\r\n\r\nIn reflex-0.4.6, existing states persisted in redis are not compatible. Redis should be cleared and existing states/sessions discarded after upgrading.\r\n\r\n* [REF-2089] Use dill instead of cloudpickle for serialization by @masenf in https://github.com/reflex-dev/reflex/pull/2922\r\n\r\n## New Features\r\n\r\n### `reflex component share` CLI\r\n\r\nSimplify sharing of custom 3rd party components to the [Reflex Component Gallery](https://reflex.dev/docs/custom-components/).\r\n\r\n* [REF-2168] Add share options to custom component commands by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2883\r\n\r\n### `rx.ComponentState`\r\n\r\nAn easy way to define per-component State.\r\n\r\n```python\r\nimport reflex as rx\r\n\r\nclass CounterButton(rx.ComponentState):\r\n    count: int\r\n\r\n    def increment(self):\r\n        self.count += 1\r\n\r\n    def decrement(self):\r\n        self.count -= 1\r\n\r\n    @classmethod\r\n    def get_component(cls, *children, **props):\r\n        return rx.button(\r\n            f\"Counter {cls.count}\",\r\n            on_click=cls.increment,\r\n            on_context_menu=cls.decrement.prevent_default,\r\n        )\r\n\r\ncounter_button = CounterButton.create\r\n\r\n@rx.page()\r\ndef index():\r\n    return rx.vstack(\r\n        *[counter_button() for _ in range(10)]\r\n    )\r\n\r\napp = rx.App()\r\n```\r\n\r\n* [REF-2265] ComponentState: scaffold for copying State per Component instance by @masenf in https://github.com/reflex-dev/reflex/pull/2923\r\n\r\n### Automatically Select Next Available Port\r\n\r\nWhen the configured port is not available, automatically select the next sequential port until one is available\r\n\r\n* added feature to automatically change port by @wassafshahzad in https://github.com/reflex-dev/reflex/pull/2867\r\n\r\n### Expanding Textarea\r\n\r\nNew props on `rx.el.textarea` and `rx.text_area` allow the field to expand to match content and submit the form when Enter is pressed (shift+enter to create a new line)\r\n\r\n* textarea: expose auto_height and enter_key_submit props by @masenf in https://github.com/reflex-dev/reflex/pull/2884\r\n\r\n### `rx.scroll_to` event\r\n\r\nScroll the viewpoint to show a given element by ID.\r\n\r\n* Scroll to feature by @Yummy-Yums in https://github.com/reflex-dev/reflex/pull/2948\r\n\r\n## Improvements\r\n\r\n### Simplify Component Wrapping API\r\n\r\n#### [REF-2269] Add `add_imports` API for component class by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2937\r\nThe `add_imports` API allows a component to specify additional imports to include without overriding default import tracking behavior from the specified `library` and `lib_dependencies` fields.\r\n\r\n#### [REF-2272] Support declaring EventHandlers directly in component by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2952\r\nProps typed as `rx.EventHandler` can be used to define event triggers without overriding `get_event_triggers` method. The argument of the type specifies the JS to Python mapping: `on_click: rx.EventTrigger[lambda e: [e]]`.\r\n\r\n#### generate pyi files when building/publishing 3rd party component by @Lendemor in https://github.com/reflex-dev/reflex/pull/2945\r\nThird-party components will now have `.pyi` files generated for them to improve IDE completion, similar to the built in Reflex components.\r\n\r\n### Updated Lucide Icons\r\n\r\nThe latest icons available on https://lucide.dev are now usable in Reflex. Some icon names have changed, these will print a deprecation warning pointing to the new name. The old names will be removed in 0.5.0.\r\n\r\n* Update LUCIDE_ICON_LIST with newest Icon names by @luccavp12 in https://github.com/reflex-dev/reflex/pull/2891\r\n\r\n### Loosen Requirement Pins\r\n\r\nReflex is now compatible with a wider range of dependencies. Notably, it can be used with packages that depend on Pydantic v2 (although the framework itself is still using v1).\r\n\r\n* [REF-2127] Loosen requirements by @mahrz24 in https://github.com/reflex-dev/reflex/pull/2796\r\n\r\n### Avoid content flicker when using `State.is_hydrated`\r\n\r\n`is_hydrated` is set to False immediately when a navigation event starts, and is set back to True after all on_load events have executed. This avoids content flickering into view before a loading spinner is displayed when the spinner is conditional on the value of `State.is_hydrated`.\r\n\r\nAdditionally, the WiFi off connection error pulser is only displayed when connection errors are detected (before it was displayed whenever the page was not hydrated).\r\n\r\n* Set is_hydrated=False at route onChangeStart by @masenf in https://github.com/reflex-dev/reflex/pull/2949\r\n\r\n### Miscellaneous\r\n\r\n* [REF-1982] state: Warn if redis state is \"too big\" by @masenf in https://github.com/reflex-dev/reflex/pull/2868\r\n* use radix box instead of chakra one for responsive elements by @Lendemor in https://github.com/reflex-dev/reflex/pull/2921\r\n* [REF-2229]Dedupe deprecation warnings by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2871\r\n* fix hook order to use ref inside user hooks by @Lendemor in https://github.com/reflex-dev/reflex/pull/2906\r\n  * Ensure user-defined hooks can always access refs\r\n* [REF-2302] When a Var points to a model, prefer access to model fields. by @masenf in https://github.com/reflex-dev/reflex/pull/2893\r\n\r\n## Bug Fixes\r\n\r\n* [REF-2117]:`rx.color_mode_cond` to work in f-strings by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2775\r\n* Default to None if bun/fnm version is Invalid by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2940\r\n* remove inheritance from Flex for list components by @Lendemor in https://github.com/reflex-dev/reflex/pull/2936\r\n  * Fix markdown rendering of lists\r\n* parse_args_spec: resolve annotations with typing.get_type_hints by @masenf in https://github.com/reflex-dev/reflex/pull/2849\r\n* [REF-2219] Avoid refetching states that are already cached by @masenf in https://github.com/reflex-dev/reflex/pull/2953\r\n  * Fix issue affecting Cookie/LocalStorage values when substates contained computed vars\r\n* [REF-2306] Include twine in dependencies on pyproject.toml by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2895\r\n\r\n## Other Changes\r\n* Fix #2877, PR title not available for push/PR merge by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2889\r\n* [REF-2284]Benchmark add extra info on publishing data by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2864\r\n* Revert \"add precommit check added large files and git lfs rules (#2866)\" by @picklelo in https://github.com/reflex-dev/reflex/pull/2905\r\n* [REF-1682][REF-1683][REF-1684][REF-2283]Benchmark reflex package size and .web folder by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2880\r\n* fix AppHarness reloading by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2916\r\n* Remove page.pyi: it's out of date, and not necessary by @masenf in https://github.com/reflex-dev/reflex/pull/2924\r\n* [REF-2416] Pass shell=True when starting AppHarness on Windows by @masenf in https://github.com/reflex-dev/reflex/pull/2944\r\n* updated watchdog dep by @Yummy-Yums in https://github.com/reflex-dev/reflex/pull/2946\r\n* Update README.md by @ChicIceCream in https://github.com/reflex-dev/reflex/pull/2963\r\n\r\n## New Contributors\r\n* @luccavp12 made their first contribution in https://github.com/reflex-dev/reflex/pull/2891\r\n* @mahrz24 made their first contribution in https://github.com/reflex-dev/reflex/pull/2796\r\n* @ChicIceCream made their first contribution in https://github.com/reflex-dev/reflex/pull/2963\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.4.5...reflex-0.4.6\r\n",
      "created_at": "2024-03-29T16:57:30Z",
      "updated_at": "2024-04-01T23:49:10Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYlbO",
      "number": 2971,
      "title": "add a flag to reflex run that will ignore ssl error self signed cetificate",
      "body": "\r\nOn many early - stage projects, I will use self - signed / staging ACME certificates, using [ipaddress].xip.io, [ipaddress].sslip.io, [ipaddress].nip.io, ...  as a placeholder domain. \r\n\r\nThis I do with good reason:\r\n\r\n- To avoid unnecessary domain registrations, traffic with ACME, and in some cases, failed acme challenges for things that are inherently ephemeral and only being used for temporary / fly -by - night development hosts.\r\n- Since I generated the certificate and recognize it, I can easily confirm that I am communicating with the right host and not a man in the middle.\r\n- It allows me to validate that the app works, the pod networking, Ingress, and Service configurations are correct, ... before I register a real domain for a permanent staging or production cluster, configure an external DNS, ... etc. \r\n\r\nWith that said:\r\n\r\nThis will of course create a self signed cert warning on a browser, which is not a problem. Since no real user is logging in, I can just acknowledge that I recognize and trust the host and proceed, but even if I do, the web-socket traffic won't make it through, **unless** I set API_URL to **HTTP**://[ipaddress].sslip.io **not HTTPS**://[ipaddress].sslip.io argument (in v0.4.4). In 0.4.5, even if I do set the API_URL to an **HTTP**://[ipaddress].sslip.io **not HTTPS**://[ipaddress].sslip.io, the websocket traffic it appears that it isn't making it through (#2935 ).\r\n\r\nI think that it may be a solution if:\r\n\r\n- A separate flag could be added to `reflex run` that when set, will ignore SSL errors associated with self signed certs in the connection with the websocket API.\r\n- SSL errors could be ignored if in DEBUG mode (Would fix this, but probably not the safest option)\r\n\r\n\r\n",
      "created_at": "2024-04-01T01:36:48Z",
      "updated_at": "2024-04-01T01:36:49Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "david-thrower",
        "avatar_url": "https://avatars.githubusercontent.com/u/22437440?u=989b9d26b92c931b7d7230872454713e25a2ac15&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYjFc",
      "number": 2961,
      "title": "Do i still need separate backend?",
      "body": "My question may seem a little strange. But.. After reading the documentation, I still don’t fully understand whether I can refuse a separate backend or not. Typical tasks that we solve on the backend: authorization (jwt for e,g.), working with the database, validating data from frontend, creating and processing jobs in the mq queue, etc. \r\nDoes it make sense to try to fit all these things inside reflex handlers? It is clear that all slow things must be moved to separate asyncs/threads..\r\n~It’s also not entirely clear whether I can use the same instance (let’s call it reflex-backend) to host the main backend and how the code should be organized in this case?~ Seems i missed https://reflex.dev/docs/api-routes/overview/#reserved-routes",
      "created_at": "2024-03-29T09:26:11Z",
      "updated_at": "2024-03-29T16:31:21Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "a0s",
        "avatar_url": "https://avatars.githubusercontent.com/u/418868?u=1f2b8157c61fa2d3b4d3116f8b5576d26f1c049c&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUPVD",
      "number": 1202,
      "title": "pc.form inputs don't clear until all on_submit functions complete",
      "body": "I'm really happy we can now submit with the \"enter\" key, but have a small issue. I'm hoping that I'm just implementing this incorrectly.\r\n\r\nI'm creating a chat with an LLM backend. \r\n\r\nMy form looks like this:\r\n\r\n```python\r\npc.form(\r\n            pc.hstack(\r\n                pc.input(\r\n                    id=\"new_user_message\",\r\n                    placeholder=\"Enter message\",\r\n                    bg=\"white\",\r\n                ),\r\n                pc.button(\"Submit\", type_=\"submit\", bg=\"white\"),\r\n                width=\"100%\",\r\n            ),\r\n            on_submit=[state.add_user_message, state.add_assistant_message],\r\n            width=\"100%\",\r\n        ),\r\n        width=\"100%\",\r\n```\r\n\r\nMy State class looks like this:\r\n\r\n```python\r\nclass State(pc.State):\r\n    \"\"\"The app state.\"\"\"\r\n\r\n    messages: list[Message] = [\r\n        Message(\r\n            role=\"system\",\r\n            content=\"System message goes here.\",\r\n        ),\r\n    ]\r\n    new_user_message: str\r\n    answer_loaded: bool = True\r\n\r\n    def add_user_message(self, form_data: dict[str, str]):\r\n        \"\"\"Add a new message.\"\"\"\r\n        message = Message(role=\"user\", content=form_data[\"new_user_message\"])\r\n        self.messages.append(message)\r\n        self.answer_loaded = False\r\n        return pc.set_value(\"new_user_message\", \"\")\r\n\r\n    def add_assistant_message(self):\r\n        \"\"\"Add a new assistant message.\"\"\"\r\n        llm.answer(self.messages)\r\n        self.answer_loaded = True\r\n```\r\n\r\nWhen a user submits the form, the expected behavior is that it clears the input fields, then calls the LLM.\r\n\r\nInstead, the inputs still contain the contents the user submitted until the add_assistant_message() function has completed.\r\n\r\nIdeally, I'd love to:\r\n\r\n1. Clear the form\r\n2. Disable the input field until the LLM has responded\r\n3. Have the LLM respond\r\n4. Reenable the form\r\n\r\nNot sure what's possible.\r\n\r\nAgain, maybe I'm implementing this incorrectly.\r\n",
      "created_at": "2023-06-16T15:00:36Z",
      "updated_at": "2024-03-29T14:21:08Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "simonmesmith",
        "avatar_url": "https://avatars.githubusercontent.com/u/5099521?u=7025ef7881332e5d9421cbc9586aad882bede515&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYjL8",
      "number": 2962,
      "title": "Handling the \"Enter Key\" from an rx.input Component",
      "body": "I'm trying to figure out how to observe a press of the \"Enter\" key when someone is typing in the rx.input component so that they don't have to click on the submit button.  \r\n\r\nWhat I'm observing the component seems to handle either the \"onChange\" event or \"onKeyPress\" event, but not both.  Does anyone have a solution for how to solve this?  Feels like it would be a good feature to just enable via a property. ",
      "created_at": "2024-03-29T11:56:49Z",
      "updated_at": "2024-03-29T13:02:45Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AiJbo",
        "body": "Solved thanks to @Lendemor in Discord.  \r\n\r\nSolution involves wrapping the inputs into a form.  Here is my final working code:\r\n\r\n```\r\ndef action_bar() -> rx.Component:\r\n    return rx.form(\r\n            rx.hstack(\r\n                rx.input(placeholder=\"Summarize this video...\", \r\n                    value=State.question,\r\n                    on_change=State.set_question,\r\n                    style=style.input_style,\r\n                    radius=\"large\",\r\n                    variant=\"surface\",\r\n                    size=\"3\",\r\n                    \r\n                    ),\r\n                rx.button(\"Ask AI\",\r\n                    type=\"submit\",\r\n                    style=style.button_style,\r\n                    size=\"3\",\r\n                    ),\r\n            ),\r\n        on_submit=State.answer,\r\n        enter_key_submit=True,\r\n        reset_on_submit=False,\r\n        )\r\n```"
      },
      "user": {
        "login": "ESchwaa919",
        "avatar_url": "https://avatars.githubusercontent.com/u/56347713?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYcJh",
      "number": 2897,
      "title": "Internationalization",
      "body": "Is there a way to do internationalization?\r\nI certainly can't find a way to wrap `react-i18next` or `react-intl`\r\nAny example can help.\r\nThanks in advance.\r\n",
      "created_at": "2024-03-22T03:34:46Z",
      "updated_at": "2024-03-28T16:42:18Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Valdes-Tresanco-MS",
        "avatar_url": "https://avatars.githubusercontent.com/u/36672242?u=eabb08f6f40ea7840f86955d3281bda3e03b069d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYhjz",
      "number": 2941,
      "title": "Using reflex.testing library to test reflex apps.",
      "body": "I am writting pytest to test the sdvp_web_app.py file.\r\n[sdvp_web_app.txt](https://github.com/reflex-dev/reflex/files/14779880/sdvp_web_app.txt)\r\n[test_stuff.txt](https://github.com/reflex-dev/reflex/files/14779882/test_stuff.txt)\r\nThis file is in the directory C:\\sdvp_fastapi_web_server\\sdv_web_app.  The pytest file is the attached test_stuff.txt file located in the C:\\sdvp_fastapi_server\\tests directory.  When I run the test, I get a %1 is not a valid win32 app in fixture function sdvp_web_app() in the AppHarness.create() function call.  If set the app_source parameter to sdvp_web_app, I get the \"not a valid windows app\" and the svdp_web_app.py file is overwritten with fixture source code.  If I set the app_name parameter to \"sdvp_web_app\", I get the same \"invalid windows app\" name error.  Finally, I tried running the upload test python file located in the repository and get the same window error.  Any ideas?",
      "created_at": "2024-03-27T18:55:16Z",
      "updated_at": "2024-03-27T19:22:17Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "aden-collector",
        "avatar_url": "https://avatars.githubusercontent.com/u/9436785?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYhC3",
      "number": 2939,
      "title": "How to reference state within a single render UI function ?",
      "body": "The State would have a list of recipes, which I can use `rx.foreach` to render them all into the UI .\r\nWhile, I would like user to edit the recipes and with `on_change` event to update the recipes in the UI, but how to implement that in the \r\n`RecipesUI` function ?\r\n\r\nis there syntax that points to the item to be updated ?\r\n\r\n`State.set_listOfRecipes_<N>_val` , which points to the \"State.ListOfRecipes\" and the Nth item, with field name \"val\" ? \r\n\r\n\r\nGreat work , thank you all for the help !\r\n\r\n-----\r\n\r\n    class Receipes(rx.Base):\r\n        path: str\r\n        val: list[str]\r\n\r\n    class State(rx.State):\r\n        \"\"\"The app state.\"\"\"\r\n        listOfRecipes :list[Receipes] = [Receipes(path=\"P1\",val=[\"va1\",\"va2\"])\r\n                                                          ,Receipes(path=\"P2\",val=[\"va1\",\"va2\"]) ]\r\n    \r\n\r\n    def RecipesUI(x:Receipes):\r\n        return rx.box(\r\n            rx.input(value=x.path, )\r\n            ,rx.input(value=str(x.val))    ## <<-- how to add  on_changeto update the Recipe values in the State ? \r\n                                                       ## something like on_change=State.set_listOfRecipes_<N>_val ? \r\n        )\r\n    \r\n    def index() -> rx.Component:\r\n        return rx.center(\r\n            rx.tabs.list(\r\n                rx.tabs.trigger(\"BaseCase\", value=\"base_case\"),\r\n                rx.tabs.trigger(\"Recipes\", value=\"recipes\"),\r\n            ),\r\n            rx.tabs.content(\r\n                rx.text(\"BaseCase\"),\r\n            ),\r\n            rx.tabs.content(\r\n                rx.text(\"Recipes\"),\r\n                rx.foreach(\r\n                    State.listOfRecipes, RecipesUI\r\n                ),\r\n                value=\"recipes\",\r\n            ),\r\n        )\r\n\r\n",
      "created_at": "2024-03-27T09:40:20Z",
      "updated_at": "2024-03-28T00:02:21Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AiEjY",
        "body": "did you try it? that should already work with normal `rx.foreach`: https://reflex.dev/docs/components/rendering-iterables/#enumeration"
      },
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYfzr",
      "number": 2926,
      "title": "Doubt with the behaviour of is_checked in chakra.checkbox",
      "body": "Is it normal that if you initialise the is_checked=True property of chakra.checkbox, it gets locked and you cannot change the state of the checkbox by clicking on it?",
      "created_at": "2024-03-26T07:15:44Z",
      "updated_at": "2024-03-28T09:59:27Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Gelraiser",
        "avatar_url": "https://avatars.githubusercontent.com/u/16465886?u=42136327b0fa631613207db9b5d7117597bd0248&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYfUk",
      "number": 2920,
      "title": "How to deploy backend to AWS Lambda",
      "body": "Hi there, \r\n\r\nI'd like to deploy the backend service to AWS Lambda with an ECR / image deployment.  I was thinking this would be pretty straightforward since the backend is using FastAPI which works really well with Mangum as a standalone API.  I'm finding that it's not plug and play, unfortunately.  \r\n\r\nThe closest I got is this:\r\n\r\n```\r\nfrom mangum import Mangum\r\n\r\n...\r\n\r\napp.api = Mangum(app=app.api)\r\n\r\n```\r\n\r\nand then calling the Lambda handler from the Dockerfile as \r\n\r\n```\r\nCMD [ \"todo.todo.app\" ]\r\n```\r\nusing the example todo app. \r\n\r\nThis is producing the following error:\r\n\r\nLAMBDA_WARNING: Unhandled exception. The most likely cause is an issue in the function code. However, in rare cases, a Lambda runtime update can cause unexpected function behavior. For functions using managed runtimes, runtime updates can be triggered by a function change, or can be applied automatically. To determine if the runtime has been updated, check the runtime version in the INIT_START log entry. If this error correlates with a change in the runtime version, you may be able to mitigate this error by temporarily rolling back to the previous runtime version. For more information, see https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html\r\n[ERROR] TypeError: App.__call__() takes 1 positional argument but 3 were given\r\nTraceback (most recent call last):\r\n  File \"/var/lang/lib/python3.11/site-packages/awslambdaric/bootstrap.py\", line 188, in handle_event_request\r\n    response = request_handler(event, lambda_context)\r\n\r\nHas anyone else tried something like this?\r\n",
      "created_at": "2024-03-25T17:22:03Z",
      "updated_at": "2024-03-27T01:43:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AiB-w",
        "body": "The backend uses websockets, so I'm not sure if it will work on AWS Lambda. Reflex can work with a basic REST protocol rather than websockets, we could potentially look into enabling that, but not sure if anyone's deployed on Lambda yet."
      },
      "user": {
        "login": "hragbalian",
        "avatar_url": "https://avatars.githubusercontent.com/u/5995255?u=7ea536d96444e975ff82ef62349676109584134d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYfwC",
      "number": 2925,
      "title": "How to debug ?",
      "body": "The app runs OK:\r\n![Screenshot 2024-03-26 at 13 35 16](https://github.com/reflex-dev/reflex/assets/1008321/cb1e363a-d6ba-42b0-b31a-22072797becb)\r\n\r\nBut the browser seems not working : ( the red wifi sign )\r\n\r\nIs there a way for me to debug it ?  Thanks !\r\n\r\n![Screenshot 2024-03-26 at 13 36 30](https://github.com/reflex-dev/reflex/assets/1008321/8a49d259-30e6-4f39-aeda-241411d77a90)\r\n\r\n",
      "created_at": "2024-03-26T05:39:56Z",
      "updated_at": "2024-03-26T23:01:25Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYgew",
      "number": 2931,
      "title": "Product Hunt Launch April 17th",
      "body": "Reflex is launching on product hunt ([https://producthunt.com/products/reflex-5](https://t.co/QW2mNKuTcX))  April 17th!\r\n\r\nFor those of you on Product Hunt, we’d love to hear your thoughts and feedback. Support us by clicking the link and selecting notify me to be reminded on our launch day.",
      "created_at": "2024-03-26T19:00:35Z",
      "updated_at": "2024-03-26T20:13:59Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "tgberkeley",
        "avatar_url": "https://avatars.githubusercontent.com/u/64492814?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYgd6",
      "number": 2930,
      "title": "Update upload progress meaningfully",
      "body": "Hello, I'm seeking advice on updating the progress bar value without causing the UI to freeze. Currently, my code functions like this: whenever the `upload` function is activated, the `self.progress` value is updated at the state level. However, these updates aren't reflected until all uploads are complete, after the gather function returns. Is there a more effective approach? My project involves uploading numerous images, so it's crucial to accurately track the progress. Unfortunately, the `progress dict` from `handle_upload_progress` isn't proving to be very helpful in this scenario.\r\n\r\n```python\r\nclass UploadState(ProjectContentsState):\r\n    show: bool = False\r\n    uploading: bool = False\r\n    progress: float = 0\r\n    total_bytes: int = 0\r\n    total_files_uploaded: int = 0\r\n    total_files_uploading: int = 0\r\n    imgs: list[str]\r\n\r\n    def on_load(self, is_open: bool):\r\n        self.reset()\r\n        self.show = is_open\r\n    \r\n    @rx.var\r\n    def set_progress(self) -> int:\r\n        if self.progress and self.total_files_uploading:\r\n            return round((self.progress / self.total_files_uploading) * 100)\r\n        else:\r\n            return self.progress\r\n\r\n    \r\n    async def upload(self, file):\r\n        self.progress += 0.5\r\n        print(\"Starting\", self.progress, self.total_files_uploading)\r\n        photo_path = f\"{self.user_id}/{self.project_id}/{file.filename}\"\r\n        file_bytes = await file.read()\r\n        if await s3.put_file_async(\r\n                path=photo_path,\r\n                file_bytes=file_bytes, \r\n                file_type=file.content_type\r\n            ):\r\n                await supabase.add_photos_async(\r\n                    user_id=self.user_id,\r\n                    project_id=self.project_id,\r\n                    photo_name=file.filename,\r\n                    photo_path=photo_path,\r\n                    photo_url=s3.get_url(photo_path),\r\n                )\r\n        self.imgs.append(file.filename)\r\n        self.progress += 0.5\r\n        print(\"Ending\", self.progress, self.total_files_uploading)\r\n        self.total_bytes += len(file_bytes)\r\n        return len(file_bytes)\r\n\r\n\r\n    async def handle_upload(\r\n        self, files: list[rx.UploadFile]\r\n    ):\r\n        start_time = time()\r\n        self.total_files_uploading = len(files)\r\n        bytes_uploaded = await asyncio.gather(*[self.upload(file) for file in files])\r\n        self.total_bytes = sum(bytes_uploaded)\r\n        self.total_files_uploaded = len(bytes_uploaded)\r\n        print(f\"Uploading {self.total_files_uploaded} files in bytes({self.total_bytes}) took {time() - start_time}s\")\r\n\r\n\r\n    def handle_upload_progress(self, progress: dict):\r\n        self.uploading = True\r\n        if self.progress and self.total_files_uploading and self.progress >= self.total_files_uploading:\r\n            self.uploading = False\r\n``` \r\n\r\n```python\r\nrx.progress(value=UploadState.set_progress, max=100, color_scheme=\"green\"),\r\n``` ",
      "created_at": "2024-03-26T18:45:32Z",
      "updated_at": "2024-03-26T18:50:06Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "sathish-a",
        "avatar_url": "https://avatars.githubusercontent.com/u/14220737?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYcRb",
      "number": 2898,
      "title": "about use antd(ant-design) components",
      "body": "I am trying use [ant-design](https://ant.design/) in reflex, to make a admin web;\r\nThere are some questions:\r\n\r\n1. antd [usage with next.js](https://ant.design/docs/react/use-with-next), want to rewrite _document.js.jinja2, like:\r\n```\r\nfunction MyDocument() {\r\n  return (\r\n    {{utils.render(document, indent_width=0)}}\r\n  )\r\n}\r\n\r\nMyDocument.getInitialProps = async (ctx) => {\r\n  const cache = createCache();\r\n  const originalRenderPage = ctx.renderPage;\r\n  ctx.renderPage = () =>\r\n    originalRenderPage({\r\n      enhanceApp: (App) => (props) => (\r\n        <StyleProvider cache={cache}>\r\n          <App {...props} />\r\n        </StyleProvider>\r\n      ),\r\n    });\r\n  const initialProps = await Document.getInitialProps(ctx);\r\n  const style = extractStyle(cache, true);\r\n  return {\r\n    ...initialProps,\r\n    styles: (\r\n      <>\r\n        {initialProps.styles}\r\n          {% raw %}\r\n        <style dangerouslySetInnerHTML={{ __html: style }} />\r\n          {% endraw %}\r\n      </>\r\n    ),\r\n  };\r\n};\r\n\r\nexport default MyDocument;\r\n```\r\nIs reflex can support this natively?\r\n\r\n2. There are various types of component's properties, like:\r\n\r\n- Menu.items: [ItemType](https://ant.design/components/menu#itemtype)[], it's array which can contain anyone component; \r\n```\r\n<Menu className={`border-2 border-gray-300`} items={[\r\n  {\r\n    \"key\": \"nav1\",\r\n    \"label\": \"SubNav 1\",\r\n    \"icon\": <UserOutlined/>,\r\n.....\r\n```\r\n\r\n- FloatButton.icon: ReactNode, it is Icon component;\r\n```\r\n<FloatButton\r\n      shape=\"circle\"\r\n      type=\"primary\"\r\n      style={{ right: 94 }}\r\n      icon={<CustomerServiceOutlined />}\r\n    />\r\n```\r\n\r\n- badge.count: ReactNode\r\n```\r\nconst [show, setShow] = useState(true);\r\n....\r\n<Badge count={show ? 25 : 0} />\r\n```\r\n\r\nHow to wrap these properties?\r\n\r\n\r\nsorry about my poor english and really looking forward to any response! Thanks",
      "created_at": "2024-03-22T07:06:10Z",
      "updated_at": "2024-03-25T13:37:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "seewindcn",
        "avatar_url": "https://avatars.githubusercontent.com/u/2747944?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYdOy",
      "number": 2904,
      "title": "How to render a table dynamically ?",
      "body": "    class State(rx.State):\r\n        \"\"\"The app state.\"\"\"\r\n        listResultHeader:list[str] = []\r\n        listResultData:list = []\r\n\r\n    def index() -> rx.Component:\r\n        return rx.center(\r\n                rx.table.root(\r\n                    rx.table.header(\r\n                        rx.table.row(*rx.foreach(lambda x: rx.table.column_header_cell(x), State.listResultHeader)),\r\n                    ),\r\n                    #buildBody(vals),\r\n                    rx.table.body(\r\n                        rx.table.row(\r\n                            rx.table.row_header_cell(\"Danilo Sousa\"),\r\n                            rx.table.cell(\"danilo@example.com\"),\r\n                            rx.table.cell(\"Developer\"),\r\n                        ),\r\n                    ),\r\n                ),\r\n        )\r\n\r\nCould you pls advise why it is wrong ? \r\n\r\n![Screenshot 2024-03-23 at 11 38 57](https://github.com/reflex-dev/reflex/assets/1008321/58441e74-627e-4b29-85c6-6e578a846541)\r\n",
      "created_at": "2024-03-23T03:39:32Z",
      "updated_at": "2024-03-25T03:09:20Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Ah7xn",
        "body": "@yellowbean your code is correct, you just need to add a type annotation to your var (so it knows that its a list of lists that it can foreach, without this you may get a Javascript error by iterating over a non-list type)\r\n\r\n```python\r\nfrom typing import Any\r\n\r\nclass State(rx.State):\r\n  tableData: list[list[Any]] = [[\"A\",1],[\"B\",2]]\r\n```"
      },
      "user": {
        "login": "yellowbean",
        "avatar_url": "https://avatars.githubusercontent.com/u/1008321?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYeEM",
      "number": 2914,
      "title": "postgres -nothing happens",
      "body": "I am trying to use Postgres.. I have a connect_db.py and installed the drivers for postgres \"psycopg2-binary\"\r\n\r\nfrom sqlmodel import create_engine\r\n\r\ndef connect():\r\n    engine = create_engine(\"postgresql+psycopg2-binary://postgres:123456@localhost:5432/dbnow\")\r\n    return engine\r\n\r\nbut when I ran \"reflex run\" it is not creating the tables in the database and I am not getting any error.. what should I do to fix this?",
      "created_at": "2024-03-24T12:24:59Z",
      "updated_at": "2024-03-24T23:06:55Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "abcnow",
        "avatar_url": "https://avatars.githubusercontent.com/u/35501607?u=e7bef236b0eeba7c318a11379ef4c618a10a2404&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYa4j",
      "number": 2890,
      "title": "Developer Survey (March 2024)",
      "body": "[DEV Survey](https://forms.gle/LRByGtvG2qbLn1dR7)",
      "created_at": "2024-03-20T22:33:08Z",
      "updated_at": "2024-03-21T01:04:45Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "tgberkeley",
        "avatar_url": "https://avatars.githubusercontent.com/u/64492814?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYVr8",
      "number": 2869,
      "title": "v0.4.5 Pre-release Thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.4.5a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-03-15 17:40 PDT: 0.4.5a1 is released for general testing\r\n2024-03-18: Scheduled release of 0.4.5\r\n2024-03-20 13:04 PDT: General Release of 0.4.5\r\n\r\n# New Features\r\n\r\n## Support SQLAlchemy Models Directly\r\n\r\n* Bare sqlalchemy metadata by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2355\r\n\r\n## Experimental Multi-process Compilation\r\n\r\nPass `REFLEX_COMPILE_PROCESSES=0` to opt-in to multiprocess compile, which significantly improves compilation speed of large apps (Mac and Linux only).\r\n\r\n* [REF-2122] Opt-in multiprocess compile by @masenf in https://github.com/reflex-dev/reflex/pull/2838\r\n\r\n# Improvements\r\n\r\n* improve event handler state references by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2818\r\n* Allow access to position from HighLevelSelect by @hjpr in https://github.com/reflex-dev/reflex/pull/2829\r\n* [REF-2157] Allow `rx.download` to resolve `rx.get_upload_url` links by @masenf in https://github.com/reflex-dev/reflex/pull/2813\r\n* better default title for seo (also remove default description) by @Lendemor in https://github.com/reflex-dev/reflex/pull/2844\r\n* Make @rx.memo work with state vars passed as props by @masenf in https://github.com/reflex-dev/reflex/pull/2810\r\n* added name of Var to error message by @emmakodes in https://github.com/reflex-dev/reflex/pull/2827\r\n\r\n## Bug Fixes\r\n* [REF-2172] Add DECORATED_PAGES before compiling in thread by @masenf in https://github.com/reflex-dev/reflex/pull/2841\r\n  * Fix known regression with py3.8 and py3.9 \r\n* Remove width prop from rx.select by @picklelo in https://github.com/reflex-dev/reflex/pull/2835\r\n* Get `client_ip` from `asgi.scope` by @masenf in https://github.com/reflex-dev/reflex/pull/2808\r\n  * `router.session.client_ip` more likely to be correct now\r\n* convert text inside list_item to span and set icon display to inline by @Lendemor in https://github.com/reflex-dev/reflex/pull/2860\r\n\r\n## Other Changes\r\n\r\n* [REF-2086] Avoid \"Warning: The path to the Node binary could not be found. by @masenf in https://github.com/reflex-dev/reflex/pull/2803\r\n* telemetry refactor + unit tests by @Lendemor in https://github.com/reflex-dev/reflex/pull/2786\r\n* Custom Component Request Template by @Alek99 in https://github.com/reflex-dev/reflex/pull/2853\r\n* Benchmark with app harness by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2774\r\n* Fix py3.8 integration test_var_operations.py by @masenf in https://github.com/reflex-dev/reflex/pull/2858\r\n* Account for imports of @rx.memo components for frontend package installation  by @masenf in https://github.com/reflex-dev/reflex/pull/2863\r\n* [REF-2216] Warn if windows is used with py312 by @masenf in https://github.com/reflex-dev/reflex/pull/2856\r\n* Separate `get_hooks` and `get_hooks_internal` for stable output by @masenf in https://github.com/reflex-dev/reflex/pull/2710\r\n\r\n## New Contributors\r\n* @hjpr made their first contribution in https://github.com/reflex-dev/reflex/pull/2829\r\n* @emmakodes made their first contribution in https://github.com/reflex-dev/reflex/pull/2827\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.4.4...reflex-0.4.5",
      "created_at": "2024-03-16T00:39:11Z",
      "updated_at": "2024-03-20T20:05:19Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYSjJ",
      "number": 2852,
      "title": "Responsive design",
      "body": "Is there any guide in relation to effective responsive techniques that any programmer should take into account?? I mean in the context of Reflex as I'm not sure about how Reflex handles responsive design. ",
      "created_at": "2024-03-13T12:37:28Z",
      "updated_at": "2024-03-13T22:46:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "falbertoram",
        "avatar_url": "https://avatars.githubusercontent.com/u/22121576?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYOxq",
      "number": 2825,
      "title": "Custom_Component reflex-simpleicons",
      "body": "Hello, although the icons on lucide.dev are fantastic, I was missing SVGs of the main brands. So I found this fantastic website https://simpleicons.org/ where most of the icons of major brands are available in SVG format. There's a React module, and I've used it with \"wrap\" and it works perfectly. So I've decided to create a custom component, but I need help.\r\n\r\nThe little code that I've understood is in: https://github.com/cllatser/reflex-simpleicons\r\n\r\nWhat I would like to know:\r\n\r\n- [ ] The tag needs to start with \"Si\" + the brand name in uppercase.     Example: `tag=\"SiMicrosoft\"` And I want the user, when entering \"microsoft\", to convert it to the correct format.\r\n\r\n![simpleicons](https://github.com/reflex-dev/reflex/assets/65849393/3646dbb0-990b-4be1-93db-58412486047f)\r\n\r\n\r\n",
      "created_at": "2024-03-10T16:52:49Z",
      "updated_at": "2024-03-13T22:32:41Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "cllatser",
        "avatar_url": "https://avatars.githubusercontent.com/u/65849393?u=877b3c7e14707bf939c2419ba0838b60b186d7de&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYNYr",
      "number": 2820,
      "title": "How to switch theme in reflex 0.4.3",
      "body": "In reflex 0.3.10 i.e. on chakra UI, The theme was switchable via simply rx.color_mode_button(rx.color_mode_icon()). It used to give a theme switch button. I can't find such a function in the new Redix UI-based reflex.\r\nCurrently, I can set the theme for the entire app via rx.App(theme = rx.theme(appearance=\"light\"....)) but I can't make a button to switch the theme. The closest thing is rx.theme_panel(). But it's not the same as the previous one. How to produce the same theme switch button in new reflex 0.4.3?\r\n![image](https://github.com/reflex-dev/reflex/assets/94781328/6cccde6e-e496-404e-bf9f-b7555296949d)\r\n",
      "created_at": "2024-03-09T17:02:04Z",
      "updated_at": "2024-03-12T18:01:39Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AhZCI",
        "body": "Looks like we missed the documentation for this.\r\n\r\nYou can use \r\n```python\r\nrx.color_mode.button(\"Dark Mode\"),\r\n```\r\nTo achieve this now. We will update our website with this info"
      },
      "user": {
        "login": "amanchaudhary-95",
        "avatar_url": "https://avatars.githubusercontent.com/u/94781328?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYLyZ",
      "number": 2811,
      "title": "v0.4.4 Pre-release Thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on reflex-dev/reflex.\r\n\r\n```console\r\npip install 'reflex~=0.4.4a'\r\n```\r\n\r\n# Schedule\r\n\r\n2024-03-07 21:12 PST: 0.4.4a1 is released for general testing\r\n2024-03-08 18:30 PST: 0.4.4a2 is released, which fixes state detection for event handlers and on_load\r\n2024-03-11 15:53 PDT: General release of 0.4.4\r\n\r\n# Breaking Changes\r\n\r\n## `Component._get_vars` signature change\r\n\r\nUnlikely to affect most users; however the signature of `Component._get_vars` has changed to accept a new `include_children` parameter which should either be handled internally or passed to `super()._get_vars` if this function has been overridden in a custom component.\r\n\r\nNew signature\r\n\r\n```python\r\ndef _get_vars(self, include_children: bool = False) -> Iterator[Var]:\r\n```\r\n\r\n# New Features\r\n\r\n## Expose `lang` and other attributes on `<html>` tag\r\n\r\n* pass lang and custom_attrs from app to html root by @macmoritz in https://github.com/reflex-dev/reflex/pull/2697\r\n\r\n## `rx.upload` exposes `on_drop` event trigger\r\n\r\nTrigger upload _immediately_ after files are selected by passing an `rx.upload_files`-wrapped handler directly to `on_drop` trigger.\r\n\r\n* Expose `on_drop` event trigger for rx.upload component. by @masenf in https://github.com/reflex-dev/reflex/pull/2766\r\n\r\n## `rx.el.form` supports `on_submit` event trigger\r\n\r\n* [REF-1368] Move common form functionality to rx.el.forms by @masenf in https://github.com/reflex-dev/reflex/pull/2801\r\n\r\n# Improvements\r\n\r\n## Dependency Changes\r\n\r\n* remove pipdeptree as reflex dep by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2763\r\n* bump up httpx to >= 0.25.1 by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2782\r\n\r\n## Enable `/_upload` when `get_upload_url` is used\r\n\r\nPreviously, the `rx.upload` component was the only thing that resulted in the endpoint being enabled.\r\n\r\n* Mark Upload.is_used when calling get_upload_url by @masenf in https://github.com/reflex-dev/reflex/pull/2765\r\n\r\n## Update `docker-example` for more realistic deployments\r\n\r\n* a simple dual port `Dockerfile`\r\n* `compose.yaml` providing a separate backend container and static frontend served with automatic TLS\r\n  * Support volumes for data and uploaded files \r\n* `compose.prod.yaml` including postgres database and redis containers\r\n* `app.Dockerfile` for single container, single port deployment on a platform service like Render, Railway, and Google Cloud Run\r\n\r\n* docker-example overhaul by @masenf in https://github.com/reflex-dev/reflex/pull/2690\r\n* Include app.Dockerfile for deploying to container hosting platform by @masenf in https://github.com/reflex-dev/reflex/pull/2784\r\n\r\n## Improve \"Stateless\" app detection\r\n\r\nApps which import State, but do not actually use it are considered stateless.\r\n\r\nApps that use `rx.State.router` automatically work without defining a dummy substate.\r\n\r\nApps dynamically create state at runtime (#1877) correctly include used dynamic substates.\r\n\r\n* Track state usage by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2441\r\n\r\n## Better support for plain SQLAlchemy\r\n\r\n* add support for sqlalchemy AssociationProxys by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2809\r\n\r\n## `reflex component` CLI improvements\r\n\r\n* Build and publish in a single step\r\n* Improved custom component template\r\n* More comprehensive `.gitignore`\r\n\r\n* fix template for custom comp by @Lendemor in https://github.com/reflex-dev/reflex/pull/2787\r\n* [REF-2141] Custom component command improvements by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2807\r\n\r\n## `EventChain` list syntax is undeprecated\r\n\r\nIt is now acceptable to pass a list of multiple `EventHandler` to an event trigger, such as `on_click`.\r\n\r\n# Bug Fixes\r\n\r\n* Fix Padding in Accordion component\r\n  * Update accordion.py by @FrankBold in https://github.com/reflex-dev/reflex/pull/2759\r\n* Skip node install if version requirements are met\r\n  * Solved Nodejs prerequisite check by @ansuzgs in https://github.com/reflex-dev/reflex/pull/2767\r\n* Fix infinite recursion when a substate named \"state\" has a computed var by @masenf in https://github.com/reflex-dev/reflex/pull/2778\r\n* **Fix `/_upload` 404 and missing `on_load` handlers in production deployment**\r\n  * app_module_for_backend: wait for _compile in prod mode by @masenf in https://github.com/reflex-dev/reflex/pull/2760\r\n* [REF-2087] Better rx.progress styling integration with radix themes by @masenf in https://github.com/reflex-dev/reflex/pull/2762\r\n* Updating initialize_gitignore() to avoid modifying the encoding of the .gitignore file by @cllatser in https://github.com/reflex-dev/reflex/pull/2797\r\n* Fix tab freezing and crash when `appearance=\"dark\"` and `theme_panel=True`\r\n  * [REF-1994] ThemePanel: clear chakra-ui-color-mode key when using theme panel by @masenf in https://github.com/reflex-dev/reflex/pull/2799\r\n* [REF-2098] Allow overlay Close components to have on_click handlers by @masenf in https://github.com/reflex-dev/reflex/pull/2793 \r\n\r\n# Other Changes\r\n\r\n* Perf improvements (part 1) by @masenf in https://github.com/reflex-dev/reflex/pull/2779\r\n* Unwrap images in rx.markdown by @picklelo in https://github.com/reflex-dev/reflex/pull/2789\r\n* [AppHarness] add webdriver option arguments via env by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2783\r\n\r\n## New Contributors\r\n* @FrankBold made their first contribution in https://github.com/reflex-dev/reflex/pull/2759\r\n* @ansuzgs made their first contribution in https://github.com/reflex-dev/reflex/pull/2767\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.4.3...reflex-0.4.4",
      "created_at": "2024-03-08T05:12:15Z",
      "updated_at": "2024-03-11T22:53:55Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYMrW",
      "number": 2816,
      "title": "Reflex Motion - An animation library for reflex",
      "body": "A Reflex wrapper for [Framer Motion](https://www.framer.com/motion/), a production-ready motion library for React.\r\n\r\nhttps://github.com/Alek99/reflex-motion\r\n\r\nhttps://github.com/reflex-dev/reflex/assets/38776361/2d836d89-56f5-4929-a5b9-52b2b55385e3\r\n\r\n",
      "created_at": "2024-03-08T22:46:44Z",
      "updated_at": "2024-03-08T23:04:28Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYKi-",
      "number": 2804,
      "title": "What is the right way to put the page or App in 'Dark' mode?",
      "body": "Following the example of the official documentation, change \"light\" by \"dark\", leaving the code as follows:\r\n`app = rx.App(\r\n    theme=rx.theme(\r\n        appearance=\"dark\", has_background=True, radius=\"large\", accent_color=\"teal\"\r\n    )\r\n)`\r\nBut the page continues to be seen in \"Light\" mode.\r\nI am looking for documentation, but I can't find anything else.\r\nWhat am I wrongly interpreting?\r\nreflex = 0.4.3",
      "created_at": "2024-03-07T02:29:42Z",
      "updated_at": "2024-03-07T02:40:23Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "HDAlbarenque",
        "avatar_url": "https://avatars.githubusercontent.com/u/50972287?u=3fdebad8ba500f6ee1c848ed2a663112122c6d50&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYF45",
      "number": 2768,
      "title": "Hi, is there any way to implement the on_submit event in the form with html tags? :)",
      "body": "Hi, as you know I use Reflex with HTML tags and Tailwind. Now I find that the <form> tag does not have the \"on_submit\" option. What would be the correct way to implement it if possible?\r\n\r\nThank you very much.\r\n\r\n\r\n```\r\n@rx.page(title=\"jwt_demo\", on_load=FormInputState.obtain_token())\r\ndef index() -> rx.Component:\r\n    return rx.el.div(\r\n        rx.el.form(\r\n            rx.el.input(\r\n                name=\"email\",\r\n                default_value=\"search\",\r\n                placeholder=\"Input mail here...\",\r\n                type=\"email\",\r\n                required=True,\r\n            ),\r\n            rx.el.input(\r\n                name=\"password\",\r\n                default_value=\"search\",\r\n                placeholder=\"Input password here...\",\r\n                type=\"password\",\r\n                required=True,\r\n            ),\r\n            rx.el.button(\r\n                \"Submit\",\r\n                type=\"submit\",\r\n                class_name=\"w-full\"),\r\n            **on_submit = ??????????**\r\n            class_name=\"flex flex-col\"\r\n        ),\r\n        reset_on_submit=True,\r\n        class_name=\"min-h-screen flex flex-col justify-center items-center\"\r\n    )\r\n\r\n\r\napp = rx.App()\r\n```\r\n",
      "created_at": "2024-03-03T22:55:32Z",
      "updated_at": "2024-03-07T00:22:09Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AhE4e",
        "body": "#2776 "
      },
      "user": {
        "login": "cllatser",
        "avatar_url": "https://avatars.githubusercontent.com/u/65849393?u=877b3c7e14707bf939c2419ba0838b60b186d7de&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYKWa",
      "number": 2800,
      "title": "How to create a downloadable .zip archive in Reflex?",
      "body": "Using builtin python standard library functions, can I create an return an archive containing multiple files and subfolders from an event handler?",
      "created_at": "2024-03-06T22:09:51Z",
      "updated_at": "2024-03-06T22:10:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYBhV",
      "number": 2758,
      "title": "Capture value, id or name of a button or link",
      "body": "I have created a very simple example, to try to capture the value of the button and send it, to change the text on the screen. It does not work. Is there any way to capture the id, value or name of the button or link, when you click on it?\r\n\r\n```\r\nimport reflex as rx\r\n\r\nclass TestState(rx.State):\r\n    text: str = \"hello\"\r\n\r\n \r\n    def abrir_pdf(self, value) -> str:\r\n        # This will be recomputed whenever `text` changes.\r\n        self.text = value\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.vstack(\r\n        rx.chakra.badge(\r\n        TestState.text, variant=\"solid\", color_scheme=\"green\"\r\n    ),\r\n        rx.button(\r\n           \"Click Me!\",\r\n           type=\"submit\",\r\n           value = \"5\",\r\n           on_click= lambda e: TestState.abrir_pdf(e)\r\n           )\r\n    )\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\n```",
      "created_at": "2024-03-01T11:43:54Z",
      "updated_at": "2024-03-05T16:37:46Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AhFX_",
        "body": "Would something like this work for you?\r\n\r\n```python\r\nimport random\r\n\r\nimport reflex as rx\r\n\r\n\r\nclass State(rx.State):\r\n    values: list\r\n    last_click: int\r\n\r\n    def on_load(self):\r\n        self.values = [random.randint(1, 100) for _ in range(10)]\r\n\r\n    def handle_button_press(self, value):\r\n        self.last_click = value\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.center(\r\n        rx.vstack(\r\n            rx.text(\"Last clicked: \", State.last_click),\r\n            rx.hstack(\r\n                rx.foreach(\r\n                    State.values,\r\n                    lambda value: rx.button(\r\n                        value,\r\n                        on_click=State.handle_button_press(value),\r\n                    ),\r\n                ),\r\n            ),\r\n        ),\r\n        height=\"100vh\",\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index, on_load=State.on_load)\r\n```"
      },
      "user": {
        "login": "Gelraiser",
        "avatar_url": "https://avatars.githubusercontent.com/u/16465886?u=42136327b0fa631613207db9b5d7117597bd0248&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYA3P",
      "number": 2756,
      "title": "v0.4.3 Pre-release Thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on `reflex-dev/reflex`.\r\n\r\n```console\r\npip install 'reflex~=0.4.3a'\r\n```\r\n\r\n## Schedule\r\n\r\n* 2024-02-29: 0.4.3a1 is released for general testing\r\n* 2024-03-04 14:51 PST: 0.4.3 is published to PyPI\r\n\r\n# New Features\r\n\r\n## Set `initial_value` for `rx.var` and `rx.cached_var`\r\n\r\nProvide a placeholder to avoid evaluating computed vars during compile time, for example, if they would perform database queries or other expensive operations.\r\n\r\n```python\r\nclass MyState(rx.State):\r\n    @rx.var(initial_value=42)\r\n    def answer(self):\r\n        with rx.session() as session:\r\n            session.exec(...)\r\n```\r\n\r\n* Initial values for computed vars by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2670\r\n\r\n## `State.get_state` allows access to arbitrary substates from within an event handler\r\n\r\n```python\r\nclass MyState(rx.State):\r\n    answer: int = 42\r\n\r\nclass OtherState(rx.State):\r\n    async def get_answer(self):\r\n        my_state = await self.get_state(MyState)\r\n        print(f\"The answer is {my_state}.answer\")\r\n```\r\n\r\nNote that `get_state` is an async function and must be `await`'ed\r\n\r\n* [REF-1988] API to Get instance of Arbitrary State class by @masenf in https://github.com/reflex-dev/reflex/pull/2678\r\n\r\n## CLI for Creating and Publishing 3rd Party Components\r\n\r\n* Add support for custom components starter by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2314\r\n\r\n# Improvements\r\n\r\n## Allow `accent` as a valid choice in `rx.color`\r\n\r\n* added accent option in color by @wassafshahzad in https://github.com/reflex-dev/reflex/pull/2713\r\n\r\n## Chakra no longer used when rendering Markdown\r\n\r\n* remove chakra from markdown component_map by @Lendemor in https://github.com/reflex-dev/reflex/pull/2709\r\n\r\n## Sidebar template uses all Radix components\r\n\r\n* Lendemor/templates radix sidebar by @Lendemor in https://github.com/reflex-dev/reflex/pull/2705\r\n\r\n## Disallow invalid `/api` prefix for frontend page routes\r\n\r\nThese routes conflict with what NextJS considers special \"API routes\" and thus do not work for reflex pages.\r\n\r\n* [REF-1741] Disallow routes with /api prefix by @masenf in https://github.com/reflex-dev/reflex/pull/2711\r\n\r\n## `rx.plotly` now accepts arbitrary `config` prop\r\n\r\n* Add config to rx.plotly component by @amirmolavi in https://github.com/reflex-dev/reflex/pull/2745\r\n\r\n## Computed Backend-only Vars\r\n\r\n* DRAFT PR - Added code for computed backend vars by @wassafshahzad in https://github.com/reflex-dev/reflex/pull/2540\r\n\r\n## Connection Pulser While Websocket is Disconnected\r\n\r\nOnly show the \"Connection Error\" banner after a few failed reconnection attempts.\r\n\r\n* add pulser for connection + adjust condition for connnection_modal by @Lendemor in https://github.com/reflex-dev/reflex/pull/2676\r\n\r\n## Reconnect Websocket in Stale Tabs\r\n\r\nWhen a browser tab regains focus, automatically reconnect the websocket if it is disconnected.\r\n\r\n* Reconnection Logic by @Yummy-Yums in https://github.com/reflex-dev/reflex/pull/2743\r\n\r\n# Bug Fixes\r\n\r\n* small update to color scheme high level select by @tgberkeley in https://github.com/reflex-dev/reflex/pull/2712\r\n* fix inherited backend var deps by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2715\r\n* Avoid frontend errors with getRefValue by @masenf in https://github.com/reflex-dev/reflex/pull/2691\r\n* Add missing header variable in el components in __init__.py file. by @cllatser in https://github.com/reflex-dev/reflex/pull/2732\r\n* [REF-2101] Support default_value and default_checked on rx.el.input by @masenf in https://github.com/reflex-dev/reflex/pull/2739\r\n* fix initial value for color_mode by @Lendemor in https://github.com/reflex-dev/reflex/pull/2741\r\n* fix drawer on_open_change event by @Lendemor in https://github.com/reflex-dev/reflex/pull/2755\r\n* call default_factorys on State.reset by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2749\r\n\r\n# Other Changes\r\n* benchmarks.yml: skip benchmarking if the DATABASE_URL is not set by @masenf in https://github.com/reflex-dev/reflex/pull/2701\r\n* do not store new_backend_vars in State class by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2707\r\n* fix type of value2 in test_state by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2708\r\n* pyproject.toml: bump to 0.4.2 by @masenf in https://github.com/reflex-dev/reflex/pull/2724\r\n* Update sidebar template README.md by @thedatadavis in https://github.com/reflex-dev/reflex/pull/2735\r\n* fix telemetry for init event by @Lendemor in https://github.com/reflex-dev/reflex/pull/2736\r\n* Only alert users of reflex upgrade once per project by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2731\r\n* fix black+ruff by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2750\r\n* add some backend var state inheritance tests by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2685\r\n* initial attempt at writing test for urls by @tgberkeley in https://github.com/reflex-dev/reflex/pull/2689\r\n\r\n# New Contributors\r\n* @thedatadavis made their first contribution in https://github.com/reflex-dev/reflex/pull/2735\r\n* @amirmolavi made their first contribution in https://github.com/reflex-dev/reflex/pull/2745\r\n\r\n**Full Changelog**: https://github.com/reflex-dev/reflex/compare/v0.4.2...reflex-0.4.3",
      "created_at": "2024-03-01T00:47:58Z",
      "updated_at": "2024-03-04T22:52:15Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYHqD",
      "number": 2781,
      "title": "What would be the order of component CSS properties definition?",
      "body": "Recently, I reported the headers responsive problem (#2719). \r\nI notice that the CSS properties are defined as follows priority:\r\n1. CSS property as component argument ( for example: `font_size=\"60px\"`)\r\n2. default (for example: `size=\"9\"`)\r\n3. class_name (for example: `class_name=\"text-4xl\"`)\r\n\r\nFor example:\r\n```python\r\nrx.heading(\"Test\",\r\n           as_=\"h2\",\r\n           size=\"9\",\r\n           font_size=\"60px\",\r\n           class_name=\"text-4xl font-bold text-gray-700\"\r\n           ),\r\n```\r\nIn this case, `font_size` has priority over `size`, which defines the default or base font size. But, `text-4xl` doesn't modify the header font size unless it is defined as important (`!text-4xl`). Even if `size` is not defined explicitly, it takes a default value taking precedence over the `class_name` definition. The same happens with `weight` and `align`. \r\nI expected the order as follows:\r\n1. component argument\r\n2. class_name\r\n3. default \r\n\r\nIMHO, this modification can improve the tailwind portability and complementarity with the Radix theme.\r\n\r\nData to reproduce:\r\n- Python 3.11.7\r\n- Reflex 0.4.2\r\n\r\n",
      "created_at": "2024-03-04T22:42:53Z",
      "updated_at": "2024-03-04T22:42:54Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Valdes-Tresanco-MS",
        "avatar_url": "https://avatars.githubusercontent.com/u/36672242?u=eabb08f6f40ea7840f86955d3281bda3e03b069d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYGz3",
      "number": 2770,
      "title": "Loosen requirements",
      "body": "I really like the looks of reflex dev so far and would like to use it at my company for internal dev tooling to replace streamlit as it would serve the purpose much better.\r\n\r\nHowever, this is currently made impossible by the quite strict down pinning of a lot of dependencies. As we develop the tools in a larger repository I end up in a lot of conflicts. But even with a standalone tool our security policies frequently require me to update to the latest versions of packages that fix some CVEs or other security issues.\r\n\r\nWhile I can see the case for semantic versioning and down pinning to the major version. In reality this only works in a library if you frequently evaluate if there are newer compatible version and are very quick to lift upper bounds. Sadly with reflex this isn't the case. Maybe a better approach would be to open up most upper boundaries and rely on CI pipelines to ensure compatibility with latest version of libraries.",
      "created_at": "2024-03-04T08:29:36Z",
      "updated_at": "2024-03-04T20:30:17Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "mahrz24",
        "avatar_url": "https://avatars.githubusercontent.com/u/45788?u=db77e813e072d5579171aa47cb4f91b6d4c39e11&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AYF-8",
      "number": 2769,
      "title": "How can I implement infinte scrolling using reflex?",
      "body": "Is there a way for trigger an event when a particular element comes into view, in order to implement infinite scrolling within a Reflex app?",
      "created_at": "2024-03-03T23:48:53Z",
      "updated_at": "2024-03-03T23:56:37Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AX-fM",
      "number": 2742,
      "title": "What happened to the responsive grid",
      "body": "Hey everyone,\r\n\r\nI just came back to reflex after a while to start a new project and cannot seem to find the responsive grid any more. \r\nIs it just me or is there no such component any more? Any alternatives?\r\n\r\nI just wish to have components stacked in a certain way on computer screen and another way on mobile.\r\n\r\nThanks in advance :)",
      "created_at": "2024-02-28T06:01:34Z",
      "updated_at": "2024-02-29T04:48:57Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Ag5XB",
        "body": "@NanoscaleSimulations the Chakra components are still available in the `rx.chakra` namespace: https://reflex.dev/docs/library/chakra/layout/responsivegrid/"
      },
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AX3aU",
      "number": 2702,
      "title": "0.4.2 Prerelease Thread",
      "body": "# Try out the Prerelease\r\n\r\nPlease report any problems you encounter in this discussion thread or as separate issues on `reflex-dev/reflex`.\r\n\r\n```console\r\npip install 'reflex>=0.4.2a'\r\n```\r\n\r\n## Schedule\r\n\r\n* 2024-02-22: 0.4.2a1 is released for general testing\r\n* 2024-02-26 12:05 PST: General release of 0.4.2\r\n\r\n# New Features\r\n\r\n## Syncronize LocalStorage between tabs\r\n\r\nPass the new `sync=True` argument to `rx.LocalStorage` to enable changes on one tab to automatically update in other tabs.\r\n\r\n* feat: Synchronizing localStorage between tabs using browser events by @abulvenz in https://github.com/reflex-dev/reflex/pull/2533\r\n\r\n# Improvements\r\n\r\n## Tuple type annotations are now respected index-wise\r\n\r\n* fixed bug in var type for iterable types by @wassafshahzad in https://github.com/reflex-dev/reflex/pull/2617\r\n\r\n## Substates are serialized individually\r\n\r\nThis allows apps with large state to only serialize and deserialize the parts of the state needed to handle a given event.\r\n\r\n* [REF-1885] Shard Substates when serializing to Redis by @masenf in https://github.com/reflex-dev/reflex/pull/2574\r\n\r\n## Better Image Serialization\r\n\r\nImproves mime type detection for more types of PIL Image objects.\r\n\r\n* fix image serializing - REF-1889 by @mentally-gamez-soft in https://github.com/reflex-dev/reflex/pull/2550\r\n\r\n## Other Improvements\r\n\r\n* Progress component to support `color_scheme` on component level by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2684\r\n* ThemePanel is toggleable with bool in Theme by @Lendemor in https://github.com/reflex-dev/reflex/pull/2675\r\n\r\n# Bug Fixes\r\n\r\n* Fix SQLAlchemy list types by @benedikt-bartscher in https://github.com/reflex-dev/reflex/pull/2668\r\n* [REF-2045] Implement __reduce_ex__ for MutableProxy  by @masenf in https://github.com/reflex-dev/reflex/pull/2688\r\n* Fix for setting `rx.theme(appearance=\"dark\")` (Note: dark mode does not work with `rx.theme_panel`)\r\n  * Apply app theme color_mode/appearance as next-themes default by @masenf in https://github.com/reflex-dev/reflex/pull/2654\r\n* `rx.Upload` can now contain children components that use State.\r\n  * Make `rx.Upload` a memoization leaf by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2695\r\n\r\n## Accordion Issues\r\n\r\n* Fix Browser Warnings\r\n  * Accordion Root Exclude `color_scheme` and `variant` props in tag by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2664\r\n* Fix accordion not working with `rx.foreach`\r\n  * Accordion Items unique Value by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2663\r\n\r\n# Other Changes\r\n\r\n* Use classes for allowed components by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2662\r\n* Use sync redis client to determine prod mode worker number and add sanity check by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2679\r\n* bump github action versions by @martinxu9 in https://github.com/reflex-dev/reflex/pull/2680\r\n* test_input: replace sleep with `_poll_for` by @masenf in https://github.com/reflex-dev/reflex/pull/2677\r\n* Debounce `input_ref` Truthiness check for vars by @ElijahAhianyo in https://github.com/reflex-dev/reflex/pull/2692\r\n* use direction props from radix.Flex by @Lendemor in https://github.com/reflex-dev/reflex/pull/2696\r\n* Bump axios version to 1.6.0 by @timmypidashev in https://github.com/reflex-dev/reflex/pull/2699\r\n\r\n## New Contributors\r\n* @mentally-gamez-soft made their first contribution in https://github.com/reflex-dev/reflex/pull/2550",
      "created_at": "2024-02-22T23:06:10Z",
      "updated_at": "2024-02-26T20:08:02Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATVrD",
      "number": 802,
      "title": "Self Hosting Guide and Discussion",
      "body": "This is a short guide on how to deploy an app on your own server. In this example, we will use DigitalOcean, but you can use any hosting provider.\r\n\r\n## 1. Get a Cloud VM\r\n\r\n* Create an account on https://www.digitalocean.com\r\n* Create An Ubuntu VM in a region closest to you\r\n<img width=\"872\" alt=\"Screen Shot 2023-04-10 at 7 40 28 PM\" src=\"https://user-images.githubusercontent.com/6270214/231041660-39ac5e9a-c9ba-4daa-a06e-36906c45254c.png\">\r\n\r\n* Select an instance\r\n<img width=\"1124\" alt=\"Screen Shot 2023-04-10 at 7 41 04 PM\" src=\"https://user-images.githubusercontent.com/6270214/231041740-33482806-795d-4d7a-9d97-b30e37628cad.png\">\r\n\r\n* Create your instance\r\n\r\n## 2. Setup the environment.\r\n\r\nYou should have a public IP address for your VM to SSH into.\r\n\r\n```bash\r\nssh root@<your IP>\r\n```\r\n\r\nMake sure you have installed `python3`, `pip`, `nodejs`, and `zip`.\r\n\r\n```bash\r\napt-get update\r\napt install python3-pip nodejs zip\r\n```\r\n\r\nNow install Reflex\r\n\r\n```bash\r\npip install reflex\r\n```\r\n\r\n## 3. Clone and run your app\r\n\r\nClone your code - we will just run the snake game example app.\r\n\r\n```bash\r\ngit clone https://github.com/reflex-dev/reflex-examples.git\r\ncd reflex-examples/snakegame\r\n```\r\n\r\nUpdate the `api_url` in the `rxconfig.py` with your IP address. Make sure to include `http://` in the front.\r\n\r\n```python\r\nimport reflex as rx\r\n\r\n\r\nconfig = rx.Config(\r\n    app_name=\"snakegame\",\r\n    api_url=\"http://<your IP>:8000\",\r\n    db_url=\"sqlite:///reflex.db\",\r\n    env=rx.Env.DEV,\r\n)\r\n```\r\n\r\nNow you can init and run the app in production mode on port 80. (Feel free to test in dev mode first).\r\n\r\n```bash\r\nreflex init\r\nreflex run --port 80 # dev mode test\r\nreflex run --env prod --port 80\r\n```\r\n\r\nYou should now see your app live at your IP address.\r\n\r\nhttps://user-images.githubusercontent.com/6270214/231046129-740f51a0-53a8-496f-b20a-337952a3a6ae.mov\r\n\r\nThe next step would be to point your domain name to your IP. \r\n\r\nOf course, this is a very basic, manual way to deploy. We will make a similar guide with Docker, and we are working on our `reflex deploy` service for one command deployment.\r\n\r\nHope this helps!\r\n",
      "created_at": "2023-04-11T02:54:33Z",
      "updated_at": "2024-02-26T14:33:53Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "picklelo",
        "avatar_url": "https://avatars.githubusercontent.com/u/6270214?u=d4f6ecc83a3a136ecde2033f902ad243ee76f853&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AX3Jr",
      "number": 2698,
      "title": "Recursive components",
      "body": "Following a chat with @masenf on Discord, this thread aims to discuss how a recursive component can be implemented in reflex. \r\n\r\nThe idea would be to make the following code runnable (while today, it throws the following error \"RecursionError: maximum recursion depth exceeded while calling a Python object\")\r\n\r\n```python\r\nimport random\r\nfrom typing import Optional\r\nimport reflex as rx\r\n\r\n\r\nclass Node(rx.Base):\r\n    l: Optional[\"Node\"]\r\n    r: Optional[\"Node\"]\r\n    data: int\r\n\r\n\r\ndef add_node(tree: Node, value: int) -> Node:\r\n    if tree is None:\r\n        return Node(data=value)\r\n    if value < tree.data:\r\n        tree.l = add_node(tree.l, value)\r\n    else:\r\n        tree.r = add_node(tree.r, value)\r\n    return tree\r\n\r\n\r\ndef print_node(n: Node, label: str = \"Root\"):\r\n    print(f\"{label} Data: {n.data}\")\r\n    if n.l:\r\n        print_node(n.l, \"L\")\r\n    if n.r:\r\n        print_node(n.r, \"R\")\r\n\r\n\r\ndef render_node(n: Node, label: str = \"Root\") -> rx.Component:\r\n    return rx.card(\r\n        rx.vstack(\r\n            rx.text(label),\r\n            rx.text(f\"Data: {n.data}\"),\r\n            rx.hstack(\r\n                rx.cond(\r\n                    n.l,\r\n                    render_node(n.l, \"Left\"),\r\n                ),\r\n                rx.cond(\r\n                    n.r,\r\n                    render_node(n.r, \"Right\"),\r\n                ),\r\n            ),\r\n        )\r\n    )\r\n\r\n\r\nclass State(rx.State):\r\n    \"\"\"The app state.\"\"\"\r\n    b_tree = Node(data=50)\r\n\r\n    def build_tree(self):\r\n        for _ in range(10):\r\n            add_node(self.b_tree, random.randint(0, 100))\r\n        print_node(self.b_tree)\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.center(\r\n        # Maximum recursion depth 😭\r\n        # rx.vstack(\r\n        #     render_node(State.b_tree),\r\n        # ),\r\n        height=\"100vh\",\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index, on_load=State.build_tree)\r\n```\r\n\r\nFor future references, below is the initial thread / discussion on github.\r\n\r\n> masenf — Hier à 21:09\r\n> yeah i would guess the generated javascript code gets insanely large and nested; i don't think that's a sustainable solution, but sort of points toward a better solution.\r\n> \r\n> i don't think we get out of this without defining an anonymous js function under the covers kind of like a cond, but with special syntax for recursive calling\r\n> Arkhonx — Aujourd’hui à 12:47\r\n> yes indeed, the generated index.js file has 33k+ lines\r\n> I can see that react supports recursive components, so the idea would be to find a i)  syntax allowing to define recursive components in reflex and ii) a way to compile that into a recursive react component ?\r\n> Arkhonx — Aujourd’hui à 13:00\r\n> from my understanding of compilation, currently when you define a function that return a rx.component (such as the render_node function above), it's not compiled into a new react component by reflex, but rather its content (which are reflex function corresponding to react components) are directly rendered into the corresponding react component in the corresponding routing page. So if I were to call this function twice in two different routes, its content & corresponding react children would be fully compiled / rendered twice ? \r\n> (not sure if that's clear)\r\n> In any case, that would mean that we would have to find a way (for a instance a function decorator?) that would allow users to tell reflex that this function need to be compiled into a component, and that calls that function in any route / page should not render children components, but rather make reference to that component? \r\n> And in addition, to add recursion, that would mean that we have to find a way, within the python function to make a call to the newly defined react component, along with the relevant variables. This could be like a function that get compiled into a call to a component based on its  name & params directly? \r\n> Just trying to understand the complexity of the task to evaluate whether I can be of help or not on this \r\n> for better follow-up, probably we can switch the discussion to github?\r\n> masenf — Aujourd’hui à 16:35\r\n> We do have a mechanism that automatically memoizes components to their own individual react components... but it does not handle props currently, so recursion is hard.\r\n> \r\n> Let's go to gh discussions and we can brainstorm and design a solution over there\r\n\r\nFollowing on that, can you point me where the memoization happens in the current code, so that i can see how it works? How difficult you think it would be to allow that mechanism to handle props?",
      "created_at": "2024-02-22T17:54:12Z",
      "updated_at": "2024-02-22T17:54:12Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "romain-bury",
        "avatar_url": "https://avatars.githubusercontent.com/u/32076618?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXxck",
      "number": 2658,
      "title": "Getting started with an Image Editor in Reflex.dev?",
      "body": "I have to create a web app for my work and I have been looking for frameworks to choose from. The only framework that has all the components out of the box for my needs is the Gradio framework. But I do not like how the Gradio apps looks.\r\n\r\nI stumbled upon Reflex.dev a couple of days back and I have been looking for methods to create an Image Editor in Reflex. The only thing that comes to my mind is to wrap some React JS library in Reflex. Truthfully speaking, I do not know anything about Javascript and I don't even know what to look for in JavaScript packages.\r\n\r\nThis is what I need: https://www.gradio.app/docs/imageeditor. Ability to upload an image, draw on top of an image, and erase parts. Undo, Redo changes will be good to have, but not mandatory. \r\n\r\nCan someone please help me in getting started please?",
      "created_at": "2024-02-18T07:58:41Z",
      "updated_at": "2024-02-20T09:58:23Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "rjachuthan",
        "avatar_url": "https://avatars.githubusercontent.com/u/7797813?u=b52c6fec79014db74d4bae330c1ef095b44ec124&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXxP8",
      "number": 2653,
      "title": "input field for currencies",
      "body": "Hello, I am starting to study Reflex and I need a field to format currency type, for example $1,151,355.56:\r\n1) that separates thousands by commas 2) that only allows two decimals to be entered.\r\n3) Optional currency sign.\r\n4) just save the numbers",
      "created_at": "2024-02-17T23:24:21Z",
      "updated_at": "2024-02-19T18:36:16Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "breidyfunes",
        "avatar_url": "https://avatars.githubusercontent.com/u/48229287?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUKg-",
      "number": 1183,
      "title": "Get coordinates of a click on image",
      "body": "I want to get the coordinates of a mouse click on an image element. These coordinates must be relative to the image. How can I do that?",
      "created_at": "2023-06-11T12:19:55Z",
      "updated_at": "2024-02-18T18:37:33Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "vaibhavpawar05",
        "avatar_url": "https://avatars.githubusercontent.com/u/23282025?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXw7L",
      "number": 2647,
      "title": "Future plans for Chakra",
      "body": "Hi,\r\n\r\nfirst of all congrats on the latest release, keep up the excellent work!\r\n\r\nI've seen that core components are now based on Radix, so I was wondering if and for how long Chakra will still be supported. What are your plans about it?\r\n\r\nSince we're building quite a large app with Reflex, if you plan at some point to remove and drop support for Chakra, we may consider to invest some time right away to migrate to Radix.\r\n\r\nThanks",
      "created_at": "2024-02-17T13:05:57Z",
      "updated_at": "2024-02-17T18:10:51Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXvh3",
      "number": 2629,
      "title": "Help test the v0.4.0 prerelease!",
      "body": "Hello everyone as you may have seen on Twitter or Discord v0.4.0 is a major release changing how most components look and function in reflex.\r\n\r\nIf you are interested in helping us test the new release by doing the following:\r\n\r\n`pip install reflex==0.4.0a4`\r\n\r\n```\r\nreflex init\r\n\r\nreflex run\r\n```\r\n\r\nDocs for this prerelease can be found here https://dev.reflexcorp.dev/docs/getting-started/introduction/\r\n\r\nThank you for the help and feedback would be greatly appreciated as we hope to ship this very soon.",
      "created_at": "2024-02-15T22:25:52Z",
      "updated_at": "2024-03-01T00:30:10Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXvJ1",
      "number": 2621,
      "title": "How to use a React hook instead of a Component in Reflex",
      "body": "> **Answered**:\r\n> Looks like support was added for React Hooks, but I guess the docs are quiet because this answer was not easily Googleable: https://github.com/reflex-dev/reflex/pull/810.\r\n>\r\n> I am filing this discussion in case it comes up for anyone else.\r\n\r\nIt seems that the [@react-oauth/google](https://www.npmjs.com/package/@react-oauth/google) supports the Google [Authorization code flow](https://www.npmjs.com/package/@react-oauth/google#authorization-code-flow) but only via a React hook, it's not built into the component. So the example in JS says:\r\n\r\n```js\r\nimport { useGoogleLogin } from '@react-oauth/google';\r\n\r\nconst login = useGoogleLogin({\r\n  onSuccess: codeResponse => console.log(codeResponse),\r\n  flow: 'auth-code',\r\n});\r\n\r\n<MyCustomButton onClick={() => login()}>Sign in with Google 🚀</MyCustomButton>;\r\n```\r\n\r\nI am wondering if it's possible to use this style in Reflex, as the [examples](https://github.com/reflex-dev/reflex-examples/blob/main/google_auth/google_auth/react_oauth_google.py) all point to wrapping a full Component:\r\n\r\n```python\r\nclass GoogleLogin(rx.Component):\r\n    library = \"@react-oauth/google\"\r\n    tag = \"GoogleLogin\"\r\n\r\n    def get_event_triggers(self):\r\n        return {\"on_success\": lambda data: [data]}\r\n```",
      "created_at": "2024-02-15T15:30:09Z",
      "updated_at": "2024-02-15T17:36:10Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "scottpersinger",
        "avatar_url": "https://avatars.githubusercontent.com/u/80947?u=62ccb98c92d221f379ef13f284ea80b70a7f82ca&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXsB6",
      "number": 2577,
      "title": "how to dump default data into database?",
      "body": "I want to dump my admin data to the database manually or by startup!",
      "created_at": "2024-02-12T13:44:53Z",
      "updated_at": "2024-02-12T13:44:54Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "kumaraguru1735",
        "avatar_url": "https://avatars.githubusercontent.com/u/34372541?u=0ce4fd117efa10371929dcc013d1ab868873137e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXcXp",
      "number": 2476,
      "title": "Button to scroll (smoothly) to a specific slace on my page",
      "body": "Hi! I'm trying to figure out how to make a button that, when pressed, scrolls down to a specific component at the bottom of my page. Do you know how I could do this in Reflex?\r\n\r\nWhat I'm currently doing is using an href in my button like this:\r\n```python\r\nrx.link(\r\n    rx.button(\r\n        # Button code ...\r\n    ),\r\n    href=\"#component_id_where_i_want_to_scroll\",\r\n)\r\n```\r\n\r\nIt currently works, but not the way I would like. I'd prefer the scroll to happen smoothly, not instantly. It's important to note that I added the following to the general styles:\r\n```python\r\nBASE_STYLE = {\r\n    #Other style configs ...\r\n    \"scroll_behavior\": \"smooth\",\r\n}\r\n```\r\n\r\nApp:\r\n```python\r\napp = rx.App(style=BASE_STYLE)\r\n```",
      "created_at": "2024-01-29T02:54:49Z",
      "updated_at": "2024-02-06T02:46:55Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Af9Qk",
        "body": "I managed to solve it. What I did was put the following in a CSS file:\r\n```css\r\n* {\r\n    scroll-behavior: smooth !important;\r\n}\r\n```\r\nand then I added it to a list of stylesheets that goes directly in the app's definition:\r\n```python\r\nSTYLESHEETS = [\r\n    \"/css/loop.css\",\r\n    #Other stylesheets...\r\n]\r\n\r\napp = rx.App(stylesheets=STYLESHEETS)\r\n```"
      },
      "user": {
        "login": "juandaherrera",
        "avatar_url": "https://avatars.githubusercontent.com/u/44278965?u=fa2254b1dae8ad8fa732fde65ed8f3bb2676ed6f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXh2I",
      "number": 2513,
      "title": "Upload PDF Component to Azure Blob",
      "body": "How to display uploaded files on the UI using reflex libraries. I tried, but didn't find easier way. \r\n\r\nI am trying below things. I was able to acheive with text box, but was not sucessful with pdf documents\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/144563900/6800e80e-d532-422d-9b66-0ae5729a7784)\r\n\r\n\r\n1. Upload pdf to a blob storage in Azure\r\n2. Display on UI stating that pdf it is uploaded sucessfully\r\n3. Summarize the pdf through the use of langchain\r\n4. Display on the screen the summarized version for the users\r\n\r\nNeed help with Point 1 and Point 2.!!\r\n",
      "created_at": "2024-02-01T18:29:35Z",
      "updated_at": "2024-02-02T23:16:02Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Af2s8",
        "body": "have you played with the `rx.upload` component as described here https://reflex.dev/docs/library/forms/upload/?\r\n\r\nYou can get the raw bytes of the file in the event handler and then send that off to the API directly if it accepts bytes. If it only accepts a URL, then i guess you will have to upload it somewhere.\r\n\r\nFrom the upload event handler though you can get access to the user information recorded in the state (assuming that you're tracking users already in some way)"
      },
      "user": {
        "login": "viswanadula8828",
        "avatar_url": "https://avatars.githubusercontent.com/u/144563900?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXZhK",
      "number": 2461,
      "title": "Failed to load script: /_next/static/chunks/pages/index.js",
      "body": "Failed to load script: /_next/static/chunks/pages/index.js at `reflex run`, this error suddenly started to appear and the project does not load.\r\n\r\nit seems that the index.js file does not exist, the _app.js file is there instead",
      "created_at": "2024-01-26T02:03:15Z",
      "updated_at": "2024-01-30T22:38:28Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "JhonSoto99",
        "avatar_url": "https://avatars.githubusercontent.com/u/36321116?u=1e2c91963fe0bc1233223cd86ad2441953d0776f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXZEB",
      "number": 2455,
      "title": "How to use loading template on Reflex",
      "body": "How to use loading template on Reflex",
      "created_at": "2024-01-25T15:10:09Z",
      "updated_at": "2024-01-30T20:01:35Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "kumaraguru1735",
        "avatar_url": "https://avatars.githubusercontent.com/u/34372541?u=0ce4fd117efa10371929dcc013d1ab868873137e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXelR",
      "number": 2483,
      "title": "Chakra UI toast https://chakra-ui.com/docs/components/toast is missing in Reflex",
      "body": "Chakra UI toast https://chakra-ui.com/docs/components/toast is missing in Reflex",
      "created_at": "2024-01-30T09:32:02Z",
      "updated_at": "2024-01-30T19:58:02Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "kumaraguru1735",
        "avatar_url": "https://avatars.githubusercontent.com/u/34372541?u=0ce4fd117efa10371929dcc013d1ab868873137e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASP5f",
      "number": 322,
      "title": "flet vs pynecone which to choose.",
      "body": "Please suggest, flet vs pynecone which to choose.\r\nThanks",
      "created_at": "2023-01-23T09:13:47Z",
      "updated_at": "2024-01-25T15:12:16Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "saisaigraph",
        "avatar_url": "https://avatars.githubusercontent.com/u/5779906?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWjMF",
      "number": 2238,
      "title": "Modifying ChakraProvider to prevent theme collisions",
      "body": "Hello, I've just started using reflex and I understand that under the hood, reflex uses Chakra UI for default theming. The project I'm working on is going to use code with lots of inline TailwindCSS `class_names=`. The problem is that Chakra adds a bunch of unwanted styling to my components. My goal is to [disable the Chakra default theme](https://github.com/chakra-ui/chakra-ui/discussions/4926) if possible.\r\n\r\nThe only way I know how to fix it is by going to `./.web` and manually changing the `<ChakraProvider>` code to the following:\r\n\r\n```diff\r\n- <ChakraProvider theme={extendTheme(theme)}>\r\n+ <ChakraProvider theme={{}} resetCSS={true}>\r\n    <Global styles={GlobalStyles} />\r\n    <ChakraColorModeProvider>{children}</ChakraColorModeProvider>\r\n</ChakraProvider>\r\n```\r\n\r\nI just now realized that when using `reflex export` this \"fix\" isn't going to work.\r\n\r\nHere's what my page looks like before & after the manual patch:\r\n\r\n<details>\r\n    <summary>Before</summary>\r\n    <img width=\"730\" alt=\"image\" src=\"https://github.com/reflex-dev/reflex/assets/8400251/4fde7d07-62d0-46e8-9518-1d02d36f70c7\">\r\n</details>\r\n\r\n\r\n<details>\r\n    <summary>After (Ignore the minor styling issues, those are my fault)</summary>\r\n    <img width=\"675\" alt=\"image\" src=\"https://github.com/reflex-dev/reflex/assets/8400251/f833126a-66bb-4dde-bd80-d5901014edf0\">\r\n</details>\r\n\r\nI've also tried adjusting the rx.Config, rx.App, etc. I'd appreciate any pointers. The closest \"official\" solution I've seen involves [getting the AppWrap](https://github.com/reflex-dev/reflex/issues/1182) for every component and manually adjusting a provider property, but I don't know how to do that either.",
      "created_at": "2023-11-30T22:52:05Z",
      "updated_at": "2024-01-25T15:09:22Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Addig",
        "body": "If you can wait for our next release, this can be accomplished without a lot of code.\r\n\r\n```python\r\nimport reflex.components.libs.chakra\r\n\r\nreflex.components.libs.chakra.chakra_provider.theme = rx.Var.create_safe({})\r\nreflex.components.libs.chakra.chakra_provider.special_props.add(\r\n    rx.Var.create_safe(\"resetCSS={true}\"),\r\n)\r\n```\r\n\r\nwhich generates code in the `_app.js` file like\r\n\r\n```javascript\r\nfunction AppWrap({children}) {\r\n\r\n\r\n  return (\r\n    <ChakraProvider theme={{}} resetCSS={true}>\r\n      <Global styles={GlobalStyles}/>\r\n      <ChakraColorModeProvider>\r\n        <Fragment>\r\n          {children}\r\n        </Fragment>\r\n      </ChakraColorModeProvider>\r\n   </ChakraProvider>\r\n  )\r\n}\r\n```\r\n\r\ntry it out on `reflex==0.3.5a2`"
      },
      "user": {
        "login": "ZaneH",
        "avatar_url": "https://avatars.githubusercontent.com/u/8400251?u=033cc424753ebe9d05b4020fe4c38840263694cf&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXZD8",
      "number": 2454,
      "title": "text_decoration=\"none\", not working",
      "body": "my code is below\r\n```\r\n                rx.hstack(\r\n                    rx.text(\"Don't have an account? \", margin=\"auto\"),\r\n                    rx.link(\r\n                        rx.text(\" Sign up\", margin=\"auto\", color=\"#007bff\"),\r\n                        href=\"/signup\",\r\n                        margin=\"auto\",\r\n                        text_decoration=\"none\",\r\n                    ),\r\n                ),\r\n```",
      "created_at": "2024-01-25T15:07:48Z",
      "updated_at": "2024-01-25T15:08:08Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "kumaraguru1735",
        "avatar_url": "https://avatars.githubusercontent.com/u/34372541?u=0ce4fd117efa10371929dcc013d1ab868873137e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXTDl",
      "number": 2428,
      "title": "How to disable chakra-ui-color-mode",
      "body": "As I am using my own custom design like background color , own button text color, I do not want to use the default one\r\nAnd I want to make own color-mode for cakra ui!\r\nPlease guide me Thanks!",
      "created_at": "2024-01-21T13:26:53Z",
      "updated_at": "2024-01-25T15:06:14Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "kumaraguru1735",
        "avatar_url": "https://avatars.githubusercontent.com/u/34372541?u=0ce4fd117efa10371929dcc013d1ab868873137e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXWrQ",
      "number": 2438,
      "title": "reflex init  fail!",
      "body": " /myproj/.venv/lib/python3.10/site-packages/reflex/utils/prerequisites.py\", line 615, in install_bun\r\n    raise FileNotFoundError(\"Reflex requires unzip to be installed.\")\r\nFileNotFoundError: Reflex requires unzip to be i",
      "created_at": "2024-01-23T10:35:05Z",
      "updated_at": "2024-01-25T00:45:45Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "xile1973",
        "avatar_url": "https://avatars.githubusercontent.com/u/52164425?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXOxQ",
      "number": 2415,
      "title": "How to disable default api ```/ping ```and ```/_upload``` route",
      "body": "How to disable default api ```/ping ```and ```/_upload``` route",
      "created_at": "2024-01-18T10:32:25Z",
      "updated_at": "2024-01-19T22:26:36Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "kumaraguru1735",
        "avatar_url": "https://avatars.githubusercontent.com/u/34372541?u=0ce4fd117efa10371929dcc013d1ab868873137e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXKHS",
      "number": 2394,
      "title": "Help!!!!!!",
      "body": "what's happening whith this or what am i doing wrong?\r\n![Captura de pantalla 2023-12-24 202531](https://github.com/reflex-dev/reflex/assets/106352519/d1806aaa-c6f2-451c-b47c-f00bc0f15409)\r\n\r\n",
      "created_at": "2024-01-14T04:01:18Z",
      "updated_at": "2024-01-18T21:43:32Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "CarlosABH",
        "avatar_url": "https://avatars.githubusercontent.com/u/106352519?u=b02187397b647ebdd06e7041e4855c80fcf389c7&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AW8YE",
      "number": 2344,
      "title": "Is it necessary to install packages on every compile?",
      "body": "I was just wondering if it really is important for reflex to install base frontend packages on every small change i make to my code?\r\nOr is there something wrong with my configuration or installation?\r\nIt just slows down the hot reload on every small change. ",
      "created_at": "2023-12-31T08:34:07Z",
      "updated_at": "2024-01-17T06:49:50Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AfF3N",
        "body": "We're investigating this issue this week, hoping to fix this in a release soon."
      },
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXIzK",
      "number": 2387,
      "title": "Capture the id of the selected Radiobutton",
      "body": " I have not found a way to capture the ID of the selected Radiobutton, neither in the documentation nor in the Gisthub discussions. Can it be done, according to the following code?”\r\n\r\n```\r\n rx.radio_group(\r\n            rx.radio_group(\r\n                rx.vstack(                                            \r\n                        rx.foreach(\r\n                            options,                           \r\n                            lambda option:  rx.hstack(\r\n                                                rx.text(option[0]), \r\n                                                rx.radio(option[1], id=option[0], color_scheme=\"twitter\"),     \r\n                            ),\r\n                        ),                                 \r\n                    width=\"100%\",\r\n                    align_items=\"left\",\r\n                ),\r\n            align_items=\"left\",\r\n            on_change=lambda answer:State.set_seleccionada(answer),\r\n```\r\n\r\n",
      "created_at": "2024-01-12T09:54:32Z",
      "updated_at": "2024-01-12T12:00:41Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Gelraiser",
        "avatar_url": "https://avatars.githubusercontent.com/u/16465886?u=42136327b0fa631613207db9b5d7117597bd0248&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AXFxX",
      "number": 2378,
      "title": "How to update with new data?",
      "body": "I have the next code, the buttons load ok , but when new data is add , the new buttons not be created\r\nI want know how can make to envios_registrados_manana load with new data each time join to the page\r\n\r\n\r\n```\r\nclass EnviosState(rx.State):\r\n    nombre_tienda: str = \"\"\r\n    @rx.var\r\n    def generar_botones(self) -> str:\r\n        # lista con los envíos de las tiendas de mañana separado en listas\r\n        file_name_manana = nombre_txt_manana()\r\n        lista = almacenar_datos(file_name_manana, self.nombre_tienda.upper())\r\n        lista_envios = []\r\n        for envio in lista:\r\n            numero_envio = envio['envio']\r\n            nombre_envio = envio['nombre']\r\n            distrito_envio = envio['distrito']\r\n            button_label = f\"{numero_envio},{nombre_envio}, ({distrito_envio})\"\r\n            lista_envios.append(rx.button(button_label, color=\"teal\", size=\"sm\"))\r\n        return rx.center(rx.list(items=lista_envios))\r\n    \r\n\r\n\r\ndef envios_registrados_manana(nombre_tienda):\r\n    return EnviosState(nombre_tienda=nombre_tienda).generar_botones\r\n```\r\n\r\n\r\nToo i show my full code:\r\n\r\n```\r\nimport reflex as rx\r\nimport os\r\nfrom datetime import datetime, timedelta\r\nimport time\r\nimport asyncio\r\n\r\ntienda = [\"ana_alvarado\",\"beverlyns\",\"cattleya\",\"chloe\",\"escanor\",\"kariluz\",\"evarya\",\"fiorela\",\"grissy\",\"la_queen\",\"lintage\",\"lya_baby_happy\",\r\n          \"panamby\",\"pitts_store\",\"subliflower_a\",\"subliflower_c\",\"the_prop_peru\",\"tinthaya\",\"raquel_zanabria\",\"jm_fashion\",\"amg_store\",\"envios_x\",\r\n          \"madali\",\"tienda_jeniffer\",\"confecciones_mari\",\"leracom\"]\r\n\r\n#ESTA CLASE SIRVE PARA EL FORMULARIO DE REGISTRO DE ENVIOS.\r\nclass FormState(rx.State):\r\n    form_data: dict = {}\r\n\r\n    def handle_submit(self, form_data: dict):\r\n        \"\"\"Handle the form submit.\"\"\"\r\n        self.form_data = form_data\r\n        tomorrow = datetime.now() + timedelta(days=1)\r\n        date_str = tomorrow.strftime(\"%d-%m-%y\")\r\n        file_name = f\"envios_{date_str}.txt\"\r\n        try:\r\n            with open(file_name, \"r\") as f:\r\n                envio = f\"#{len(f.readlines())+1:03d}\"\r\n        except FileNotFoundError:\r\n            envio = \"#001\"\r\n        self.form_data['envio'] = envio\r\n        with open(file_name, \"a\") as f:\r\n            f.write(str(self.form_data) + \"\\n\")\r\n\r\n\r\n\r\n        \r\n\r\n#AQUI ACABA LA CLASE PARA EL FORMULARIO DE REGISTRO DE ENVIOS.\r\n\r\n#DEVUELVE EL NOMBRE DEL .TXT DE HOY\r\ndef nombre_txt_hoy():\r\n    today = datetime.now().strftime(\"%d-%m-%y\")\r\n    file_name = f\"envios_{today}.txt\"\r\n    return file_name\r\n\r\n\r\n#DEVUELVE EL NOMBRE DEL .TXT DE MAÑANA\r\ndef nombre_txt_manana():\r\n    tomorrow = datetime.now() + timedelta(days=1)\r\n    date_str = tomorrow.strftime(\"%d-%m-%y\")\r\n    file_name = f\"envios_{date_str}.txt\"\r\n    return file_name\r\n\r\n#AQUI EMPIEZA LA FUNCION PARA LEER LOS DATOS Y SEPARARLOS\r\ndef almacenar_datos(nombre_archivo, nombre_tienda):\r\n    datos_tienda = []\r\n    if not os.path.isfile(nombre_archivo):\r\n        open(nombre_archivo, 'w').close()\r\n    with open(nombre_archivo, 'r') as archivo:\r\n        for linea in archivo:\r\n            datos = eval(linea)\r\n            if datos['tienda'] == nombre_tienda:\r\n                datos_tienda.append(datos)\r\n    return datos_tienda\r\n#AQUI TERMINA LA FUNCION QUE LEE LOS DATOS Y LOS SEPARA\r\n\r\n\r\n\r\ndef index():\r\n    \"\"\"The main view.\"\"\"\r\n    return rx.vstack(\r\n        rx.heading(\"Bienvenido a KunturPost\", size=\"3xl\", color=\"yellow\"),\r\n        rx.heading(\"Selecciona tu usuario\", size=\"xl\", color=\"blue\")\r\n        )\r\n\r\ndef panel_tienda(nombre_tienda):\r\n    return rx.vstack(\r\n        rx.heading(f\"Panel de {nombre_tienda.upper()}\"),\r\n        rx.spacer(),\r\n        rx.spacer(),\r\n        rx.link(\r\n            rx.button(\"Registrar nuevo envio\"),\r\n            href=f\"/registro_{nombre_tienda}\",\r\n            color=\"rgb(107,99,246)\",\r\n            button=True,\r\n            ),\r\n        rx.spacer(),\r\n        rx.spacer(),\r\n        rx.link(\r\n            rx.button(\"Envios registrados para hoy\"),\r\n            href=f\"/envios_registrados_hoy_{nombre_tienda}\",\r\n            color=\"rgb(107,99,246)\",\r\n            button=True,\r\n            ),\r\n        rx.spacer(),\r\n        rx.spacer(),\r\n        rx.link(\r\n            rx.button(\"Envios registrados para mañana\"),\r\n            href=f\"/envios_registrados_manana_{nombre_tienda}\",\r\n            color=\"rgb(107,99,246)\",\r\n            button=True,\r\n            )\r\n    )\r\n\r\n\r\n\r\ndef envios_registrados_hoy(nombre_tienda):\r\n    #lista con los envios de las tiendas de hoy separado en listas\r\n    globals()[f\"lista_de_hoy_{nombre_tienda}\"] = almacenar_datos(nombre_txt_hoy_str,tienda.upper())\r\n    lista = globals()[f\"lista_de_hoy_{nombre_tienda}\"]\r\n    lista_botones = []\r\n    for envio in lista:\r\n        numero_envio = envio['envio']\r\n        nombre_envio = envio['nombre']\r\n        distrito_envio = envio['distrito']\r\n        rx.button(f\"{nombre_envio},{distrito_envio}\")\r\n        lista_botones.append(rx.button(f\"{numero_envio},{nombre_envio}, ({distrito_envio})\", color=\"teal\", size=\"sm\"))\r\n    return rx.center(rx.list(items=lista_botones))\r\n\r\n\r\nclass EnviosState(rx.State):\r\n    nombre_tienda: str = \"\"\r\n    @rx.var\r\n    def generar_botones(self) -> str:\r\n        # lista con los envíos de las tiendas de mañana separado en listas\r\n        file_name_manana = nombre_txt_manana()\r\n        lista = almacenar_datos(file_name_manana, self.nombre_tienda.upper())\r\n        lista_envios = []\r\n        for envio in lista:\r\n            numero_envio = envio['envio']\r\n            nombre_envio = envio['nombre']\r\n            distrito_envio = envio['distrito']\r\n            button_label = f\"{numero_envio},{nombre_envio}, ({distrito_envio})\"\r\n            lista_envios.append(rx.button(button_label, color=\"teal\", size=\"sm\"))\r\n        return rx.center(rx.list(items=lista_envios))\r\n    \r\n\r\n\r\ndef envios_registrados_manana(nombre_tienda):\r\n    return EnviosState(nombre_tienda=nombre_tienda).generar_botones\r\n\r\n\r\ndef registro_tienda(nombre_tienda):\r\n    return rx.vstack(\r\n    rx.heading(\"Llena los datos\"),\r\n    rx.form(\r\n        rx.vstack(\r\n            rx.input(\r\n                default_value=f\"{nombre_tienda.upper()}\",\r\n                name = \"tienda\",\r\n                is_read_only=True\r\n            ),\r\n            rx.input(\r\n                placeholder=\"Nombres y apellidos *\",\r\n                name = \"nombre\",\r\n                is_required=True\r\n            ),\r\n            rx.input(\r\n                placeholder=\"Direccion *\",\r\n                name = \"direccion\",\r\n                is_required=True\r\n            ),\r\n            rx.input(\r\n                placeholder=\"Referencia\",\r\n                name = \"referencia\",\r\n            ),\r\n            rx.input(\r\n                placeholder=\"Distrito *\",\r\n                name = \"distrito\",\r\n                is_required=True\r\n            ),\r\n            rx.input(\r\n                placeholder=\"Numero de contacto *\",\r\n                name = \"contacto\",\r\n                is_required=True\r\n            ),\r\n            rx.input(\r\n                placeholder=\"Numero de contacto 2\",\r\n                name = \"contacto2\",\r\n            ),\r\n            rx.input(\r\n                placeholder=\"Observacion\",\r\n                name = \"observacion\",\r\n            ),\r\n            rx.input(\r\n                placeholder=\"Monto a cobrar\",\r\n                name = \"cobrar\",\r\n            ),\r\n            rx.hstack(\r\n                rx.checkbox(\"cambio\", name=\"cambio\"),\r\n                rx.checkbox(\"devolucion\", name=\"devolucion\"),\r\n                rx.checkbox(\"recojo\", name=\"recojo\")\r\n            ),\r\n            rx.spacer(),\r\n            rx.spacer(),\r\n            rx.spacer(),\r\n            rx.button(\"Registrar\", type_=\"submit\"),   \r\n        ),\r\n        on_submit=FormState.handle_submit,\r\n        reset_on_submit=True),\r\n        rx.spacer(),\r\n        rx.spacer(),\r\n        rx.spacer(),\r\n        rx.spacer(),\r\n        rx.spacer(),\r\n        rx.spacer(),\r\n        rx.spacer(),\r\n        rx.spacer(),\r\n        rx.link(\r\n        rx.button(\"Volver\"),\r\n        href=f\"/panel_{nombre_tienda}\",\r\n        color=\"rgb(107,99,246)\",\r\n        button=True)\r\n        )\r\n            \r\n\r\n\r\n# Add state and page to the app.\r\napp = rx.App()\r\napp.add_page(index, title=\"Kunturpost\",route=\"/\")\r\nfor tienda in tienda:\r\n    #formateamos en str los nombres de los .txt\r\n    nombre_txt_manana_str = nombre_txt_manana()\r\n    nombre_txt_hoy_str = nombre_txt_hoy()\r\n    #lista con los envios de las tiendas de hoy separado en listas\r\n    globals()[f\"lista_de_hoy_{tienda}\"] = almacenar_datos(nombre_txt_hoy_str,tienda.upper())\r\n    #lista con los envios de las tiendas de mañana separado en listas\r\n    globals()[f\"lista_de_manana_{tienda}\"] = almacenar_datos(nombre_txt_manana_str,tienda.upper())\r\n    #creacion de paginas\r\n    app.add_page(panel_tienda(tienda), title=\"Panel de control\", route=f\"/panel_{tienda}\")\r\n    app.add_page(registro_tienda(tienda), title=\"Registra tu envio\", route=f\"/registro_{tienda}\")\r\n    app.add_page(envios_registrados_hoy(tienda), title=\"Envios registrados para hoy\", route=f\"/envios_registrados_hoy_{tienda}\")\r\n    app.add_page(envios_registrados_manana(tienda), title=\"Envios registrados para mañana\", route=f\"/envios_registrados_manana_{tienda}\")\r\napp.compile()\r\n```",
      "created_at": "2024-01-10T00:56:59Z",
      "updated_at": "2024-01-10T17:05:36Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "YinDragonSSR",
        "avatar_url": "https://avatars.githubusercontent.com/u/155399040?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AW9hV",
      "number": 2346,
      "title": "Best practice for accessing object instances across pages",
      "body": "Hello there,\n\nI am new to web development. I am creating a type of calculator app.\nWhen the user starts a calculation the application creates an instance of a calculator class and has to go through a series of pages where they enter inputs before running a calculation.\n\nMy question:\nWhat is the best practice for having access to this calculator instance across pages without having all code in one singe module?",
      "created_at": "2024-01-01T13:48:38Z",
      "updated_at": "2024-01-03T08:23:38Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AW74a",
      "number": 2342,
      "title": "Calling set_focus fails when the autofocus property is set to true for the input element.",
      "body": "Hi everyone,\r\n```python\r\ndef mytest() -> rx.Component:\r\n    return rx.container(\r\n        rx.vstack(\r\n            rx.input(\r\n                id=\"input_1\",\r\n            ),\r\n            rx.input(\r\n                id=\"input_2\",\r\n                autofocus=True\r\n            ),\r\n            rx.hstack(\r\n                rx.button('button1', on_click=rx.set_focus(\"input_1\")),\r\n                rx.button('button2', on_click=rx.set_focus(\"input_2\")),\r\n            )\r\n        )\r\n    )\r\n```\r\n\r\nPressing button2 causes the following error. How can I resolve this issue?\r\n```\r\nUnhandled Runtime Error\r\nTypeError: Cannot read properties of null (reading 'focus')\r\n```",
      "created_at": "2023-12-30T05:01:52Z",
      "updated_at": "2024-01-03T00:12:08Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "jackychou1119",
        "avatar_url": "https://avatars.githubusercontent.com/u/64191656?u=138e4fd10caa0479b9750814a553bf73e5b32b1e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWyEu",
      "number": 2304,
      "title": "How to perform more operations on Vars",
      "body": "I was wondering if there's any way to implement one or more operations on a specific Var.\r\n\r\nFor instance, we would like to be able to perform a _replace_ operation on a string but we didn't figure out a way to do so. The only solution we have right now is to store result of the _replace_ operation in another var.",
      "created_at": "2023-12-17T20:07:39Z",
      "updated_at": "2023-12-18T20:43:07Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUPfE",
      "number": 1205,
      "title": "Support for database migrations",
      "body": "I'm curious if there are any plans already to support database migrations?\r\n\r\nSince pynecone is using SQLAlchemy, I assume [Alembic](https://pypi.org/project/alembic/) would be the natural choice there.",
      "created_at": "2023-06-16T19:24:31Z",
      "updated_at": "2023-12-17T10:35:28Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "siddhantgoel",
        "avatar_url": "https://avatars.githubusercontent.com/u/79892?u=50520d0e3864715ac74a327f01f23c6f9cd3adf8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWt7E",
      "number": 2286,
      "title": "reflex run fail（Unable to download package）",
      "body": "(base) root@tdserver:/script/python/reflex_test_1# reflex run\r\n────────────────────────────────────────────────────────────────────────────────────────────── Starting Reflex App ──────────────────────────────────────────────────────────────────────────────────────────────\r\nCompiling: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 9/9 0:00:00\r\nInstalling base frontend packages failed with exit code 1\r\nbun add v1.0.13 (f5bf67bd)\r\n Resolving dependencies\r\n\r\nerror: ConnectionRefused downloading package manifest axios\r\n\r\nerror: ConnectionRefused downloading package manifest autoprefixer\r\n\r\nerror: ConnectionRefused downloading package manifest next-sitemap\r\n\r\nerror: ConnectionRefused downloading package manifest react-dom\r\n\r\nerror: ConnectionRefused downloading package manifest next\r\n\r\nerror: ConnectionRefused downloading package manifest json5\r\n\r\nerror: ConnectionRefused downloading package manifest universal-cookie\r\n\r\nerror: ConnectionRefused downloading package manifest socket.io-client\r\n\r\nerror: ConnectionRefused downloading package manifest postcss\r\n\r\nerror: ConnectionRefused downloading package manifest silly\r\n\r\nerror: ConnectionRefused downloading package manifest next-themes\r\n\r\nerror: ConnectionRefused downloading package manifest react\r\n Resolved, downloaded and extracted [72]\r\nerror: autoprefixer@10.4.14 failed to resolve\r\nerror: postcss@8.4.31 failed to resolve\r\nerror: axios@1.4.0 failed to resolve\r\nerror: json5@2.2.3 failed to resolve\r\nerror: next@14.0.1 failed to resolve\r\nerror: next-sitemap@4.1.8 failed to resolve\r\nerror: next-themes@0.2.0 failed to resolve\r\nerror: react@18.2.0 failed to resolve\r\nerror: react-dom@18.2.0 failed to resolve\r\nerror: silly@ failed to resolve\r\nerror: socket.io-client@4.6.1 failed to resolve\r\nerror: universal-cookie@4.0.4 failed to resolve\r\nRun with --loglevel debug  for the full log.\r\n\r\n",
      "created_at": "2023-12-13T05:25:57Z",
      "updated_at": "2023-12-14T04:05:53Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "sonic2825",
        "avatar_url": "https://avatars.githubusercontent.com/u/51114817?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWsHY",
      "number": 2278,
      "title": "data_table is not responsive to the parent container and cannot be styled with tailwind or CSS.",
      "body": "I'm having a hard time styling the data_table to my needs with tailwind and CSS. I understand there is a seperate properties list for data_table, but that doesn't contain all the properties I need to style the component. This is in addition to the fact that tailwind doesn't seem to work well with some chakra components like buttons, which makes tailwind styling a sort of hit and miss option when used with reflex. \r\n\r\n\r\nUncommenting any of the data_table styles or the parent box styles has no effect on the data table height or layout style.\r\n```python\r\nimport reflex as rx\r\nimport pandas as pd\r\n\r\n# User interface\r\ndef index():\r\n    return rx.box(\r\n        rx.data_table(\r\n            data = pd.DataFrame({\"col1\": list(range(100)), \"col2\": list(range(100))}),\r\n            #class_name=\"border-2 border-blue-500\",\r\n            #style={\"height\": \"20px\", \"border-spacing\": \"0px 0px\", 'padding': \"0px\", \"border\": \"2px solid blue\"},\r\n        ),\r\n        #class_name=\"grid grid-rows-1 h-40 text-base p-4 border-2 border-green-500\",\r\n    )\r\n\r\n\r\n@rx.page(\"/\")\r\ndef page():\r\n    return rx.box(index())\r\n\r\n\r\napp = rx.App()\r\napp.compile()\r\n```",
      "created_at": "2023-12-11T08:03:42Z",
      "updated_at": "2023-12-11T08:03:43Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "rohitsathish",
        "avatar_url": "https://avatars.githubusercontent.com/u/46263358?u=a63bf280198d1fc2b7e2a290695fd652edf3eedd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWpH_",
      "number": 2275,
      "title": "Cannot connect to server: Timeout...",
      "body": "Hello everyone,\r\nI have created and hosting (in two different places) a little static web with Reflex. This web has a form in the first page to take some datas from the user and when you push the submit button make a request to API in Miro to create a sticker.\r\n\r\nWhen i go to the web in 5 or 10 second appear this message and the web doesn't respond.\r\n\r\nThe problem is this:\r\n![Captura desde 2023-12-07 18-20-25](https://github.com/reflex-dev/reflex/assets/54649242/43548c36-1c71-4d89-93bb-f0574b2af73b)\r\n\r\nDo you know how i can fix this issue? I have been searching info about this but i don't find the key.\r\n\r\nThank you in advance, Sorry if it is a easy issue.",
      "created_at": "2023-12-07T17:24:08Z",
      "updated_at": "2023-12-09T18:47:41Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AdyNm",
        "body": "@morawer You need to host your backend separately, Vercel won't do it automatically. If you join our Discord, and post in the #deployment channel I can give you access to our hosting service which should make deploying much easier."
      },
      "user": {
        "login": "morawer",
        "avatar_url": "https://avatars.githubusercontent.com/u/54649242?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWouD",
      "number": 2273,
      "title": "What is the correct way to load a dataframe in datatable?",
      "body": "I'm still experiencing the issue outlined in #279, so I'm unable to setup a dataframe with ```rx.State``` like ```df: pd.DataFrame```. Would state even be the right place to keep a dataframe that needs to be loaded in the frontend?\r\n\r\nI would like to know the right approach if I have a structure like the one shown below.\r\n\r\nAlso some other allied questions:\r\n1. How does one use asyncio.run with reflex? I always seem to get errors regarding the event loop.\r\n2. Is there a way to show dicts, lists and other python natives in the frontend directly? I'm okay with strings and ints but seem to have trouble showing the others.\r\n\r\ndata.py (sync with state)\r\n```python\r\nimport asyncio\r\nimport pandas as pd\r\n\r\nasync def long_running_task(state):\r\n    for i in range(5):\r\n        await asyncio.sleep(1)\r\n        if i == 2 or i == 4:\r\n            async with state: \r\n                state.progress = i\r\n                yield \r\n    async with state:\r\n        state.df = pd.DataFrame({\"col1\": [1, 2], \"col2\": [3, 4]})\r\n```\r\n\r\ndata.py (just return df)\r\n```python\r\nimport asyncio\r\nimport pandas as pd\r\n\r\nasync def long_running_task():\r\n    return pd.DataFrame({\"col1\": [1, 2], \"col2\": [3, 4]})\r\n```\r\n\r\nstate.py\r\n```python\r\nimport data\r\n\r\nclass State(rx.State):\r\n    progress: int = 0\r\n    #df: ???\r\n\r\n    @rx.background\r\n    async def run_long_task(self):\r\n        async with self: \r\n            async for _ in data.long_running_task(self):\r\n                pass\r\n```\r\n\r\nui.py\r\n```python\r\nimport pandas as pd\r\nimport asyncio\r\n\r\nfrom data import long_running_task\r\nfrom state import State\r\n\r\n@rx.page(\"/\")\r\ndef index():\r\n    return rx.vstack(\r\n        # rx.button(\r\n        #     \"Start Long Task\",\r\n        #     on_click=State.run_long_task,\r\n        # ),\r\n        rx.data_table(\r\n            data=asyncio.run(long_running_task()),\r\n            # data = State.df\r\n        ),\r\n    )\r\n\r\napp = rx.App()\r\napp.compile()\r\n```",
      "created_at": "2023-12-07T10:00:41Z",
      "updated_at": "2023-12-08T21:18:32Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "rohitsathish",
        "avatar_url": "https://avatars.githubusercontent.com/u/46263358?u=a63bf280198d1fc2b7e2a290695fd652edf3eedd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWpAA",
      "number": 2274,
      "title": "Improve on_scroll event handler",
      "body": "Hi,\r\n\r\nI was thinking that right now the _on_scroll_ event isn't really suitable for a production app because, especially when used on the whole page or a very large element, it would be triggered so many times that a long queue of events would be created, also generating a large number of websocket messages.\r\n\r\nIn order to make the on_scroll event handler more efficient, maybe it would be helpful if we could specify a threshold (e.g. trigger the event every 20 pixels) or some other way to only trigger the event in some specific cases.\r\n\r\nWhat do you think?",
      "created_at": "2023-12-07T15:15:54Z",
      "updated_at": "2023-12-07T17:46:28Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWNZU",
      "number": 2141,
      "title": "Dashboard like template",
      "body": "Hello Reflex!\r\nCould you please upload a template for a very simple dashboard like web app? Having access to a simple template with a navbar, a sidebar (for multi-page navigation) and basic sign in process would greatly accelerate adoption!\r\nThank you for this amazing framework, it's been long missing.",
      "created_at": "2023-11-07T09:08:01Z",
      "updated_at": "2023-12-05T09:55:01Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "harisbal",
        "avatar_url": "https://avatars.githubusercontent.com/u/6556306?u=8febb9bd1498c565870a427e355dd41c81833ffb&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWjjF",
      "number": 2243,
      "title": "Hot reloading with changes to non-python files",
      "body": "I'm loading an external stylesheet to my reflex app and making all styling changes in a style.css. \r\nHowever, I'm forced to make changes in .py files to trigger the hot reloading. Is there any way to include other types of files in hot reloading?",
      "created_at": "2023-12-01T10:16:48Z",
      "updated_at": "2023-12-01T20:22:02Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "rohitsathish",
        "avatar_url": "https://avatars.githubusercontent.com/u/46263358?u=a63bf280198d1fc2b7e2a290695fd652edf3eedd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWYcP",
      "number": 2199,
      "title": "Can reflex run on Windows 10 and Windows 11?",
      "body": "Can reflex run on Windows 10 and Windows 11?\r\nI have to work on entering the data of the website through selenium on the local PC.\r\n\r\nCan I create it as a single file with a library such as pyinstaller or cx_Freeze or nuitka?\r\n\r\nI'm going to create an app that runs locally.\r\nIf you have a tutorial that you make as a solo file, please introduce it.",
      "created_at": "2023-11-19T14:10:58Z",
      "updated_at": "2023-11-30T17:36:10Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "usuall",
        "avatar_url": "https://avatars.githubusercontent.com/u/277329?u=2d81ea506dd868c233f16ae9d0a55121d776f42d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWbZA",
      "number": 2213,
      "title": "Enable adding `Bearer HTTP Authentication` when calling a backend API",
      "body": "When deploying the product, a backend side may require [`Bearer HTTP Authentication`](https://swagger.io/docs/specification/authentication/bearer-authentication/#:~:text=Bearer%20authentication%20%28also%20called%20token%20authentication%29%20is%20an,the%20server%20in%20response%20to%20a%20login%20request.). \r\nIt would be good if `reflex` support that feature.",
      "created_at": "2023-11-22T09:32:19Z",
      "updated_at": "2023-11-22T09:32:20Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "keunhyung-chung",
        "avatar_url": "https://avatars.githubusercontent.com/u/12574208?u=3e6202a7d076a402f4de01c29f9f8aff06b3a84b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWS31",
      "number": 2161,
      "title": "Why does rx.call_script require a return statement.",
      "body": "In the [docs](https://reflex.dev/docs/api-reference/browser_javascript/), there is the following example of using `rx.call_script` inside a State function.\r\n\r\n```python\r\nclass SoundEffectState(rx.State):\r\n    @rx.background\r\n    async def delayed_play(self):\r\n        await asyncio.sleep(1)\r\n        return rx.call_script(\"playFromStart(button_sfx)\")\r\n```\r\nI have played around with it, and it seems that `call_script` is not executed if it is not part of a return statement. **Why?**\r\n\r\nMy particular use case is that I am adding a html canvas via `rx.html` and controlling it using browser javascript, called from event handlers of reflex buttons and fields. Inside one those event handlers, I would ideally like to go, \"python code -> call_script -> more python code\". But it seems this is not possible.",
      "created_at": "2023-11-12T21:30:15Z",
      "updated_at": "2023-11-14T18:10:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Acy0g",
        "body": "To send the event to the client and continue running on the backend, use `yield` instead of `return`.\n\nSince the event has to run in the browser the event handler needs to return or yield the call_script from the backend.\n\nIf you need the call_script to execute on the frontend immediately, then the event handler must be decorated with `@rx.background`, otherwise the frontend will not process the yielded events until the current event handler returns its final update."
      },
      "user": {
        "login": "abdullahkhalids",
        "avatar_url": "https://avatars.githubusercontent.com/u/2965278?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWFmZ",
      "number": 2077,
      "title": "Font_family don't work for me with google fonts",
      "body": "Hi everyone,\r\nthe font_family prop doesn't work for me when put a google font.\r\nI don't know how to put a google font in my app.\r\n\r\nThanks.",
      "created_at": "2023-10-29T15:11:49Z",
      "updated_at": "2023-11-06T17:21:29Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "franvillalba72",
        "avatar_url": "https://avatars.githubusercontent.com/u/64870533?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWMrT",
      "number": 2135,
      "title": "Manejar json grandes",
      "body": "¿Cómo puedo hacer para  manejar el siguiente dato recogido de un request?\r\n\r\n[\r\n        {\r\n            \"id\": 1037653,\r\n            \"date\": \"2023-11-01T00:00:00.000Z\",\r\n            \"home_team\": {\r\n                \"id\": 21,\r\n                \"abbreviation\": \"OKC\",\r\n                \"city\": \"Oklahoma City\",\r\n                \"conference\": \"West\",\r\n                \"division\": \"Northwest\",\r\n                \"full_name\": \"Oklahoma City Thunder\",\r\n                \"name\": \"Thunder\"\r\n            },\r\n            \"home_team_score\": 106,\r\n            \"period\": 4,\r\n            \"postseason\": false,\r\n            \"season\": 2023,\r\n            \"status\": \"Final\",\r\n            \"time\": \"Final\",\r\n            \"visitor_team\": {\r\n                \"id\": 19,\r\n                \"abbreviation\": \"NOP\",\r\n                \"city\": \"New Orleans\",\r\n                \"conference\": \"West\",\r\n                \"division\": \"Southwest\",\r\n                \"full_name\": \"New Orleans Pelicans\",\r\n                \"name\": \"Pelicans\"\r\n            },\r\n            \"visitor_team_score\": 110\r\n        }\r\n]\r\nMi codigo state es el siguiente:\r\nimport reflex as rx\r\nimport datetime\r\nimport locale\r\nimport requests\r\nfrom typing import List,Union,Dict\r\n\r\n# Establecer el idioma local a ingles\r\nlocale.setlocale(locale.LC_TIME, 'en_US.utf8')\r\n\r\n\r\n\r\nclass State(rx.State):\r\n    #inicializamos\r\n    diaHoy = datetime.date.today()\r\n    date = diaHoy\r\n    #request a la api\r\n    match = \"https://www.balldontlie.io/api/v1/games?dates[]=\"+ str(date)\r\n    diccionario: List[dict] = requests.get(match).json()['data']\r\n    #para imprimir el dia bonito\r\n    dayClean = date.strftime(\"%A %B %d, %Y\")\r\n    \r\n    \r\n    def incrementDay(self):\r\n        self.date += datetime.timedelta(days=1)\r\n        self.update()\r\n\r\n    def decrementDay(self):\r\n        self.date -= datetime.timedelta(days=1)\r\n        self.update()\r\n        \r\n    def calendarDay(self, fecha):\r\n        self.date = fecha\r\n        self.update()\r\n        \r\n    def update(self):\r\n        self.dayClean = self.date.strftime(\"%A %B %d, %Y\")\r\n        self.match = \"https://www.balldontlie.io/api/v1/games?dates[]=\"+ str(self.date)\r\n        self.diccionario = requests.get(self.match).json()['data']\r\n   ---\r\nimport requests\r\nimport reflex as rx\r\nfrom NBA_API.styles.color import Colors as Color\r\nfrom NBA_API.styles.font import Fonts as Font\r\nfrom NBA_API.components.match_box import match_box\r\nfrom NBA_API.state import State\r\nfrom typing import List, Dict\r\n\r\n\r\ndef display_box(game):\r\n       return rx.card(\r\n        rx.text(f\"{game['home_team_score']} vs {game['visitor_team_score']}\"),\r\n        header = rx.heading(f\"{game['home_team']['full_name']} vs {game['visitor_team']['full_name']),\r\n        footer = rx.hstack(\r\n            rx.icon(\r\n                tag=\"star\"\r\n            )\r\n        ),\r\n        align=\"center\",\r\n        width=\"100%\"\r\n    )\r\n\r\n#recorre todos los partidos\r\ndef stats_matches():\r\n    return rx.responsive_grid(\r\n        rx.foreach(\r\n                State.diccionario,\r\n                display_box\r\n            ),\r\n        columns=[1],\r\n        spacing=\"4\",\r\n        width=\"100%\"\r\n    )\r\n\r\n\r\nNo entiendo por qué me sale el siguiente error:\r\n\r\nProcess SpawnProcess-2:\r\nTraceback (most recent call last):\r\n  File \"C:\\Program Files\\Python311\\Lib\\multiprocessing\\process.py\", line 314, in _bootstrap\r\n    self.run()\r\n  File \"C:\\Program Files\\Python311\\Lib\\multiprocessing\\process.py\", line 108, in run\r\n    self._target(*self._args, **self._kwargs)\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\uvicorn\\_subprocess.py\", line 76, in subprocess_started\r\n    target(sockets=sockets)\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\uvicorn\\server.py\", line 60, in run\r\n    return asyncio.run(self.serve(sockets=sockets))\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\Program Files\\Python311\\Lib\\asyncio\\runners.py\", line 190, in run    return runner.run(main)\r\n           ^^^^^^^^^^^^^^^^\r\n  File \"C:\\Program Files\\Python311\\Lib\\asyncio\\runners.py\", line 118, in run    return self._loop.run_until_complete(task)\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\Program Files\\Python311\\Lib\\asyncio\\base_events.py\", line 653, in run_until_complete\r\n    return future.result()\r\n           ^^^^^^^^^^^^^^^\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\uvicorn\\server.py\", line 67, in serve\r\n    config.load()\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\uvicorn\\config.py\", line 477, in load\r\n    self.loaded_app = import_from_string(self.app)\r\n                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\uvicorn\\importer.py\", line 21, in import_from_string\r\n    module = importlib.import_module(module_str)\r\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\Program Files\\Python311\\Lib\\importlib\\__init__.py\", line 126, in \r\nimport_module\r\n    return _bootstrap._gcd_import(name[level:], package, level)\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"<frozen importlib._bootstrap>\", line 1206, in _gcd_import\r\n  File \"<frozen importlib._bootstrap>\", line 1178, in _find_and_load        \r\n  File \"<frozen importlib._bootstrap>\", line 1149, in _find_and_load_unlocked\r\n  File \"<frozen importlib._bootstrap>\", line 690, in _load_unlocked\r\n  File \"<frozen importlib._bootstrap_external>\", line 940, in exec_module   \r\n  File \"<frozen importlib._bootstrap>\", line 241, in _call_with_frames_removed\r\n  File \"C:\\Users\\SANTI\\Documents\\PROJECTOS\\NBA-API\\NBA_API\\NBA_API.py\", line 38, in <module>\r\n    app.add_page(index)\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\app.py\", line 385, in add_page\r\n    component = self._generate_component(component)\r\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\app.py\", line 337, in _generate_component\r\n    raise e\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\app.py\", line 328, in _generate_component\r\n    return component if isinstance(component, Component) else component()   \r\n                                                              ^^^^^^^^^^^   \r\n  File \"C:\\Users\\SANTI\\Documents\\PROJECTOS\\NBA-API\\NBA_API\\NBA_API.py\", line 27, in index\r\n    stats_matches(),\r\n    ^^^^^^^^^^^^^^^\r\n  File \"C:\\Users\\SANTI\\Documents\\PROJECTOS\\NBA-API\\NBA_API\\logica\\stats.py\", line 26, in stats_matches\r\n    rx.foreach(\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\components\\layout\\foreach.py\", line 53, in create\r\n    children=[IterTag.render_component(render_fn, arg=arg)],\r\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\components\\tags\\iter_tag.py\", line 73, in render_component\r\n    component = render_fn(arg)\r\n                ^^^^^^^^^^^^^^\r\n  File \"C:\\Users\\SANTI\\Documents\\PROJECTOS\\NBA-API\\NBA_API\\logica\\stats.py\", line 13, in display_box\r\n    header = rx.heading(f\"{game['home_team']['full_name']} vs {game['visitor_team']['full_name']}\"),\r\n                           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^\r\n  File \"C:\\Users\\SANTI\\AppData\\Roaming\\Python\\Python311\\site-packages\\reflex\\vars.py\", line 282, in __getitem__\r\n    raise TypeError(\r\nTypeError: Could not index into var of type Any. (If you are trying to index into a state var, add the correct type annotation to the var.)\r\n\r\n    ",
      "created_at": "2023-11-06T14:34:53Z",
      "updated_at": "2023-11-06T14:34:54Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "santi55",
        "avatar_url": "https://avatars.githubusercontent.com/u/51173661?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWExl",
      "number": 2070,
      "title": "WebSocket - how to disable compression",
      "body": "Hi, Is there any way to disable compression for web socket messages during reflex run (precisely  for FastAPI backend)?\r\nWebSocket disconnects when authentication is enabled within Azure container App service. More in [this issue](https://github.com/microsoft/azure-container-apps/issues/812). \r\nI am wandering how to add ws_per_message_deflate=False flag\r\nAny suggestions?",
      "created_at": "2023-10-28T11:22:50Z",
      "updated_at": "2023-11-04T22:15:46Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "lzalewsk",
        "avatar_url": "https://avatars.githubusercontent.com/u/14045566?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWJnd",
      "number": 2120,
      "title": "How the heck does reflex update state when it is used in a component's f string?",
      "body": "It isn't really a bug or anything, but I am just so curious how you made that happen, and I figured, I can always ask... \r\n\r\nHow the heck does reflex update state when it is used in a component's f string?\r\n\r\nAm I correct in the following assertions?: Whenever you use a member of a rx.State it calls a function that stores its use, while it returns a template variable denoting string. The next component that is created is now associated with that State's member. Whenever the state is updated the template string is replaced with the State's member value.\r\n\r\nThis is the best I could come up with. So far your library seems awesome by the way.\r\n\r\n",
      "created_at": "2023-11-02T15:26:53Z",
      "updated_at": "2023-11-02T19:17:41Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AcdYQ",
        "body": "When using f-strings we override the `__format__` method within the `Var` class: https://github.com/reflex-dev/reflex/blob/6e71393ed5f29234071da2b43192fc12d9bdbbd7/reflex/vars.py#L278\r\n\r\nSo basically if you do something like `rx.text(f\"{State.text} formatted\")` it will render out to \r\n```js\r\n<Text>\r\n  {`${state.text} formatted`}\r\n</Text>\r\n```\r\n\r\nSo basically the frontend references the state variable, so whenever it gets updated the template string will update too."
      },
      "user": {
        "login": "guidocalvano",
        "avatar_url": "https://avatars.githubusercontent.com/u/483044?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWIH6",
      "number": 2105,
      "title": "Same port for frontend and backend in a container",
      "body": "I'm looking at using Reflex as an Admin UI for a service configuration tool. However, the corporate network policies prevent URLs from contain port numbers. Is there a way to have either:\r\n\r\n- the same port for the frontend and backend with protocol routing\r\n- a distinct host name path for the frontend and backend with separate ports in the container\r\n\r\nthat could allow routing the requests to the relevant servers in the container?",
      "created_at": "2023-11-01T07:18:44Z",
      "updated_at": "2023-11-01T07:22:42Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "hurdlea",
        "avatar_url": "https://avatars.githubusercontent.com/u/11936420?u=d4e07c0ba18e9b7f18bef1b35a6ec6da7d39ee99&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWE8q",
      "number": 2071,
      "title": "Attributes in form",
      "body": "Hi everyone,\r\n\r\nI want to add attributes to a form, something like this in html:\r\n\r\n```<form class=\"css-0\" name=\"form1\" random_attribute>```\r\n\r\nBut ussing reflex i didn't find the answer to this, for now i have this code:\r\n\r\n```\r\ndef multichoice_question(question: str, alternatives: list[str]) -> rx.Component:\r\n    # Window\r\n    return rx.vstack(\r\n        # Question\r\n        rx.form(\r\n            rx.container(\r\n                rx.text(\r\n                    question,\r\n                    padding_y= \"5%\",\r\n                    font_size=\"1.5em\",\r\n                    color= Color.QUESTION_TEXT_COLOR.value,\r\n                ),\r\n                button_multichoice_alternatives(alternatives),\r\n                text_align=\"center\",\r\n                margin_y=\"35%\",\r\n            ),\r\n            on_submit=FormState.handle_submit({\"question\": question}),\r\n        ),\r\n        name_=\"form1\",\r\n        bg=Color.QUESTION_BACKGROUND.value,\r\n        height= \"100vh\",\r\n        width= \"100vw\",\r\n    )\r\n\r\n        \r\n\r\ndef button_multichoice_alternatives(alternatives: list[str]) -> rx.Component:\r\n    return rx.center(\r\n        rx.stack(\r\n            rx.foreach(\r\n                alternatives,\r\n                alternative_button\r\n            ),\r\n            direction=\"column\",\r\n            align_items=\"center\"\r\n        )\r\n    )\r\n\r\ndef alternative_button(text: str) -> rx.Component:\r\n    return rx.button(\r\n        text,\r\n        #value=text,\r\n        on_click= FormState.handle_alternative_button(text),\r\n        type_=\"submit\",\r\n        # css\r\n        border_radius= \"2xl\",\r\n        width= \"250%\",\r\n        font_size= \"1.25em\",\r\n        bg= Color.BUTTON_QUESTION_BACKGROUND.value,\r\n        color= Color.BUTTON_TEXT_COLOR.value,\r\n        border= \"2px solid #FFF\",\r\n    )\r\n```\r\n\r\nAs you can see i can create forms without problems, with this i create random numbers of alternative buttons depending of the question, but the problem is this:\r\n\r\nWhen i run the server i just obtained a form class, nothing about name or others attributes that i wanna add, something like \"```<form class=\"css-0\">```\".\r\n\r\nDo any of you knows any solution to this problem?\r\n\r\n",
      "created_at": "2023-10-28T18:02:14Z",
      "updated_at": "2023-10-30T20:54:01Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "HeRm4nV",
        "avatar_url": "https://avatars.githubusercontent.com/u/21180852?u=f321c1b266b1aeaa725a8a7e4cebcf67b6a0ed7f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWDhh",
      "number": 2042,
      "title": "State bools?",
      "body": "So I was following the basic chatbot tutorial in the documentation, and decided having the QA pairs wasn't what I wanted, so instead of a second string I used a bool, to determine if it is the user or not, and then just have a list of messages...\r\nSo I just used:\r\n\r\n```\r\ndef dialogue(text: str, user: bool):\r\n    return rx.box(\r\n        rx.text(text,\r\n        text_align=\"right\" if user else \"left\",\r\n        margin_y=\"1em\",\r\n    )\r\n```\r\n\r\nWhich worked fine, but then when it got to adding the state messages:\r\n\r\n```\r\nclass State(rx.State):\r\n\r\n    # The current question being asked.\r\n    question: str\r\n\r\n    # Keep track of the chat history as a list of (question, answer) tuples.\r\n    chat_history: list[tuple[str, bool]]\r\n\r\n    def answer(self):\r\n        # Our chatbot is not very smart right now...\r\n        answer = \"I don't know!\"\r\n        self.chat_history.append((self.question, True))\r\n        self.chat_history.append((answer, False))\r\n        self.question = \"\"\r\n\r\n\r\ndef chat() -> rx.Component:\r\n    return rx.box(\r\n        rx.foreach(\r\n            State.chat_history,\r\n            lambda messages: dialogue(messages[0], messages[1]),\r\n        )\r\n    )\r\n```\r\n\r\nNow I was getting this error(Updated with correct error):\r\n```\r\nTypeError: Cannot convert Var '_.at(1)' to bool for use with `if`, `and`, `or`, and `not`. Instead use `rx.cond` and bitwise operators `&` (and), `|` (or), `~` (invert).\r\n```\r\n\r\nSo I am like, ok, I will swap to using that then, and changed the dialogue function:\r\n\r\n```\r\ndef dialogue(text: str, user: bool):\r\n    return rx.box(\r\n        rx.text(text, style=rx.cond(user, style.user_style, style.assistant_style)),\r\n        text_align=rx.cond(user, \"right\", \"left\"),\r\n        margin_y=\"1em\",\r\n    )\r\n```\r\n\r\nAnd now I am getting the TypeError:\r\n```\r\nTypeError: You may be trying to use an invalid Python function on a state var. When referencing a var inside your render code, only limited var operations \r\nare supported. See the var operation docs here: https://reflex.dev/docs/state/vars/#var-operations\r\n```\r\nI tried `not user`, `user is True` etc, I looked around and could not find any usage of bools as state, I am at a complete loss other than just feeding it as a number, or a string of \"user\"/\"assistant\".\r\nI did find this: https://github.com/reflex-dev/reflex/pull/1750\r\nSo I tried `user is not None`, `user._decode()`, even `~user`, all resulting in the same error.\r\nWhen I tried `user.equals(True)` I get:\r\n\r\n`AttributeError: 'bool' object has no attribute 'name'`\r\n\r\nI cannot understand why using a simple boolean state seems to be such a big issue, especially since they are directly usable in JSON.\r\n\r\nThe only thing I can think of is, the only issue is Reflex artificially limiting it, I mean, it is, from the docs:\r\n\r\n`Raise exception if using Var in a boolean context. Raises: TypeError: when attempting to bool-ify the Var.`\r\n\r\nBut I don't know the reason, or how to get around it, other than, not using bools in State.\r\n\r\nSo, what am I missing here? It has to be something pretty simple, right?",
      "created_at": "2023-10-26T18:57:05Z",
      "updated_at": "2023-10-30T18:08:46Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Atomizer74",
        "avatar_url": "https://avatars.githubusercontent.com/u/724379?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AV3Gz",
      "number": 1959,
      "title": "issues on windows 11",
      "body": "in attempting to run this application just as the tutorial says. I hit an error on windows 11\r\nDoes this error mean I should pre-install node on my pc before running this application?\r\n(.venv) C:\\Users\\(username)\\Documents\\PyATL\\app_name>python -m reflex init --loglevel debug\r\nInfo: Overriding config value username with env var USERNAME=(username)\r\nInfo: Overriding config value username with env var USERNAME=(username)\r\n─────────────────────────────── System Info ───────────────────────────────\r\nDebug: Config file:\r\n'C:\\\\Users\\\\(username)\\\\AppData\\\\Local\\\\Packages\\\\PythonSoftwareFoundation.Pytho\r\nn.3.11_qbz5n2kfra8p0\\\\LocalCache\\\\local-packages\\\\Python311\\\\site-packages\\\r\n\\reflex\\\\config.py'\r\nDebug: Config: app_name='' loglevel=<LogLevel.INFO: 'info'>\r\nfrontend_port=3000 frontend_path='' backend_port=8000\r\napi_url='http://localhost:8000' deploy_url='http://localhost:3000'\r\nbackend_host='0.0.0.0' db_url='sqlite:///reflex.db' redis_url=None\r\ntelemetry_enabled=True\r\nbun_path='C:\\\\Users\\\\(username)\\\\AppData\\\\Local\\\\reflex\\\\bun\\\\bin\\\\bun'\r\ncors_allowed_origins=['*'] tailwind={} timeout=120 next_compression=True\r\nevent_namespace=None frontend_packages=[] rxdeploy_url=None\r\nusername='(username)'\r\nWarning: The path to the Node binary could not be found. Please ensure that\r\nNode is properly installed and added to your system's PATH environment\r\nvariable.\r\nDebug: Running command: [None, '-v']\r\nDebug: [Reflex 0.2.9 with Python 3.11.6 (PATH:\r\nC:\\Users\\(username)\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation\r\n.Python.3.11_qbz5n2kfra8p0\\python.exe)]\r\nDebug: [Node None (Expected: 18.17.0) (PATH:None)]\r\nDebug: [FNM 1.35.1 (Expected: 1.35.1) (PATH:\r\nC:\\Users\\(username)\\AppData\\Local\\reflex\\fnm\\fnm.exe)]\r\nDebug: [OS Windows 10.0.22621]\r\nDebug: Using package installer at: None\r\nDebug: Using package executer at: None\r\n────────────────────────── Initializing app_name ──────────────────────────\r\nDebug: Skipping bun installation on Windows.\r\nWarning: The path to the Node binary could not be found. Please ensure that\r\nNode is properly installed and added to your system's PATH environment\r\nvariable.\r\nDebug: Running command: ['powershell', '-Command', '&\r\n\"C:\\\\Users\\\\(username)\\\\AppData\\\\Local\\\\reflex\\\\fnm\\\\fnm.exe\" install 18.17.0\r\n--fnm-dir \"C:\\\\Users\\\\i_miz\\\\AppData\\\\Local\\\\reflex\\\\fnm\"']\r\nDebug: Installing node\r\nDebug: & : The term 'C:\\Users\\(username)\\AppData\\Local\\reflex\\fnm\\fnm.exe' is\r\nnot\r\nDebug: recognized as the name of a cmdlet, function, script file, or\r\noperable\r\nDebug: program. Check the spelling of the name, or if a path was included,\r\nverify\r\nDebug: that the path is correct and try again.\r\nDebug: At line:1 char:3\r\nDebug: + & \"C:\\Users\\(username)\\AppData\\Local\\reflex\\fnm\\fnm.exe\" install\r\n18.17.0 - ...\r\nDebug: +   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\nDebug:     + CategoryInfo          : ObjectNotFound:\r\n(C:\\Users\\(username)\\...lex\\fnm\\f\r\nDebug:    nm.exe:String) [], CommandNotFoundException\r\nDebug:     + FullyQualifiedErrorId : CommandNotFoundException\r\nDebug:\r\nInstalling node failed with exit code 1\r\n& : The term 'C:\\Users\\(username)\\AppData\\Local\\reflex\\fnm\\fnm.exe' is not\r\nrecognized as the name of a cmdlet, function, script file, or operable\r\nprogram. Check the spelling of the name, or if a path was included, verify\r\nthat the path is correct and try again.\r\nAt line:1 char:3\r\n+ & \"C:\\Users\\(username)\\AppData\\Local\\reflex\\fnm\\fnm.exe\" install 18.17.0 - ...\r\n+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n    + CategoryInfo          : ObjectNotFound: (C:\\Users\\(username)\\...lex\\fnm\\f\r\n   nm.exe:String) [], CommandNotFoundException\r\n    + FullyQualifiedErrorId : CommandNotFoundException\r\n\r\nRun with --loglevel debug  for the full log.\r\n",
      "created_at": "2023-10-12T23:58:17Z",
      "updated_at": "2023-10-27T20:54:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "HasturDev",
        "avatar_url": "https://avatars.githubusercontent.com/u/42318215?u=0b20b2d01195f7dfca79359e0155f3377aff9e8c&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWEU3",
      "number": 2054,
      "title": "Self Hosting - Problems with local deployment using Docker",
      "body": "Hi, I am trying to locally run the app in a container as described in the docker-test-folder.\r\n\r\nThe manual states, that API_URL shall be set to the publicly accessible hostname or IP where the app will be hosted.\r\n\r\nWhat does that mean if I run the container locally? I tried already some options (http://localhost:8000, ip-address of the local container 172.17.0.2:8000, or just used the default). Nothing worked.\r\n\r\nAlso, I get this warning when starting up the container:\r\n\r\n\"Warning: The path to the Node binary could not be found. Please ensure that Node\r\nis properly installed and added to your system's PATH environment variable.\"\r\n\r\nDo I need the to adjust the provided Dockerfile in this repo under Docker-Test to get Node installed during the build process?\r\n\r\nThanks for any help,\r\nMarcus",
      "created_at": "2023-10-27T16:28:49Z",
      "updated_at": "2023-10-27T16:55:02Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "ChuckNoelke",
        "avatar_url": "https://avatars.githubusercontent.com/u/48693567?u=86177b9362794a7c11a793e3bb14268d607aba08&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWDBa",
      "number": 2036,
      "title": "what's the best approach to add a robots.txt for crawlers.",
      "body": "What would be the best approach to adding a robots.txt for a reflex app?\r\n\r\nTried adding a page that's called robots.txt and just having it be a page that returns\r\nrx.text(\"User-agent: * Disallow: /\")\r\nI feel like I'm approaching this wrong. Is there a way to just serve up a txt file instead? for instance can you add a page that uses a txt file instead of a reflex component?",
      "created_at": "2023-10-26T08:46:45Z",
      "updated_at": "2024-02-21T15:50:18Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AcOCi",
        "body": "You should be able to just include a `robots.txt` file within your `assets/` directory and it will show up correctly - any static assets you can just throw in there and they will show up at the same path as the filename."
      },
      "user": {
        "login": "QGoos",
        "avatar_url": "https://avatars.githubusercontent.com/u/15840819?u=0a18c376e44bc21fa481d76faa8423b9247dbaa2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AWDiO",
      "number": 2043,
      "title": "Port issue with multiple Reflex Docker containers",
      "body": "Is there anyone using Reflex for multiple small apps and hosting them in docker containers on the same host? How do you handle the issue where each one wants the same ports? Can the backend be changed from 8000? can the frontend be changed from 3000?",
      "created_at": "2023-10-26T19:15:03Z",
      "updated_at": "2023-10-27T12:26:41Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AcNyN",
        "body": "Check out the config knobs / environment vars `BACKEND_PORT`, `FRONTEND_PORT` and `API_URL`, they should let you change where the front and back are listening. The `API_URL` currently needs to point to the publicly accessible location of the backend, so if you're running in docker, this would have to be your external hostname.\r\n\r\nMaybe something like\r\n\r\n```Dockerfile\r\nENV BACKEND_PORT=8001 FRONTEND_PORT=3001 API_URL=http://example.com:8001\r\nCMD reflex run\r\n```"
      },
      "user": {
        "login": "chimeracle",
        "avatar_url": "https://avatars.githubusercontent.com/u/87193612?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVrI7",
      "number": 1883,
      "title": "YouTube Channel/Tutorials",
      "body": "Reflex is awesome, highly appreciate all the great work and care put into this project.\n\nAs an idea, I think having a YouTube channel with tutorials would be great. \n\nDocs are generally great but I feel a video course where the development team can discuss best practices and design patterns using Reflex would be great. Things like project layout, best practices on styling/theming, general overview around hosting/self-hosting. \n\nAs an example, I have looked through the reflex-web repo and would love to understand the thought process of the project layout as well as why/how certain aspects of the site are designed and implemented. It would give better understanding on how to use the reflex framework to develop bigger projects, like the reflex website. \n\nThanks again for all the great work in making this project a reality, Python for the win 🏆\n\n",
      "created_at": "2023-09-28T15:21:32Z",
      "updated_at": "2023-10-24T21:22:23Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "DavidWalshe93",
        "avatar_url": "https://avatars.githubusercontent.com/u/31964720?u=8d2e4268700a6c345a0e898c2feeb9074ceba28a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AV3dp",
      "number": 1962,
      "title": "Are there any large/complex multi page apps to show ?",
      "body": "Being Python developers since a very long time and having our current backend entirely written in Python, we're very interested in this framework and we're considering to use it in order to build our next web app which will serve millions of users.\r\n\r\nYou can imagine our web app as a large SaaS website with several dynamic pages (> 50) and a lot of user interaction.\r\n\r\nWe were wondering if there are any examples of complex/large multi page web applications written with Pynecone/Reflex currently running in production.\r\n\r\nWould you mind to share the links ?\r\n\r\nAlso, it would be great if you could tell us more about your experience, both in terms of development experience (stability, documentation, support, build time, etc) and user experience (performance, responsiveness, bugs, etc.).\r\n\r\nThanks",
      "created_at": "2023-10-13T10:16:00Z",
      "updated_at": "2023-10-19T16:41:13Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AV4vB",
      "number": 1973,
      "title": "Any benchmark? How many simultaneous connections/messages can this framework handle on a single core?",
      "body": "I know this is a very complex question and it's really hard to give an accurate answer since it depends on a variety of factors including the complexity of the app and its state, but I was wondering if you have ever run a benchmark on this framework and what kind of performance and scalability we can expect.\r\n\r\nI'm especially \"concerned\" with the the websocket mechanism, how many websockets can be open at the same time and how many messages the backend can handle per second.",
      "created_at": "2023-10-15T12:58:27Z",
      "updated_at": "2023-10-17T17:36:18Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AV2Lp",
      "number": 1949,
      "title": "loosen fastapi pin?",
      "body": "currently FastAPI is pinned fairly aggressively, causing some issues with other packages I'm trying to use. could that be loosened to allow for pip install of the latest versions?",
      "created_at": "2023-10-11T23:51:55Z",
      "updated_at": "2023-10-16T18:50:14Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "lostmygithubaccount",
        "avatar_url": "https://avatars.githubusercontent.com/u/54814569?u=6aa3e22003a6aa7ea31d92a3f84e69888067ba1c&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AV30c",
      "number": 1971,
      "title": "Client state storage and management",
      "body": "According to the docs\r\n\r\n> Each user who opens your app has a unique ID and their own copy of the state. This means that each user can interact with the app and modify the state independently of other users.\r\nAll user state is stored on the server, and all event handlers are executed on the server. Reflex uses websockets to send events to the server, and to send state updates back to the client.\r\n\r\nWe were wondering: how is the state stored on the server? Is the state of a client removed at some point? If so, when (e.g. as soon as the session is closed)?",
      "created_at": "2023-10-13T18:58:33Z",
      "updated_at": "2023-10-13T19:28:31Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "PasqualePuzio",
        "avatar_url": "https://avatars.githubusercontent.com/u/7646303?u=6fad8b67e202bd98e699eb129e221df3ff14f74f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATUh7",
      "number": 798,
      "title": "Pynecone Docker configs?",
      "body": "Hi there,\r\n\r\nI'm having trouble building and running Docker locally. It's just a vanilla install, since I'm trying to understand how everything works under the hood.\r\n\r\nPartly is I'm not sure what to call things / rename things in the config (e.g. \"app\"). My app is called \"thirdtry\" and my current venv and app is all under that name, e.g. `thirdtry/thirdtry/thirdtry.py`.\r\n\r\nWhich parts should I rename to `thirdtry` and which parts should I keep as `app`? Variations of errors I get include: \r\n- `pc init` \"pc not found\" when I build\r\n- when I successfully run Docker locally, I usually get the error:\r\n```\r\n$ next build && next export -o _static\r\n/bin/bash: line 1: next: command not found\r\nerror: script \"export\" exited with code 127\r\n$ next start\r\n/bin/bash: line 1: next: command not found\r\nerror: script \"prod\" exited with code 127\r\n```\r\n\r\nHere are my steps:\r\n1. I'm successfully running with `pc init` and `pc run`\r\n2. I'm setting `pconfig.py` like this for Docker:\r\n```\r\nimport pynecone as pc\r\n\r\nconfig = pc.Config(\r\n    app_name=\"thirdtry\",\r\n    api_url=\"0.0.0.0:8000\",\r\n    bun_path=\"/app/.bun/bin/bun\",\r\n    db_url=\"sqlite:///pynecone.db\",\r\n)\r\n```\r\n3. Here's my `Dockerfile`:\r\n```\r\nFROM python:3.11-slim as base\r\n\r\nRUN adduser --disabled-password pynecone\r\n\r\n\r\nFROM base as build\r\n\r\nWORKDIR /app\r\nENV VIRTUAL_ENV=/app/venv\r\nRUN python3 -m venv $VIRTUAL_ENV\r\nENV PATH=\"$VIRTUAL_ENV/bin:$PATH\"\r\n\r\nCOPY . .\r\n\r\nRUN pip install wheel \\\r\n    && pip install -r requirements.txt\r\n\r\n\r\nFROM base as runtime\r\n\r\nRUN apt-get update && apt-get install -y \\\r\n    curl \\\r\n    && curl -fsSL https://deb.nodesource.com/setup_19.x | bash - \\\r\n    && apt-get update && apt-get install -y \\\r\n    nodejs \\\r\n    unzip \\\r\n    && rm -rf /var/lib/apt/lists/*\r\n\r\nENV PATH=\"/app/venv/bin:$PATH\"\r\n\r\n\r\nFROM runtime as init\r\n\r\nWORKDIR /app\r\nENV BUN_INSTALL=\"/app/.bun\"\r\nCOPY --from=build /app/ /app/\r\nRUN pc init\r\n\r\n\r\nFROM runtime\r\n\r\nCOPY --chown=pynecone --from=init /app/ /app/\r\nUSER pynecone\r\nWORKDIR /app\r\n\r\nCMD [\"pc\",\"run\" , \"--env\", \"prod\"]\r\n\r\nEXPOSE 3000\r\nEXPOSE 8000\r\n```\r\n\r\n4. Here's my `requirements.txt`:\r\n```\r\npynecone\r\n```\r\n\r\nOk I know it's something silly like a misnamed folder or app, but I have no idea how to fix it...",
      "created_at": "2023-04-10T06:00:20Z",
      "updated_at": "2023-10-13T01:29:19Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AVPsU",
        "body": "Ok I came up with a Dockerfile that worked!\r\n\r\nThe problem is that I've never installed some of the Node requirements before. This updated Dockerfile installs npm, yarn, then installs the node requirements.\r\n\r\nIt's heavily inspired by @tspycher from Discord (repo: https://github.com/tspycher/tspycher)\r\n\r\n```\r\nFROM python:3.11-slim as base\r\n\r\nRUN adduser --disabled-password pynecone\r\n\r\n\r\nFROM base as build\r\n\r\nWORKDIR /thirdtry\r\nENV VIRTUAL_ENV=/thirdtry/venv\r\nRUN python3 -m venv $VIRTUAL_ENV\r\nENV PATH=\"$VIRTUAL_ENV/bin:$PATH\"\r\n\r\nCOPY . .\r\n\r\nRUN pip install wheel \\\r\n    && pip install -r requirements.txt\r\n\r\n\r\nFROM base as runtime\r\n\r\nRUN apt-get update && apt-get install -y \\\r\n    curl \\\r\n    && curl -fsSL https://deb.nodesource.com/setup_19.x | bash - \\\r\n    && apt-get update && apt-get install -y \\\r\n    nodejs \\\r\n    unzip \\\r\n    && rm -rf /var/lib/apt/lists/*\r\n\r\nRUN npm install -g n\r\nRUN n latest\r\nRUN npm install -g npm@latest\r\nRUN npm install -g yarn\r\n\r\nENV PATH=\"/thirdtry/venv/bin:$PATH\"\r\n\r\n\r\nFROM runtime as init\r\n\r\nWORKDIR /thirdtry\r\nENV BUN_INSTALL=\"/thirdtry/.bun\"\r\nCOPY --from=build /thirdtry/ /thirdtry/\r\nRUN pc init\r\n\r\nRUN yarn install --update-checksums --cwd /thirdtry/.web\r\nRUN yarn add next @emotion/react @chakra-ui/react focus-visible\r\n\r\n\r\nFROM runtime\r\n\r\nCOPY --chown=pynecone --from=init /thirdtry/ /thirdtry/\r\nUSER pynecone\r\nWORKDIR /thirdtry\r\n\r\nCMD [\"pc\",\"run\" , \"--env\", \"prod\"]\r\n\r\nEXPOSE 3000\r\nEXPOSE 8000\r\n```"
      },
      "user": {
        "login": "janzheng",
        "avatar_url": "https://avatars.githubusercontent.com/u/3868520?u=53dc49c223ba9d6a4a9b06d6fe72eab19d28592d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AV3Bu",
      "number": 1955,
      "title": "How would I display this application over a local network?",
      "body": "I am attempting to display this application over a local network so I can allow others to interact with the application. Looking at the code it seems that the config is displaying the site over localhost:3000 as a [default](https://github.com/reflex-dev/reflex/blob/891e7ae32dfe9a758ea95534be264b8dfa5b5d79/reflex/config.py#L151). the backend is normally running on 0.0.0.0 and connecting to the api_url which is defaulted above. So do I need to change the backend host Ip address to something other than 0.0.0.0 and instead have it use something like 127.0.0.1? \r\nI'm probably just missing something obvious as I don't do a lot of front end coding\r\nI'm attempting to get onto it through my phone or other device and I keep getting the error \r\n\"Connection Error\"\r\n\"Cannot connect to server: websocket error. Check if server is reachable at http://{whatever my site name is set to}:{port}",
      "created_at": "2023-10-12T20:40:38Z",
      "updated_at": "2023-10-12T21:26:26Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "HasturDev",
        "avatar_url": "https://avatars.githubusercontent.com/u/42318215?u=0b20b2d01195f7dfca79359e0155f3377aff9e8c&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUsUl",
      "number": 1392,
      "title": "Authorization using firebase",
      "body": "Hey, Im still new to web development, but am loving reflex so far.\nI am almost finished with my app, the only thing I need to do now is create a login and signup system. How would I go about and do that with firebase?\nI have read many places that you need to save some sort of token in cookies, but cannot see anything about that in Reflex. Or do I have to only use pyrebase for that?\n\nAnt help or guidance is much appreciated 😊",
      "created_at": "2023-07-21T06:50:36Z",
      "updated_at": "2023-10-11T01:25:51Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AZLQX",
        "body": "@NanoscaleSimulations  you can do so by creating a function in the State of your app that will run when a user visits a route in your app, this function will check if the user is signed in if not it will redirect to the Sign-up/Sign-in page. Their is an example of a login system that you can find [here](https://github.com/reflex-dev/reflex-examples/tree/main/twitter) but it's doesn't use Firebase but i think it will give you an idea on how implement it"
      },
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVx2m",
      "number": 1931,
      "title": "Using a Pandas dataframe with Foreach",
      "body": "I'm trying to use a dataframe in a foreach loop inside a responsive grid. I'm following the docs example as close as possible and calling the row data passed to create_card like a row from the pandas function iterrows. Running the app throws a type error relating to the type for row. Does anyone know how to correct what I'm doing or point me in the right direction?\r\n\r\n```\r\nimport pandas as pd\r\nimport reflex as rx\r\n\r\n\r\nclass UserState(rx.State):\r\n    @rx.var\r\n    def get_users(self) -> pd.DataFrame:\r\n        # Usually call database for this\r\n        df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4],\r\n                           'col3': [5, 6]})\r\n        return df\r\n\r\n    df_users: pd.DataFrame = get_users\r\n\r\n\r\ndef create_card(row, index):\r\n    return rx.card(\r\n        rx.text(row['col2']),\r\n        header=rx.heading(row['col1'], size=\"lg\"),\r\n        footer=rx.heading(row['col3'], size=\"sm\"),\r\n    )\r\n\r\n\r\ndef user_grid() -> rx.Component:\r\n    return rx.fragment(rx.vstack(\r\n        rx.heading(\"Sample\"),\r\n        rx.responsive_grid(\r\n            rx.foreach(UserState.df_users, lambda row, index: create_card(row, index)),\r\n            columns=[1, 2]\r\n        )\r\n    )\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(user_grid())\r\napp.compile()\r\n```\r\nTraceback:\r\n```\r\nTraceback (most recent call last):\r\n  File \"C:\\Program Files\\Python310\\lib\\runpy.py\", line 196, in _run_module_as_main\r\n    return _run_code(code, main_globals, None,\r\n  File \"C:\\Program Files\\Python310\\lib\\runpy.py\", line 86, in _run_code\r\n    exec(code, run_globals)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\Scripts\\reflex.exe\\__main__.py\", line 7, in <module>\r\n    sys.exit(cli())\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\typer\\main.py\", line 214, in __call__\r\n    return get_command(self)(*args, **kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\click\\core.py\", line 1157, in __call__\r\n    return self.main(*args, **kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\click\\core.py\", line 1078, in main\r\n    rv = self.invoke(ctx)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\click\\core.py\", line 1688, in invoke\r\n    return _process_result(sub_ctx.command.invoke(sub_ctx))\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\click\\core.py\", line 1434, in invoke\r\n    return ctx.invoke(self.callback, **ctx.params)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\click\\core.py\", line 783, in invoke\r\n    return __callback(*args, **kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\typer\\main.py\", line 532, in wrapper\r\n    return callback(**use_params)  # type: ignore\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\reflex\\reflex.py\", line 146, in run\r\n    prerequisites.get_app()\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\reflex\\utils\\prerequisites.py\", line 114, in get_app\r\n    app = __import__(module, fromlist=(constants.APP_VAR,))\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\reflex_test\\reflex_test.py\", line 36, in <module>\r\n    app.add_page(user_grid())\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\reflex_test\\reflex_test.py\", line 28, in user_grid\r\n    rx.foreach(UserState.df_users, lambda row, index: create_card(row, index)),\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\reflex\\components\\layout\\foreach.py\", line 53, in create\r\n    children=[IterTag.render_component(render_fn, arg=arg)],\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\reflex\\components\\tags\\iter_tag.py\", line 77, in render_component\r\n    component = render_fn(arg, index)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\reflex_test\\reflex_test.py\", line 28, in <lambda>\r\n    rx.foreach(UserState.df_users, lambda row, index: create_card(row, index)),\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\reflex_test\\reflex_test.py\", line 18, in create_card\r\n    rx.text(row['col2']),\r\n  File \"C:\\Users\\PycharmProjects\\reflex_test\\venv\\lib\\site-packages\\reflex\\vars.py\", line 284, in __getitem__\r\n    raise TypeError(\r\nTypeError: Could not index into var of type Any. (If you are trying to index into a state var, add the correct type annotation to the var.)\r\n```\r\n",
      "created_at": "2023-10-06T19:45:43Z",
      "updated_at": "2023-10-09T19:56:36Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Ablxw",
        "body": "`card_link` is \"ComputedVar\" because it is decorated with `rx.var` or `rx.cached_var`, these functions act like `property`, they cannot take parameters and are computed based on the current state.\r\n\r\nMy suggestion was to use a normal event handler, so remove these decorators and try again."
      },
      "user": {
        "login": "chimeracle",
        "avatar_url": "https://avatars.githubusercontent.com/u/87193612?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVsJA",
      "number": 1890,
      "title": "Plotly scatter_mapbox doesn't display map",
      "body": "How can I get plotly's scatter_mapbox to display correctly?\r\n\r\nRunning the below code displays a page with the darkmode toggle switch and an empty plotly graph. Using any of the graph's buttons such as zoom in or out produces an error. Graph is copied from the plotly scatter_mapbox page and runs normally if used in a python file without Reflex.\r\n\r\n```\r\nimport pandas as pd\r\nimport reflex as rx\r\nimport plotly.graph_objects as go\r\nimport plotly.express as px\r\n\r\n\r\nclass State(rx.State):\r\n    us_cities = pd.read_csv(\"https://raw.githubusercontent.com/plotly/datasets/master/us-cities-top-1k.csv\")\r\n\r\n    @rx.var\r\n    def fig_map(self) -> go.Figure:\r\n        if self.us_cities.empty:\r\n            return go.Figure()\r\n        else:\r\n            fig = px.scatter_mapbox(self.us_cities, lat=\"lat\", lon=\"lon\", hover_name=\"City\",\r\n                                    hover_data=[\"State\", \"Population\"],\r\n                                    color_discrete_sequence=[\"fuchsia\"], zoom=3, height=300)\r\n            fig.update_layout(mapbox_style=\"open-street-map\")\r\n            fig.update_layout(margin={\"r\": 0, \"t\": 0, \"l\": 0, \"b\": 0})\r\n\r\n            return fig\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.fragment(\r\n        rx.color_mode_button(rx.color_mode_icon(), float=\"right\"),\r\n        rx.box(\r\n            rx.plotly(data=State.fig_map),\r\n        )\r\n    )\r\n\r\n\r\n# Add state and page to the app.\r\napp = rx.App()\r\napp.add_page(index)\r\napp.compile()\r\n```\r\nError produced by zoom buttons:\r\n```\r\nUnhandled Runtime Error\r\n\r\nError: No valid mapbox style found, please set `mapbox.style` to one of:\r\ncarto-darkmatter, carto-positron, open-street-map, stamen-terrain, stamen-toner, stamen-watercolor, white-bg\r\nor register a Mapbox access token to use a Mapbox-served style.\r\nCall Stack\r\nfindAccessToken\r\nnode_modules\\plotly.js\\dist\\plotly.js (53849:0)\r\nplot\r\nnode_modules\\plotly.js\\dist\\plotly.js (53703:0)\r\n61549/exports.drawData\r\nnode_modules\\plotly.js\\dist\\plotly.js (36175:0)\r\n71828/lib.syncOrAsync\r\nnode_modules\\plotly.js\\dist\\plotly.js (26125:0)\r\n_doPlot\r\nnode_modules\\plotly.js\\dist\\plotly.js (31321:0)\r\n73972/exports.call\r\nnode_modules\\plotly.js\\dist\\plotly.js (62174:0)\r\n61549/exports.layoutReplot\r\nnode_modules\\plotly.js\\dist\\plotly.js (36134:0)\r\n71828/lib.syncOrAsync\r\nnode_modules\\plotly.js\\dist\\plotly.js (26125:0)\r\nrelayout\r\nnode_modules\\plotly.js\\dist\\plotly.js (32617:0)\r\nwrappedEdit\r\nnode_modules\\plotly.js\\dist\\plotly.js (33086:0)\r\n73972/exports.call\r\nnode_modules\\plotly.js\\dist\\plotly.js (62174:0)\r\nhandleMapboxZoom\r\nnode_modules\\plotly.js\\dist\\plotly.js (13861:0)\r\n37676/proto.createButton/<\r\nnode_modules\\plotly.js\\dist\\plotly.js (14408:0)\r\n```",
      "created_at": "2023-09-29T18:33:30Z",
      "updated_at": "2023-10-04T17:13:35Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AbYw4",
        "body": "Here's what was needed to get your code working:\r\n\r\n```python\r\nimport json\r\n\r\nimport pandas as pd\r\nimport reflex as rx\r\nimport plotly.graph_objects as go\r\nimport plotly.express as px\r\nfrom plotly.io import to_json\r\n\r\n\r\nclass State(rx.State):\r\n    us_cities = pd.read_csv(\"https://raw.githubusercontent.com/plotly/datasets/master/us-cities-top-1k.csv\")\r\n\r\n    @rx.var\r\n    def fig_map(self) -> go.Figure:\r\n        if self.us_cities.empty:\r\n            return go.Figure()\r\n        else:\r\n            fig = px.scatter_mapbox(self.us_cities, lat=\"lat\", lon=\"lon\", hover_name=\"City\",\r\n                                    hover_data=[\"State\", \"Population\"],\r\n                                    color_discrete_sequence=[\"fuchsia\"], zoom=3, height=300)\r\n            fig.update_layout(mapbox_style=\"open-street-map\")\r\n            fig.update_layout(margin={\"r\": 0, \"t\": 0, \"l\": 0, \"b\": 0})\r\n\r\n            return fig\r\n\r\n    @rx.var\r\n    def fig_layout(self) -> dict:\r\n        return json.loads(str(to_json(self.fig_map.layout)))\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.fragment(\r\n        rx.color_mode_button(rx.color_mode_icon(), float=\"right\"),\r\n        rx.box(\r\n            rx.plotly(data=State.fig_map, layout=State.fig_layout),\r\n        )\r\n    )\r\n\r\n\r\n# Add state and page to the app.\r\napp = rx.App()\r\napp.add_page(index)\r\napp.compile()\r\n```"
      },
      "user": {
        "login": "chimeracle",
        "avatar_url": "https://avatars.githubusercontent.com/u/87193612?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVvI_",
      "number": 1910,
      "title": "Reflex Developer Survey",
      "body": "Hey Reflex community! Your feedback drives our innovation! Help us improve our product by taking our quick survey. Your insights are the secret sauce for shaping our product's future! \r\n\r\nHere's the survey: https://forms.gle/EG652aMChFSVMirH8 ",
      "created_at": "2023-10-03T17:46:15Z",
      "updated_at": "2023-10-03T17:46:16Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "tgberkeley",
        "avatar_url": "https://avatars.githubusercontent.com/u/64492814?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVuT4",
      "number": 1907,
      "title": "Issues with container docker container build",
      "body": "Would anyone be able to to help me understand what I'm doing wrong? I've tried many different things from the the docker documentation to referencing the following [https://github.com/tspycher/tspycher/tree/main](url) as well as #798 . I've added my current set up and I keep getting the following output when I run\r\n\r\n\r\n\r\n`Info: Overriding config value api_url with env var API_URL=http://0.0.0.0:8000/\r\n───────────────────────────── Starting Reflex App ──────────────────────────────\r\nDetected database schema changes. Run reflex db makemigrations to generate \r\nmigration scripts.\r\nWarning: The path to the Node binary could not be found. Please ensure that Node\r\nis properly installed and added to your system's PATH environment variable.\r\nInfo: Overriding config value api_url with env var API_URL=http://0.0.0.0:8000/`\r\n\r\nbefore run I run any commands I run to ensure I'm in the project directory\r\n`cd hundtry`\r\nand then the following build commands\r\n```\r\ndocker build -t reflex-app:latest . --build-arg API_URL=http://0.0.0.0:8000/\r\n\r\ndocker run -p 3000:3000 -p 8000:8000 --name app docker.io/library/reflex-app:latest\r\n```\r\nwhich results in the warning statement above.\r\n\r\nI wasn't sure about naming so I tried following #798 and named some things the same, I'm also not sure about bun path, I've seen that may or may not be necessary because reflex already adds that for you\r\n\r\nmy current project structure is as follows:\r\n```\r\nhundtry\r\n|--assests\r\n|--hundtry\r\n      |--hundtry.py\r\n      |--__init__.py\r\n|--requirements.txt\r\n|--alembic\r\n      |--versions\r\n           |--78186c27bdca_.py\r\n      |--script.py.mako\r\n      |--env.py\r\n|--alembic.ini\r\n|--reflex.db\r\n|--reconfig.py\r\n|--Dockerfile\r\n|--compose.yaml\r\n|--Caddyfile\r\n|--Caddy.Dockerfile\r\n```\r\n\r\n\r\nconfig:\r\n```\r\nimport reflex as rx\r\n\r\n\r\nconfig = rx.Config(\r\n    app_name=\"hundtry\",\r\n    api_url=\"http://0.0.0.0:8000/\",\r\n    db_url=\"sqlite:///reflex.db\",\r\n    telemetry_enabled=False,\r\n    )\r\n```\r\n\r\nDocker file:\r\n\r\n```\r\n# Stage 1: init\r\nFROM python:3.11 as init\r\n\r\n# Pass `--build-arg API_URL=http://app.example.com:8000/` during build\r\nARG API_URL\r\n\r\n# Copy local context to `/app` inside container (see .dockerignore)\r\nWORKDIR /app\r\nCOPY . .\r\n\r\n# Create virtualenv which will be copied into final container\r\nENV VIRTUAL_ENV=/app/.venv\r\nENV PATH=\"$VIRTUAL_ENV/bin:$PATH\"\r\nRUN python3 -m venv $VIRTUAL_ENV\r\n\r\n# Install app requirements and reflex inside virtualenv\r\nRUN pip install -r requirements.txt\r\n\r\n\r\n# Deploy templates and prepare app\r\nRUN reflex init\r\n\r\n# Export static copy of frontend to /app/.web/_static\r\nRUN reflex export --frontend-only --no-zip\r\n\r\n# Copy static files out of /app to save space in backend image\r\nRUN mv .web/_static /tmp/_static\r\nRUN rm -rf .web && mkdir .web\r\nRUN mv /tmp/_static .web/_static\r\n\r\n# Stage 2: copy artifacts into slim image \r\nFROM python:3.11-slim\r\nARG API_URL\r\nWORKDIR /app\r\nRUN adduser --disabled-password --home /app reflex\r\nCOPY --chown=reflex --from=init /app /app\r\nUSER reflex\r\nENV PATH=\"/app/.venv/bin:$PATH\" API_URL=$API_URL\r\n\r\nCMD reflex db migrate && reflex run --env prod --backend-only\r\n```\r\n\r\nbelow is the result of containter inspect command \r\n```\r\n\r\n[\r\n    {\r\n        \"Id\": \"sha256:7a7aabe6a2b8a0a179a3c8f5ad018ce4ebe6d0b7e5796e83c5bc3a91cc03a496\",\r\n        \"RepoTags\": [\r\n            \"hundtry:latest\"\r\n        ],\r\n        \"RepoDigests\": [\r\n            \"hundtry@sha256:1d9faf9e9f8b0039c23a2dd83be34e41cd8aae6cb61e3a9fb975bfd6cd73fdee\"\r\n        ],\r\n        \"Comment\": \"buildkit.dockerfile.v0\",\r\n        \"Created\": \"2023-10-02T18:00:57.057848468Z\",\r\n        \"Author\": \"\",\r\n        \"Config\": {\r\n            \"User\": \"reflex\",\r\n            \"AttachStdin\": false,\r\n            \"Env\": [\r\n                \"PATH=/app/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\",\r\n                \"LANG=C.UTF-8\",\r\n                \"GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D\",\r\n                \"PYTHON_VERSION=3.11.5\",\r\n                \"PYTHON_PIP_VERSION=23.2.1\",\r\n                \"PYTHON_SETUPTOOLS_VERSION=65.5.1\",\r\n                \"PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/9af82b715db434abb94a0a6f3569f43e72157346/public/get-pip.py\",\r\n                \"PYTHON_GET_PIP_SHA256=45a2bb8bf2bb5eff16fdd00faef6f29731831c7c59bd9fc2bf1f3bed511ff1fe\",\r\n                \"API_URL=http://0.0.0.0:8000/\"\r\n            ],\r\n            \"Cmd\": [\r\n                \"/bin/sh\",\r\n                \"-c\",\r\n                \"reflex db migrate \\u0026\\u0026 reflex run --env prod --backend-only\"\r\n            ],\r\n            \"WorkingDir\": \"/app\"\r\n        },\r\n        \"Architecture\": \"arm64\",\r\n        \"Os\": \"linux\",\r\n        \"Size\": 454533120,\r\n        \"RootFS\": {\r\n            \"Type\": \"layers\",\r\n            \"Layers\": [\r\n                \"sha256:311627f8702d2d97e63b916cad711aa9f962a1f20da5572d68b8f223ff051e73\",\r\n                \"sha256:c4d9cc0a506397e0ad36ddbdf72d19e613c14398db1885c15b5cdaaf3ad8a843\",\r\n                \"sha256:157a5fb7cdeb684a5ef63681e3324581cf56d888ab940c9de34a542fe944d65c\",\r\n                \"sha256:02436e886926662de870dd9bd0c59dc815918a5051df5270c5570f26722ccf21\",\r\n                \"sha256:96c02c33d5bbc277e38c37e7eae43ec64c1a5bf1f8633d9112f5848769dbbb9d\",\r\n                \"sha256:0ea3c64729940b0b9be30ec8ce753accbe27f0b82d2e481adbb59cf9a13efbe1\",\r\n                \"sha256:a479687e67a60a7ce58419956f64a030b6ba1e6c82fd0c1dbca2c094134ff412\",\r\n                \"sha256:0ed4b1c020a3df2d47e342abfc88dd9fb800edd0d5e2e27549dacf10c226f153\"\r\n            ]\r\n        },\r\n        \"Metadata\": {\r\n            \"LastTagTime\": \"0001-01-01T00:00:00Z\"\r\n        }\r\n    }\r\n]\r\n```",
      "created_at": "2023-10-02T19:54:46Z",
      "updated_at": "2023-10-03T15:24:23Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "eggman920",
        "avatar_url": "https://avatars.githubusercontent.com/u/89460174?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVFYs",
      "number": 1604,
      "title": "Reflex app deployment on GCP Compute Engine",
      "body": "First, you need to create a Compute Engine instance. I recommend Ubuntu 22 because it has python 3.10 by default and saves us a lot of problems. If you don't know how to create it, [read this](https://cloud.google.com/compute/docs/instances/create-start-instance).\r\n\r\nOnce you create it, make sure that ports 8000 and 3000 are allowed in the firewall. By default, they are not, so we have to create a firewall rules. My rule looks like this:\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/56123279/c9df1a65-ff18-401b-b36f-64643020aa29)\r\n\r\nNow, I will assume you used Ubuntu 22 as the OS of the instance.\r\n\r\nYou have to use ssh to connect to the instance. To do that there are a lot of methods but I'll keep it simple and I will use GCP ssh:\r\n\r\n![Paste](https://github.com/reflex-dev/reflex/assets/56123279/7ca1faa7-0837-437c-8e08-9c07b2d40f7a)\r\n\r\nOnce we are connected, we execute the following commands:\r\n\r\n1. `sudo apt-get update`\r\n2. `sudo apt-get install python3-pip nodejs zip`\r\n3. `python3 -m pip install reflex`\r\n4. `PATH=$PATH:/home/<your_username>/.local/bin`\r\n\r\nNow clone your repo where your Reflex app is:\r\n\r\n6. `git clone https://github.com/<your_repo>`\r\n\r\nAfter cloning the app, we go into the folder and init the app:\r\n\r\n8. `cd your_reflex_app/`\r\n9. `reflex init`\r\n\r\nMake sure that your app config looks something like this:\r\n\r\n```python\r\nimport reflex as rx\r\n\r\nconfig = rx.Config(\r\n    app_name=\"your_app_name\",\r\n    api_url=\"http://<your_external_ip>:8000\"\r\n)\r\n```\r\nwhere external_ip is the external ip of your Compute Engine instance.\r\n\r\nTo finish, run the app in production environment (you can use just reflex run to develop):\r\n\r\n11. `reflex run --env prod`\r\n\r\nIf something is unclear or missing, please tell me and I will update it.\r\n\r\nI hope it helps!\r\n\r\nCredits to @picklelo for his [Digital Ocean guide](https://github.com/orgs/reflex-dev/discussions/802). It was a great start to be able to deploy on GCP.",
      "created_at": "2023-08-16T13:02:37Z",
      "updated_at": "2023-10-02T08:18:18Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "emibarrod",
        "avatar_url": "https://avatars.githubusercontent.com/u/56123279?u=b49ce599ab1e7331d91b410a658ccb7935730ab3&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVjg6",
      "number": 1840,
      "title": "Swagger documentation autogeneration",
      "body": "Hi all!\r\n\r\nI have a pretty simple API built with FastAPI that I was looking to migrate it to Reflex in order to build a nice frontend to it.\r\n\r\nOne of the things that I liked the most about FastAPI was the automatic generation of Swagger API docs under `/docs`.\r\n\r\nEven though I see mentions in the docs that Reflex uses FastAPI as the backend, I can’t seem to find any reference on how to get that Swagger-generation feature for the API if I migrate to Reflex.\r\n\r\ntl;dr: I would like to migrate my FastAPI API to have a frontend with Reflex, while maintaining the API itself and the `/docs` Swagger endpoint. \r\n\r\nThanks in advance!",
      "created_at": "2023-09-20T08:42:44Z",
      "updated_at": "2023-10-02T07:39:38Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "BBerastegui",
        "avatar_url": "https://avatars.githubusercontent.com/u/3830238?u=6f9aea6c2f27183e3d7063535bb777e61543357d&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AS3g3",
      "number": 649,
      "title": "Only allow DataFrame as data for DataTable",
      "body": "Currently there are multiple ways to give a `DataTable` its `data`. It can be a pandas DataFrame, a list of dictionaries and so forth. This means there has to be a not-so-trivial process of figuring out which type `data` has and then proceeding accordingly, while also checking for conflicts like DataFrame + a columns argument. \r\n\r\nWhile it is great to offer users the flexibility to define their table data how they see fit, I argue that it would be cleaner and less complex to coerce them to use a \"real\" tabular data structure, the DataFrame. I also implore you to check out [polars](https://github.com/pola-rs/polars), a faster pandas alternative which may be an even better fit. DataFrames can easily be created from all kinds of data structures and file types, so it shouldn't be a DX burden.\r\n\r\nThis way, some code (`utils.is_dataframe()`, the `columns` prop and all associated checks) could be deleted and users would have one obvious way to do things. What do you think?",
      "created_at": "2023-03-09T16:41:12Z",
      "updated_at": "2023-09-29T22:17:12Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "iron3oxide",
        "avatar_url": "https://avatars.githubusercontent.com/u/98779754?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVrWc",
      "number": 1885,
      "title": "Using Pandas to query a database",
      "body": "tldr: How do I use rx.Session() with pandas.read_sql?\r\n\r\nI'm trying to use pandas.read_sql to query a database and then use that for a data_table and/or plotly graph. I can use pandas.read_csv easily enough just messing around with stale data:\r\n```\r\nclass Indexstate(baseState):\r\n    \"\"\"The app state.\"\"\"\r\n    df_report = pd.read_csv('report.csv')\r\n\r\n    fig = px.bar(df_report.tail(20), x='Name', y='Percent', title='Lowest 20 by percentage')\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.fragment(\r\n        rx.vstack(\r\n            rx.data_table(\r\n                data=Indexstate.df_report,\r\n                pagination=True,\r\n                search=True,\r\n                sort=True,\r\n            ),\r\n            rx.plotly(\r\n                data=Indexstate.fig, height='400px', width='700px'\r\n            ),\r\n            spacing=\"1.5em\",\r\n            font_size=\"2em\",\r\n            padding_top=\"10%\",\r\n            padding_bottom=\"10%\",\r\n        ),\r\n    )\r\n```\r\nThis works, but when I try to use with rx.Session() as session, I get the error that session does not have a cursor using below. Clearly, I don't understand enough to pass the database session over to pandas. \r\n```\r\nclass MapState(baseState):\r\n    \"\"\"The app state.\"\"\"\r\n    with rx.session() as session:\r\n        query_locations = pd.read_sql(\"SELECT * FROM Properties\", session)\r\n\r\n\r\n\r\ndef company_map() -> rx.Component:\r\n    return rx.fragment(\r\n        rx.heading(\"Map of Properties\"),\r\n        rx.data_table(data=MapState.query_locations,\r\n                      pagination=True,\r\n                      search=True,\r\n                      sort=True,\r\n            )\r\n    )\r\n```\r\nTraceback:\r\n```\r\nTraceback (most recent call last):\r\n  File \"C:\\Program Files\\Python310\\lib\\multiprocessing\\process.py\", line 314, in _bootstrap\r\n    self.run()\r\n  File \"C:\\Program Files\\Python310\\lib\\multiprocessing\\process.py\", line 108, in run\r\n    self._target(*self._args, **self._kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\Dashboard\\venv\\lib\\site-packages\\uvicorn\\_subprocess.py\", line 76, in subprocess_started\r\n    target(sockets=sockets)\r\n  File \"C:\\Users\\PycharmProjects\\Dashboard\\venv\\lib\\site-packages\\uvicorn\\server.py\", line 60, in run\r\n    return asyncio.run(self.serve(sockets=sockets))\r\n  File \"C:\\Program Files\\Python310\\lib\\asyncio\\runners.py\", line 44, in run\r\n    return loop.run_until_complete(main)\r\n  File \"C:\\Program Files\\Python310\\lib\\asyncio\\base_events.py\", line 649, in run_until_complete\r\n    return future.result()\r\n  File \"C:\\Users\\PycharmProjects\\Dashboard\\venv\\lib\\site-packages\\uvicorn\\server.py\", line 67, in serve\r\n    config.load()\r\n  File \"C:\\Users\\PycharmProjects\\Dashboard\\venv\\lib\\site-packages\\uvicorn\\config.py\", line 477, in load\r\n    self.loaded_app = import_from_string(self.app)\r\n  File \"C:\\Users\\PycharmProjects\\Dashboard\\venv\\lib\\site-packages\\uvicorn\\importer.py\", line 21, in import_from_string\r\n    module = importlib.import_module(module_str)\r\n  File \"C:\\Program Files\\Python310\\lib\\importlib\\__init__.py\", line 126, in import_module\r\n    return _bootstrap._gcd_import(name[level:], package, level)\r\n  File \"<frozen importlib._bootstrap>\", line 1050, in _gcd_import\r\n  File \"<frozen importlib._bootstrap>\", line 1027, in _find_and_load\r\n  File \"<frozen importlib._bootstrap>\", line 1006, in _find_and_load_unlocked\r\n  File \"<frozen importlib._bootstrap>\", line 688, in _load_unlocked\r\n  File \"<frozen importlib._bootstrap_external>\", line 883, in exec_module\r\n  File \"<frozen importlib._bootstrap>\", line 241, in _call_with_frames_removed\r\n  File \"C:\\Users\\PycharmProjects\\Dashboard\\Dashboard\\Pages\\map.py\", line 27, in MapState\r\n    query_locations = pd.read_sql(\"SELECT * FROM Properties\", session)\r\n  File \"C:\\Users\\PycharmProjects\\Dashboard\\venv\\lib\\site-packages\\pandas\\io\\sql.py\", line 654, in read_sql\r\n    return pandas_sql.read_query(\r\n  File \"C:\\Users\\PycharmProjects\\Dashboard\\venv\\lib\\site-packages\\pandas\\io\\sql.py\", line 2328, in read_query\r\n    cursor = self.execute(sql, params)\r\n  File \"C:\\Users\\PycharmProjects\\Dashboard\\venv\\lib\\site-packages\\pandas\\io\\sql.py\", line 2262, in execute\r\n    cur = self.con.cursor()\r\nAttributeError: 'Session' object has no attribute 'cursor'\r\n```\r\n",
      "created_at": "2023-09-28T20:43:50Z",
      "updated_at": "2023-09-29T01:05:02Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AbO0W",
        "body": "idk if this will work, but try passing `session.connection().connection` instead... that object _does_ have a `cursor()` method."
      },
      "user": {
        "login": "chimeracle",
        "avatar_url": "https://avatars.githubusercontent.com/u/87193612?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVnk-",
      "number": 1863,
      "title": "How to display data on a static website",
      "body": "Currently I have this usecase: \r\nI have some data that I would like to display and hopefully to create some interactive elements by using Javascript, something currently with plotly here. \r\n\r\nhttps://reflex.dev/docs/library/graphing/plotly/\r\n\r\nWhen I export it to the static site, no graph is appeared. Where did I do wrong? How can I achieve this? \r\n   ",
      "created_at": "2023-09-24T20:53:18Z",
      "updated_at": "2023-09-24T20:57:47Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "peterpans01",
        "avatar_url": "https://avatars.githubusercontent.com/u/7973814?u=f35694d59838122311331532d06c77340c48a325&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVi-A",
      "number": 1836,
      "title": "Explanation on Tutorial frontend",
      "body": "Hello, \r\n\r\nI think it's a python syntax but I don't understand the following : \r\n\r\nreturn rx.box(\r\n        *[\r\n            qa(question, answer)\r\n            for question, answer in qa_pairs\r\n        ]\r\n\r\nWhat does the *[....] syntax ?\r\n\r\nThanks in advance",
      "created_at": "2023-09-19T17:28:52Z",
      "updated_at": "2023-09-20T04:31:53Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "spiralcb",
        "avatar_url": "https://avatars.githubusercontent.com/u/29145698?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVi0p",
      "number": 1834,
      "title": "Is it possible to stop an already running event handler? Can I block event handlers from being queued?",
      "body": "https://discord.com/channels/1029853095527727165/1061874061250150441/1153646128542273576\r\n\r\nHey, I have two questions that I didnt find answer in docs.\r\n-  event handlers are run synchronously. Is it possible to stop already running event and start new one?  Im trying to create countdown from 10 to 0  and button that starts this countdown. Everytime I click the button I would like to countdown start again from 10 and not waiting first to go to 0 and start counting from 10 again.\r\n\r\n- Is it possible to stop adding new event_handlers before old one is not finished? I would like to prevent user to click 10 times and change state 10 times",
      "created_at": "2023-09-19T14:22:47Z",
      "updated_at": "2023-09-19T16:10:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Aa4ny",
        "body": "# Event Chaining\r\n\r\nSynchronous event handlers cannot be stopped or pre-empted by another event, they must run to completion. However, it is possible to break up a synchronous event handler via [*Event Chaining*](https://reflex.dev/docs/state/events/#returning-events-from-event-handlers), which places an event at the back of the queue and allows other events in the queue to be processed. The [clock example](https://github.com/reflex-dev/reflex-examples/blob/94dc9f894d0a73ef3b754fdf78171a67d7243dd7/clock/clock/clock.py#L71-L91) makes use of this technique.\r\n\r\nThe idea is to have the sync event handler only perform one step of the calculation, check a flag, and then recursively queue itself if the calculation should continue.\r\n\r\nConsider the following example, which uses an explicit `_running` flag to check whether the countdown should continue. It also only allows the countdown to go to `0` before stopping.\r\n\r\n```python\r\nimport asyncio\r\n\r\nimport reflex as rx\r\n\r\n\r\nclass State(rx.State):\r\n    # The main countdown variable.\r\n    counter: int = 0\r\n\r\n    # _running is a backend flag that prevents a new chain from starting\r\n    # while the old one is still running.\r\n    _running: bool = False\r\n    \r\n    async def decrement(self):\r\n        self.counter -= 1\r\n        await asyncio.sleep(0.3)\r\n\r\n        if self.counter > 0 and self._running:\r\n            # If the counter is still positive, queue another decrement operation.\r\n            return State.decrement\r\n        else:\r\n            # Otherwise, stop the chain and reset the flag.\r\n            self._running = False\r\n\r\n\r\n    def restart(self, value: int):\r\n        self.counter = value\r\n\r\n        if not self._running:\r\n            # Only queue a new chain if the old one is not running.\r\n            self._running = True\r\n            return State.decrement\r\n\r\n    def stop(self):\r\n        # Signal to stop recursively processing the decrement chain.\r\n        self._running = False\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.vstack(\r\n        rx.heading(State.counter, font_size=\"2em\"),\r\n        rx.button(\"Start/Restart\", on_click=lambda: State.restart(10)),\r\n        rx.button(\"Stop\", on_click=State.stop),\r\n        spacing=\"1.5em\",\r\n        padding_top=\"10%\",\r\n    )\r\n\r\n\r\n# Add state and page to the app.\r\napp = rx.App()\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n\r\n# Avoiding Multiple Events\r\n\r\nAs for the follow up question:\r\n\r\n> Is it possible to stop adding new event_handlers before old one is not finished? I would like to prevent user to click 10 times and change state 10 times.\r\n\r\nThe best way to accomplish this is to use a flag similar to `_running` in the above example. You cannot prevent an event handler from running multiple times, but you can prevent it from performing heavy calculations or modifying the state by protecting the event handler with a backend flag. For a UI hint, you can also replace the button with a spinner while the calculation is in progress.\r\n\r\n```python\r\nimport random\r\nimport time\r\n\r\nimport reflex as rx\r\n\r\n\r\ndef some_expensive_x_calculation() -> int:\r\n    time.sleep(2)\r\n    return random.randint(0, 100)\r\n\r\n\r\nclass State(rx.State):\r\n    doing_x: bool = False\r\n    x: int = 0\r\n\r\n    def do_x(self):\r\n        if self.doing_x:\r\n            return\r\n        self.doing_x = True\r\n        yield   # send the `doing_x` flag to the frontend for rendering\r\n        try:\r\n            self.x = some_expensive_x_calculation()\r\n        finally:\r\n            self.doing_x = False\r\n\r\n\r\ndef index():\r\n    return rx.vstack(\r\n        rx.heading(\"x: \", State.x),\r\n        rx.cond(\r\n            State.doing_x,\r\n            rx.spinner(),\r\n            rx.button(\"Do x\", on_click=State.do_x),\r\n        )\r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n\r\nThis technique can be used to prevent event handler from setting `State.x` multiple times while the calculation is running."
      },
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVhYG",
      "number": 1824,
      "title": "Postgres database connection requires psycopg2 library which causes pickle error",
      "body": "Attempting to query from a Postgres database causes a psycopg2 missing error. After pip installing psycopg2 and then attempting to \"reflex run\", I get the error: TypeError: cannot pickle 'module' object. Uninstalling the psycopg2 library and attempting to run gives the error: ModuleNotFoundError: No module named 'psycopg2'. Am I missing something in my configuration? Do I need different versions of anything?\r\n\r\n\r\n```\r\nimport reflex as rx\r\nclass Grades(rx.Model, table=True):\r\n    username: str\r\n    course: str\r\n    grade: str\r\nclass State(rx.State):\r\n    grades: list[Grades]\r\n    with rx.session() as session:\r\n        grades = session.query(Grades).filter(Grades.username == \"test\").all()\r\n        print(grades)\r\ndef render_grade(grade):\r\n    return rx.tr(\r\n            rx.td(grade.course),\r\n            rx.td(grade.grade),\r\n    )\r\ndef index() -> rx.Component:\r\n    return rx.fragment(\r\n        rx.color_mode_button(rx.color_mode_icon(), float=\"right\"),\r\n        rx.vstack(\r\n            rx.heading(\"Welcome to Reflex!\", font_size=\"2em\"),\r\n            rx.box(\"Your grades.\"),\r\n            rx.table(\r\n                rx.thead(\r\n                    rx.tr(\r\n                        rx.th(\"Class\"),\r\n                        rx.th(\"Grade\"),\r\n                    )\r\n                ),\r\n                rx.tbody(\r\n                    rx.foreach(State.grades, render_grade),\r\n                ),\r\n            ),\r\n            spacing=\"1.5em\",\r\n            font_size=\"2em\",\r\n            padding_top=\"10%\",\r\n        ),\r\n    )\r\napp = rx.App()\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n\r\n\r\nconfig\r\n```\r\nimport reflex as rx\r\n\r\nclass ReflexappConfig(rx.Config):\r\n    pass\r\n\r\nconfig = ReflexappConfig(\r\n    app_name=\"reflex_app3\",\r\n    db_url=\"postgresql://service_account:password1@localhost:5432/School\"\r\n)\r\n```\r\n\r\nPsycopg2 installed:\r\n```\r\nTraceback (most recent call last):\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py\", line 197, in _run_module_as_main\r\n    return _run_code(code, main_globals, None,\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py\", line 87, in _run_code\r\n    exec(code, run_globals)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\Scripts\\reflex.exe\\__main__.py\", line 7, in <module>\r\n    sys.exit(cli())\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\typer\\main.py\", line 214, in __call__\r\n    return get_command(self)(*args, **kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\click\\core.py\", line 1157, in __call__\r\n    return self.main(*args, **kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\click\\core.py\", line 1078, in main\r\n    rv = self.invoke(ctx)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\click\\core.py\", line 1688, in invoke\r\n    return _process_result(sub_ctx.command.invoke(sub_ctx))\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\click\\core.py\", line 1434, in invoke\r\n    return ctx.invoke(self.callback, **ctx.params)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\click\\core.py\", line 783, in invoke\r\n    return __callback(*args, **kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\typer\\main.py\", line 532, in wrapper\r\n    return callback(**use_params)  # type: ignore\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\reflex\\reflex.py\", line 146, in run\r\n    prerequisites.get_app()\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\reflex\\utils\\prerequisites.py\", line 113, in get_app\r\n    app = __import__(module, fromlist=(constants.APP_VAR,))\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\reflex_app3\\reflex_app3.py\", line 13, in <module>\r\n    class State(rx.State):\r\n  File \"pydantic\\main.py\", line 221, in pydantic.main.ModelMetaclass.__new__\r\n  File \"pydantic\\fields.py\", line 506, in pydantic.fields.ModelField.infer\r\n  File \"pydantic\\fields.py\", line 436, in pydantic.fields.ModelField.__init__\r\n  File \"pydantic\\fields.py\", line 546, in pydantic.fields.ModelField.prepare\r\n  File \"pydantic\\fields.py\", line 570, in pydantic.fields.ModelField._set_default_and_type\r\n  File \"pydantic\\fields.py\", line 439, in pydantic.fields.ModelField.get_default\r\n  File \"pydantic\\utils.py\", line 693, in pydantic.utils.smart_deepcopy\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 172, in deepcopy\r\n    y = _reconstruct(x, memo, *rv)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 270, in _reconstruct\r\n    state = deepcopy(state, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 146, in deepcopy\r\n    y = copier(x, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 230, in _deepcopy_dict\r\n    y[deepcopy(key, memo)] = deepcopy(value, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 172, in deepcopy\r\n    y = _reconstruct(x, memo, *rv)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 270, in _reconstruct\r\n    state = deepcopy(state, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 146, in deepcopy\r\n    y = copier(x, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 230, in _deepcopy_dict\r\n    y[deepcopy(key, memo)] = deepcopy(value, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 172, in deepcopy\r\n    y = _reconstruct(x, memo, *rv)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 270, in _reconstruct\r\n    state = deepcopy(state, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 146, in deepcopy\r\n    y = copier(x, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 230, in _deepcopy_dict\r\n    y[deepcopy(key, memo)] = deepcopy(value, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 172, in deepcopy\r\n    y = _reconstruct(x, memo, *rv)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 270, in _reconstruct\r\n    state = deepcopy(state, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 146, in deepcopy\r\n    y = copier(x, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 230, in _deepcopy_dict\r\n    y[deepcopy(key, memo)] = deepcopy(value, memo)\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\copy.py\", line 161, in deepcopy\r\n    rv = reductor(4)\r\nTypeError: cannot pickle 'module' object\r\n```\r\n\r\nUninstalled psycopg2 error:\r\n```\r\nTraceback (most recent call last):\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py\", line 197, in _run_module_as_main\r\n    return _run_code(code, main_globals, None,\r\n  File \"C:\\Users\\AppData\\Local\\Programs\\Python\\Python39\\lib\\runpy.py\", line 87, in _run_code\r\n    exec(code, run_globals)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\Scripts\\reflex.exe\\__main__.py\", line 7, in <module>\r\n    sys.exit(cli())\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\typer\\main.py\", line 214, in __call__\r\n    return get_command(self)(*args, **kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\click\\core.py\", line 1157, in __call__\r\n    return self.main(*args, **kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\click\\core.py\", line 1078, in main\r\n    rv = self.invoke(ctx)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\click\\core.py\", line 1688, in invoke\r\n    return _process_result(sub_ctx.command.invoke(sub_ctx))\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\click\\core.py\", line 1434, in invoke\r\n    return ctx.invoke(self.callback, **ctx.params)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\click\\core.py\", line 783, in invoke\r\n    return __callback(*args, **kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\typer\\main.py\", line 532, in wrapper\r\n    return callback(**use_params)  # type: ignore\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\reflex\\reflex.py\", line 146, in run\r\n    prerequisites.get_app()\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\reflex\\utils\\prerequisites.py\", line 113, in get_app\r\n    app = __import__(module, fromlist=(constants.APP_VAR,))\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\reflex_app3\\reflex_app3.py\", line 12, in <module>\r\n    class State(rx.State):\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\reflex_app3\\reflex_app3.py\", line 14, in State\r\n    with rx.session() as session:\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\reflex\\model.py\", line 291, in session\r\n    return sqlmodel.Session(get_engine(url))\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\reflex\\model.py\", line 50, in get_engine\r\n    return sqlmodel.create_engine(url, echo=echo_db_query, connect_args=connect_args)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\sqlmodel\\engine\\create.py\", line 139, in create_engine\r\n    return _create_engine(url, **current_kwargs)  # type: ignore\r\n  File \"<string>\", line 2, in create_engine\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\sqlalchemy\\util\\deprecations.py\", line 309, in warned\r\n    return fn(*args, **kwargs)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\sqlalchemy\\engine\\create.py\", line 548, in create_engine\r\n    dbapi = dialect_cls.dbapi(**dbapi_args)\r\n  File \"C:\\Users\\PycharmProjects\\reflex_app3\\venv\\lib\\site-packages\\sqlalchemy\\dialects\\postgresql\\psycopg2.py\", line 811, in dbapi\r\n    import psycopg2\r\nModuleNotFoundError: No module named 'psycopg2'\r\n```\r\n",
      "created_at": "2023-09-18T00:57:27Z",
      "updated_at": "2023-09-19T00:34:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4Aa0O0",
        "body": "Hi @chimeracle,\r\n\r\n`psycopg2` is needed. Reflex uses sqlmodel/sqlalchemy to connect to DB, and the default postgres driver is that. I was able to repro your error. This piece of code below caused the error. The `with` db query lines, instead of spilled out, should've been inside a handler , maybe a computed var with @rx.var decorator? Having said that, I suppose we do need to throw a better error message for the problem. \r\n\r\n```\r\nclass State(rx.State):\r\n    grades: list[Grades]\r\n    with rx.session() as session:\r\n        grades = session.query(Grades).filter(Grades.username == \"test\").all()\r\n        print(grades)\r\n```\r\n\r\nHope that helps."
      },
      "user": {
        "login": "chimeracle",
        "avatar_url": "https://avatars.githubusercontent.com/u/87193612?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVhUs",
      "number": 1823,
      "title": "Plotly disable modebar",
      "body": "Hi guys,\r\n\r\nI'm now developing a web portal for my company using Reflex but I'm having a hard time removing the modebar in Plotly graph. So what I've done now is to remove the modebar options with \"layout\" argument in rx.plotly and I specify the \"modebar\": {\"remove\": plotly_remove_all}\r\n\r\nplotly_remove_all = [\"autoScale2d\", \"autoscale\", \"editInChartStudio\", \"editinchartstudio\", \"hoverCompareCartesian\",\r\n                      \"hovercompare\", \"lasso\", \"lasso2d\", \"orbitRotation\", \"orbitrotation\", \"pan\", \"pan2d\", \"pan3d\",\r\n                      \"reset\", \"resetCameraDefault3d\", \"resetCameraLastSave3d\", \"resetGeo\", \"resetSankeyGroup\",\r\n                      \"resetScale2d\", \"resetViewMapbox\", \"resetViews\", \"resetcameradefault\", \"resetcameralastsave\",\r\n                      \"resetsankeygroup\", \"resetscale\", \"resetview\", \"resetviews\", \"select\", \"select2d\",\r\n                      \"sendDataToCloud\", \"senddatatocloud\", \"tableRotation\", \"tablerotation\", \"toImage\", \"toggleHover\",\r\n                      \"toggleSpikelines\", \"togglehover\", \"togglespikelines\", \"toimage\", \"zoom\", \"zoom2d\", \"zoom3d\",\r\n                      \"zoomIn2d\", \"zoomInGeo\", \"zoomInMapbox\", \"zoomOut2d\", \"zoomOutGeo\", \"zoomOutMapbox\", \"zoomin\",\r\n                      \"zoomout\"]\r\n\r\nHowever, with this code, I still have the plotly logo when I hover on the graph like below screenshot\r\n![image](https://github.com/reflex-dev/reflex/assets/68123305/a02ee9f2-fce5-4a6c-b438-e52add9a8229)\r\n\r\nCould anyone help me to completely remove this modebar? And is there any way of doing this? Thanks in advance!",
      "created_at": "2023-09-17T22:13:19Z",
      "updated_at": "2023-09-17T22:13:19Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "kevin-kurniawan",
        "avatar_url": "https://avatars.githubusercontent.com/u/68123305?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVfiH",
      "number": 1818,
      "title": "What is the best way to load external data into a reflex app?",
      "body": "Reflex provides `rx.var`, `rx.cached_var`, `on_load` (for pages), and `on_mount` (for components). What are the differences between these methods with regard to fetching data from an external API? Is there a recommended method for initializing and updating data for an app?",
      "created_at": "2023-09-15T17:22:29Z",
      "updated_at": "2023-09-15T17:22:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVcHx",
      "number": 1804,
      "title": "How to add the python user-local Scripts directory to PATH on windows?",
      "body": "> After running `pip install reflex` followed by `reflex init` I am getting the errors `bash: reflex: command not found`\r\n\r\n# Workaround 1: Invoke the module via `python3`\r\n\r\n👉 Use `python3 -m reflex` instead of `reflex`.\r\n\r\nAs long as the correct `python3` executable is on the PATH, this will search in the global and user-local site-packages to find `reflex`.\r\n\r\n# Workaround 2: Install reflex in an activated virtualenv\r\n\r\n## a. Create the virtualenv\r\n\r\n```bash\r\npython3 -m venv ./venv\r\n```\r\n\r\nThis only has to be done once\r\n\r\n## b. Activate the virtualenv\r\n\r\nWindows:\r\n```bash\r\n.\\venv\\Scripts\\activate.bat\r\n```\r\n\r\nUnix:\r\n```bash\r\n. ./venv/bin/activate\r\n```\r\n\r\nThen proceed to `pip install reflex` and use the `reflex` command as expected.\r\n\r\n`pip install` only needs to be done once, but `activate` is performed whenever opening a new terminal window.",
      "created_at": "2023-09-12T16:51:03Z",
      "updated_at": "2023-09-13T17:41:25Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AaobV",
        "body": "It is also possible to add the user-local `Scripts` directory to the `PATH` and use the `reflex` executable that way, keeping in mind that the user-local `Scripts` directory may end up containing non-reproducible or incompatible dependencies that introduce weird issues. When in doubt, always try in a fresh virtualenv.\r\n\r\nTo add the Python user-local `Scripts` directory to your PATH on Windows, follow these steps:\r\n\r\n1. **Find the User `Scripts` Directory:**\r\n\r\n   The user-local `Scripts` directory is typically located in a folder associated with your user profile. It follows this format: `C:\\Users\\<YourUsername>\\AppData\\Roaming\\Python\\Python<Version>\\Scripts`. Replace `<YourUsername>` with your actual Windows username and `<Version>` with your Python version (e.g., `3.9`, `3.8`, etc.).\r\n\r\n   For example, the path might look like: `C:\\Users\\John\\AppData\\Roaming\\Python\\Python39\\Scripts`.\r\n\r\n2. **Open System Properties:**\r\n\r\n   - Right-click on the Windows Start menu and select \"System.\"\r\n   - In the System window, click on \"Advanced system settings\" on the left sidebar.\r\n\r\n3. **Access Environment Variables:**\r\n\r\n   - In the System Properties window, click the \"Environment Variables\" button near the bottom right.\r\n\r\n4. **Edit User Environment Variables:**\r\n\r\n   - In the Environment Variables window, you'll see two sections: User variables and System variables. You want to add the `Scripts` directory to your user-specific PATH, so under the \"User variables\" section, look for a variable named `Path` (or `PATH`) and select it.\r\n\r\n5. **Edit the PATH Variable:**\r\n\r\n   - Click the \"Edit\" button.\r\n\r\n6. **Add the Python `Scripts` Directory:**\r\n\r\n   - In the Edit Environment Variable window, click the \"New\" button.\r\n   - Paste the path to your Python `Scripts` directory that you found in step 1.\r\n\r\n7. **Save the Changes:**\r\n\r\n   - Click \"OK\" to close each of the open windows (Environment Variables, System Properties, and System).\r\n\r\n8. **Verify the Changes:**\r\n\r\n   - Open a new Command Prompt or PowerShell window.\r\n   - Type `echo %PATH%` and press Enter to verify that the Python `Scripts` directory has been added to your PATH.\r\n\r\nYou should now be able to run Python scripts and commands from the Python user-local `Scripts` directory in any Command Prompt or PowerShell window without specifying the full path to the script."
      },
      "user": {
        "login": "masenf",
        "avatar_url": "https://avatars.githubusercontent.com/u/1524005?u=b77ec4aa35a645f1f25e84a76030dcc946e2de9a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVbq-",
      "number": 1800,
      "title": "Google analytics",
      "body": "Anyone succesfully set up google analytics for their reflex app/website?\r\nOr does anyone know how to do it?\r\n\r\nOr is there another way to track visitors and interactions?\r\n\r\nThanx in advance :)",
      "created_at": "2023-09-12T08:14:04Z",
      "updated_at": "2023-09-12T15:58:30Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AS8lY",
      "number": 688,
      "title": "3D model in app",
      "body": "Hi all,\r\n\r\nI had an idea for a project where the user can input some information and then see a 3D model (generated by a python library) accordingly. Is there a way to approach this using pynecone? I am aware there is something called Three JS, or is there another way to do this?\r\n\r\nKind regards",
      "created_at": "2023-03-15T13:45:18Z",
      "updated_at": "2023-09-11T20:53:49Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVWgv",
      "number": 1759,
      "title": "images/content getting displayed in the middle of browser instead from left  [Windows OS -  chrome browser]",
      "body": "```python\r\ndef test() -> rx.Component:\r\n    return rx.hstack(\r\n                rx.box(\r\n                    rx.image(src=\"/test-logo-with-name.png\", width=\"20em\"),\r\n                    \r\n                ),\r\n                rx.box(\r\n                    rx.heading(\"test message\", size=\"lg\", color=\"red\"),\r\n                ),\r\n                rx.box(\r\n                    rx.image(src=\"/testlogo.png\", width=\"5em\"),\r\n                ),\r\n                justify_content='space-between',\r\n              \r\n                \r\n            )\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.container(\r\n        test(),\r\n        rx.divider(),\r\n        #menulistcbse(),\r\n        datatableschoolmaster(),\r\n\r\n\r\n        \r\n    )\r\n\r\n\r\napp = rx.App()\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n![image](https://github.com/reflex-dev/reflex/assets/40896305/4dc8907a-33ee-463d-8031-15edfb858cfa)",
      "created_at": "2023-09-06T05:27:46Z",
      "updated_at": "2023-09-06T19:30:49Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "abhishekanish",
        "avatar_url": "https://avatars.githubusercontent.com/u/40896305?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVV12",
      "number": 1752,
      "title": "Nginx + Certbot for Reflex app",
      "body": "I am trying to setup nginx and certbot for my reflex app which I am hosting on a Oracle VM. My app is run using docker and exposed on ports 3000 and 8000 (frontend and backend).\r\nIt is crucial for me to setup ssl certificates because my domain is a .app TLD which only works with https.\r\n\r\nMy frontend works on my domain, but I cannot seem to setup my backend correctly when on https. The console log in my browser says:\r\n`_app-57ffd6160de7ada8.js:306 WebSocket connection to 'wss://nanocalc.app/event/?EIO=4&transport=websocket' failed:`\r\n\r\nMy /etc/nginx/sites-enabled/default/ is:\r\n```\r\n##\r\n# You should look at the following URL's in order to grasp a solid understanding\r\n# of Nginx configuration files in order to fully unleash the power of Nginx.\r\n# https://www.nginx.com/resources/wiki/start/\r\n# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/\r\n# https://wiki.debian.org/Nginx/DirectoryStructure\r\n#\r\n# In most cases, administrators will remove this file from sites-enabled/ and\r\n# leave it as reference inside of sites-available where it will continue to be\r\n# updated by the nginx packaging team.\r\n#\r\n# This file will automatically load configuration files provided by other\r\n# applications, such as Drupal or Wordpress. These applications will be made\r\n# available underneath a path with that package name, such as /drupal8.\r\n#\r\n# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.\r\n##\r\n\r\n# Default server configuration\r\nserver {\r\n\r\n        # SSL configuration\r\n        #\r\n        # listen 443 ssl default_server;\r\n        # listen [::]:443 ssl default_server;\r\n        #\r\n        # Note: You should disable gzip for SSL traffic.\r\n        # See: https://bugs.debian.org/773332\r\n        #\r\n        # Read up on ssl_ciphers to ensure a secure configuration.\r\n        # See: https://bugs.debian.org/765782\r\n        #\r\n        # Self signed certs generated by the ssl-cert package\r\n        # Don't use them in a production server!\r\n        #\r\n        # include snippets/snakeoil.conf;\r\n\r\n        #root /var/www/html;\r\n\r\n        # Add index.php to the list if you are using PHP\r\n        #index index.html index.htm index.nginx-debian.html;\r\n\r\n        server_name nanocalc.app;\r\n\r\n\r\n\r\n        location / {\r\n                # First attempt to serve request as file, then\r\n                # as directory, then fall back to displaying a 404.\r\n                ###try_files $uri $uri/ =404;\r\n                proxy_pass http://130.61.107.104:3000;\r\n                proxy_set_header Host $host;\r\n        }\r\n        location /event {\r\n                proxy_pass http://130.61.107.104:8000;\r\n                proxy_set_header Host $host;\r\n        }\r\n\r\n        # pass PHP scripts to FastCGI server\r\n        #\r\n        #location ~ \\.php$ {\r\n        #       include snippets/fastcgi-php.conf;\r\n        #\r\n        #       # With php-fpm (or other unix sockets):\r\n        #       fastcgi_pass unix:/run/php/php7.4-fpm.sock;\r\n        #       # With php-cgi (or other tcp sockets):\r\n        #       fastcgi_pass 127.0.0.1:9000;\r\n        #}\r\n\r\n        # deny access to .htaccess files, if Apache's document root\r\n        # concurs with nginx's one\r\n        #\r\n        #location ~ /\\.ht {\r\n        #       deny all;\r\n        #}\r\n\r\n    listen [::]:443 ssl ipv6only=on; # managed by Certbot\r\n    listen 443 ssl; # managed by Certbot\r\n    ssl_certificate /etc/letsencrypt/live/nanocalc.app/fullchain.pem; # managed by Certbot\r\n    ssl_certificate_key /etc/letsencrypt/live/nanocalc.app/privkey.pem; # managed by Certbot\r\n    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot\r\n    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot\r\n\r\n}\r\n\r\n\r\n# Virtual Host configuration for example.com\r\n#\r\n# You can move that to a different file under sites-available/ and symlink that\r\n# to sites-enabled/ to enable it.\r\n#\r\n#server {\r\n#       listen 80;\r\n#       listen [::]:80;\r\n#\r\n#       server_name example.com;\r\n#\r\n#       root /var/www/example.com;\r\n#       index index.html;\r\n#\r\n#       location / {\r\n#               try_files $uri $uri/ =404;\r\n#       }\r\n#}\r\n\r\nserver {\r\n\r\n        # SSL configuration\r\n        #\r\n        # listen 443 ssl default_server;\r\n        # listen [::]:443 ssl default_server;\r\n        #\r\n        # Note: You should disable gzip for SSL traffic.\r\n        # See: https://bugs.debian.org/773332\r\n        #\r\n        # Read up on ssl_ciphers to ensure a secure configuration.\r\n        # See: https://bugs.debian.org/765782\r\n        #\r\n        # Self signed certs generated by the ssl-cert package\r\n        # Don't use them in a production server!\r\n        #\r\n        # include snippets/snakeoil.conf;\r\n\r\n        #root /var/www/html;\r\n\r\n        # Add index.php to the list if you are using PHP\r\n        #index index.html index.htm index.nginx-debian.html;\r\n    server_name www.nanocalc.app; # managed by Certbot\r\n\r\n\r\n        location / {\r\n                # First attempt to serve request as file, then\r\n                # as directory, then fall back to displaying a 404.\r\n                ###try_files $uri $uri/ =404;\r\n                proxy_pass http://0.0.0.0:3000;\r\n                proxy_set_header Host $host;\r\n        }\r\n\r\n        location /event {\r\n                proxy_pass http://0.0.0.0:8000;\r\n                proxy_set_header Host $host;\r\n        }\r\n\r\n        # pass PHP scripts to FastCGI server\r\n        #\r\n        #location ~ \\.php$ {\r\n        #       include snippets/fastcgi-php.conf;\r\n        #\r\n        #       # With php-fpm (or other unix sockets):\r\n        #       fastcgi_pass unix:/run/php/php7.4-fpm.sock;\r\n        #       # With php-cgi (or other tcp sockets):\r\n        #       fastcgi_pass 127.0.0.1:9000;\r\n        #}\r\n\r\n        # deny access to .htaccess files, if Apache's document root\r\n        # concurs with nginx's one\r\n        #\r\n        #location ~ /\\.ht {\r\n        #       deny all;\r\n        #}\r\n\r\n    listen [::]:443 ssl ; # managed by Certbot\r\n    listen 443 ssl; # managed by Certbot\r\n    ssl_certificate /etc/letsencrypt/live/nanocalc.app/fullchain.pem; # managed by Certbot\r\n    ssl_certificate_key /etc/letsencrypt/live/nanocalc.app/privkey.pem; # managed by Certbot\r\n    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot\r\n    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot\r\n\r\n\r\n\r\n}\r\nserver {\r\n    if ($host = nanocalc.app) {\r\n        return 301 https://$host$request_uri;\r\n    } # managed by Certbot\r\n\r\n\r\n        listen 80 default_server;\r\n        listen [::]:80 default_server;\r\n\r\n        server_name nanocalc.app;\r\n    return 404; # managed by Certbot\r\n\r\n\r\n}\r\nserver {\r\n    if ($host = www.nanocalc.app) {\r\n        return 301 https://$host$request_uri;\r\n    } # managed by Certbot\r\n\r\n\r\n        listen 80 ;\r\n        listen [::]:80 ;\r\n    server_name www.nanocalc.app;\r\n    return 404; # managed by Certbot\r\n\r\n\r\n}\r\n```\r\n\r\nand my api_url is set to:\r\n`api_url = https://nanocalc.app`\r\n\r\nAny help is appreciated :)\r\n\r\nKind regards",
      "created_at": "2023-09-05T10:36:34Z",
      "updated_at": "2023-09-06T19:08:53Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVWhT",
      "number": 1760,
      "title": "'DataTable' not having option to export data as PDF/CSV - Feature Request",
      "body": "'DataTable' not having option to export data as PDF/CSV - Feature Request\r\n\r\nHow can we achieve the same.",
      "created_at": "2023-09-06T05:41:54Z",
      "updated_at": "2023-09-06T05:41:55Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "abhishekanish",
        "avatar_url": "https://avatars.githubusercontent.com/u/40896305?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVTq7",
      "number": 1743,
      "title": "required_indicator for form_label",
      "body": "Chakra supports requiredIndicator for form_label. However setting this prop in reflex as no effect. Am I missing out something?",
      "created_at": "2023-09-02T21:53:55Z",
      "updated_at": "2023-09-05T05:28:17Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "zulqasar",
        "avatar_url": "https://avatars.githubusercontent.com/u/82154935?u=64a3e22ada59b3db68f6f875e98859fef5de3860&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVVTC",
      "number": 1747,
      "title": "State methods' name can't contain digits?",
      "body": "①For some reason, I tried to change State method \"increment\" and \"decrement\" to \"increment_1\" and \"decrement_1\" respectively.\r\nAnd the app doesn't go. \r\n\r\n\r\nError message says,\r\n\r\n```\r\nKeyError: 'increment'\r\n```\r\n\r\neven though the code doesn't have 'increment' key.\r\n",
      "created_at": "2023-09-04T16:47:22Z",
      "updated_at": "2023-09-04T16:55:51Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "martiniifun",
        "avatar_url": "https://avatars.githubusercontent.com/u/62679294?u=47f3a4afb2adfdcd9e579627f43a560dbcd9d015&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVRlw",
      "number": 1719,
      "title": "input component event handler",
      "body": "From the [input](https://reflex.dev/docs/library/forms/input/#input) example:\r\n\r\n```\r\nclass InputState(rx.State):\r\n    text: str = \"Type something...\"\r\n\r\n\r\ndef index():\r\n    return rx.vstack(\r\n        rx.text(InputState.text, color_scheme=\"green\"),\r\n        rx.input(\r\n            value=InputState.text,\r\n            on_change=InputState.set_text,\r\n        ),\r\n    )\r\n```\r\n\r\nWhere the `set_text` attribute is coming from?\r\n",
      "created_at": "2023-08-31T01:11:44Z",
      "updated_at": "2023-09-02T04:20:50Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AaPND",
        "body": "`set_text` is implicit; every var in the state gets a corresponding `set_X` method that can be used to set it."
      },
      "user": {
        "login": "novetto",
        "avatar_url": "https://avatars.githubusercontent.com/u/143670364?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AU5qs",
      "number": 1526,
      "title": "Mysql / Mariadb Engine",
      "body": "On top of PostGre and sqlite, it would be nice",
      "created_at": "2023-08-05T07:27:20Z",
      "updated_at": "2023-08-31T17:53:55Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "morex",
        "avatar_url": "https://avatars.githubusercontent.com/u/3756134?u=e589904439c42b389613b46ae36a96e1359266f7&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVRmD",
      "number": 1720,
      "title": "The div html tag",
      "body": "What component in reflex is equivalent to a div in html?",
      "created_at": "2023-08-31T01:22:38Z",
      "updated_at": "2023-08-31T18:37:04Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AaPSR",
        "body": "@novetto reflex provides standard HTML elements that you can use in your frontend code under the `reflex.el` namespace.\r\n\r\nTo make a div, you can use the following code\r\n\r\n```python\r\nimport reflex as rx\r\n...\r\ndef index():\r\n    return rx.el.div(\"This is a standard HTML div tag.\")\r\n```"
      },
      "user": {
        "login": "novetto",
        "avatar_url": "https://avatars.githubusercontent.com/u/143670364?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVRmK",
      "number": 1721,
      "title": "Is there a guide on how to deploy a static site in netlify?",
      "body": "Perhaps it is possible to deploy static app in netlify.",
      "created_at": "2023-08-31T01:26:10Z",
      "updated_at": "2023-08-31T01:26:42Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "novetto",
        "avatar_url": "https://avatars.githubusercontent.com/u/143670364?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVNaq",
      "number": 1684,
      "title": "Image multi-select component",
      "body": "Hey reflex team,\r\nI just discovered this repo and I think it has a great potential. I'm the creator of [this ](https://github.com/lancedb/yoloexplorer) yoloexplorer project that allows users to iterate faster on their computer vision datasets. I want to port it over to reflex.\r\nOne of the main things that I need is \"image multi-select component\", where I can select multiple components in a grid and submit them to perform some sort of operation. In the current setting, I'm creating that using javascript, but I want to use reflex for the entire thing.\r\nIs it possible to do that using reflex? Can someone point me to a similar example? Thanks!",
      "created_at": "2023-08-26T08:47:05Z",
      "updated_at": "2023-08-29T21:05:14Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "AyushExel",
        "avatar_url": "https://avatars.githubusercontent.com/u/15766192?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVQUv",
      "number": 1707,
      "title": "Trying to point my domain to my reflex app",
      "body": "Hello there,\r\n\r\nI am trying to point my domain to my reflex app which i have hosted on a virtual machine on oracle oci.\r\nI can access the website by entering the ip address, but when I enter the domain, it will not connect to the website.\r\nI have added oracle nameservers to my domain and have added A records to point to the IP address of the virtual machine.\r\n\r\nI am starting to think that this my have something to do with the fact that I am hosting the website using the dockerfile from the reflex docker-example. I am hosting the app on port 80.\r\n\r\nAnyone who can help me?",
      "created_at": "2023-08-29T14:39:50Z",
      "updated_at": "2023-08-29T20:08:14Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVJJ0",
      "number": 1644,
      "title": "Why does it seem that setting component properties with a ternary using rx.Base properies doesn't seem to work for me.",
      "body": "Hi there. I'm having an issue with rx.Base properties and setting component properties with conditionals based on them. This is minimal example to show an issue.\r\n\r\n### Setup\r\n\r\nPython: 3.11.4\r\nReflex: 0.2.4\r\n\r\n```bash\r\nmkdir issue\r\ncd issue\r\nreflex init\r\n# copy the code below into issue/issue.py\r\nreflex run\r\n```\r\n\r\n### Code\r\n\r\n```\r\nimport reflex as rx\r\n\r\n\r\nclass Thing(rx.Base):\r\n    description: str\r\n    red: bool\r\n\r\n\r\nclass State(rx.State):\r\n    things: list[Thing] = [\r\n        Thing(\r\n            description=(\r\n                \"should be red, shows ternary on rx.Base property seeming to work \"\r\n                + \"but maybe not really\"\r\n            ),\r\n            red=True,\r\n        ),\r\n        Thing(\r\n            description=(\r\n                \"should be blue, shows ternary on rx.Base property doing something \"\r\n                + \"unexpected\"\r\n            ),\r\n            red=False,\r\n        ),\r\n    ]\r\n\r\n\r\ndef thing_text(thing: Thing):\r\n    return rx.vstack(\r\n        rx.text(\r\n            thing.description,\r\n            color=\"red\" if thing.red else \"blue\"\r\n        )\r\n    )\r\n\r\n\r\ndef index() -> rx.Component:\r\n    return rx.vstack(\r\n        rx.foreach(\r\n            State.things,\r\n            thing_text,\r\n        ),\r\n        rx.text(\r\n            \"should be red, shows ternary working as expected\",\r\n            color=\"red\" if \"1\" == \"1\" else \"blue\"\r\n        ),\r\n        rx.text(\r\n            \"should be blue, shows ternary working as expected\",\r\n            color=\"red\" if \"1\" == \"2\" else \"blue\"\r\n        ),\r\n    )\r\n\r\n\r\napp = rx.App(state=State)\r\napp.add_page(index)\r\napp.compile()\r\n\r\n```\r\n\r\n### The Unexpected Result\r\n\r\nThe line highlighted in yellow shows the issue. It should be blue, and it seems to be something to do with using state properties in ternary conditions. In my app the real thing that is going on is I'm trying to do things like `display=\"\" if xxx else \"none\"` where xxx is some conditional expression using an rx.Base derived class.\r\n\r\n![image](https://github.com/reflex-dev/reflex/assets/583807/ba3d5040-3646-4ccb-b857-a0691303f885)\r\n\r\n### What's Going On?\r\nMy suspicion is that it is a bug, but just as likely is there is some limitation that I'm not aware of, or I'm misunderstanding something about how and where client side things can be used.\r\n\r\nI did also have issues when doing conditionals with `is None` and `is not None` that were not working and I thought that must not be supported, but maybe it is and it's the same issue.",
      "created_at": "2023-08-21T09:45:51Z",
      "updated_at": "2023-08-25T20:37:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AaCYw",
        "body": "The state cannot (yet) detect internal changes to a custom var (like `Thing`). You can do something like the following though, and yes, i realize that it's a bit ugly\r\n\r\n```python\r\n    def edit(self, index: int) -> None:\r\n        thing = self.things[index]\r\n        thing.new_value = thing.value\r\n        thing.is_editing = True\r\n        self.things[index] = thing\r\n```\r\n\r\n**The reassignment at the end is what will trigger the state to know that something in `State.things` has a delta to send to the frontend**"
      },
      "user": {
        "login": "nevdelap",
        "avatar_url": "https://avatars.githubusercontent.com/u/583807?u=a9fe510d4c1b481011c70871d9c8f9a0c0be0094&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVHIL",
      "number": 1622,
      "title": "Variable in rx.link's href",
      "body": "How would I craft a variable based on a list index and then use that variable in a rx.link's href value? Below in the render_class function, I'm getting tripped up with the error message \"ComputedVar\" object is not callable. I've tried looking at the documentation's State > Var section and mimicking the computed variable section, but this doesn't appear to be the answer or I'm implementing it wrong. Bonus points if anyone has any clues as to how to integrate a clickable link in rx.datatable based off a dataframe instead as that was my initial idea(hence the aforementioned items in the code).\r\n\r\nWhat am I doing wrong? Bear in mind this is part of an app and I'm adding this page and base state elsewhere, so there's no main method at the bottom.\r\n\r\n````\r\nimport pandas as pd\r\nimport reflex as rx\r\nfrom reflex_app1.base_state import State as base_state\r\n\r\n\r\nclass C_State(base_state):\r\n    data = {'Class': ['Class1', 'Class2', 'Class3'], 'Link': ['/class1a', '/class2a', '/class3a']}\r\n    df_classes = pd.DataFrame(data=data)\r\n    class_list = ['Class1', 'Class2', 'Class3']\r\n    class_link = ['/class1', '/class1', '/class1']\r\n\r\n    @rx.var\r\n    def class_href(self, index) -> str:\r\n        return self.class_link[index]\r\n\r\n\r\ndef render_class(state, index):\r\n    return rx.tr(\r\n            rx.td(state.class_list[index]),\r\n            rx.td(\r\n                rx.link(\r\n                    \"Take the class\",\r\n                    href={state.class_href(index)},\r\n                    border=\"0.1em solid\",\r\n                    padding=\"0.5em\",\r\n                    spacing=\"3em\",\r\n                    border_radius=\"0.3em\",\r\n                    _hover={\r\n                        \"color\": \"rgb(107,99,246)\",\r\n                    },\r\n                ),),\r\n    )\r\n\r\n\r\ndef myclasses():\r\n    return rx.container(rx.center(\r\n        rx.vstack(\r\n            rx.heading(\"Classes\", font_size=\"2em\"),\r\n            rx.box(\"Your currently available classes \"),\r\n            rx.link(\r\n                \"Intro Quiz\",\r\n                href=\"/class1a\",\r\n                border=\"0.1em solid\",\r\n                padding=\"0.5em\",\r\n                border_radius=\"0.5em\",\r\n                _hover={\r\n                    \"color\": \"rgb(107,99,246)\",\r\n                },\r\n            ),\r\n            rx.data_table(\r\n                data=C_State.df_classes,\r\n                pagination=True,\r\n                search=True,\r\n                sort=True,\r\n            ),\r\n            rx.table(\r\n                rx.thead(\r\n                    rx.tr(\r\n                        rx.th(\"Class\"),\r\n                        rx.th(\"Link\"),\r\n                    )\r\n                ),\r\n                rx.foreach(C_State.class_list, lambda data, index: render_class(C_State, index)),\r\n            ),\r\n            spacing=\"1.5em\",\r\n            font_size=\"2em\",\r\n        ),\r\n        padding_top=\"10%\",\r\n    )\r\n    )\r\n",
      "created_at": "2023-08-18T13:52:21Z",
      "updated_at": "2023-08-22T23:37:37Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "chimeracle",
        "avatar_url": "https://avatars.githubusercontent.com/u/87193612?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVJy8",
      "number": 1654,
      "title": "How to solve reflex windows installation issue? msg: \"Installing base frontend packages failed\"",
      "body": "I am on windows 10, using vscode and tried to setup reflex. I am not using wsl.\r\n\r\n1. Create a folder `reflex-windows`.\r\n\r\n2. Open this folder in vscode.\r\n\r\n3. Run powershell console inside vscode.\r\n\r\n4. Create `venv` virtual environment.\r\n\r\n```\r\npython -m venv venv\r\n``` \r\n\r\nMy python version is 3.10.\r\n\r\n5. Activate `venv`\r\n\r\n```\r\n./venv/scripts/activate\r\n```\r\n\r\n6. Install relfex\r\n\r\n```\r\npip install reflex\r\n```\r\n\r\nThe installed reflex version is `reflex==0.2.5`\r\n\r\n7. Initialize.\r\n\r\n```\r\nreflex init\r\n```\r\n\r\n8. Run\r\n\r\n```\r\nreflex run --loglevel debug\r\n```\r\n\r\nLooks good until this point.\r\n\r\n```\r\n...\r\n\r\nDebug: npm verb unfinished npm timer reifyNode:node_modules/@chakra-ui/icons 1692667912745\r\nDebug: npm verb code 1\r\nDebug: \r\nDebug: npm ERR! A complete log of this run can be found in: C:\\Users\\ferdi\\AppData\\Local\\npm-cache\\_logs\\2023-08-22T01_29_51_974Z-debug-0.log\r\nInstalling base frontend packages failed with exit code 1\r\nnpm verb unfinished npm timer reifyNode:node_modules/binary-search-bounds 1692667912715\r\nnpm verb unfinished npm timer reifyNode:node_modules/is-iexplorer 1692667912715\r\n\r\n...\r\n```\r\n\r\nOther info:  \r\n\r\n```\r\n1 info using npm@9.6.7\r\n2 info using node@v18.17.0\r\n```\r\n\r\nCan anyone help?\r\n\r\nThe log file is attached.\r\n[2023-08-22T01_29_51_974Z-debug-0.log](https://github.com/reflex-dev/reflex/files/12403932/2023-08-22T01_29_51_974Z-debug-0.log)\r\n\r\nSimilar issue is encountered (without using vscode) using powershell.\r\n",
      "created_at": "2023-08-22T02:06:37Z",
      "updated_at": "2023-08-22T06:03:33Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "fsmosca",
        "avatar_url": "https://avatars.githubusercontent.com/u/22366935?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVD8v",
      "number": 1587,
      "title": "Can Tabs support a vertical orientation?",
      "body": "From the docs, it looks like tabs are only rendered along the top.\r\n\r\nI'm wondering if other orientations are possible like vertically along the left side.",
      "created_at": "2023-08-14T17:35:56Z",
      "updated_at": "2023-08-17T15:52:15Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bertbarabas",
        "avatar_url": "https://avatars.githubusercontent.com/u/17627242?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AVDRm",
      "number": 1582,
      "title": "JSX-like syntax extension",
      "body": "This project is amazing! I wonder if you've thought about implementing a syntax extension like JSX does with JavaScript? A syntactic sugar for Python that allows you to write HTML-like markup inside a Python file. Something similar has been developed before (.[pyxl](https://github.com/gvanrossum/pyxl3)). Only the .pyxl code would need to be transpiled to .py at build time. I think that it is totally in line with the project and that it can greatly improve the developer experience.",
      "created_at": "2023-08-13T20:11:36Z",
      "updated_at": "2023-08-14T00:43:00Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "pabloruizetc",
        "avatar_url": "https://avatars.githubusercontent.com/u/57796883?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AS6Dl",
      "number": 667,
      "title": "Be able to drag up or down item lists",
      "body": "For example, in a TODO list, I want to be able to prioritise tasks by dragging tasks up or down in a table list view similar to React.",
      "created_at": "2023-03-13T00:45:21Z",
      "updated_at": "2023-08-08T06:41:47Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "ericheose",
        "avatar_url": "https://avatars.githubusercontent.com/u/95906682?u=08afe3a2a600a5a0f92262a1115ed48dbac2c07c&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUcHT",
      "number": 1294,
      "title": "easy to build single executable like what nicegui does?",
      "body": "NiceGUI has one flag ( ui.run(native=True) )to turn itself into a single exe, can pynecone do it now? it's very useful sometimes to ship the GUI to others who does not have python installed.",
      "created_at": "2023-07-01T14:08:37Z",
      "updated_at": "2023-08-06T06:08:37Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "laoshaw",
        "avatar_url": "https://avatars.githubusercontent.com/u/18351761?u=df3dba7c8cfb7a93124b1e8b9f3daa65e446fc6a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUyuw",
      "number": 1446,
      "title": "Something seriously wrong when running reflex app in docker container",
      "body": "Hello there, 😊\r\n\r\nThere is something wrong when running a reflex app in a docker container. The front-end works fine, but the backend tends to work at its own free will.\r\nI am using the exact dockerfile from the example and the same rxconfigs. Sometimes the backend will work, but for the most time, it will not.\r\nI have even tried to play around with the api_url parameter in rxconfig and I even played with changing the ports.\r\n\r\nCan anyone explain to me a fix for this?\r\n\r\nKind regards\r\nZan\r\n\r\nPs. I am trying to run it on a Oracle Cloud Instance (Linux/arm64)",
      "created_at": "2023-07-28T12:29:16Z",
      "updated_at": "2023-07-29T16:55:51Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AZHWc",
        "body": "So i figured out myself that i need to set my api_url to not only the backend port (in my case 8000), but also to the ip of my cloud instance 😂🔫. This has been a very confusing struggle for me. I had a hunch that something was wrong with my config, but due to lack of descriptive documentation about what api_url actual does, it took long to figure out.\nHowever, for anyone with the same problem, the solution is:\n\n\nIn rxconfig.py:\napi_url = \"http://serveripaddress:port\"\n\nEven when using docker 😅"
      },
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATsSf",
      "number": 946,
      "title": "Add Delete And Edit Button in pc.table",
      "body": "is there an example of adding edit and delete button in pc.table .",
      "created_at": "2023-05-05T03:26:33Z",
      "updated_at": "2023-07-27T13:48:14Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUtpy",
      "number": 1409,
      "title": "List items are indented",
      "body": "Hi there,\r\n\r\nHow do I unindent my list items in an unordered_list? I want the list items to be all the way to the left, as the text above it.\r\n\r\nMy code:\r\n```\r\npc.unordered_list(\r\n\tpc.list_item('No dependencies and installations', color = style.greytextcol, font = style.font, font_size = '1.4rem'),\r\n\tpc.list_item('No coding and terminal', color = style.greytextcol, font = style.font, font_size = '1.4rem'),\r\n\tpc.list_item('No post-processing', color = style.greytextcol, font = style.font, font_size = '1.4rem'),\r\n)\r\n```",
      "created_at": "2023-07-23T08:38:11Z",
      "updated_at": "2023-07-23T08:38:11Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUshW",
      "number": 1395,
      "title": "How to contour the error so to update query and trigger ask_bot?",
      "body": "AttributeError: 'str' object has no attribute 'payload'\r\n\r\nI get this error and tried many ways (also with ChatGPT assistant), we could not clear this issue.\r\n\r\n```\r\n\r\n\"\"\"Welcome to Reflex! This file outlines the steps to create a basic app.\"\"\"\r\nfrom rxconfig import config\r\n\r\nimport reflex as rx\r\nfrom gpt import VisionOSChatbot # Import VisionOSChatbot from gpt.py\r\n\r\n# Create an instance of VisionOSChatbot\r\nbot = VisionOSChatbot()\r\n\r\nfilename = f\"{config.app_name}/{config.app_name}.py\"\r\n\r\nclass State(rx.State):\r\n    \"\"\"The app state.\"\"\"\r\n    pass\r\n\r\nclass ChatState(rx.State):\r\n    \"\"\"Chat app state.\"\"\"\r\n    query: str = 'How to add a button to open full immersive space using swiftUI with visionOS?'\r\n    response: str = ''\r\n\r\n    def ask_bot(self):\r\n        \"\"\"Ask the bot.\"\"\"\r\n        if self.query:  # Only ask the bot if the user entered a query\r\n            self.response = bot.ask(self.query, print_message=False)\r\n\r\n    def update_query(self, event):\r\n        \"\"\"Update the query based on the event payload.\"\"\"\r\n        # The exact structure of the payload is not known, so this is a guess\r\n        self.query = event.payload.get('value', '') \r\n\r\ndef index() -> rx.Component:\r\n    return rx.fragment(\r\n        rx.color_mode_button(rx.color_mode_icon(), float=\"right\"),\r\n        rx.vstack(\r\n            rx.box(\"visionOS Docs GPT\", font_size=\"1em\"),\r\n            rx.text_area(\r\n                placeholder=\"Q: Enter your query here\",\r\n                on_change=ChatState.update_query  # Update the query state variable when the textarea changes\r\n            ),\r\n            rx.text(f\"A: {ChatState.response}\", font_size=\"1em\"),  # Display the bot's response\r\n            rx.button(\r\n                \"Send\",\r\n                on_click=ChatState.ask_bot  # Trigger the ask_bot function when the button is clicked\r\n            ),\r\n            spacing=\"1.5em\",\r\n            font_size=\"1em\",\r\n            padding_top=\"10%\",\r\n        ),\r\n    )\r\n\r\n# Add state and page to the app.\r\napp = rx.App(state=ChatState)\r\napp.add_page(index)\r\napp.compile()\r\n```",
      "created_at": "2023-07-21T10:51:44Z",
      "updated_at": "2023-07-21T10:51:45Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Takuzen",
        "avatar_url": "https://avatars.githubusercontent.com/u/12772040?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUljZ",
      "number": 1334,
      "title": "Please explain grid and flex for a newbie",
      "body": "Can someone explain how grid and flex work?\r\nI am new to web design and have never worked with CSS and html etc before.\r\nI am trying to create a hero section with a Title and some text under it on the left side and a video on the right side. However, I want the video to span maybe 2/3 of the grid.\r\n\r\nI tried this:\r\n\r\n```\r\nfirst_section =pc.flex(\r\n\t\tpc.grid_item(\r\n\t\t\tpc.span(\r\n\t\t\t\t\"Fast & Easy \",\r\n\t\t\t\tcolor = textcolor,\r\n\t\t\t\tfont = style.fontheader,\r\n\t\t\t\tas_ = style.bold,\r\n\t\t\t\tfont_size = \"3rem\",\r\n\t\t\t),\r\n\t\t\tpc.span(\r\n\t\t\t\t\"Atomistic \",\r\n\t\t\t\tbackground_image = \"linear-gradient(300deg, #b4e7f9 0.75%, #3b9fe2 88.52%)\",\r\n\t\t\t\tbackground_clip = \"text\",\r\n\t\t\t\tfont = style.fontheader,\r\n\t\t\t\tas_ = style.bold,\r\n\t\t\t\tfont_size=\"3rem\",\r\n\t\t\t\th = \"auto\",\r\n\t\t\t\t#margin_right = \"10px\"\r\n\t\t\t),\r\n\t\t\tpc.span(\r\n\t\t\t\t\"Calculations\", \r\n\t\t\t\tcolor = textcolor,\r\n\t\t\t\tfont = style.fontheader,\r\n\t\t\t\tas_ = style.bold,\r\n\t\t\t\tfont_size = \"3rem\",\r\n\t\t\t\t#h = \"auto\",\r\n\t\t\t),\r\n\t\t\tpc.text(\r\n\t\t\t\t\"Execute calculations in seconds and get valuable information about your atomic system.\",\r\n\t\t\t\tcolor = style.greytextcol,\r\n\t\t\t\tfont = style.font,\r\n\t\t\t\tfont_size = \"2rem\",\r\n\t\t\t\twidth = \"585px\",\r\n\t\t\t\th = \"auto\",\r\n\t\t\t),\r\n\t\t\tpc.unordered_list(\r\n\t\t\t\tpc.list_item('No coding', color = style.greytextcol, font = style.font, font_size = '2rem'),\r\n\t\t\t\tpc.list_item('No installations', color = style.greytextcol, font = style.font, font_size = '2rem'),\r\n\t\t\t\tpc.list_item('Focus only on your work', color = style.greytextcol, font = style.font, font_size = '2rem')\r\n\t\t\t),\r\n\t\t\tCTA_button,\r\n\t\t\tcol_span=2,\r\n\t\t),\r\n\r\n\t\tpc.grid_item(\r\n\t\t\tpc.video(\r\n\t\t\t\turl='link', controls=False, playing='True', width='50rem', loop=True\r\n\t\t\t),\r\n\t\t\tcol_span=3,\r\n\t\t\t\r\n\t\t),\r\n\r\n\ttemplate_colums='repeat(5, 1fr)',\r\n\twidth = '100%',\r\n\t)\r\n```",
      "created_at": "2023-07-12T21:45:39Z",
      "updated_at": "2023-07-19T16:43:42Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUo0u",
      "number": 1349,
      "title": "How to handle with unhandled runtime error?",
      "body": "\r\n<img width=\"1013\" alt=\"스크린샷 2023-07-17 오후 4 35 42\" src=\"https://github.com/reflex-dev/reflex/assets/95741804/a26a76f6-13e7-4751-b84f-34419c67519e\">\r\n",
      "created_at": "2023-07-17T07:37:52Z",
      "updated_at": "2023-07-17T07:45:25Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "noviajun4",
        "avatar_url": "https://avatars.githubusercontent.com/u/95741804?u=704d43c9725e4f8b9d9fb7310874cb7e02bea73a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATwPk",
      "number": 976,
      "title": "Features over fixes (for now) ?",
      "body": "I know this goes against common wisdom, but I think that at this stage of the project, the focus should not yet be on consolidating/fixing existing features, but on adding new features, namely components/widgets. Let me explain:\r\n\r\nAs someone who wants to build a beautiful web app in Python without touching JS or CSS, I am very intrigued by this project. The only other frameworks that could potentially satisfy my requirements are [wave](https://wave.h2o.ai/) and [Flet](https://flet.dev/). I think pynecone might \"win\" in the long term because (amongst other things), it has a team of core developers instead of a single maintainer (Flet) and because state is handled explicitly and obviously instead of being contained in the controls/widgets themselves (both Flet and wave do this to some degree). It also looks somewhat more beautiful by default IMHO.\r\n\r\nSo why am I still considering the other two? Features, features, features. Some of them I probably won't ever need (PubSub in Flet e.g.), others I definitely will (OAuth in both). My main holdups for each of the frameworks right now are three controls/widgets I will definitely need in my project:\r\n\r\n1. A datepicker with great UX (easy to select today or not use the calendar at all) that can be set to different locales\r\n2. A WYSIWYG text editor that can \"import\" and \"export\" its content as HTML\r\n3. A datatable that is bound to a model/dataframe with selectable rows\r\n\r\nNone of the three frameworks has any of these at the time of writing. I have built the datatable for Flet myself from the existing control and would be willing to do so again, the other two can't be glued together in any of the frameworks however and I seem to lack the necessary JS/Dart skills to contribute them myself.\r\n\r\nSince I can't wait much longer to start the project I'd need this for, I will probably choose the first of the three to offer these and I'd have to then stick with that framework for a long time, as the project will be somewhat mission critical (bugs are not the end of the world, outages are). For the reasons outlined in the second paragraph, I'd want this to be pynecone. \r\n\r\nBack to the original topic though: I don't think I'm alone with this. There are probably many devs just like me, waiting for 1-3 critical features to be added before they decide to stick with a project. And once they stick, they'll be motivated to fix any bug that might have been introduced by \"moving fast and breaking stuff\", which I think should be the motto until a stable release is nearing. \r\n\r\nTo be clear: I don't want to critique the core devs here, for all I know, they might be following this strategy already or have very good reason not to do so. I rather want to ask them and anyone else reading this : Do you agree with my assessment / see my point? And do you see non-obvious ways to increase the speed at which new features are developed?  ",
      "created_at": "2023-05-09T17:04:33Z",
      "updated_at": "2023-07-12T19:50:13Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "iron3oxide",
        "avatar_url": "https://avatars.githubusercontent.com/u/98779754?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATHKq",
      "number": 733,
      "title": "Why file upload is not available when I host via docker",
      "body": "File upload is not available when I host simple app via docker container. Nothing happens when I click upload button, after selecting an audio file. No error logs reported, also. But the same scenario works perfectly in local environment. The code is almost same with example code, as below. I mounted volume for uploaded audio file. Refer to below simple docker-compose.yml\r\n\r\n```\r\n#app.py\r\nasync def handle_upload(self, file: pc.UploadFile):\r\n        \"\"\"Handle the upload of a file.\r\n\r\n        Args:\r\n            file: The uploaded file.\r\n        \"\"\"\r\n        upload_data = await file.read()\r\n        outfile = f\"/app/data/{file.filename}\"\r\n\r\n        # Save the file.\r\n        with open(outfile, \"wb\") as f:\r\n            f.write(upload_data)\r\n\r\n        # Update the audio file path\r\n        self.audio_file_path = outfile\r\n\r\n#docker-compose.yml\r\nversion: \"3.9\"\r\nservices:\r\n  client:\r\n    container_name: my-demo\r\n    image: my-demo-client:0.0.0\r\n    volumes:\r\n      - './app/data:/app/data'\r\n    ports:\r\n      - \"3000:3000\"\r\n      - \"8000:8000\"\r\n```\r\nAny similar issues?",
      "created_at": "2023-03-27T16:21:42Z",
      "updated_at": "2023-07-11T23:41:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "lionsheep0724",
        "avatar_url": "https://avatars.githubusercontent.com/u/79906095?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUdxX",
      "number": 1298,
      "title": "pywebview integration",
      "body": "can it be combined with pywebview and kivy for desktop and mobile packaging ?",
      "created_at": "2023-07-03T14:57:03Z",
      "updated_at": "2023-07-06T07:00:20Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "rraammiinn",
        "avatar_url": "https://avatars.githubusercontent.com/u/67558318?u=05ff9d0bc69be3722d90b6ae877a166e037436c2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUW1I",
      "number": 1245,
      "title": "Directed graph options",
      "body": "I'd like to add a directed graph (e.g. [NetworkX](https://networkx.org/), [Cytoscape](https://cytoscape.org/)) to a page, but am struggling to get this to work.\r\n\r\nI tried implementing this with NetworkX and then rendering it via Plotly, but could not get it to be properly interactive. Ideally I'd like access to things like the on_click event for nodes.\r\n\r\nI also tried wrapping the [react-cytoscapejs](https://www.npmjs.com/package/react-cytoscapejs) component, but I received a \"SyntaxError: Cannot use import statement outside a module\" issue that I couldn't resolve despite trying several fixes.\r\n\r\nHas anyone implemented a directed graph?",
      "created_at": "2023-06-25T16:27:58Z",
      "updated_at": "2023-06-29T16:59:39Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "simonmesmith",
        "avatar_url": "https://avatars.githubusercontent.com/u/5099521?u=7025ef7881332e5d9421cbc9586aad882bede515&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUY35",
      "number": 1256,
      "title": "How to increase pynecone's fastapi time out (8000 port) time?",
      "body": "Hi good friends!\r\n\r\nFollowing error message come out:\r\n\r\n504 Gateway Time-out\r\n\r\nHow to increase pynecoe's fastapi time out time?\r\n\r\nThanks in advance.\r\n",
      "created_at": "2023-06-27T17:05:17Z",
      "updated_at": "2023-06-28T20:20:52Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "automatethem",
        "avatar_url": "https://avatars.githubusercontent.com/u/108699325?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUPul",
      "number": 1208,
      "title": "how comprehensive is pynecoe compiler ?",
      "body": "can it compile any python code or there is limitations ?",
      "created_at": "2023-06-17T07:46:21Z",
      "updated_at": "2023-06-17T07:46:22Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "rraammiinn",
        "avatar_url": "https://avatars.githubusercontent.com/u/67558318?u=05ff9d0bc69be3722d90b6ae877a166e037436c2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUN0O",
      "number": 1192,
      "title": "How do I deploy a Pynecone website to Azure Web App?",
      "body": "I am looking to host a Pynecone website on Azure. I created a Azure Web App for Python. I was able to deploy my code to the server, but I need to configure my pcconfig.py to run on Azure.",
      "created_at": "2023-06-14T20:32:05Z",
      "updated_at": "2023-06-14T20:32:06Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "anushkasingh98",
        "avatar_url": "https://avatars.githubusercontent.com/u/31279432?u=343100ca6ac2c6e787f322fd48cf2879ed311e30&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUNs7",
      "number": 1191,
      "title": "Redirects and Inputs not working when Self Hosting",
      "body": "I am trying to self host on a VM hosted within Google Cloud Platform.\r\n\r\nI have set up my pynecone project in a docker container by referencing the docker example [here](https://github.com/pynecone-io/pynecone/tree/main/docker-example).\r\n\r\nI have also tried hosting it locally and using a reverse proxy using Nginx.\r\n\r\nIn both cases I have reached a point where I can access my site through the external IP for the GCP VM and I can retrieve individual pages via manually appending the route, however when trying to use any of the navigation buttons or input fields they are all functionless.",
      "created_at": "2023-06-14T17:22:43Z",
      "updated_at": "2023-06-14T17:22:44Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "QGoos",
        "avatar_url": "https://avatars.githubusercontent.com/u/15840819?u=0a18c376e44bc21fa481d76faa8423b9247dbaa2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUG5e",
      "number": 1150,
      "title": "States in modules",
      "body": "Hello there Pynecone community,\r\n\r\nI am having trouble creating a module for my pynecone projects that can be used by simply importing and adding the component.\r\nBasically, I want to create a module which contains a button, which shows a modal when pressed. I want to be able to use the same module for different projects.\r\nHowever, I seem to have problems understanding how to make it work. It seems that the problem lies in the Modal State because it is in the module and not in the main script. Am I misunderstanding how States work? Or am I making some other dumb mistake? \r\n\r\nThe main file:\r\n```\r\nfrom pcconfig import config\r\n\r\nimport pynecone as pc\r\nfrom .Modal import ModalComponent\r\n\r\nclass State(pc.State):\r\n    show: bool = False\r\n\r\n    def Change_state(self):\r\n        self.show = not (self.show)\r\n\r\n    def Get_state(self):\r\n        return self.show\r\n\r\n\r\ndef index() -> pc.Component:\r\n    return pc.center(\r\n        ModalComponent.SubscribeInterface.Interface(),\r\n        height = '100vh',\r\n    )\r\n\r\n\r\n# Add state and page to the app.\r\napp = pc.App(state=State)\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n\r\nThe module:\r\n\r\n```\r\nimport pynecone as pc\r\n\r\nclass ModalState(pc.State):\r\n\tshow: bool = False\r\n\r\n\tdef Change_state(self):\r\n\t\tself.show = not (self.show)\r\n\r\nclass SubscribeInterface:\r\n\tdef Interface():\r\n\t\tbutton = pc.button('Subscribe', on_click=ModalState.Change_state)\r\n\t\tmodal = pc.modal(\r\n\t\t\tpc.modal_overlay(\r\n\t\t\t\tpc.modal_content(\r\n\t\t\t\t\tpc.modal_header('Subscribe'),\r\n\t\t\t\t\tpc.modal_body(\r\n\t\t\t\t\t\t'Signup for our mailing list'\r\n\t\t\t\t\t),\r\n\t\t\t\t\tpc.modal_footer(\r\n\t\t\t\t\t\tpc.button(\r\n\t\t\t\t\t\t\t'Subscribe'\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t),\r\n\t\t\t\t)\r\n\t\t\t),\r\n\t\t\tis_open = ModalState.show\r\n\t\t)\r\n\t\treturn pc.center(\r\n\t\t\tbutton,\r\n\t\t\tmodal\r\n\t\t)\r\n```\r\n\r\nError:\r\n\r\n![Screenshot 2023-06-06 180808](https://github.com/pynecone-io/pynecone/assets/107072583/49cbdbfb-65e8-4893-ba3a-f5ca1a405c9e)\r\n\r\nI appreciate any type of help and guidance. Thanx! 😄 ",
      "created_at": "2023-06-06T16:06:29Z",
      "updated_at": "2023-06-07T06:47:28Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUGd4",
      "number": 1147,
      "title": "How to link BaseVar and its real value",
      "body": "Hello every,\r\n\r\nI have a question about var and its value.\r\nWhen I write code below\r\n```python\r\nclass State(pc.State):\r\n    \"\"\"The app state.\"\"\"\r\n    test = [1,2,3]\r\n```\r\n\r\nThe variable become BaseVar(name='test'.....) in app.init_subclasee\r\n```python\r\n        cls.base_vars = {\r\n            f.name: BaseVar(name=f.name, type_=f.outer_type_).set_state(cls)\r\n            for f in cls.get_fields().values()\r\n            if f.name not in cls.get_skip_vars()\r\n        }\r\n        cls.computed_vars = {\r\n            v.name: v.set_state(cls)\r\n            for v in cls.__dict__.values()\r\n            if isinstance(v, ComputedVar)\r\n        }\r\n        cls.vars = {\r\n            **cls.inherited_vars,\r\n            **cls.base_vars,\r\n            **cls.computed_vars,\r\n        }\r\n        cls.event_handlers = {}\r\n        print(cls.vars) # My add\r\n```\r\nBut when we use the compiler, it need real value([1,2,3]).\r\nI can't understand how to link BaseVar(name=\"test\"...) and real value([1,2,3])  in pynecone?\r\n\r\nIf anyone can help me, I will be grateful.",
      "created_at": "2023-06-06T06:24:49Z",
      "updated_at": "2023-06-07T01:22:24Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AXStz",
        "body": "@TaiJuWu the State attribute is a `BaseVar` when it is accessed from the class, i.e. `State.test`. This is used when creating the frontend: the actual value is in the state dict on the client side and will be filled in by the BaseVar at runtime.\r\n\r\nThe value contains the actual list when it is accessed from the instance, i.e. from an event handler. This is called when some client interaction triggers an event on the state. Within the event handler, accessing `self.test` will get the real `list` value, not the `BaseVar`.\r\n\r\nIn the context where you have a reference to the `State` class, during compile time, it doesn't make any sense to access the actual value, because the page is compiled for _all clients_, but the actual state value is _per-client_, so it only makes sense to access in the context of an event handler."
      },
      "user": {
        "login": "TaiJuWu",
        "avatar_url": "https://avatars.githubusercontent.com/u/33004323?u=94955e1c6d6bec51855a28667c6424002b9e3f2a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUDzi",
      "number": 1125,
      "title": "Using Objects in Foreach ? Why is it modifying values ?",
      "body": "Hi,\r\n\r\nI'm confused on this simple example. \r\n\r\nI want to code a card component containing a todo list  that I would be used in some page. I would like each task of the todo to be an object (dataclass) with multiple properties.\r\n\r\nThis piece of code is working fine if I use a list of Strings as `actions` property for `State`, but if I use a list of Objects (of Action dataclass type) then I have this strange error message :\r\n```\r\n...\r\nFile \"/run/media/nicolas/storage/Projets/dev/perso/RevesManager/./RevesManager/components/taskcard.py\", line 7, in render_task\r\n    pc.text(action.title)  # 'action' only with string list\r\n  File \"/run/media/nicolas/storage/Projets/dev/perso/RevesManager/venv/lib/python3.10/site-packages/pynecone/vars.py\", line 288, in __getattribute__\r\n    raise TypeError(\r\nTypeError: You must provide an annotation for the state var `_`. Annotation cannot be `typing.Any`\r\n```\r\n\r\nI tried also declaring Action in another file and import it in both main and component in order to typehint action parameter in the render function with same result.\r\n\r\nShould I add something to the Action class declaration ?\r\n\r\nMain file :\r\n```python\r\n\"\"\"Welcome to Pynecone! This file outlines the steps to create a basic app.\"\"\"\r\nfrom pcconfig import config\r\nfrom dataclasses import dataclass\r\n\r\nimport pynecone as pc\r\nfrom .components import taskcard\r\n\r\ndocs_url = \"https://pynecone.io/docs/getting-started/introduction\"\r\nfilename = f\"{config.app_name}/{config.app_name}.py\"\r\n\r\n\r\n@dataclass\r\nclass Action:\r\n    title: str\r\n    is_checked = False\r\n\r\n\r\ntest_actions_data = [\r\n    \"Si tu ne fais pas d'efforts\",\r\n    \"Ce ne sont pas les efforts\",\r\n    \"Qui vont te faire.\",\r\n]\r\ntest_actions = [Action(item) for item in test_actions_data]\r\n\r\n\r\nclass State(pc.State):\r\n    \"\"\"The app state.\"\"\"\r\n    actions: list = test_actions  # test_actions_data for list of Strings\r\n\r\n\r\ndef index() -> pc.Component:\r\n    return pc.center(\r\n        pc.vstack(\r\n            pc.heading(\"Tasks\"),\r\n            taskcard.task_card(\"Envie de faire mieux\", State.actions)\r\n        ),\r\n        padding_top=\"10%\",\r\n    )\r\n\r\n\r\n# Add state and page to the app.\r\napp = pc.App(state=State)\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n\r\nIn `components` subfolder, `taskcard.py`\r\n```python\r\nimport pynecone as pc\r\n\r\n\r\ndef render_task(action):\r\n    return pc.hstack(\r\n        pc.icon(tag=\"minus\"),\r\n        pc.text(action.title)  # 'action' only with string list\r\n    )\r\n\r\n\r\ndef task_card(title: str, actions: list):\r\n    return pc.card(\r\n        pc.list(\r\n            pc.foreach(actions, render_task)\r\n        ),\r\n        header=pc.heading(title)\r\n    )\r\n\r\n```",
      "created_at": "2023-06-02T14:41:58Z",
      "updated_at": "2023-06-06T14:58:23Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AXN-G",
        "body": "Thanks for checking out pynecone and posting your code in this discussion!\r\n\r\nI hammered on what you had and got it working, so I'll try to explain why these changes I made are necessary.\r\n\r\n# Rendering Objects\r\n\r\n1. dataclass-like types should inherit from `pc.Base`. This is a pydantic base class that allows the pynecone framework to analyze the variable types for serialization and compiled js operations.\r\n2. provide type annotations for all fields in a `pc.Base`-derived class; I added the `bool` annotation for `is_checked`.\r\n3. `pc.Base` only accepts keyword arguments, so the `test_actions` comprehension passes the `title` kwarg.\r\n\r\n```diff\r\ndiff --git a/repro_1125/repro_1125.py b/repro_1125/repro_1125.py\r\nindex 6b3095c..013dfa4 100644\r\n--- a/repro_1125/repro_1125.py\r\n+++ b/repro_1125/repro_1125.py\r\n@@ -9,10 +9,9 @@ docs_url = \"https://pynecone.io/docs/getting-started/introduction\"\r\n filename = f\"{config.app_name}/{config.app_name}.py\"\r\n \r\n \r\n-@dataclass\r\n-class Action:\r\n+class Action(pc.Base):\r\n     title: str\r\n-    is_checked = False\r\n+    is_checked: bool = False\r\n \r\n \r\n test_actions_data = [\r\n@@ -20,12 +19,12 @@ test_actions_data = [\r\n     \"Ce ne sont pas les efforts\",\r\n     \"Qui vont te faire.\",\r\n ]\r\n-test_actions = [Action(item) for item in test_actions_data]\r\n+test_actions = [Action(title=item) for item in test_actions_data]\r\n \r\n \r\n class State(pc.State):\r\n     \"\"\"The app state.\"\"\"\r\n-    actions: list = test_actions  # test_actions_data for list of Strings\r\n+    actions: list[Action] = test_actions  # test_actions_data for list of Strings\r\n \r\n \r\n def index() -> pc.Component:\r\n```\r\n\r\nWith these changes, the tasklist is rendering properly.\r\n\r\n# Handling Events\r\n\r\n1. Add `toggle_action_checked` event handler to the app state. find an action in the list and flip the `is_checked` boolean. **Note the \"useless\" assignment `self.actions[ix] = self.actions[ix]`!** This is necessary to trigger a state update; updating a value on an item in the list is not sufficient to trigger a state update on its own.\r\n2. Pass the event handler through to the `task_card` function\r\n3. `render_task` accepts a `set_toggle_action` event handler that is called when clicking task items\r\n4. Note the use of `lambda` when passing event handlers to supply additional arguments.\r\n\r\n```diff\r\ndiff --git a/repro_1125/repro_1125.py b/repro_1125/repro_1125.py\r\nindex 013dfa4..3179d3d 100644\r\n--- a/repro_1125/repro_1125.py\r\n+++ b/repro_1125/repro_1125.py\r\n@@ -26,12 +26,21 @@ class State(pc.State):\r\n     \"\"\"The app state.\"\"\"\r\n     actions: list[Action] = test_actions  # test_actions_data for list of Strings\r\n \r\n+    def toggle_action_checked(self, action):\r\n+        ix = self.actions.index(action)\r\n+        self.actions[ix].is_checked = not self.actions[ix].is_checked\r\n+        self.actions[ix] = self.actions[ix]  # reassign field to update state\r\n+\r\n \r\n def index() -> pc.Component:\r\n     return pc.center(\r\n         pc.vstack(\r\n             pc.heading(\"Tasks\"),\r\n-            taskcard.task_card(\"Envie de faire mieux\", State.actions)\r\n+            taskcard.task_card(\r\n+                \"Envie de faire mieux\",\r\n+                State.actions,\r\n+                State.toggle_action_checked,\r\n+            ),\r\n         ),\r\n         padding_top=\"10%\",\r\n     )\r\ndiff --git a/repro_1125/components/taskcard.py b/repro_1125/components/taskcard.py\r\nindex 2463a59..6b8bba9 100644\r\n--- a/repro_1125/components/taskcard.py\r\n+++ b/repro_1125/components/taskcard.py\r\n@@ -1,17 +1,28 @@\r\n import pynecone as pc\r\n \r\n \r\n-def render_task(action):\r\n+def render_task(action, set_toggle_action):\r\n     return pc.hstack(\r\n-        pc.icon(tag=\"minus\"),\r\n-        pc.text(action.title)  # 'action' only with string list\r\n+        pc.cond(\r\n+            action.is_checked,\r\n+            pc.icon(tag=\"star\"),\r\n+            pc.icon(tag=\"minus\"),\r\n+        ),\r\n+        pc.text(action.title),  # 'action' only with string list\r\n+        on_click=lambda: set_toggle_action(action),\r\n     )\r\n \r\n \r\n-def task_card(title: str, actions: list):\r\n+def task_card(title: str, actions: list, set_toggle_action: pc.event.EventHandler):\r\n     return pc.card(\r\n         pc.list(\r\n-            pc.foreach(actions, render_task)\r\n+            pc.foreach(\r\n+                actions,\r\n+                lambda action: render_task(\r\n+                    action,\r\n+                    set_toggle_action=set_toggle_action,\r\n+                ),\r\n+            ),\r\n         ),\r\n```"
      },
      "user": {
        "login": "ml4nC3",
        "avatar_url": "https://avatars.githubusercontent.com/u/60974685?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AUCoW",
      "number": 1118,
      "title": "Indexing Nested foreach",
      "body": "I feel like there should be a simple solution to this that I am overlooking, or I am going about this in the wrong way.\r\n\r\nWhen working with foreach component, you can pass an index along with the list for the function second argument. \r\nEach instance of foreach will have its own index separate from the one it is being called within. \r\nEvery attempt I have had at referencing the outermost index always end up duplicating the inermost index an resulting in a gid like.\r\n\r\nie trying to lable coords of a grid as xy, where x is the outermost index and y is the innermost \r\n goal matrix      \r\n00, 01, 02, 03         \r\n10, 11, 12, 13\r\n20, 21, 22, 23\r\n\r\nactual result matrix\r\n00, 11, 22, 33\r\n00, 11, 22, 33\r\n00, 11, 22, 33\r\n\r\nIs there a way to access the parent index in a nested foreach?\r\n",
      "created_at": "2023-06-01T07:41:18Z",
      "updated_at": "2023-06-14T16:11:51Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AXN_Y",
        "body": "@QGoos try something like this\r\n\r\n```python\r\nimport pynecone as pc\r\n\r\n\r\nclass State(pc.State):\r\n    \"\"\"The app state.\"\"\"\r\n    x: list[int] = [0, 1, 2]\r\n    y: list[int] = [0, 1, 2]\r\n\r\n\r\ndef index() -> pc.Component:\r\n    return pc.vstack(\r\n        pc.foreach(\r\n            State.x,\r\n            lambda x: pc.hstack(\r\n                pc.foreach(\r\n                    State.y,\r\n                    lambda y: pc.text(x, y),\r\n                ),\r\n            ),\r\n        )\r\n    )\r\n\r\n\r\n# Add state and page to the app.\r\napp = pc.App(state=State)\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n\r\n<img width=\"547\" alt=\"image\" src=\"https://github.com/pynecone-io/pynecone/assets/1524005/7f524a7e-2827-4132-9c9a-2b04400d72fb\">\r\n"
      },
      "user": {
        "login": "QGoos",
        "avatar_url": "https://avatars.githubusercontent.com/u/15840819?u=0a18c376e44bc21fa481d76faa8423b9247dbaa2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AT8u-",
      "number": 1077,
      "title": "Integrate with FastAPI and make use of the FastAPI Dependency Injection system",
      "body": "Is it possible to embed a pynecone app with an existing fastapi server, and make use of the FastAPI dependency injection system on pynecone routes?",
      "created_at": "2023-05-24T16:46:19Z",
      "updated_at": "2023-05-24T16:46:20Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "br-follow",
        "avatar_url": "https://avatars.githubusercontent.com/u/89947784?u=ef6a9ac244917104d93351e832ac00401def3225&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AT0pR",
      "number": 1026,
      "title": "Poll: Syntax for returning event handlers with args",
      "body": "We have a couple solutions for issue #876\r\n\r\nCurrently the class attribute `State.event_handler` is of type `EventHandler` while the object attribute `self.event_handler` is the raw function that the event handler wraps.\r\n\r\nWhen returning event handlers from other event handlers to add to the queue we have a couple of options.\r\n\r\nOption 1:\r\n* Within event handlers, `self.` refers to the function, and `State.` refers to the `EventHandler` object.\r\n* To call a function within an event handler, do `self.other_handler()`\r\n* When returning event handlers to `State.other_handler(arg)`\r\n\r\n```python\r\nclass State(pc.State):\r\n    \"\"\"The app state.\"\"\"\r\n\r\n    def fn_no_arg(self):\r\n       ...\r\n\r\n    def fn_multi_arg(self, arg1, arg2):\r\n       ...\r\n\r\n    def f1(self):\r\n        # Call the function using `self.`\r\n        self.fn_no_arg()\r\n        # Return event handler using `State.`\r\n        return State.fn_no_arg\r\n        # This is valid also.\r\n        return State.fn_no_arg()\r\n\r\n    def f2(self):\r\n        self.fn_multi_arg(1, 2)\r\n        return State.fn_multi_arg(1, 2)\r\n```\r\n\r\nOption 2:\r\n* Within event handlers, only use `self.` never `State.`\r\n* To call a function within an event handler, do `self.other_handler()`\r\n* When returning event handlers with args, use a lambda\r\n\r\n```python\r\nclass State(pc.State):\r\n    \"\"\"The app state.\"\"\"\r\n\r\n    def fn_no_arg(self):\r\n       ...\r\n\r\n    def fn_multi_arg(self, arg1, arg2):\r\n       ...\r\n\r\n    def f1(self):\r\n        # Call the function using `self.`\r\n        self.fn_no_arg()\r\n        # Return event handler using `self.`\r\n        return self.fn_no_arg\r\n        # This is valid also.\r\n        return lambda: self.fn_no_arg()\r\n\r\n    def f2(self):\r\n        self.fn_multi_arg(1, 2)\r\n        # For arguments, return a lambda.\r\n        return lambda: self.fn_multi_arg(1, 2)\r\n```",
      "created_at": "2023-05-15T03:24:47Z",
      "updated_at": "2023-05-22T20:57:33Z",
      "category": {
        "name": "Polls",
        "emoji": ":ballot_box:"
      },
      "answer": null,
      "user": {
        "login": "picklelo",
        "avatar_url": "https://avatars.githubusercontent.com/u/6270214?u=d4f6ecc83a3a136ecde2033f902ad243ee76f853&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AT2Ta",
      "number": 1037,
      "title": "Query parameters for Oauth",
      "body": "Sometimes, your site has something like mysite.com/?param1=hi&param2=bye\r\n\r\nIn Streamlit, I can get and set these parameters with these functions:\r\nhttps://docs.streamlit.io/library/api-reference/utilities/st.experimental_get_query_params\r\nhttps://docs.streamlit.io/library/api-reference/utilities/st.experimental_set_query_params\r\n\r\nIs there a way to do this in Pynecone? This is a really important feature to have because oauth authentication flows usually redirect you back to your site with a code in the url.",
      "created_at": "2023-05-16T20:35:59Z",
      "updated_at": "2023-05-17T01:53:56Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "kevinlinxc",
        "avatar_url": "https://avatars.githubusercontent.com/u/44324811?u=a2fa91316c574587fd35e0db7021290c3e33d07b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATz2z",
      "number": 1018,
      "title": "TODOMVC in Pynecone?",
      "body": "I would be curious to see [TODOMVC](https://todomvc.com) implemented in Pynecone.\r\n\r\nI have already added [Solara's implementation of TODOMVC](https://github.com/metaperl/pure-python-web-development/tree/main/examples/todomvc/solara) to the Pure Python Web Dev survey repo.\r\n\r\nWould love to add a Pynecone example ;)",
      "created_at": "2023-05-14T12:17:18Z",
      "updated_at": "2023-05-16T02:49:57Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "metaperl",
        "avatar_url": "https://avatars.githubusercontent.com/u/21293?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AT1D6",
      "number": 1027,
      "title": "Adding NPM to installation",
      "body": "If you're using **BUN** on linux, its likely that you won't be able to install the frontend or encounter an 'acces denied error, That's im recommend using **NPM** to install in stead. Although it may take longer, its useful for resolving errors,",
      "created_at": "2023-05-15T14:18:11Z",
      "updated_at": "2023-05-15T17:27:30Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "IndraAry",
        "avatar_url": "https://avatars.githubusercontent.com/u/112162133?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATrkW",
      "number": 937,
      "title": "What is different str original from str pc.foreach()",
      "body": "I am making a simple image slider code and meet a problem. \r\n\r\n```\r\nclass CondState(pc.State):\r\n\r\n    # image\r\n    images = [\"/img1.jpg\", \r\n              \"/img2.jpg\", \r\n              \"/img3.jpg\", \r\n              \"/img4.jpg\", \r\n              \"/img5.jpg\"]\r\n   ...\r\n\r\n\r\n\r\ndef test_box( image, count):\r\n    print(image) \r\n    return pc.box(pc.text(image),\r\n                pc.image(src=f'{image}', width='100px'), \r\n                pc.text(count))\r\n\r\ndef gallary_form():\r\n    return pc.box(\r\n        pc.vstack(\r\n            pc.heading(pn.CondState.value),\r\n            pc.box(\r\n                pc.center(\r\n                    pc.foreach(pn.CondState.images, lambda image,count: test_box(image, count))\r\n                ),\r\n                width='1000px', height='450px'\r\n\r\n            ),\r\n            pc.slider(on_change_end=pn.CondState.set_end, width=\"1000px\", height='50px',max_=4),\r\n\r\n        )\r\n    )\r\n```\r\n\r\nI get a list of img files and show it with foreach(). I can get image name from images list in state class. But I cannot display image using this image name using pc.images(). I checked valiable using print() and result was \r\n\r\n> [{maimobcu}]\r\n\r\nThis is why I cannot get image src path I think. When I check Developer page in Chome Browser, src path was `maimobcu` . \r\n\r\nHow can I get image name not hashed? \r\n",
      "created_at": "2023-05-04T08:45:57Z",
      "updated_at": "2023-05-13T08:53:03Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "cheuora",
        "avatar_url": "https://avatars.githubusercontent.com/u/9875591?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATzSH",
      "number": 1015,
      "title": "why do I empty state but value is not empty",
      "body": "i have problem why i set self.new_todo == \"\" . but input text value not clear\r\n\r\nmy code\r\nimport pynecone as pc\r\n\r\nclass State(pc.State):\r\n    todo: list\r\n    new_todo: str\r\n    show_modal:bool\r\n\r\n\r\n    def addnewTodo(self):\r\n        if not self.new_todo == \"\":\r\n            self.todo.append(self.new_todo)\r\n            print(self.todo)\r\n            self.new_todo = \"\" \r\n\r\n    def delete_todo(self,mytodo):\r\n        for x in self.todo:\r\n            if x == mytodo:\r\n                self.todo.remove(mytodo)\r\n            else:\r\n                print(\"Not FOund\")\r\n\r\n\r\n    def edit_todo(self,mytodo):\r\n        pass\r\n\r\n\r\ndef list_todo(mytodo):\r\n    return pc.list(\r\n        pc.list_item(\r\n        pc.hstack(\r\n            pc.text(mytodo,size=20),\r\n            pc.button(\"edit\",\r\n                bg=\"blue\",color=\"white\",\r\n                on_click=State.edit_todo(mytodo)\r\n                ),\r\n             pc.button(\"delete\",\r\n                bg=\"red\",color=\"white\",\r\n                on_click=State.delete_todo(mytodo)\r\n                )\r\n\r\n            )\r\n        )  \r\n        ) \r\n\r\ndef index() -> pc.Component:\r\n    return pc.center(\r\n        pc.vstack(\r\n            pc.heading(\"crud Todo\", size=\"md\"),\r\n            pc.input(\r\n                on_change=State.set_new_todo,\r\n                placeholder=\"new name\"\r\n            ),\r\n            pc.button(\r\n                \"add new todo\",\r\n                bg=\"purple\",\r\n                color=\"white\",\r\n                on_click=State.addnewTodo\r\n            ),\r\n            pc.foreach(State.todo,list_todo)\r\n        ),\r\n\r\n    )\r\n\r\n# Add state and page to the app.\r\napp = pc.App(state=State)\r\napp.add_page(index)\r\napp.compile()\r\n",
      "created_at": "2023-05-13T06:47:32Z",
      "updated_at": "2023-05-13T06:47:33Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATsS3",
      "number": 947,
      "title": "table get data from State Not Work",
      "body": "i want column and row data to be fetched from State .  How to\r\n\r\nsample code\r\n```\r\nclass State(pc.State):\r\n    name:str\r\n    price:int\r\n    stock:int\r\n    columns = [\"Name\", \"Age\", \"Location\"]\r\n\r\n    data = [\r\n            (\"Tolol\", 30, \"New York\"),\r\n            (\"Tolol\", 25, \"San Francisco\"),\r\n        ]\r\n\r\n pc.table_container(\r\n            pc.table(\r\n                pc.table_caption(\"Example Table\"),\r\n                pc.thead(\r\n                    pc.tr(*[pc.th(column) for column in State.columns])\r\n                ),\r\n                pc.tbody(\r\n                    *[\r\n                        pc.tr(*[pc.td(item) for item in row])\r\n                        for row in State.data\r\n                    ]\r\n                ),\r\n                # pc.tfoot(pc.tr(*[pc.th(item) for item in footer])),\r\n            )\r\n        )\r\n```\r\n\r\nerror\r\n\r\n```\r\nThe above exception was the direct cause of the following exception:\r\n\r\nTraceback (most recent call last):\r\n  File \"/usr/lib/python3.10/multiprocessing/process.py\", line 314, in _bootstrap\r\n    self.run()\r\n  File \"/usr/lib/python3.10/multiprocessing/process.py\", line 108, in run\r\n    self._target(*self._args, **self._kwargs)\r\n  File \"/usr/local/lib/python3.10/dist-packages/uvicorn/_subprocess.py\", line 76, in subprocess_started\r\n    target(sockets=sockets)\r\n  File \"/usr/local/lib/python3.10/dist-packages/uvicorn/server.py\", line 60, in run\r\n    return asyncio.run(self.serve(sockets=sockets))\r\n  File \"/usr/lib/python3.10/asyncio/runners.py\", line 44, in run\r\n    return loop.run_until_complete(main)\r\n  File \"/usr/lib/python3.10/asyncio/base_events.py\", line 646, in run_until_complete\r\n    return future.result()\r\n  File \"/usr/local/lib/python3.10/dist-packages/uvicorn/server.py\", line 67, in serve\r\n    config.load()\r\n  File \"/usr/local/lib/python3.10/dist-packages/uvicorn/config.py\", line 477, in load\r\n    self.loaded_app = import_from_string(self.app)\r\n  File \"/usr/local/lib/python3.10/dist-packages/uvicorn/importer.py\", line 21, in import_from_string\r\n    module = importlib.import_module(module_str)\r\n  File \"/usr/lib/python3.10/importlib/__init__.py\", line 126, in import_module\r\n    return _bootstrap._gcd_import(name[level:], package, level)\r\n  File \"<frozen importlib._bootstrap>\", line 1050, in _gcd_import\r\n  File \"<frozen importlib._bootstrap>\", line 1027, in _find_and_load\r\n  File \"<frozen importlib._bootstrap>\", line 1006, in _find_and_load_unlocked\r\n  File \"<frozen importlib._bootstrap>\", line 688, in _load_unlocked\r\n  File \"<frozen importlib._bootstrap_external>\", line 883, in exec_module\r\n  File \"<frozen importlib._bootstrap>\", line 241, in _call_with_frames_removed\r\n  File \"/home/mopt/belajar/pynecrud/pynecrud/pynecrud.py\", line 83, in <module>\r\n    app.add_page(index)\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/app.py\", line 274, in add_page\r\n    raise e\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/app.py\", line 265, in add_page\r\n    component = component if isinstance(component, Component) else component()\r\n  File \"/home/mopt/belajar/pynecrud/pynecrud/pynecrud.py\", line 66, in index\r\n    pc.tr(*[pc.th(column) for column in State.columns])\r\n  File \"/home/mopt/belajar/pynecrud/pynecrud/pynecrud.py\", line 66, in <listcomp>\r\n    pc.tr(*[pc.th(column) for column in State.columns])\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/components/component.py\", line 359, in create\r\n    children = [\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/components/component.py\", line 362, in <listcomp>\r\n    else Bare.create(contents=Var.create(child, is_string=True))\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/var.py\", line 102, in create\r\n    raise TypeError(\r\nTypeError: To create a Var must be Var or JSON-serializable. Got ('type_', <class 'list'>) of type <class 'tuple'>.\r\n\r\n```\r\n",
      "created_at": "2023-05-05T03:39:20Z",
      "updated_at": "2023-05-12T21:07:23Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATx7n",
      "number": 1003,
      "title": "How can I incorporate this code into Pynecone?",
      "body": "Hello\r\n\r\nIm a beginner in programming and I'm having a lot of trouble making my first Pynecone app.\r\n\r\nHow do I incorporate the following code? (it is a STT translation app). \r\n\r\nMany thanks\r\n\r\n`import speech_recognition as sr\r\nfrom googletrans import Translator\r\nimport textwrap\r\n\r\n\r\ndef get_mic_input():\r\n    recognizer = sr.Recognizer()\r\n\r\n    with sr.Microphone() as source:\r\n        #print(\"Please speak to the microphone...\")\r\n        audio = recognizer.listen(source)\r\n\r\n    try:\r\n        text = recognizer.recognize_google(audio)\r\n        #print(f\"Recognized Text: {text}\")\r\n        return text\r\n    except Exception as e:\r\n       # print(f\"Error: {e}\")\r\n        return None\r\n\r\n\r\ndef translate_text(text_to_translate, target_language=\"pt\"):\r\n    translator = Translator()\r\n    # Wrap the text to 80 characters per line\r\n    wrapped_text = textwrap.fill(text_to_translate, width=80)\r\n    translation = translator.translate(wrapped_text, dest=target_language)\r\n    return translation.text\r\n\r\n# add a separator line\r\nprint(\"-\" * 30)\r\n\r\nif __name__ == \"__main__\":\r\n    while True:\r\n        input_text = get_mic_input()\r\n\r\n        if input_text is not None:\r\n            input_text = input_text.lower()\r\n            if input_text == \"stop\" or input_text == \"exit\":\r\n                print(\"Exiting the loop...\")\r\n                break\r\n            else:\r\n                # add a separator line\r\n                print(\"-\" * 30)\r\n                translated_text = translate_text(input_text)\r\n                print(f\"PORTUGUES: {translated_text}\")\r\n                # add a separator line\r\n                print(\"-\" * 30)\r\n\r\n        #else:\r\n           #print(\"Failed to recognize the speech.\")`",
      "created_at": "2023-05-11T13:04:56Z",
      "updated_at": "2023-05-11T13:04:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Gottano",
        "avatar_url": "https://avatars.githubusercontent.com/u/69820491?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATwcv",
      "number": 981,
      "title": "Can not connect to local host",
      "body": "When I open localhost (http://localhost:3000/) I get \"connection refused\" error message.  I tried a couple of browsers and get the same error.  \r\n\r\nAny ideas?",
      "created_at": "2023-05-09T22:52:25Z",
      "updated_at": "2023-05-11T11:35:38Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AWZoI",
        "body": "Thank you for your suggestions. It turns out that one of the folders had an exclamation mark as part of its name, which threw up errors I hadn't noticed. I renamed the folder and is running fine now."
      },
      "user": {
        "login": "Gottano",
        "avatar_url": "https://avatars.githubusercontent.com/u/69820491?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASO7r",
      "number": 300,
      "title": ".",
      "body": "Hey",
      "created_at": "2023-01-21T10:03:37Z",
      "updated_at": "2023-05-10T12:42:03Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "yliasshaloudloween3",
        "avatar_url": "https://avatars.githubusercontent.com/u/121227110?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATwug",
      "number": 992,
      "title": "pc.input value type number error : TypeError: Invalid var passed for prop value, expected type <class 'str'>, got value {state.price} of type <class 'int'>.",
      "body": "i have problem how to use int in value pc.input\r\n\r\ni have error \r\n  File \"/home/mopt/belajar/pynecrud/pynecrud/pynecrud.py\", line 151, in index\r\n    pc.input(\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/components/component.py\", line 365, in create\r\n    return cls(children=children, **props)\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/components/component.py\", line 131, in __init__\r\n    raise TypeError(\r\nTypeError: Invalid var passed for prop value, expected type <class 'str'>, got value {state.price} of type <class 'int'>.\r\n\r\n\r\nmy code\r\nimport pynecone as pc\r\nfrom .mymodel.food import Foods\r\n\r\n\r\n\r\nclass State(pc.State):\r\n    name:str\r\n    price:int\r\n    stock:int\r\n    id_edit:int\r\n\r\n   \r\n    show_modal: bool = False\r\n\r\n\r\n\r\n    def open_modal(self):\r\n        self.show_modal = not (self.show_modal)\r\n\r\n    def showme(self,row):\r\n        print(\"tolol\",row)\r\n\r\n    def addnew(self):\r\n        if self.name and self.price and self.stock:\r\n            try:\r\n                with pc.session() as s:\r\n                    s.add(\r\n                        Foods(\r\n                            food_name=self.name,\r\n                            price=self.price,\r\n                            stock=self.stock\r\n                            )\r\n                        )\r\n                    s.commit()\r\n            except Exception as e:\r\n                print(e)\r\n        else:\r\n            print(\"Please fill in all fields before adding new food.\")\r\n\r\n    \r\n\r\n\r\n    @pc.var\r\n    def get_user(self)-> list[Foods]:\r\n        with pc.session() as s:\r\n            self.users = s.query(Foods).all()\r\n            return self.users\r\n\r\n    def delete_data(self,id_delete):\r\n        with pc.session() as s:\r\n            s.query(Foods).filter_by(id=id_delete).delete()\r\n            s.commit()\r\n\r\n    def edit_data(self, user):\r\n        self.show_modal = True\r\n        print(user)\r\n        print(dir(self.name))\r\n        self.name = user['food_name']\r\n        self.id_edit = user['id']\r\n        self.price = int(user['price'])\r\n        self.stock = int(user['stock'])\r\n\r\n\r\n    def save_data(self):\r\n        with pc.session() as s:\r\n            # Get the record to be edited\r\n            food = s.query(Foods).filter_by(id=self.id_edit).first()\r\n            print(food)\r\n            if food is not None:\r\n                # Update the record with the new values\r\n                food.food_name = self.name\r\n                food.price = self.price\r\n                food.stock = self.stock\r\n                s.commit()\r\n                self.show_modal = False\r\n            else:\r\n                print(f\"Food with ID {id_edit} not found.\")\r\n\r\n\r\n\r\ndef showcustomer(user:Foods):\r\n    print(user)\r\n    return pc.tr(\r\n            pc.td(user.food_name),\r\n            pc.td(user.price),\r\n            pc.td(user.stock),\r\n            pc.td(\r\n                pc.button(\"Edit\",\r\n                    on_click=lambda: State.edit_data(user),\r\n                    bg=\"red\",\r\n                    color=\"white\"\r\n                    ),\r\n                 pc.button(\"delete\",\r\n                    on_click=lambda: State.delete_data(user.id),\r\n                     bg=\"blue\",\r\n                    color=\"white\"\r\n                    ),\r\n                )   \r\n        )\r\n\r\ndef index():\r\n    return pc.vstack(\r\n        pc.heading(\"Crud Pynecone\",size=\"md\"),\r\n        pc.input(\r\n            focus_border_color=\"purple\",\r\n            placeholder=\"Food Name\",\r\n            on_change=State.set_name),\r\n\r\n        pc.input(\r\n            focus_border_color=\"purple\",\r\n            placeholder=\"Price\",\r\n            on_change=State.set_price),\r\n        pc.input(\r\n            focus_border_color=\"purple\",\r\n            placeholder=\"Stock\",\r\n            on_change=State.set_stock),\r\n\r\n\r\n        pc.button(\"addnew\",\r\n            bg=\"yellow\",color=\"black\",size=\"lg\",\r\n        on_click=State.addnew\r\n            ),\r\n\r\n        # SHOW DATA IN TABLE\r\n        pc.table_container(\r\n            pc.table(\r\n                # pc.table_caption(\"Example Table\"),\r\n                pc.thead(\r\n                      pc.tr(\r\n                                pc.th(\"Name\"),\r\n                                pc.th(\"Price\"),\r\n                                pc.th(\"Stock\"),\r\n                            )\r\n                ),\r\n                pc.tbody(pc.foreach(State.get_user,showcustomer))                \r\n            )\r\n        ),\r\n\r\n        # MODAL DIALOG EDIT\r\n        pc.modal(\r\n            pc.modal_overlay(\r\n                pc.modal_content(\r\n                    pc.modal_header(\"Edit\"),\r\n                    pc.modal_body(\r\n                        pc.vstack(\r\n                        pc.input(\r\n                            placeholder=\"foood name\",\r\n                            on_change=State.set_name,\r\n                            value=State.name\r\n                            ),\r\n                          pc.input(\r\n                            placeholder=\"Price\",\r\n                            on_change=State.set_price,\r\n                            value=State.price\r\n\r\n                            ),\r\n                            pc.input(\r\n                            placeholder=\"Stock\",\r\n                            on_change=State.set_stock,\r\n\r\n                            value=State.stock\r\n\r\n                            ),\r\n                            \r\n                            )\r\n                        ),\r\n                    pc.modal_footer(\r\n                        pc.button(\"save\",\r\n                                bg=\"blue\",\r\n                                on_click=State.save_data\r\n                                ),\r\n                        pc.button(\"close\",on_click=State.open_modal)\r\n                        )\r\n                    )\r\n                ),\r\n            is_open=State.show_modal\r\n\r\n            )\r\n        )\r\n\r\n\r\n\r\n# Add state and page to the app.\r\napp = pc.App(state=State)\r\napp.add_page(index)\r\napp.compile()\r\n",
      "created_at": "2023-05-10T07:59:26Z",
      "updated_at": "2023-05-10T07:59:26Z",
      "category": {
        "name": "News",
        "emoji": ":newspaper_roll:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATsSV",
      "number": 945,
      "title": "how to get row data when i click row .in table",
      "body": "my code \r\n```\r\nimport pynecone as pc\r\nfrom .mymodel.food import Foods\r\n\r\n\r\n\r\nclass State(pc.State):\r\n    name:str\r\n    price:int\r\n    stock:int\r\n    columns = [\"Name\", \"Age\", \"Location\"]\r\n    footer = [\"Footer 1\", \"Footer 2\", \"Footer 3\"]\r\n\r\n    data = [\r\n            [\"John\", 30, \"New York\"],\r\n            [\"Jane\", 25, \"San Francisco\"],\r\n        ]\r\n    def showme(self,row):\r\n        print(\"tolol\",row)\r\n\r\n    def addnew(self):\r\n        if self.name and self.price and self.stock:\r\n            try:\r\n                with pc.session() as s:\r\n                    s.add(\r\n                        Foods(\r\n                            food_name=self.name,\r\n                            price=self.price,\r\n                            stock=self.stock\r\n                            )\r\n                        )\r\n                    s.commit()\r\n            except Exception as e:\r\n                print(e)\r\n        else:\r\n            print(\"Please fill in all fields before adding new food.\")\r\n\r\n\r\n\r\ndef index():\r\n    return pc.vstack(\r\n        pc.heading(\"Crud Pynecone\",size=\"md\"),\r\n        pc.input(\r\n            focus_border_color=\"purple\",\r\n            placeholder=\"Food Name\",\r\n            on_change=State.set_name),\r\n\r\n        pc.input(\r\n            focus_border_color=\"purple\",\r\n            placeholder=\"Price\",\r\n            on_change=State.set_price),\r\n        pc.input(\r\n            focus_border_color=\"purple\",\r\n            placeholder=\"Stock\",\r\n            on_change=State.set_stock),\r\n\r\n\r\n        pc.button(\"addnew\",\r\n            bg=\"yellow\",color=\"black\",size=\"lg\",\r\n        on_click=State.addnew\r\n            ),\r\n\r\n        # SHOW DATA IN TABLE\r\n        pc.table_container(\r\n        pc.table(\r\n            pc.table_caption(\"Example Table\"),\r\n            pc.thead(\r\n                pc.tr(*[pc.th(column) for column in State.columns])\r\n            ),\r\n            pc.tbody(\r\n                *[\r\n                    pc.tr(*[pc.td(item) for item in State.row])\r\n                    for row in State.data\r\n                ],\r\n                on_click=State.showme()\r\n            ),\r\n            pc.tfoot(pc.tr(*[pc.th(item) for item in State.footer])),\r\n        )\r\n\r\n    )\r\n        )\r\n\r\n\r\n\r\n# Add state and page to the app.\r\napp = pc.App(state=State)\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n\r\nhow to use state column and row .  for table but I get error\r\n```\r\n\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/app.py\", line 265, in add_page\r\n    component = component if isinstance(component, Component) else component()\r\n  File \"/home/mopt/belajar/pynecrud/pynecrud/pynecrud.py\", line 67, in index\r\n    pc.tr(*[pc.th(column) for column in State.columns])\r\n  File \"/home/mopt/belajar/pynecrud/pynecrud/pynecrud.py\", line 67, in <listcomp>\r\n    pc.tr(*[pc.th(column) for column in State.columns])\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/components/component.py\", line 359, in create\r\n    children = [\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/components/component.py\", line 362, in <listcomp>\r\n    else Bare.create(contents=Var.create(child, is_string=True))\r\n  File \"/usr/local/lib/python3.10/dist-packages/pynecone/var.py\", line 102, in create\r\n    raise TypeError(\r\nTypeError: To create a Var must be Var or JSON-serializable. Got ('type_', <class 'list'>) of type <class 'tuple'>.\r\n```\r\n\r\n\r\nAnd how do i get row data .  if i click the row in that table and print to terminal\r\nexample\r\n```\r\nclass State(pc.State):\r\n    name:str\r\n    price:int\r\n    stock:int\r\n    columns = [\"Name\", \"Age\", \"Location\"]\r\n    footer = [\"Footer 1\", \"Footer 2\", \"Footer 3\"]\r\n\r\n    data = [\r\n            [\"John\", 30, \"New York\"],\r\n            [\"Jane\", 25, \"San Francisco\"],\r\n        ]\r\n    def showme(self,row):\r\n        print(\"tolol\",row)\r\n```\r\n\r\n```\r\npc.table(\r\n            pc.table_caption(\"Example Table\"),\r\n            pc.thead(\r\n                pc.tr(*[pc.th(column) for column in State.columns])\r\n            ),\r\n            pc.tbody(\r\n                *[\r\n                    pc.tr(*[pc.td(item) for item in State.row])\r\n                    for row in State.data\r\n                ],\r\n                on_click=State.showme()\r\n            ),\r\n            pc.tfoot(pc.tr(*[pc.th(item) for item in State.footer])),\r\n        )\r\n```\r\n",
      "created_at": "2023-05-05T03:18:15Z",
      "updated_at": "2023-05-05T03:18:15Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATr3G",
      "number": 940,
      "title": "is there a way to spa router in pynecone",
      "body": "Any examples of spa routing to move pages. Please provide an example ",
      "created_at": "2023-05-04T14:27:34Z",
      "updated_at": "2023-05-04T14:27:34Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATr3C",
      "number": 939,
      "title": "How to open webcam opencv in web",
      "body": "how to display the opencv webcam on the pynecone web, can you give an example ",
      "created_at": "2023-05-04T14:25:49Z",
      "updated_at": "2023-05-04T14:25:50Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATkoJ",
      "number": 869,
      "title": "What is the correct way to handle secrets?",
      "body": "Hello! First off, what a cool project! Highlight of my morning finding out about it today :) \r\n\r\nI started to dig in , and have not been able to find any documentation about the correct way to manage environment variables / secrets  for things like API keys. In the example you just use \r\n`openai.api_key = \"YOUR_API_KEY\"`\r\n\r\nI can't imagine this is the best way to do it (would expose the keys on the github repo for example) \r\nDoes Pynecone have a recommended approach? \r\n\r\n",
      "created_at": "2023-04-25T18:56:31Z",
      "updated_at": "2023-05-03T03:35:53Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "zmrubin",
        "avatar_url": "https://avatars.githubusercontent.com/u/1003442?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATUI3",
      "number": 795,
      "title": "Trigger a download process",
      "body": "I want to start a download process when the user clicks on the download button, but i don't know if using ```pc.link()``` and providing the direct download url into it as ```href``` will be a good idea, is there anything else i can do to accomplish this",
      "created_at": "2023-04-09T23:39:16Z",
      "updated_at": "2024-07-14T07:12:55Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AV-9e",
        "body": "I submitted an issue for this #909 The only ways I've seen to create a download link in pynecone are not very clean. Hopefully we'll have something like pc.download_files() or something in the future. I found a post on the pynecone discord server where someone was able to create download links like this:\r\n```\r\n@app.api.get(\"/download\")\r\nasync def download_unmodified_video():\r\n    # Find latest downloaded file\r\n    file_path = max(glob.glob(f\"{os.getcwd()}/downloads/**/*\"))\r\n    file_name = \"unmodified_video.mp4\"\r\n    return FileResponse(path=file_path, media_type='video/mp4', filename=file_name)\r\n.\r\n.\r\n.\r\n\r\npc.link(\"Download Me\", href=\"http://localhost:8000/downloads\")\r\n```\r\nI think there should be a better way."
      },
      "user": {
        "login": "ramsy0dev",
        "avatar_url": "https://avatars.githubusercontent.com/u/86024158?u=714763cc34cd04ae84c40f30ec8646a73fe47f44&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATnlS",
      "number": 906,
      "title": "Event Chains: the output won't render if one event takes a lot of time",
      "body": "I tried to modify the Event Chain example provided by Pynecone website to my use case. The spinner kept spinning even though I had finished all computations. If I kept only one computation `out = self. _compute_engine_1.calculate()`, the count will be rendered, and the spinner will stop as expected. Does anyone knows the reason?\r\n\r\n```\r\nimport asyncio\r\n\r\nclass ChainExampleState(pc.State):\r\n    count = 0\r\n    show_progress = False\r\n    _compute_engine_1 = ComputeEngine() # some expensive computation engine\r\n    _compute_engine_2 = ComputeEngine() # some expensive computation engine\r\n    _compute_engine_3 = ComputeEngine() # some expensive computation engine\r\n\r\n    def toggle_progress(self):\r\n        self.show_progress = not self.show_progress\r\n\r\n    async def increment(self):\r\n        out = self. _compute_engine_1.calculate()\r\n        for I in range(6):\r\n            out+=self. _compute_engine_2.calculate()\r\n        out+=self._compute_engine_3.calculate()\r\n        self.count = out\r\n\r\ndef index():\r\n    return pc.cond(\r\n        ChainExampleState.show_progress,\r\n        pc.circular_progress(is_indeterminate=True),\r\n        pc.heading(\r\n            ChainExampleState.count,\r\n            on_click=[\r\n                ChainExampleState.toggle_progress,\r\n                ChainExampleState.increment,\r\n                ChainExampleState.toggle_progress,\r\n            ],\r\n            _hover={\"cursor\": \"pointer\"},\r\n        ),\r\n    )\r\n```",
      "created_at": "2023-04-29T07:43:48Z",
      "updated_at": "2023-04-29T07:43:49Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "timho102003",
        "avatar_url": "https://avatars.githubusercontent.com/u/13211302?u=ea603929c75f3a82080f670a6b8559a71630b5b8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASPl6",
      "number": 314,
      "title": "Async support",
      "body": "How feasible would it be to make pynecone work with async functions? Is this planned for a future release (doesn't have to be v1)?",
      "created_at": "2023-01-22T18:34:13Z",
      "updated_at": "2023-04-25T07:12:08Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "julien777z",
        "avatar_url": "https://avatars.githubusercontent.com/u/22227890?u=e43f040fc109638031748773eb2f3ad6ce89705e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATjvt",
      "number": 863,
      "title": "pc.cond works only in localhost...",
      "body": "I have made a test page with pc.cond() and tested in my pc. There are no problems running in my pc with 'localhost:3000'. But If I move my sources to the ubuntu server(I access it with public IP), pc.cond() doesn't work. Ubuntu server shows static pages well. But when I click a button which trigger pc.cond(), nothing happen. \r\n\r\nDo you have any experience like this?",
      "created_at": "2023-04-25T01:08:05Z",
      "updated_at": "2023-04-25T01:46:36Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AVzEZ",
        "body": "I found the reason of this problem. \r\n\r\nmy pcconfig.py file was wrong. \r\n\r\n```\r\nimport pynecone as pc\r\n\r\nconfig = pc.Config(\r\n    app_name=\"pyne\",\r\n    api_url = 'http://<my ubuntu>:3000',\r\n    bun_path=\"$HOME/.bun/bin/bun\",\r\n    db_url=\"sqlite:///pynecone.db\",\r\n    env=pc.Env.DEV,\r\n)\r\n```\r\nI have changed `api_url` port num to 8000 and pc.cond() starts work. \r\n\r\nDo you have any idea what relationship between pc.cond() and port 8000? \r\n"
      },
      "user": {
        "login": "cheuora",
        "avatar_url": "https://avatars.githubusercontent.com/u/9875591?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATiGR",
      "number": 858,
      "title": "toggle_color_mode",
      "body": "How does the pc.toggle_color_mode method work? I built a basic website with a navbar (using the navbar recipe from the docs). It all works pretty well and this  built in function to toggle dark mode also works very well, but only until i define the color of a component myself as e.g. \"white\". Then this component stays white forever. \nIs it possible to define color pairs myself that replace each other when toggling the color mode?",
      "created_at": "2023-04-23T13:51:03Z",
      "updated_at": "2023-04-23T13:51:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jakobschlosser97",
        "avatar_url": "https://avatars.githubusercontent.com/u/60795120?u=18f8cae868b86a28ab9cf971bd92a642c4fc0ad6&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATeSv",
      "number": 844,
      "title": "Error When Running project pc run in Windows",
      "body": "error when create project and runnnig project in my os is windows os\r\n\r\n```\r\n{\r\n  page: '/'\r\n}\r\nError: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\r\n1. You might have mismatching versions of React and the renderer (such as React DOM)\r\n2. You might be breaking the Rules of Hooks\r\n3. You might have more than one copy of React in the same app\r\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\r\n    at resolveDispatcher (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1476:13)\r\n    at Object.useContext (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1484:20)\r\n    at Html (webpack-internal:///./node_modules/next/dist/pages/_document.js:645:106)\r\n    at processChild (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3353:14)\r\n    at resolve (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3270:5)\r\n    at ReactDOMServerRenderer.render (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3753:22)\r\n    at ReactDOMServerRenderer.read (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3690:29)\r\n    at Object.renderToStaticMarkup (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:4314:27)\r\n    at Object.renderToHTML (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:894:41)\r\n    at async doRender (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\base-server.js:687:38)\r\nError: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\r\n1. You might have mismatching versions of React and the renderer (such as React DOM)\r\n2. You might be breaking the Rules of Hooks\r\n3. You might have more than one copy of React in the same app\r\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\r\n    at resolveDispatcher (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1476:13)\r\n    at Object.useMemo (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1531:20)\r\n    at ThemeProvider (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\@chakra-ui\\system\\dist\\chakra-ui-system.cjs.dev.js:60:40)\r\n    at processChild (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3353:14)\r\n    at resolve (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3270:5)\r\n    at ReactDOMServerRenderer.render (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3753:22)\r\n    at ReactDOMServerRenderer.read (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3690:29)\r\n    at Object.renderToString (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:4298:27)\r\n    at renderDocument (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:736:47)\r\n    at Object.renderToHTML (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:819:34)\r\nwarn  - Fast Refresh had to perform a full reload. Read more: https://nextjs.org/docs/basic-features/fast-refresh#how-it-works\r\nError: Failed to fetch update manifest Internal Server Error\r\n    at http://localhost:3000/_next/static/chunks/fallback/webpack.js?ts=1681892507520:1164:37\r\nerror - Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\r\n1. You might have mismatching versions of React and the renderer (such as React DOM)\r\n2. You might be breaking the Rules of Hooks\r\n3. You might have more than one copy of React in the same app\r\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\r\n    at resolveDispatcher (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1476:13)\r\n    at Object.useMemo (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1531:20)\r\n    at ThemeProvider (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\@chakra-ui\\system\\dist\\chakra-ui-system.cjs.dev.js:60:40)\r\n    at processChild (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3353:14)\r\n    at resolve (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3270:5)\r\n    at ReactDOMServerRenderer.render (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3753:22)\r\n    at ReactDOMServerRenderer.read (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3690:29)\r\n    at Object.renderToString (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:4298:27)\r\n    at renderDocument (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:736:47)\r\n    at Object.renderToHTML (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:819:34) {\r\n  page: '/'\r\n}\r\nError: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\r\n1. You might have mismatching versions of React and the renderer (such as React DOM)\r\n2. You might be breaking the Rules of Hooks\r\n3. You might have more than one copy of React in the same app\r\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\r\n    at resolveDispatcher (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1476:13)\r\n    at Object.useContext (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1484:20)\r\n    at Html (webpack-internal:///./node_modules/next/dist/pages/_document.js:645:106)\r\n    at processChild (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3353:14)\r\n    at resolve (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3270:5)\r\n    at ReactDOMServerRenderer.render (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3753:22)\r\n    at ReactDOMServerRenderer.read (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3690:29)\r\n    at Object.renderToStaticMarkup (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:4314:27)\r\n    at Object.renderToHTML (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:894:41)\r\n    at async doRender (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\base-server.js:687:38)\r\nError: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\r\n1. You might have mismatching versions of React and the renderer (such as React DOM)\r\n2. You might be breaking the Rules of Hooks\r\n3. You might have more than one copy of React in the same app\r\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\r\n    at resolveDispatcher (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1476:13)\r\n    at Object.useMemo (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1531:20)\r\n    at ThemeProvider (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\@chakra-ui\\system\\dist\\chakra-ui-system.cjs.dev.js:60:40)\r\n    at processChild (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3353:14)\r\n    at resolve (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3270:5)\r\n    at ReactDOMServerRenderer.render (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3753:22)\r\n    at ReactDOMServerRenderer.read (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3690:29)\r\n    at Object.renderToString (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:4298:27)\r\n    at renderDocument (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:736:47)\r\n    at Object.renderToHTML (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:819:34)\r\nwarn  - Fast Refresh had to perform a full reload. Read more: https://nextjs.org/docs/basic-features/fast-refresh#how-it-works\r\nError: Failed to fetch update manifest Internal Server Error\r\n    at http://localhost:3000/_next/static/chunks/fallback/webpack.js?ts=1681892520094:1164:37\r\nerror - Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\r\n1. You might have mismatching versions of React and the renderer (such as React DOM)\r\n2. You might be breaking the Rules of Hooks\r\n3. You might have more than one copy of React in the same app\r\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\r\n    at resolveDispatcher (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1476:13)\r\n    at Object.useMemo (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1531:20)\r\n    at ThemeProvider (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\@chakra-ui\\system\\dist\\chakra-ui-system.cjs.dev.js:60:40)\r\n    at processChild (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3353:14)\r\n    at resolve (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3270:5)\r\n    at ReactDOMServerRenderer.render (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3753:22)\r\n    at ReactDOMServerRenderer.read (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3690:29)\r\n    at Object.renderToString (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:4298:27)\r\n    at renderDocument (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:736:47)\r\n    at Object.renderToHTML (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:819:34) {\r\n  page: '/'\r\n}\r\nError: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\r\n1. You might have mismatching versions of React and the renderer (such as React DOM)\r\n2. You might be breaking the Rules of Hooks\r\n3. You might have more than one copy of React in the same app\r\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\r\n    at resolveDispatcher (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1476:13)\r\n    at Object.useContext (D:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react\\cjs\\react.development.js:1484:20)\r\n    at Html (webpack-internal:///./node_modules/next/dist/pages/_document.js:645:106)\r\n    at processChild (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3353:14)\r\n    at resolve (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3270:5)\r\n    at ReactDOMServerRenderer.render (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3753:22)\r\n    at ReactDOMServerRenderer.read (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3690:29)\r\n    at Object.renderToStaticMarkup (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:4314:27)\r\n    at Object.renderToHTML (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\render.js:894:41)\r\n    at async doRender (d:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud\\.web\\node_modules\\next\\dist\\server\\base-server.js:687:38)\r\n^C^CTerminate batch job (Y/N)?\r\n^C^C\r\nd:\\EBOOK\\Video Tutorial\\CASE\\pyne2crud>\r\n```",
      "created_at": "2023-04-19T08:24:17Z",
      "updated_at": "2023-04-19T08:24:18Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATMg9",
      "number": 756,
      "title": "How to create multiple column layout",
      "body": "Hi,\r\n\r\nInitially, I'd like to create 2 columns, left column the links, right column result of the link.\r\n\r\nI'd like it resizable or collapsible too.\r\n\r\nHow to do? \r\n\r\nTIA!",
      "created_at": "2023-03-31T19:03:54Z",
      "updated_at": "2023-04-19T08:04:49Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "joeyseisma",
        "avatar_url": "https://avatars.githubusercontent.com/u/60824527?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATdiV",
      "number": 837,
      "title": "How to use property of a based var on State",
      "body": "``Hello everyone !\r\nI'm trying to make a dashboard with pynecone. This dashboard will have two parts : \r\n- A part header with some filter than the user can select\r\n- A part with the project he has, every project is in an accordion and some plotly graph will be show to have a global vue on this project.\r\nI actually have two big problems than i can not resolve by my self : \r\n1. I can't create a plotly graph by a state function with the dictionary stored in my Custom Var.\r\nI have have an error : `AttributeError: 'dict' object has no attribute 'datas'` but this dict is actually a custom var that has a property datas.\r\n2. The layout of the fig is not take by pynecone or it could be interesting for me to had some filters on the top of my page witch could change the layout of the graph.\r\n\r\n\r\nIf someone has an answer or some advice to help me with my problems, It could be very nice !\r\nThank you\r\n```\r\n\"\"\"Welcome to Pynecone! This file outlines the steps to create a basic app.\"\"\"\r\nimport plotly.graph_objects as go\r\nimport pynecone as pc\r\n\r\nfrom pcconfig import config\r\n\r\n\r\nclass Data(pc.Base):\r\n    name : str\r\n    value : list[int]\r\n\r\nDATA1 ={\r\n        \"Revenue Service\": [0,100],\r\n        \"Revenue License\": [100,120],\r\n        \"Costs Azure\": [70, 120],\r\n        \"Costs human\": [30, 70],\r\n        \"Current Margin\": [0, 30],\r\n    }\r\n\r\nDATA2 ={\r\n        \"Revenue Service\": [0,100],\r\n        \"Revenue License\": [100,120],\r\n    }\r\nDATA_CORR = {\r\n    \"Solution definition\": [0, 3],\r\n    \"Market maturity\": [2, 3],\r\n    \"Outside in view\": [1, 3],\r\n}\r\n\r\n_ACCORDION_PARAMS_ORIGIN = [\r\n    {\"title\": \"Project 1\", \"step\": \"1\", \"country\": \"Belgium\", \"owner\": \"John Doe\", \"created\": \"2021-01-01\", \"datas\": DATA1},\r\n    {\"title\": \"Project 2\", \"step\": \"3\", \"country\": \"France\", \"owner\": \"Delaware\", \"created\": \"2022-01-01\", \"datas\": DATA2},\r\n    {\"title\": \"Project 3\", \"step\": \"2\", \"country\": \"Germany\", \"owner\": \"BNP\", \"created\": \"2023-01-01\", \"datas\": DATA1},\r\n    {\"title\": \"Project 4\", \"step\": \"2\", \"country\": \"Belgium\", \"owner\": \"John Doe\", \"created\": \"2021-01-01\", \"datas\": DATA2},\r\n    {\"title\": \"Project 5\", \"step\": \"1\", \"country\": \"France\", \"owner\": \"Delaware\", \"created\": \"2022-01-01\", \"datas\": DATA1},\r\n    {\"title\": \"Project 6\", \"step\": \"3\", \"country\": \"Germany\", \"owner\": \"BNP\", \"created\": \"2023-01-01\", \"datas\": DATA2},\r\n]\r\n\r\n\r\nOPTIONS_PHASES = list(set([\"Phase \"+invest[\"step\"] for invest in _ACCORDION_PARAMS_ORIGIN]))\r\nOPTIONS_PHASES.sort()\r\nOPTIONS_COUNTRIES = list(set([invest[\"country\"] for invest in _ACCORDION_PARAMS_ORIGIN]))\r\nOPTIONS_COUNTRIES.sort()\r\n\r\n\r\nclass Item(pc.Base):\r\n    title : str\r\n    step : str\r\n    country : str\r\n    owner : str\r\n    created : str\r\n    datas : dict[str, list[int]]\r\n\r\n\r\n\r\nclass State(pc.State):\r\n    \"\"\"The app state.\"\"\"\r\n    pass\r\n\r\nclass FilterState(State):\r\n    option_phase : str = \"all\"\r\n    option_country : str = \"all\"\r\n    value_mrl : list = [0, 5]\r\n    value_trl : list = [0, 5]\r\n    item : Item = Item(**_ACCORDION_PARAMS_ORIGIN[0])\r\n    @pc.var\r\n    def get_items(self) -> list[Item]:\r\n        if self.option_phase in OPTIONS_PHASES:\r\n            items = [Item(**invest) for invest in _ACCORDION_PARAMS_ORIGIN if invest[\"step\"] == self.option_phase.split(\" \")[-1]]\r\n        else:\r\n            items = [Item(**invest) for invest in _ACCORDION_PARAMS_ORIGIN]\r\n        \r\n        if self.option_country in OPTIONS_COUNTRIES:\r\n            items = [item for item in items if item.country == self.option_country]\r\n        \r\n        return items\r\n    \r\n    @pc.var\r\n    def get_bar_fig(self)-> go.Figure:\r\n        fig = go.Figure()\r\n        if self.item :\r\n            datas = self.item.datas\r\n            for key in datas:\r\n                    fig.add_trace(go.Bar(x=[key], y=[datas[key][1]-datas[key][0]],base=datas[key][0]))\r\n        return fig\r\n    \r\n    def setter_item(self, item : Item): \r\n        self.item = item\r\n        \r\n\r\n\r\n\r\n        \r\n    \r\ndef header() -> pc.Component:\r\n    return pc.box(\r\n        pc.hstack(\r\n            pc.hstack(\r\n                pc.image(src=\"/bulb.png\", height=\"50px\"),\r\n                pc.flex(\r\n                    pc.heading(\"ip hub\", size=\"md\"),\r\n                    pc.heading(\"By Delaware\", size=\"sm\"),\r\n                    direction=\"column\"\r\n                ),\r\n                align_items=\"center\",\r\n            ),\r\n            pc.heading(\"ip investment dashboard\", size=\"lg\"),\r\n            pc.heading(\"\"),\r\n            justify=\"space-between\",\r\n            padding = \"10px\",\r\n        ),\r\n        pc.hstack(\r\n            pc.hstack(\r\n                pc.image(src=\"/filter.png\", width=\"auto\", height=\"30px\"),\r\n                pc.select(OPTIONS_PHASES, placeholder=\"Phases (all)\", on_change= FilterState.set_option_phase),\r\n            ),\r\n            pc.hstack(\r\n                pc.text(\"MRL\"),\r\n                pc.vstack(\r\n                    pc.text(FilterState.value_mrl[0] + \" - \" + FilterState.value_mrl[1]),\r\n                    pc.range_slider(on_change=FilterState.set_value_mrl, width=\"500px\", min_=0, max_=5, step=1, value=FilterState.value_mrl),\r\n                ), \r\n            ),\r\n            pc.hstack(\r\n                pc.text(\"TRL\"),\r\n                pc.vstack(\r\n                    pc.text(FilterState.value_trl[0] + \" - \" + FilterState.value_trl[1]),\r\n                    pc.range_slider(on_change=FilterState.set_value_trl, width=\"500px\", min_=0, max_=5, step=1, value=FilterState.value_trl),\r\n                ),\r\n            ),\r\n            pc.hstack(\r\n                pc.select(OPTIONS_COUNTRIES, placeholder=\"Countries (all)\", on_change= FilterState.set_option_country),\r\n            ),\r\n            justify=\"space-between\",\r\n            padding = \"10px\",\r\n        ),\r\n        width=\"100%\",\r\n        bg = \"WhiteSmoke\"\r\n    )\r\n    \r\n\r\ndef accordion_item(item : Item) -> pc.Component:\r\n    return pc.accordion_item(\r\n        pc.accordion_button(\r\n            pc.center(\r\n                pc.image(src=\"/icon_box.png\", width=\"auto\", height=\"40px\"), \r\n                pc.heading(item.title, padding=\"0 0 0 20px\"),\r\n            ),\r\n            pc.spacer(),\r\n            pc.image(src='/steps/step_' + item.step + '.png', width=\"auto\", height=\"40px\", padding_right=\"20px\"),\r\n            pc.image(src = \"countries/\"+item.country+\".svg\", height=\"40px\"),\r\n            pc.accordion_icon(),\r\n        ),\r\n        pc.accordion_panel(\r\n            pc.flex(\r\n                pc.center(pc.text(\"Owner: \", as_=\"strong\"), pc.text(item.owner, padding=\"0 10px 0 10px\"), pc.icon(tag=\"email\")),\r\n                pc.spacer(),\r\n                pc.center(pc.text(\"Created: \" + item.created)),\r\n            ),\r\n            pc.vstack(\r\n                pc.plotly(data = FilterState.get_bar_fig),\r\n            ),\r\n        ),\r\n        on_focus = FilterState.setter_item(item),\r\n    )\r\n\r\ndef accordion() -> pc.Component:\r\n    return pc.accordion(\r\n        pc.foreach(FilterState.get_items, accordion_item),\r\n        width=\"100%\",\r\n    )\r\n\r\ndef index() -> pc.Component:\r\n    return pc.vstack(\r\n        header(),\r\n        accordion(),\r\n        pc.text(FilterState.item.title),\r\n    )\r\n\r\n\r\n# Add state and page to the app.\r\napp = pc.App(state = State)\r\napp.add_page(index)\r\napp.compile()\r\n\r\n```",
      "created_at": "2023-04-18T13:19:52Z",
      "updated_at": "2023-04-19T06:33:07Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "ArnauldFilee",
        "avatar_url": "https://avatars.githubusercontent.com/u/100143215?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATcIf",
      "number": 831,
      "title": "Can add a video player component",
      "body": "For a person who only knows python, using pynecone to build a website, it seems that there is only one video component left. Will the creators support the video component",
      "created_at": "2023-04-17T12:40:10Z",
      "updated_at": "2023-04-17T12:40:11Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Yangget",
        "avatar_url": "https://avatars.githubusercontent.com/u/46257176?u=1e7e72089f9308f35df1d4e990084e1849bb2762&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATZjQ",
      "number": 818,
      "title": "is there any documentation for animation",
      "body": "is there any animation documentation on pynecone . If so, can you provide the web link ",
      "created_at": "2023-04-14T04:31:41Z",
      "updated_at": "2023-04-14T04:31:41Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASrv0",
      "number": 604,
      "title": "File Uploads: Which syntax do you prefer?",
      "body": "The state code (common for all examples)\r\n\r\n```python\r\nimport pynecone as pc\r\n\r\nclass State(pc.State):\r\n    \"\"\"The app state.\"\"\"\r\n\r\n    # The image to show.\r\n    img: str\r\n\r\n    async def handle_upload(self, files: list[pc.UploadFile]):\r\n        \"\"\"Handle the upload of a file.\r\n        \r\n        Args:\r\n            file: The uploaded file - https://fastapi.tiangolo.com/tutorial/request-files/\r\n        \"\"\"\r\n        # Just use the first file.\r\n        file = files[0]\r\n        upload_data = await file.read()\r\n        outfile = f\".web/public/{file.filename}\"\r\n\r\n        # Save the file.\r\n        with open(outfile, \"wb\") as file_object:\r\n            file_object.write(upload_data)\r\n\r\n        # Update the img var.\r\n        self.img = file.filename\r\n```\r\n\r\nThe render code - options ranked in order of increasing magic, decreasing explicitness.\r\n\r\nHere we have the `multiple=True` prop, which allows multiple file uploads. Then the `handle_upload` event handler will receive a `list[pc.UploadFile]`. If the prop is set to false, the argument will just be a single `pc.UploadFile`. (We can also make this always be a list if people prefer).\r\n\r\nOption 1:\r\n\r\nSpecify a function `pc.upload_files` that takes in as arguments\r\n* the event handler that handles the upload\r\n* the name of the upload component to use\r\n\r\n```python\r\ndef index():\r\n    \"\"\"The main view.\"\"\"\r\n    return pc.vstack(\r\n        # The component to select files to upload.\r\n        pc.upload(name=\"upload1\", multiple=True),\r\n        # The button to upload the file to the server.\r\n        pc.button(\r\n            \"Upload\", \r\n            on_click=lambda: pc.upload_files(State.handle_upload, \"upload1\")\r\n        ),\r\n        pc.image(src=State.img),\r\n    )\r\n```\r\n\r\nWe can also directly upload the file without a button (this applies for all the options):\r\n\r\n```python\r\ndef index():\r\n    \"\"\"The main view.\"\"\"\r\n    return pc.vstack(\r\n        # The component to select files to upload.\r\n        pc.upload(\r\n            name=\"upload1\",\r\n            multiple=True\r\n            on_change=lambda: pc.upload_files(State.handle_upload, \"upload1\")\r\n        ),\r\n        pc.image(src=State.img),\r\n    )\r\n```\r\n\r\nOption 2:\r\n\r\nCall the event handler directly in the lambda, and pass in an argument.\r\n\r\n```python\r\ndef index():\r\n    \"\"\"The main view.\"\"\"\r\n    return pc.vstack(\r\n        # Specify an upload name.\r\n        pc.upload(name=\"upload1\", multiple=True),\r\n        # The button to upload the file to the server.\r\n        pc.button(\r\n            \"Upload\", \r\n            # Specify which files to upload.\r\n            on_click=lambda: State.handle_upload(pc.upload_files(\"upload1\"))\r\n        ),\r\n        pc.image(src=State.img),\r\n    )\r\n```\r\n\r\nOption 3:\r\n\r\nThe same as Option 2, but we magically convert the string `\"upload1\"` into a `pc.UploadFile` object. This is shorter, but can be potentially confusing.\r\n\r\n```python\r\ndef index():\r\n    \"\"\"The main view.\"\"\"\r\n    return pc.vstack(\r\n        # Specify an upload name.\r\n        pc.upload(name=\"upload1\"),\r\n        # The button to upload the file to the server.\r\n        pc.button(\"Upload\", on_click=lambda: State.handle_upload(\"upload1\")),\r\n        pc.image(src=State.img),\r\n    )\r\n```\r\n\r\nOption 4:\r\n\r\nIn this option, we don't specify a name when uploading - `pc.upload_files()` function will upload all the files as a dict.\r\n\r\n```python\r\nclass State(pc.State):\r\n    \"\"\"The app state.\"\"\"\r\n\r\n    # The image to show.\r\n    img: str\r\n\r\n    async def handle_upload(self, files: dict[str, list[pc.UploadFile]]):\r\n        \"\"\"Handle the upload of a file.\r\n        \r\n        Args:\r\n            files: The dict of uploaded files\r\n        \"\"\"\r\n        upload1_files = files[\"upload1\"]\r\n        ...\r\n\r\ndef index():\r\n    \"\"\"The main view.\"\"\"\r\n    return pc.vstack(\r\n        # Don't specify a file name.\r\n        pc.upload(name=\"upload1\"),\r\n        # The button to upload the file to the server.\r\n        pc.button(\r\n            \"Upload\", \r\n            # Uploads all files to the event handler as a dict from the upload name to the list of uploaded files.\r\n            on_click=lambda: State.handle_upload(pc.upload_files())\r\n        ),\r\n        pc.image(src=State.img),\r\n    )\r\n```\r\n\r\n",
      "created_at": "2023-02-25T23:18:42Z",
      "updated_at": "2023-04-09T04:25:59Z",
      "category": {
        "name": "Polls",
        "emoji": ":ballot_box:"
      },
      "answer": null,
      "user": {
        "login": "picklelo",
        "avatar_url": "https://avatars.githubusercontent.com/u/6270214?u=d4f6ecc83a3a136ecde2033f902ad243ee76f853&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASZwE",
      "number": 445,
      "title": "Any updates on pc deploy?",
      "body": "Now that I've been playing with Pynecone, I have lots of ideas for things I'd love to implement. \n\nUnfortunately, in my experience, deploying Flask-based apps with SQL databases (e.g. Google Cloud Run with Cloud SQL) is relatively too painful to allow for a lot of creative experimentation.\n\nSo I was wondering if there were any updates on pc deploy and any information on what hosting might entail.\n\nPS: Congrats on YC backing!",
      "created_at": "2023-02-05T00:31:22Z",
      "updated_at": "2023-04-07T02:53:31Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "simonmesmith",
        "avatar_url": "https://avatars.githubusercontent.com/u/5099521?u=7025ef7881332e5d9421cbc9586aad882bede515&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATJ5i",
      "number": 748,
      "title": "How to feed var to pc.html",
      "body": "I'm working on my audio-streaming web project, with pynecone. My use case is upload .wav file to server and stream it when I click play button.\r\nMy approach is feed state variable(uploaded audio file path) to audio html tag, to create play button. But pc.html cannot handle string variable from state, with errors at ```pc.html(RootState.audio_html)``` : ```expected type pynecone.var.Var[typing.Dict], got value {'__html': BaseVar(name='audio_html', type_=<class 'str'>, state='root_state', is_local=False, is_string=False)} of type <class 'dict'>.```\r\nRefer to State code below.\r\n```\r\nClass State(pc.State):\r\n    audio_html:str\r\n    async def handle_upload(self, file: pc.UploadFile):\r\n        \"\"\"Handle the upload of a file.\r\n        Args:\r\n            file: The uploaded file.\r\n        \"\"\"\r\n        upload_data = await file.read()\r\n        outfile = f\"/app/assets/{file.filename}\"\r\n   \r\n        # Save the file.\r\n        with open(outfile, \"wb\") as f:\r\n            f.write(upload_data)\r\n        # Update the audio file path\r\n        \r\n        self.audio_html = \"\"\"\r\n        <audio controls>\r\n            <source src=\"{path}\" type=\"audio/wav\">\r\n            Your browser does not support the audio element.\r\n        </audio>\r\n        \"\"\".format(path=f\"/{file.filename}\")\r\n```",
      "created_at": "2023-03-30T06:43:34Z",
      "updated_at": "2023-03-30T06:52:11Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "lionsheep0724",
        "avatar_url": "https://avatars.githubusercontent.com/u/79906095?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AS_R1",
      "number": 705,
      "title": "how it works ?",
      "body": "how it exactly works ?\r\nhow it translates both python codes and c extentions to js ?",
      "created_at": "2023-03-18T21:41:46Z",
      "updated_at": "2023-03-26T12:08:49Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "rraammiinn",
        "avatar_url": "https://avatars.githubusercontent.com/u/67558318?u=05ff9d0bc69be3722d90b6ae877a166e037436c2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATF38",
      "number": 730,
      "title": "How to view changes made to pcweb repo?👀",
      "body": "I am planning to make a **PR** in the [pcweb repo](https://github.com/pynecone-io/pcweb) but before that, I want to review the changes made to Pynecone's website. Please let me how I can do this. 😅\r\n\r\nThanks for creating such an amazing framework! 🤩",
      "created_at": "2023-03-26T12:04:16Z",
      "updated_at": "2023-03-26T12:04:17Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "ShruAgarwal",
        "avatar_url": "https://avatars.githubusercontent.com/u/82811717?u=f4c00556a611a7362f0e85e51beeedbb05848656&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATFSZ",
      "number": 725,
      "title": "ChatGPT Retrieval Plugin for Docs",
      "body": "OpenAI just released a tool for ChatGPT that helps it retrieve current information. It would be nice if someone made a plugin for the pynecone docs so building flet applications will be faster using this AI tool.\r\n\r\nThis YouTube video demonstrates how something like this could be implemented\r\nhttps://youtu.be/hpePPqKxNq8\r\n\r\nI'd do it myself but I don't have access to chatgpt plus",
      "created_at": "2023-03-25T08:26:42Z",
      "updated_at": "2023-03-25T08:26:43Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "Nneji123",
        "avatar_url": "https://avatars.githubusercontent.com/u/101701760?u=0520282d8735e9c6684a4ea5418fc96b2b0830b4&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATFRB",
      "number": 724,
      "title": "chatbot implementation",
      "body": "Compared with chatgpt, how to use pynecone to realize chatbot ?",
      "created_at": "2023-03-25T07:24:31Z",
      "updated_at": "2023-03-25T07:24:32Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "qqkkwan",
        "avatar_url": "https://avatars.githubusercontent.com/u/82800669?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATEz5",
      "number": 722,
      "title": "Audio streaming?",
      "body": "Does pynecone supports audio streaming? I don't find any use cases for audio stream. But I wonder [this page\r\n](https://hackernoon.com/how-to-build-web-apps-in-pure-python) is built by pure pynecone.\r\n",
      "created_at": "2023-03-24T15:29:33Z",
      "updated_at": "2023-03-24T15:32:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "lionsheep0724",
        "avatar_url": "https://avatars.githubusercontent.com/u/79906095?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ATEY3",
      "number": 720,
      "title": "Release plan",
      "body": "Hello developers are there any plan of the releases?",
      "created_at": "2023-03-24T07:15:51Z",
      "updated_at": "2023-03-24T07:15:52Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "DanielFrantes",
        "avatar_url": "https://avatars.githubusercontent.com/u/116908854?u=1676a0ee03c4edc42eb0d409f8944e73bf896bbc&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AS8af",
      "number": 686,
      "title": "utils.is_dataframe() implementation",
      "body": "Is there any reason why pynecone checks a type by it's name?\r\n```python\r\n# utils.py\r\ndef is_dataframe(value: Type) -> bool:\r\n    return value.__name__ == \"DataFrame\"\r\n```\r\n\r\nShouldn't it be like this?\r\n```python\r\ndef is_dataframe(value: Type) -> bool:\r\n    return isinstance(value, pd.DataFrame)\r\n```",
      "created_at": "2023-03-15T10:08:00Z",
      "updated_at": "2023-03-18T22:44:56Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "qu3vipon",
        "avatar_url": "https://avatars.githubusercontent.com/u/52447545?u=671ed9cd128ad100a4808da5ca4c5d10a79162d7&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AS7_j",
      "number": 681,
      "title": "How to wrap complex react libs?",
      "body": "Hi there, I absolutely love this framework but I'm extremely new to pynecone and literally have no knowledge on React or JS to be able to answer this question. I am trying to use the reactflow lib to create node like objects and I don’t know how to wrap the lib and use the methods as I am still struggling to understand the methods in the react lib.\r\n\r\nAll I want to so is be able to create and connect the nodes using pynecone. Any help would be great. \r\n\r\nLink to the React lib for reference: https://www.npmjs.com/package/reactflow\r\n\r\nAny help would be great! ",
      "created_at": "2023-03-14T21:51:34Z",
      "updated_at": "2023-03-14T22:13:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "lolitsicy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17074936?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASMAi",
      "number": 280,
      "title": "Handling session and authentication",
      "body": "Hey all,\r\n\r\nThis project looks super dope! I know it's still early days and that auth-related components are on their way, but just to understand the architecture a bit more - how would one go about creating one herself/himself? Also, how do we handle user sessions?\r\n\r\nThanks!",
      "created_at": "2023-01-18T09:41:59Z",
      "updated_at": "2023-03-14T16:43:51Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "kamilc",
        "avatar_url": "https://avatars.githubusercontent.com/u/242413?u=1fcc5efec84013b6e60eb6e6506529009613da4e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AS5Ze",
      "number": 665,
      "title": "Video support?",
      "body": "Hello there,\n\nI am building an app using pynecone. I want to show a video demo of how the app works on the front page, but i cannot seem to find any components for showing videos. Is this not possible at the moment? If not, is there a way to work around it? And will it be possible at some point?\n\nKind regards\nZan",
      "created_at": "2023-03-12T11:43:11Z",
      "updated_at": "2023-03-12T12:47:09Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AS5Pd",
      "number": 663,
      "title": "how to retrieve selected data in datatable",
      "body": "is there a way  when I select the data in the datatable.  and print the data I selected\r\ncode\r\n\r\n```\r\n pc.data_table(\r\n            data=MyState.result_data,\r\n            pagination=True,\r\n            search=True,\r\n            sort=True,\r\n            on_click=MyState.jalankan\r\n        )\r\n```\r\n```\r\nclass MyState(pc.State):\r\n    num: int =  1\r\n    name:str\r\n    age:int\r\n    show_dialog:bool = False\r\n    list_user = [\r\n           {\"name\":\"boy\",\"age\":12},\r\n           {\"name\":\"boy\",\"age\":12},\r\n           {\"name\":\"boy\",\"age\":12},\r\n           {\"name\":\"boy\",\"age\":12},\r\n           {\"name\":\"boy\",\"age\":12},\r\n           {\"name\":\"TOLOL\",\"age\":12},\r\n           {\"name\":\"guy\",\"age\":12},\r\n           {\"name\":\"sigar\",\"age\":12},\r\n        ]\r\n\r\n    index = list(string.ascii_lowercase[:len(list_user)])\r\n\r\n    def jalankan(self):\r\n        print(\"Dqdwq\")\r\n\r\n\r\n    @pc.var\r\n    def result_data(self):\r\n        return pd.DataFrame(\r\n            self.list_user, \r\n            columns=[\"name\", \"age\"], \r\n            index=self.index\r\n        )\r\n```",
      "created_at": "2023-03-12T03:52:12Z",
      "updated_at": "2023-03-12T03:52:13Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASy8J",
      "number": 631,
      "title": "Upgrade react to 18.2.0",
      "body": "Is there a plan to upgrade the front-end library？\r\n1. Upgrade react to 18.2.0\r\n2. Upgrade Chakra UI to 2.5.x",
      "created_at": "2023-03-05T01:56:08Z",
      "updated_at": "2023-03-07T20:33:45Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "cnwangbo",
        "avatar_url": "https://avatars.githubusercontent.com/u/17995811?u=bcdf445dff46a10756371741e47a4b543c0d119e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASsnv",
      "number": 608,
      "title": "Search Engine Optimisation with pynecone",
      "body": "Hey community and pynecone team\n\nI am starting to learn web development and thanks to pynecone i can finally do it with python. However, from my perspective, SEO is a major part of building a website. What would be best practices for doing that or are there any pynecone components that are useful for that.\n\nKind regards ",
      "created_at": "2023-02-27T09:00:01Z",
      "updated_at": "2023-03-03T15:12:54Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASj85",
      "number": 551,
      "title": "Pynecone app stuck on installing bun",
      "body": "I am using Pynecone in a Conda environment and the launch gets stuck here\r\n<img width=\"856\" alt=\"image\" src=\"https://user-images.githubusercontent.com/110777935/219398283-0d8e0538-3b05-4cb2-b429-8537d999e8a8.png\">\r\n\r\nanyone else facing the same issue ?\r\n",
      "created_at": "2023-02-16T14:51:47Z",
      "updated_at": "2023-02-26T12:22:51Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Siddharth8800",
        "avatar_url": "https://avatars.githubusercontent.com/u/110777935?u=0d28556b820c61778d9a660f0a148b2e97aa7e2f&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASoum",
      "number": 590,
      "title": "Publish Pynecone web app on own domain",
      "body": "Hi everyone\r\n\r\nI am very new to web development and Pynecone, so please bare with me.\r\nI am building a web app in which i wish to use some third-party python libraries. So far, i can build the app using pynecone and the third-party libraries and I also have bought a domain at one.com. However, i do not understand how i can \"publish\" (Dont know if it is the proper term) my pynecone web-app on my one.com domain? And how would it have access to the thrid-party python libraries that i use for my app?\r\n\r\nKind regards",
      "created_at": "2023-02-22T10:37:57Z",
      "updated_at": "2023-02-22T20:46:51Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "NanoscaleSimulations",
        "avatar_url": "https://avatars.githubusercontent.com/u/107072583?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASoZm",
      "number": 587,
      "title": "How can I suggest edits to the documentation?",
      "body": "I found a few typos while reading through the documentation and wanted to notify someone to fix it.  For example, in the \"Creating a substates\" section of the \"Substates\" page \"inherit\" is misspelled as \"inheret\".",
      "created_at": "2023-02-22T00:23:04Z",
      "updated_at": "2023-02-22T00:26:13Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4ATWKZ",
        "body": "Feel free to make an issue or put a pr up here https://github.com/pynecone-io/pcweb"
      },
      "user": {
        "login": "jsquaredosquared",
        "avatar_url": "https://avatars.githubusercontent.com/u/89121419?u=f3b983f1d9772f1c285a9b10de75e9842fff0c76&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASoDh",
      "number": 586,
      "title": "updated my project from 0.1.16 to 0.1.18, now I get error messages",
      "body": "```\r\npc run\r\n────────────────────────────────────────────────── Starting Pynecone App ───────────────────────────────────────────────────\r\nTraceback (most recent call last):\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/bin/pc\", line 8, in <module>\r\n    sys.exit(main())\r\n             ^^^^^^\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/typer/main.py\", line 214, in __call__\r\n    return get_command(self)(*args, **kwargs)\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/click/core.py\", line 1130, in __call__\r\n    return self.main(*args, **kwargs)\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/click/core.py\", line 1055, in main\r\n    rv = self.invoke(ctx)\r\n         ^^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/click/core.py\", line 1657, in invoke\r\n    return _process_result(sub_ctx.command.invoke(sub_ctx))\r\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/click/core.py\", line 1404, in invoke\r\n    return ctx.invoke(self.callback, **ctx.params)\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/click/core.py\", line 760, in invoke\r\n    return __callback(*args, **kwargs)\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/typer/main.py\", line 532, in wrapper\r\n    return callback(**use_params)  # type: ignore\r\n           ^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/pynecone/pc.py\", line 98, in run\r\n    app = utils.get_app()\r\n          ^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/pynecone/utils.py\", line 364, in get_app\r\n    return __import__(module, fromlist=(constants.APP_VAR,))\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/lab/0-spgcodes/lih/lih/lih.py\", line 18, in <module>\r\n    app.add_page(\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/pynecone/app.py\", line 237, in add_page\r\n    component = component if isinstance(component, Component) else component()\r\n                                                                   ^^^^^^^^^^^\r\n  File \"/home/salazag/lab/0-spgcodes/lih/lih/templates/docpage.py\", line 288, in wrapper\r\n    navbar(sidebar=nav_sidebar),\r\n    ^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/lab/0-spgcodes/lih/lih/components/navbar.py\", line 131, in navbar\r\n    pc.icon(tag=\"ChevronDownIcon\"),\r\n    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/salazag/.cache/pypoetry/virtualenvs/lih--w-5i7BS-py3.11/lib/python3.11/site-packages/pynecone/components/media/icon.py\", line 42, in create\r\n    raise ValueError(\r\nValueError: Invalid icon tag: ChevronDownIcon. Please use one of the following: ['add', 'arrow_back', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_right', 'arrow_up', 'arrow_up_down', 'at_sign', 'attachment', 'bell', 'calendar', 'check_circle', 'check', 'chevron_down', 'chevron_left', 'chevron_right', 'chevron_up', 'close', 'copy', 'delete', 'download', 'drag_handle', 'edit', 'email', 'external_link', 'hamburger', 'info', 'info_outline', 'link', 'lock', 'minus', 'moon', 'not_allowed', 'phone', 'plus_square', 'question', 'question_outline', 'repeat', 'repeat_clock', 'search', 'search2', 'settings', 'small_add', 'small_close', 'spinner', 'star', 'sun', 'time', 'triangle_down', 'triangle_up', 'unlock', 'up_down', 'view', 'view_off', 'warning', 'warning_two']\r\n\r\n```",
      "created_at": "2023-02-21T16:54:00Z",
      "updated_at": "2025-02-14T22:31:08Z",
      "category": {
        "name": "Release",
        "emoji": ":white_check_mark:"
      },
      "answer": null,
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASk4L",
      "number": 559,
      "title": "Pynecone Docs sidebar: Leaf / Reference item collapsing (mis)behavior",
      "body": "Hey, guys: \r\n\r\nThis is of no consequence; but, I just wanted to bring to your attention a bit of an annoying behavior in the sidbar of Pynecone documentation...I am talking about that behavior where \r\n- when one clicks on a child of a different item (I am using the terms as in sources pcweb/components/sidebar.py), the previously expanded item is automatically collapsed; and,\r\n- when one clicks on a differernt child of the same item, nothing else collapses and the page on the right simply switches contents\r\n\r\nThis works ok in the \"Learn\" section; but not in the Reference section.\r\n\r\nIn the Reference section, whenever a click on a component, say, Components->Forms->Button, everything collapses and I lose my place!  \r\n\r\n...just saying. \r\n",
      "created_at": "2023-02-17T14:40:53Z",
      "updated_at": "2023-02-21T13:29:56Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASnMA",
      "number": 572,
      "title": "about implementation",
      "body": "does it uses pyscript and if not how it can translate python modules to js ? ",
      "created_at": "2023-02-20T19:32:10Z",
      "updated_at": "2023-02-21T09:42:40Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "rraammiinn",
        "avatar_url": "https://avatars.githubusercontent.com/u/67558318?u=05ff9d0bc69be3722d90b6ae877a166e037436c2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASnML",
      "number": 573,
      "title": "backward compatibility",
      "body": "can it reuse existing js component libraries ?",
      "created_at": "2023-02-20T19:36:36Z",
      "updated_at": "2023-02-21T05:17:06Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "rraammiinn",
        "avatar_url": "https://avatars.githubusercontent.com/u/67558318?u=05ff9d0bc69be3722d90b6ae877a166e037436c2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASlWt",
      "number": 566,
      "title": "TypeError: Object of type function is not JSON serializable",
      "body": "Will somebody be kind enough to run this program and help figure what I am doing wrong? \r\n\r\nThe only requirement is pandas. \r\n\r\nShort description of program: \r\n- input variables and their values are kept in a dictionary\r\n- I use a foreach and the keys to programmatically setup number_input widgets for each and all input variables in one shot\r\n- calculated variables and their values are also kept in a dictionary, but then transferred to a pandas dataframe....\r\n- it is this dataframe that I would like to display via a datatable have it automatically refreshed in the browser every time an input variable is changed\r\n\r\nThe program, as is, does open in a browser, but as soon as I enter a value, I get the not JSON serializable error. \r\n\r\n```\r\nfrom pcconfig import config\r\nimport pynecone as pc\r\nimport pandas as pd\r\n\r\n\r\ndef is_float(fos) -> bool:\r\n    \"\"\" Returns True if string can be converted to a floating-point number. \"\"\"\r\n    try:\r\n        float(fos)\r\n        return True\r\n    except ValueError:\r\n        return False\r\n\r\n\r\nclass State(pc.State):\r\n\r\n    # - - - - - - - - - - - - - - - - - - - - -\r\n    # input Air variables\r\n\r\n    # variable names and their units\r\n    uAir: dict[str,str] = {\r\n        \"Density_at_inlet\"      : \"kg/m^3\",\r\n        \"Viscosity\"             : \"Pa-s\",\r\n        \"Specific_heat\"         : \"J/kg-K\",\r\n        \"Thermal_conductivity\"  : \"W/m-K\",\r\n        \"Resistivity\"           : \"ohm-m\",\r\n    }\r\n\r\n    # variables names\r\n    vAir: list = list(uAir.keys())\r\n\r\n    # variable names and ther values, defaulting to 0.0\r\n    Air: dict[str,float] = { v:0.0 for v in vAir }\r\n\r\n    # - - - - - - - - - - - - - - - - - - - - -\r\n    # calculated Air variables\r\n\r\n    # variable names and their units\r\n    _ucAir: dict[str,str] = {\r\n        \"Prandtl_No\"    : \"-\",\r\n    }\r\n\r\n    # variables names\r\n    _vcAir: list = list(_ucAir.keys())\r\n\r\n    # variable names and ther values, defaulting to 0.0\r\n    _cAir: dict[str,float] = { v:0.0 for v in _vcAir }\r\n\r\n    # - - - - - - - - - - - - - - - - - - - - -\r\n\r\n    def Prandtl_No(self) -> float:\r\n        try:\r\n            val = self.Air['Specific_heat'] * self.Air['Viscosity'] / self.Air['Thermal_conductivity']  # [-]\r\n        except:\r\n            val = -99.9\r\n        finally:\r\n            return val\r\n\r\n    def calculate_Air(self):\r\n        self._cAir['Prandtl_No'] = self.Prandtl_No()\r\n        # for vname in self._vcAir:\r\n        #     f = getattr(self,vname)\r\n        #     self._cAir[vname] = f()\r\n\r\n    def input_Air(self,vval,vstr):\r\n        if is_float(vval):\r\n            self.Air[vstr] = float(vval)\r\n        return self.calculate_Air\r\n\r\n    @pc.var\r\n    def cAir_df(self) -> pd.DataFrame:\r\n        return pd.DataFrame({'Description':self._cAir.keys(), 'Value':self._cAir.values(), 'Units':self._ucAir.values()},\r\n                            index=self._vcAir)\r\n\r\n\r\ndef air_number_input(vstr):\r\n    return pc.hstack(\r\n                pc.text(vstr, font_size=\"0.8em\", width=\"12em\"),\r\n                pc.number_input(on_change=lambda f: State.input_Air(f,vstr),\r\n                                input_mode=\"decimal\",\r\n                                variant=\"outline\",\r\n                                font_size=\"0.8em\"),\r\n                pc.text(State.uAir[vstr], font_size=\"0.8em\", width=\"12em\"),\r\n            )\r\n\r\ndef index():\r\n    return pc.center(\r\n                pc.vstack(\r\n                    pc.foreach(State.vAir, air_number_input),\r\n                    pc.data_table(\r\n                        data=State.cAir_df,\r\n                        pagination=True,\r\n                        search=True,\r\n                        sort=True,\r\n                    ),\r\n                ),\r\n            )\r\n\r\n# Add state and page to the app.\r\napp = pc.App(state=State)\r\napp.add_page(index)\r\napp.compile()\r\n```\r\n",
      "created_at": "2023-02-18T06:51:19Z",
      "updated_at": "2023-02-18T23:00:10Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASgZE",
      "number": 529,
      "title": "Component: NumberInput",
      "body": "\r\n### prop:\r\n```input_mode```\r\nWhat's the difference between 'numeric' and 'decimal' ? \r\nI don't readily notice one. \r\n\r\n### prop:\r\n```is_valid_character```\r\n - if the default valid characters are those that allow entering a floating point number, including scientific notation; and,\r\n - if the widget does not even return a number and, instead, returns a string\r\n\r\nWhy does it insist in reformatting what I type? \r\n\r\nThere is value in typing a number in scientific notation, for example 1.23e-07, and I really don't want the widget to edit what I type and turn it into 0.000000123 ....now, I really need to squint and count how many zeroes I've got!\r\n\r\nLet alone if I need to enter Boltzmann constant or Planck's constant ....then, with so many zeros on the left, I truly loose sight of the numbers.\r\n\r\nIf the widget needs to do some validation and make sure that the contents is a number or not, that's fine, but it shouldn't come back and change what I typed. \r\n\r\n### keyboard keys\r\n\"home\" and \"end\" do not work for me; not only do they not work, they actually entirely replace the contents of the input field. \r\n",
      "created_at": "2023-02-13T03:48:48Z",
      "updated_at": "2023-02-18T22:55:27Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASk8N",
      "number": 560,
      "title": "state var dict, no longer a dict?",
      "body": "Hi, \r\n\r\nI have a state var  ` mydict: dict = {\"one\":1 , \"two\":2 }`  and I cannot do the typical `mydict.keys()`  on it....as if it is not actually a dict, after all....this is rather disorienting. \r\n\r\nI mean, it's nice Pynecone is making web-development easier, but, shouldn't it do it by extending Python without taking away Python? \r\n\r\nIn the mean time, it seems that we would need a lot more documentation, I keep running into aspects of pynecone that are not being published. \r\n\r\nSo, how do I get the keys of my dictionary?\r\n\r\n\r\n",
      "created_at": "2023-02-17T16:00:09Z",
      "updated_at": "2023-02-17T20:14:51Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASk3d",
      "number": 558,
      "title": "How to Build Android and iOS Apps with Pynecone - Medium Post",
      "body": "I have written an article how to export your Pynecone app as an Android and iOS app:\r\nhttps://medium.com/itnext/how-to-build-android-and-ios-apps-with-pynecone-6d2097a7610d\r\n\r\n@Alek99: Maybe you can add this to the Announcements like the announcement on Pynecone Tutorial Aartikel (#264).",
      "created_at": "2023-02-17T14:27:06Z",
      "updated_at": "2023-02-17T14:27:07Z",
      "category": {
        "name": "News",
        "emoji": ":newspaper_roll:"
      },
      "answer": null,
      "user": {
        "login": "r0b2g1t",
        "avatar_url": "https://avatars.githubusercontent.com/u/5357541?u=6428442d875d5d71aaa1bb38bb11c4be1a526bc2&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASkdr",
      "number": 554,
      "title": "TypeError: float() argument must be a string or a number, not 'BaseVar'",
      "body": "The code below yields the error in the title.\r\nCan somebody please help? explain?\r\n\r\nI am sure you are going to question the structure of the program and wonder why I am not taking advantage of Pynecone intrinsic setters of state variables, etc. ....well, there is a reason, but I don't think that matters at this moment...if you think if does and need to know, I can explain; otherwise...\r\n\r\n...if seems to me the code below is rather harmless and I don't understand why Pynecone thinks the lambda v function argument is a BaseVar and not just some string coming out of the number_input component. \r\n\r\n```\r\nfrom pcconfig import config\r\nimport pynecone as pc\r\n\r\nclass State(pc.State):\r\n    density: float = 0.0\r\n\r\ndef is_float(s) -> bool:\r\n    try:\r\n        float(s)\r\n        return True\r\n    except ValueError:\r\n        return False\r\n\r\ndef update_Air(sval):\r\n    if is_float(sval):\r\n        State.density = float(sval)\r\n\r\ndef index():\r\n    return pc.center(\r\n        pc.hstack(\r\n            pc.text(\"Density_at_inlet\", font_size=\"0.8em\"),\r\n            pc.number_input(on_change=lambda v: update_Air(v), input_mode=\"decimal\", variant=\"outline\", font_size=\"0.8em\"),\r\n        )\r\n    )\r\n\r\n# Add state and page to the app.\r\napp = pc.App(state=State)\r\napp.add_page(index)\r\napp.compile()\r\n\r\n```",
      "created_at": "2023-02-17T04:50:21Z",
      "updated_at": "2023-02-17T19:59:47Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AShOO",
      "number": 533,
      "title": "Gallery example: pynecone itself",
      "body": "Say, in Pynecone home page, it is clearly indicated that the entire website was written in pynecone itself...\r\n\r\n...may I take a peak at the sources?  \r\n\r\nI am particularly interested in seeing how the .../docs/* part is done, specifically:\r\n- having on the left a frame that never goes away and contains some kind of table-of-contents; then, \r\n- on the right, contents that changes according to what it was click on the left",
      "created_at": "2023-02-13T20:36:57Z",
      "updated_at": "2023-02-17T09:55:53Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AS7pl",
        "body": "https://github.com/pynecone-io/pcweb"
      },
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASh1J",
      "number": 537,
      "title": "How to setup devcontainer with debug in vscode?",
      "body": "We want use this package with our project, however, there is no any guide about setup devcontainer and debug.\r\n\r\n",
      "created_at": "2023-02-14T12:12:18Z",
      "updated_at": "2023-02-14T12:12:18Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "italanchan",
        "avatar_url": "https://avatars.githubusercontent.com/u/10571926?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASegn",
      "number": 497,
      "title": "What's the best way to integrate a TCP server with a Pynecone backend?",
      "body": "I have an application that needs to have the backend server communicate with other services over a raw TCP protocol (ie. not WebSockets, not HTTP).\r\n\r\nCould anyone offer a suggestion for the best way to integrate this with the Pynecone-generated backend application?",
      "created_at": "2023-02-10T07:43:51Z",
      "updated_at": "2023-02-10T09:55:13Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "da4089",
        "avatar_url": "https://avatars.githubusercontent.com/u/860066?u=502ac123597d08250e0ce234000758dc8247e98b&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASdpd",
      "number": 488,
      "title": "How to Use it with FastAPI Server",
      "body": "Hello Everyone, \r\nCan Anyone Tell me How to use Pynecone with My Server That uses FastAPI? \r\nI already Developed Server Using Fast API, Now i want to create a frontend in either way :-\r\nNon Web Based - using pyside6 \r\nOr Web Based - using pynecone ( i dont know how to code in Javascript ). ",
      "created_at": "2023-02-09T10:56:37Z",
      "updated_at": "2023-02-09T20:07:13Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Gmonga08",
        "avatar_url": "https://avatars.githubusercontent.com/u/116080892?u=8944ba795f326202a52fdeaec6fb71cda2151c86&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASd5y",
      "number": 489,
      "title": "user input widget for float numeric value",
      "body": "May I have an example on how to setup an input field for a floating point number? \r\nI see that Pynecone has a component to enter integers [https://pynecone.io/docs/library/forms/numberinput](url)\r\nAlso, a generic component for seemingly any input [https://pynecone.io/docs/library/forms/input](url)\r\n\r\nIntermediate question:\r\nThe Input component has a few attributes; for example ```variant```  and ```size```, for both of them, the help indicates which values are accepted for such attributes.\r\nThere is also attribute ```type_``` ...what are the acceptable values for this one? \r\n\r\nThe real question: \r\nhow do I setup an input field for a floating point number? \r\n\r\n\r\n",
      "created_at": "2023-02-09T15:58:25Z",
      "updated_at": "2023-02-09T15:58:26Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASa-s",
      "number": 464,
      "title": "How to have a state (component) be hidden, then shows two different responses depending on button pressed?",
      "body": "Not sure if it’s a limitation of the project or a misunderstanding by me, but as of now, I do not see a way where I can have some state (component) be hidden from the enduser, and the state's response will only show up upon pressing (triggering) one of two buttons (True or False), where the response will be different for each button pressed.\r\n\r\nA pythonic example would be:\r\n```\r\nif button_pressed is True:\r\n\treturn “show_response_A\"\r\nelseif button_pressed is False:\r\n\treturn “show_response_B\"\r\nelse:  # Implies \"button_pressed\" is None (not pressed yet)\r\n\treturn “\"\r\n```\r\nI’m aware about the nested ```pc.cond``` component but I don’t see a way of implementing that logic with it.\r\n\r\nSo is there a way to accomplish the desired behaviour?",
      "created_at": "2023-02-06T20:05:14Z",
      "updated_at": "2023-09-17T16:36:27Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "OSuwaidi",
        "avatar_url": "https://avatars.githubusercontent.com/u/120381151?u=d9abba24d38f2a38ca26b01007697b79e6e51bc3&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AScDZ",
      "number": 475,
      "title": "Pynecone with Django",
      "body": "I am thinking to use pynecon in frontend and Django in backend is it possible",
      "created_at": "2023-02-08T01:48:33Z",
      "updated_at": "2023-02-08T13:41:10Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "saurabhwadekar",
        "avatar_url": "https://avatars.githubusercontent.com/u/55120484?u=afe8bf066f0a4cb6b0a45adaa1e7718d1f041fae&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASai0",
      "number": 457,
      "title": "Can anyone explain how fastapi and next.js cooperate under the hood?",
      "body": "I'm struggling with deploying my pynecone docker container through AWS Elastic Beanstalk which uses Nginx for reverse proxy.\r\n\r\nI've read [Self Hosting](https://pynecone.io/docs/hosting/self-hosting), but I can't say that I fully understand how everything works together.\r\n\r\nI'm still getting this error:\r\n> WebSocket connection to 'ws://0.0.0.0:8000/event' failed:\r\n\r\n\r\n",
      "created_at": "2023-02-06T10:38:38Z",
      "updated_at": "2023-03-20T14:53:43Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "qu3vipon",
        "avatar_url": "https://avatars.githubusercontent.com/u/52447545?u=671ed9cd128ad100a4808da5ca4c5d10a79162d7&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASbf6",
      "number": 470,
      "title": "How can I use a non-standard object as a state variable?",
      "body": "I'm not sure if that question makes sense, but here's what's up:\r\n\r\n**1. Add a page with an on_load event to load data on page load**\r\n```python\r\n   app.add_page(bot, route=\"/bot/[sl]\", on_load=State.get_bot)\r\n```\r\n\r\n**2—works: Get the associated object and set string variables with its values**\r\n```python\r\n    def get_bot(self):\r\n        with pc.session() as session:\r\n            slug = self.get_query_params().get(\"sl\", \"Missing slug.\")\r\n            bot: Bot = session.execute(Bot.select.filter(Bot.slug == slug)).first()\r\n            if bot:\r\n                self.bot_name = bot[0].name\r\n                self.bot_personality = bot[0].personality\r\n                self.bot_sample = bot[0].sample\r\n```\r\n\r\n**2—doesn't work: Get the associated object and set a single object variable**\r\n```python\r\n    def get_bot(self):\r\n        with pc.session() as session:\r\n            slug = self.get_query_params().get(\"sl\", \"Missing slug.\")\r\n            bot: Bot = session.execute(Bot.select.filter(Bot.slug == slug)).first()\r\n            self.bot = bot[0]\r\n```\r\n\r\nIf I do this, then I'll get an error if I try to access bot values like `bot.personality`, saying that these attributes don't exist.\r\n\r\nWhat am I doing wrong?",
      "created_at": "2023-02-07T12:11:27Z",
      "updated_at": "2023-02-07T14:03:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4ASqy-",
        "body": "Okay, here's the answer:\r\n\r\n**1. Create a custom var using either pc.Model or pc.Base**\r\n\r\n```python\r\nclass Bot(pc.Model, table=True):\r\n    slug: str\r\n    name: str\r\n    personality: str\r\n    sample: str\r\n```\r\n\r\n**2. Within your state class, create an instance of the custom var class and be sure to instantiate it**\r\n```python\r\nclass State(pc.State):\r\n\r\n    current_bot: Bot = Bot(\r\n        slug=\"\",\r\n        name=\"\",\r\n        personality=\"\",\r\n        sample=\"\",\r\n    )\r\n``` \r\n\r\n**3. Create a function to populate the variable on page load** \r\n```python\r\n    def get_bot(self):\r\n        with pc.session() as session:\r\n            slug = self.get_query_params().get(\"sl\", \"Missing slug.\")\r\n            bot: Bot = session.execute(Bot.select.filter(Bot.slug == slug)).first()\r\n            if bot:\r\n                self.current_bot = bot[0]\r\n```\r\n\r\n**4. Add the function to your definition for the page**\r\n```python\r\napp.add_page(bot, route=\"/bot/[sl]\", on_load=State.get_bot)\r\n```\r\n\r\n**5. Use the variable within your page**\r\n```python\r\npc.heading(State.current_bot.sample)\r\n```\r\n\r\n**WARNING: If you have an attribute called \"name,\" it will not work. If you use this you will instead just get the name of the variable, e.g. \"current_bot\" in this case. I'm not sure if there's a way around this apart from just not using that attribute name, which is unfortunate.**"
      },
      "user": {
        "login": "simonmesmith",
        "avatar_url": "https://avatars.githubusercontent.com/u/5099521?u=7025ef7881332e5d9421cbc9586aad882bede515&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASbOk",
      "number": 467,
      "title": "Can we convert pynecone to apk like react native?",
      "body": "Can we convert pynecone to apk like react native?",
      "created_at": "2023-02-07T04:46:32Z",
      "updated_at": "2023-02-07T05:49:17Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "saurabhwadekar",
        "avatar_url": "https://avatars.githubusercontent.com/u/55120484?u=afe8bf066f0a4cb6b0a45adaa1e7718d1f041fae&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASax_",
      "number": 459,
      "title": "How do you upload Excel File in pynecone?",
      "body": "I want to upload Excel or CSV and display the data with DataTable component.\r\nIs it possible to do this in Pynecone?\r\nIt seems like we can't find upload componet in Pynecone, but do you have any ideas on how to implement this?\r\n",
      "created_at": "2023-02-06T15:49:49Z",
      "updated_at": "2023-02-08T13:18:40Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4ASpW7",
        "body": "Current we can't upload files to server side, but we will able to do this soon."
      },
      "user": {
        "login": "basatsu",
        "avatar_url": "https://avatars.githubusercontent.com/u/97040668?u=bae0096f93fd5af3f8903befa32dd354dba1ad39&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASZ4N",
      "number": 447,
      "title": "Wrapping react: lightweight-charts",
      "body": "I have tried to wrap lightweight-charts in pynecone to make a chart with my dataset but not working (it says SyntaxError: Cannot use import statement outside a module). My code snippets are something like these:\r\n```\r\nclass TradingView(pc.Component):\r\n    library = \"lightweight-charts\"\r\n    tag = \"createChart\"\r\n```\r\n\r\n```\r\ndef index():\r\n    return pc.center(\r\n        pc.vstack(\r\n            TradingView.create(),\r\n            spacing=\"1.5em\",\r\n            font_size=\"2em\",\r\n        ),\r\n        padding_top=\"10%\",\r\n    )\r\n```\r\n\r\nI am quite new to react things so it might be a dump question. It would be helpful to let me know some rules of thumb when wrapping react components in pynecone (I have read the docs already). Thanks.",
      "created_at": "2023-02-05T09:37:27Z",
      "updated_at": "2023-02-05T09:37:27Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jik0730",
        "avatar_url": "https://avatars.githubusercontent.com/u/16831130?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASZqm",
      "number": 444,
      "title": "Change the webapp title",
      "body": "I have a question on how can i change the webapp's title, for now the title is 'Pyneconne App' but i want to customize it. ",
      "created_at": "2023-02-04T19:54:46Z",
      "updated_at": "2024-07-14T07:12:39Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4ASlTj",
        "body": "See the section \"page metadata\" [here](https://pynecone.io/docs/components/pages)"
      },
      "user": {
        "login": "ramsy0dev",
        "avatar_url": "https://avatars.githubusercontent.com/u/86024158?u=714763cc34cd04ae84c40f30ec8646a73fe47f44&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASYnA",
      "number": 428,
      "title": "hot reloading takes up to 5 seconds .  can it be any faster",
      "body": "I appreciate this project.  This is very nice .  small obstacle but a little annoying, namely hot reloading and seeing the changes can take up to 5-6 seconds.\r\nif so maybe when reloading .  can add indicators such as page loading.  looks like it's processing.\r\n\r\n  in contrast to next js which is very fast .  hopefully there will be an improvement later.  thanks",
      "created_at": "2023-02-03T06:13:28Z",
      "updated_at": "2023-02-04T01:25:19Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASY92",
      "number": 433,
      "title": "GET parameters?",
      "body": "I made a simple ID finder to look up an id on an API I found and I need to communicate with a different page but I can't use GET params as I would do with something like PHP. Any way I could do this with GET params? \r\n`localhost:3000/get`**`?id=102`**",
      "created_at": "2023-02-03T15:15:28Z",
      "updated_at": "2023-02-03T21:53:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "RayFB-13",
        "avatar_url": "https://avatars.githubusercontent.com/u/74745745?u=5a43d00e9def95b72cabd4674dc14ff9cd9b894e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASYrB",
      "number": 430,
      "title": "how to define state in different files and different pages",
      "body": "i want to create separate page and how to do it between each state and page\r\n\r\n\r\nmy code pyne1.py\r\n```\r\nimport pynecone as p\r\nfrom .aboutpage import about\r\n\r\nclass Mystate(p.State):\r\n    count:int = 20\r\n    name:str = \"john\"\r\n\r\n    def add(self):\r\n        self.count +=40\r\n\r\ndef index():\r\n    return p.center(\r\n        p.vstack(\r\n               p.heading(\"tolol\",color=\"orange\"),\r\n        p.text(Mystate.count),\r\n        p.button(\"add\",\r\n            on_click=Mystate.add\r\n            ),\r\n        p.text(Mystate.name,weight=\"bold\",font_size=\"30px\"),\r\n        p.input(\r\n            on_change=Mystate.set_name\r\n            )\r\n            )\r\n\r\n        )\r\n\r\n\r\n\r\napp = p.App(state=Mystate)\r\napp.add_page(index)\r\napp.add_page(about,route=\"/customroute\")\r\n\r\napp.compile()\r\n```\r\n\r\nand my code  aboutpage.py\r\n```\r\nimport pynecone as p\r\n\r\nclass MyAboutControll(p.State):\r\n\taboutname:str = \"about\"\r\n\r\ndef about():\r\n\treturn p.vstack(\r\n\t\tp.box(MyAboutControll.aboutname,bg=\"orange\",width=\"80%\",\r\n\t\t\tpadding=10\r\n\t\t\t)\r\n\r\n\t\t)\r\n\r\n\r\n\r\napp = p.App(state=MyAboutControll)\r\n\r\n\r\n```\r\n\r\n",
      "created_at": "2023-02-03T08:23:40Z",
      "updated_at": "2023-02-04T01:24:03Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4ASicP",
        "body": "**it can be resolved**"
      },
      "user": {
        "login": "bobwatcherx",
        "avatar_url": "https://avatars.githubusercontent.com/u/52072811?u=0678c2f0a0b442db41a209c81fbe9448166be446&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR4PW",
      "number": 166,
      "title": "Automatically scroll down a page ?",
      "body": "Hi, \r\nAssuming my app is very similar to the Quizz example (https://quiz.pynecone.app/), is there a style trick to automatically anchor the view (or the scrollbar) to the bottom of the page (where the submit button is) especially is dynamically I'm adding quizz cards ?\r\n\r\nThanks !",
      "created_at": "2022-12-22T19:02:15Z",
      "updated_at": "2023-02-02T22:49:30Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "matt-grain",
        "avatar_url": "https://avatars.githubusercontent.com/u/111311078?u=2a7d29738a87653c6c306067c75755e005bcfbe8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASWkG",
      "number": 414,
      "title": "Performance issues with input.on_change",
      "body": "I'm not sure if this is an issue or I'm doing something wrong, so posting here before issues.\r\n\r\nI'm building a chat interface. I have this state:\r\n\r\n```python\r\nclass State(pc.State):\r\n  \"\"\"The app state.\"\"\"\r\n  user_message: str = \"\"\r\n  answer_loaded: bool = True\r\n  messages: list[Message] = []\r\n```\r\n\r\nThen, in my form, I have this:\r\n\r\n```python\r\npc.input(\r\n  value=State.user_message,\r\n  on_change=State.user_message,\r\n),\r\npc.button(\r\n  \"Send\",\r\n  on_click=[State.add_user_message, State.add_bot_message]\r\n),\r\n```\r\n\r\nThis works fine when there isn't a lot of message history, but as soon as it starts getting long it becomes exceedingly difficult to type in the input, I assume because there's some kind of memory issue related to saving the message with each key pressed.\r\n\r\nIs there a way around this? I tried with `on_blur`, but then I couldn't clear the input after the user posted their message.\r\n\r\nPS: Loving Pynecone. Just working through some of the differences with pure Python, HTML, and JS that I'm more used to.",
      "created_at": "2023-01-31T21:42:30Z",
      "updated_at": "2023-02-02T14:05:02Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "simonmesmith",
        "avatar_url": "https://avatars.githubusercontent.com/u/5099521?u=7025ef7881332e5d9421cbc9586aad882bede515&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASWv0",
      "number": 418,
      "title": "Shopping mall demo",
      "body": "Hi. I found your great work and wondered if this project is suitable for a shopping mall.\r\n\r\nDo you think it has enough features to implement and look like a shopping mall?",
      "created_at": "2023-02-01T03:47:23Z",
      "updated_at": "2023-02-02T09:00:28Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "gyupro",
        "avatar_url": "https://avatars.githubusercontent.com/u/79894531?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASVqP",
      "number": 401,
      "title": "New Database supports",
      "body": "In the future will there be built in support for connections to other remote databases, i.e but not limited to MongoDB? That would be cool for folks who don't generally prefer SQL formatting, something to auto-migrate data between databases in the case someone switches remote databases might be cool as well perhaps.",
      "created_at": "2023-01-30T23:19:04Z",
      "updated_at": "2023-02-01T00:29:58Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Aesth3tical",
        "avatar_url": "https://avatars.githubusercontent.com/u/64765821?u=50092bf5f29cec62c32f604fa0ea0794bfd28e3e&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASTok",
      "number": 365,
      "title": "Add `target=\"_blank\"` to links on the Website and in the GitHub readme",
      "body": "In the most cases when someone clicks on a link to a resource (like the docs, component library, node.js installation page, discord, twitter, etc.) they still want the original site to stay open. I checked many different links here on the github page and on the homepage and I didn't find any which opened in a new window. I assume `target=\"_blank\"` is not used on any link. If this was changed it would make navigation easier and more convenient.\r\n\r\nP.S.: I just noticed, that the link to python in the header of the readme links to the [image](https://camo.githubusercontent.com/9c27d165d18fc7e57ce1cd3fb94ec51d00b1c11e06dcc68e076667809e1e0564/68747470733a2f2f696d672e736869656c64732e696f2f707970692f707976657273696f6e732f70796e65636f6e652d696f2e737667) instead of the python download page.",
      "created_at": "2023-01-27T20:18:09Z",
      "updated_at": "2023-01-31T17:17:42Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "CaptainException",
        "avatar_url": "https://avatars.githubusercontent.com/u/113012771?u=6ce5c5d2f8eba2a2bf2390c9a701ca05766fbfd9&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASVyn",
      "number": 408,
      "title": "v0.1.14 🚀",
      "body": "## What's Changed\r\n* Fix running in backend-only mode by @picklelo in https://github.com/pynecone-io/pynecone/pull/311\r\n* Fix typo by @cclauss in https://github.com/pynecone-io/pynecone/pull/305\r\n* Correct comment by @qu3vipon in https://github.com/pynecone-io/pynecone/pull/309\r\n* Specify a port by CLI (#308) by @HellAmbro in https://github.com/pynecone-io/pynecone/pull/313\r\n* Codebase Refactor ⭐ by @HighnessAtharva in https://github.com/pynecone-io/pynecone/pull/312\r\n* Add event token to router_data by @Lendemor in https://github.com/pynecone-io/pynecone/pull/316\r\n* Added Date and Company to License  by @Alek99 in https://github.com/pynecone-io/pynecone/pull/318\r\n* Support dataframes as state vars by @picklelo in https://github.com/pynecone-io/pynecone/pull/324\r\n* Resolve #304: Relax type requirement on pc.cond by @TommyDew42 in https://github.com/pynecone-io/pynecone/pull/323\r\n* Rename path to route everywhere by @picklelo in https://github.com/pynecone-io/pynecone/pull/329\r\n* Rename dalle to DALL·E and add link to bun by @r0b2g1t in https://github.com/pynecone-io/pynecone/pull/335\r\n* add onload event handler by @Lendemor in https://github.com/pynecone-io/pynecone/pull/337\r\n* fix  Stream did not contain valid UTF-8 (#282) by @LumiaGG in https://github.com/pynecone-io/pynecone/pull/332\r\n* Added anonymous telemetry helpers. by @Alek99 in https://github.com/pynecone-io/pynecone/pull/340\r\n* Added Testing to Contributing Guide by @Alek99 in https://github.com/pynecone-io/pynecone/pull/343\r\n* Use ReconnectingWebSocket instead of vanilla WebSocket by @advo-kat in https://github.com/pynecone-io/pynecone/pull/348\r\n* fix: validate event by @qu3vipon in https://github.com/pynecone-io/pynecone/pull/338\r\n* chore: update .gitignore by @qu3vipon in https://github.com/pynecone-io/pynecone/pull/352\r\n* error message for invalid event handler signature by @qu3vipon in https://github.com/pynecone-io/pynecone/pull/363\r\n* feat: multiple styles for components by @qu3vipon in https://github.com/pynecone-io/pynecone/pull/370\r\n* Reconnect websocket on window focus as a solution to disconnects on mobile devices by @advo-kat in https://github.com/pynecone-io/pynecone/pull/366\r\n* chore: fix typos by @qu3vipon in https://github.com/pynecone-io/pynecone/pull/368\r\n* Add and use `pc.list` to have list mutation detection by @TommyDew42 in https://github.com/pynecone-io/pynecone/pull/339\r\n* Fix event chain type check by @picklelo in https://github.com/pynecone-io/pynecone/pull/375\r\n* Feature: Template For Pull Request Added #362 by @SaarthakMaini in https://github.com/pynecone-io/pynecone/pull/377\r\n* feat: Add copy to clipboard component by @qu3vipon in https://github.com/pynecone-io/pynecone/pull/380\r\n* Dynamically add vars to a State by @Lendemor in https://github.com/pynecone-io/pynecone/pull/381\r\n* Alek/port by @Alek99 in https://github.com/pynecone-io/pynecone/pull/388\r\n* Catch a JS Error + code cleanup by @Lendemor in https://github.com/pynecone-io/pynecone/pull/384\r\n* Fix custom routes on Windows by @picklelo in https://github.com/pynecone-io/pynecone/pull/389\r\n* allow backend variables starting with _ by @Lendemor in https://github.com/pynecone-io/pynecone/pull/390\r\n* Finalized port closing and error warning. by @Alek99 in https://github.com/pynecone-io/pynecone/pull/391\r\n* Support state vars in `pc.markdown` by @picklelo in https://github.com/pynecone-io/pynecone/pull/392\r\n* Feature: Add Pynecone Container Image Build by @r0b2g1t in https://github.com/pynecone-io/pynecone/pull/387\r\n* Fix event encoding by @picklelo in https://github.com/pynecone-io/pynecone/pull/393\r\n* Switch order of df logic. by @Alek99 in https://github.com/pynecone-io/pynecone/pull/396\r\n* Check if curl and unzip are installed, fix #383 by @HellAmbro in https://github.com/pynecone-io/pynecone/pull/386\r\n* Add support for toggling color mode ('night/day mode') by @advo-kat in https://github.com/pynecone-io/pynecone/pull/382\r\n* Fix format route by @picklelo in https://github.com/pynecone-io/pynecone/pull/399\r\n* Update readme by @picklelo in https://github.com/pynecone-io/pynecone/pull/404\r\n* Comment out pclist by @picklelo in https://github.com/pynecone-io/pynecone/pull/407\r\n\r\n## New Contributors\r\n* @cclauss made their first contribution in https://github.com/pynecone-io/pynecone/pull/305\r\n* @qu3vipon made their first contribution in https://github.com/pynecone-io/pynecone/pull/309\r\n* @HellAmbro made their first contribution in https://github.com/pynecone-io/pynecone/pull/313\r\n* @HighnessAtharva made their first contribution in https://github.com/pynecone-io/pynecone/pull/312\r\n* @TommyDew42 made their first contribution in https://github.com/pynecone-io/pynecone/pull/323\r\n* @r0b2g1t made their first contribution in https://github.com/pynecone-io/pynecone/pull/335\r\n* @LumiaGG made their first contribution in https://github.com/pynecone-io/pynecone/pull/332\r\n* @advo-kat made their first contribution in https://github.com/pynecone-io/pynecone/pull/348\r\n* @SaarthakMaini made their first contribution in https://github.com/pynecone-io/pynecone/pull/377\r\n\r\n**Full Changelog**: https://github.com/pynecone-io/pynecone/compare/v0.1.13...v0.1.14\n\n<hr /><em>This discussion was created from the release <a href='https://github.com/pynecone-io/pynecone/releases/tag/v0.1.14'>v0.1.14 🚀</a>.</em>",
      "created_at": "2023-01-31T03:32:36Z",
      "updated_at": "2023-01-31T03:32:40Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASSST",
      "number": 344,
      "title": "Can you get an example on how to import a javascript package and use it?",
      "body": "It is possible to import js packages as we are using bun. Can you provide an example code for importing and using the js package? ",
      "created_at": "2023-01-26T04:12:14Z",
      "updated_at": "2023-01-28T13:45:01Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "JohnVersus",
        "avatar_url": "https://avatars.githubusercontent.com/u/15834299?u=aca2a0b63d0a9ef52fcff35e5a0e38b9d712c965&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASSH2",
      "number": 341,
      "title": "App on iPad Mini is weirdly slow and non-functional.",
      "body": "I tried out a sample application today which just has some text, and a button that should make another text field appear when it's clicked. It works fine on my PC, but when I attempt to use the site on my iPad Mini (iOS 12, not sure what version the hardware is though), it takes forever to load, and when it does, the button doesn't function as I expect it would. \r\n\r\nIs it just that pynecone doesn't work on older builds of Safari, or is it possible that I'm doing something else wrong?\r\nHere's my code:\r\n```py\r\nclass State(pc.State):\r\n    \"\"\"The app state.\"\"\"\r\n    good = False\r\n\r\n    def push_btn(self):\r\n        self.good = True\r\n\r\n\r\ndef index():\r\n    return pc.center(\r\n        pc.vstack(        \r\n            pc.hstack(\r\n                pc.text(\"Click here to \"),\r\n                pc.button(\"show text\", on_click=[State.push_btn]),\r\n            ),\r\n            pc.cond(\r\n                State.good,\r\n                pc.text(\"Good job!\"),\r\n            )\r\n        )\r\n    )\r\n\r\n\r\n# Add state and page to the app.\r\napp = pc.App(state=State)\r\napp.add_page(index, title=\"Site\")\r\napp.compile()\r\n```",
      "created_at": "2023-01-25T21:53:59Z",
      "updated_at": "2023-01-27T05:27:04Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "DoubleF3lix",
        "avatar_url": "https://avatars.githubusercontent.com/u/48461905?u=03dd816545478933478d0d5a27f06dbb65e1bbf6&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR1fJ",
      "number": 137,
      "title": "What is the best way to do something when a page is loaded?",
      "body": "Hi,\r\n\r\nIn case some stuff has to be initialized when a page is loaded, what is the best way to trigger this part of the code?\r\nCurrenty I'm using on_click on the link to the page but doesn't support page refresh obvously...\r\n\r\n````python\r\npc.link(\r\n    pc.image(src=\"/logo.jpg\", width=\"auto\", height=\"3em\"),\r\n    href=\"/page2\",\r\n    style=index_image,\r\n    on_click=lambda: AppState.set_name(\"my name\"),\r\n),\r\n````\r\n",
      "created_at": "2022-12-18T21:17:45Z",
      "updated_at": "2023-01-25T05:42:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AQ835",
        "body": "I think the best would be to use a computed var "
      },
      "user": {
        "login": "matt-grain",
        "avatar_url": "https://avatars.githubusercontent.com/u/111311078?u=2a7d29738a87653c6c306067c75755e005bcfbe8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASQkC",
      "number": 326,
      "title": "Is session and caching supported.",
      "body": "Session and caching supported.",
      "created_at": "2023-01-24T03:34:14Z",
      "updated_at": "2023-01-24T04:41:52Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "saisaigraph",
        "avatar_url": "https://avatars.githubusercontent.com/u/5779906?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASQkA",
      "number": 325,
      "title": "Wondering if PC apps also work on mobile",
      "body": "Mobile support PC apps.",
      "created_at": "2023-01-24T03:33:37Z",
      "updated_at": "2023-01-24T04:27:31Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "saisaigraph",
        "avatar_url": "https://avatars.githubusercontent.com/u/5779906?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASP5a",
      "number": 321,
      "title": "any example of a dashboard built using pynecome",
      "body": "Just wondering if any example of a dashboard built using pynecome is available.\r\nthanks",
      "created_at": "2023-01-23T09:13:02Z",
      "updated_at": "2023-01-23T16:37:05Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "saisaigraph",
        "avatar_url": "https://avatars.githubusercontent.com/u/5779906?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASFa9",
      "number": 233,
      "title": "Pynecone Discord",
      "body": "Hi everyone we just started using discord yesterday. It's a great way to get more realtime answers and feedback on Pynecone. We can help you debug your Pynecone app and collaborate and features/bug fixes! \r\n\r\n- We will still use GitHub issues and discussions this is just a supplement to get more specialized help and collaboration.\r\n\r\nInvite to Pynecone Discord: https://discord.gg/T5WSbC2YtQ ",
      "created_at": "2023-01-09T20:32:07Z",
      "updated_at": "2023-01-22T20:13:02Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASO8d",
      "number": 301,
      "title": "Is there any way to clear input component field through other component(button) event?",
      "body": "Thank you for your hustling effort.\r\nIs there any way to clear input component field \r\nthrough other component(button) event?\r\n(Like, Todo list in your gallery examples)\r\n\r\nI've tried several ways, but couldn't find a solution.",
      "created_at": "2023-01-21T10:48:45Z",
      "updated_at": "2023-01-21T19:56:11Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "martiniifun",
        "avatar_url": "https://avatars.githubusercontent.com/u/62679294?u=47f3a4afb2adfdcd9e579627f43a560dbcd9d015&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASOyH",
      "number": 297,
      "title": "Is there way to manipulate based on event target in event handler?",
      "body": "Currently to handle event from pc.state is works well.\r\nBut I want to manipulate nested AccordionItem components based on target's id props by using on_click=<event_handler>.\r\n\r\nI have checked [Docs: Event Arguments](https://pynecone.io/docs/state/events#:~:text=the%20new%20state.-,Event%20Arguments,-In%20some%20use) and [Docs: Events Triggers](https://pynecone.io/docs/events-reference/triggers) but can not find a example.\r\n",
      "created_at": "2023-01-21T01:18:45Z",
      "updated_at": "2023-01-21T01:20:12Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "wbfw109",
        "avatar_url": "https://avatars.githubusercontent.com/u/37881026?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASOhl",
      "number": 294,
      "title": "Question on checkboxes and associated state",
      "body": "Hi,\r\n\r\nAssuming I have some pc.checkbox sharing the same State and I want to remember which one was checked. how can I linked the `is_checked` attribute to a fined-grained detail of my State ?\r\n\r\nLike:\r\n\r\n````python\r\nclass MultichoiceState(QuestionnaireState):\r\n\r\n    multichoice_state: Dict[int, List[str]] = {}\r\n    checked: bool = False\r\n    last_idx: int = 0\r\n\r\n    # @pc.var\r\n    def checked(asnwer: str) -> bool:\r\n        return answer in self.multichoice_state[self.last_idx]\r\n\r\n    def add_selected(self, idx: int, answer: str) -> None:\r\n\r\n        self.last_idx = idx\r\n        logger.debug(f\"Adding answer {answer} for multichoice question {idx}\")\r\n\r\n        if idx not in self.multichoice_state:\r\n            self.multichoice_state[idx] = []\r\n        self.multichoice_state[idx].append(answer)\r\n\r\ndef c_multichoice_checkbox(details: QuestionModel) -> pc.Component:\r\n    return pc.form_control(\r\n        pc.wrap(\r\n            pc.foreach(QuestionnaireState.answers_list[details.id], lambda answer: c_multichoice_checkbox_item(answer, details)),\r\n        )\r\n    )\r\n\r\ndef c_multichoice_checkbox_item(answer: str, details: QuestionModel) -> pc.Component:\r\n    \"\"\"_summary_\r\n\r\n    Args:\r\n        details (QuestionModel): _description_\r\n\r\n    Returns:\r\n        _type_: _description_\r\n    \"\"\"\r\n    return pc.flex(\r\n        pc.checkbox(\r\n            answer,\r\n            is_checked=MultichoiceState.is_checked(details.id, answer),  <-- doesn't work\r\n            on_change=lambda: MultichoiceState.add_selected(details.id, answer),\r\n        ),\r\n    )\r\n````\r\n\r\nThanks !\r\n\r\n\r\n",
      "created_at": "2023-01-20T17:38:45Z",
      "updated_at": "2023-01-20T18:29:01Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "matt-grain",
        "avatar_url": "https://avatars.githubusercontent.com/u/111311078?u=2a7d29738a87653c6c306067c75755e005bcfbe8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASNfq",
      "number": 291,
      "title": "Would be cool if it allows to write tailwind styles",
      "body": "Would be cool if it allows to write tailwind styles",
      "created_at": "2023-01-19T23:25:57Z",
      "updated_at": "2023-01-19T23:48:33Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "tuokaikyle",
        "avatar_url": "https://avatars.githubusercontent.com/u/38590900?u=43a1e5fdf877d78b9835dcb4c6302eb31aa12b5a&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASLaq",
      "number": 276,
      "title": "Is there a way to hide a component dynamically?",
      "body": "I want to display a text field only when a state boolean is truthful. \r\nIs there a pynecone.if() component or a prop such as is_shown to implement this functionality?\r\n",
      "created_at": "2023-01-17T15:49:33Z",
      "updated_at": "2023-01-17T18:34:22Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AR9lm",
        "body": "You can use `pc.cond`: https://pynecone.io/docs/library/layout/cond"
      },
      "user": {
        "login": "Bechir-Brahem",
        "avatar_url": "https://avatars.githubusercontent.com/u/54041290?u=a1d3260869e14b9fbeeb06e1aaffa157c221f174&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASJuW",
      "number": 264,
      "title": "Pynecone Tutorial - Medium Post",
      "body": "Nice work @DPetuskey!!\r\n\r\nhttps://medium.com/@demetri_60494/pynecone-an-easier-way-to-build-web-apps-645601cf20c7",
      "created_at": "2023-01-15T02:36:20Z",
      "updated_at": "2023-01-15T02:36:21Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASFfJ",
      "number": 235,
      "title": "Running Pynecone in Docker",
      "body": "Hi folks. I'm starting my first Pynecone project and am having some trouble debugging my Dockerfile to get it up and running. So far, I have Python and Node installed in the container, but am now having trouble getting bun to work correctly. I don't see any example Dockerfiles in the discussions yet, so I thought this would be a helpful conversation to have in public.\r\n\r\nSo far, my Dockerfile:\r\n```# syntax=docker/dockerfile:1\r\n\r\nFROM python:3.9-slim-buster\r\nWORKDIR /app\r\nCOPY requirements.txt requirements.txt\r\nRUN pip3 install -r requirements.txt\r\n\r\n# Install node.js using nvm\r\nENV NODE_VERSION=16.13.0\r\nRUN apt-get update && apt-get install -y curl\r\nRUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash\r\nENV NVM_DIR=/root/.nvm\r\nRUN . \"$NVM_DIR/nvm.sh\" && nvm install ${NODE_VERSION}\r\nRUN . \"$NVM_DIR/nvm.sh\" && nvm use v${NODE_VERSION}\r\nRUN . \"$NVM_DIR/nvm.sh\" && nvm alias default v${NODE_VERSION}\r\nENV PATH=\"/root/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}\"\r\nRUN node --version\r\nRUN npm --version\r\n\r\nCOPY . .\r\n\r\nCMD [ \"pc\", \"run\"]\r\n```\r\nWhich is creating this error when I run the container:\r\n```\r\n──────────────────────────── Starting Pynecone App ─────────────────────────────\r\n───────────────────────── Installing frontend packages ─────────────────────────\r\nTraceback (most recent call last):\r\n  File \"/usr/local/bin/pc\", line 8, in <module>\r\n    sys.exit(main())\r\n  File \"/usr/local/lib/python3.9/site-packages/typer/main.py\", line 214, in __call__\r\n    return get_command(self)(*args, **kwargs)\r\n  File \"/usr/local/lib/python3.9/site-packages/click/core.py\", line 1130, in __call__\r\n    return self.main(*args, **kwargs)\r\n  File \"/usr/local/lib/python3.9/site-packages/click/core.py\", line 1055, in main\r\n    rv = self.invoke(ctx)\r\n  File \"/usr/local/lib/python3.9/site-packages/click/core.py\", line 1657, in invoke\r\n    return _process_result(sub_ctx.command.invoke(sub_ctx))\r\n  File \"/usr/local/lib/python3.9/site-packages/click/core.py\", line 1404, in invoke\r\n    return ctx.invoke(self.callback, **ctx.params)\r\n  File \"/usr/local/lib/python3.9/site-packages/click/core.py\", line 760, in invoke\r\n    return __callback(*args, **kwargs)\r\n  File \"/usr/local/lib/python3.9/site-packages/typer/main.py\", line 532, in wrapper\r\n    return callback(**use_params)  # type: ignore\r\n  File \"/usr/local/lib/python3.9/site-packages/pynecone/pc.py\", line 86, in run\r\n    frontend_cmd(app.app)\r\n  File \"/usr/local/lib/python3.9/site-packages/pynecone/utils.py\", line 496, in run_frontend\r\n    setup_frontend()\r\n  File \"/usr/local/lib/python3.9/site-packages/pynecone/utils.py\", line 483, in setup_frontend\r\n    install_frontend_packages()\r\n  File \"/usr/local/lib/python3.9/site-packages/pynecone/utils.py\", line 418, in install_frontend_packages\r\n    subprocess.run(\r\n  File \"/usr/local/lib/python3.9/subprocess.py\", line 505, in run\r\n    with Popen(*popenargs, **kwargs) as process:\r\n  File \"/usr/local/lib/python3.9/subprocess.py\", line 951, in __init__\r\n    self._execute_child(args, executable, preexec_fn, close_fds,\r\n  File \"/usr/local/lib/python3.9/subprocess.py\", line 1821, in _execute_child\r\n    raise child_exception_type(errno_num, err_msg, err_filename)\r\nFileNotFoundError: [Errno 2] No such file or directory: '/root/.bun/bin/bun'\r\n```",
      "created_at": "2023-01-09T22:10:52Z",
      "updated_at": "2023-01-09T22:35:21Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "mattcaruso",
        "avatar_url": "https://avatars.githubusercontent.com/u/6909800?u=818122a50f74f01d262ad8f560f03c07f9b4d5b4&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR75w",
      "number": 190,
      "title": "what's the difference between pynecone and streamlit/gradio?",
      "body": "anyway this is an awesome project.",
      "created_at": "2022-12-29T09:06:40Z",
      "updated_at": "2023-01-09T04:34:35Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Kiris-tingna",
        "avatar_url": "https://avatars.githubusercontent.com/u/10670294?u=9bd0ed92affcf7b369254e9766df5996a9593f05&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASEl6",
      "number": 227,
      "title": "#1 Trending Python Project, #2 Overall Trending on Libhunt 🎉",
      "body": "https://www.libhunt.com\r\nhttps://www.libhunt.com/l/python",
      "created_at": "2023-01-08T19:38:04Z",
      "updated_at": "2023-01-08T19:38:05Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ASC4V",
      "number": 218,
      "title": "FYI: there is empty package at https://pypi.org/project/pinecone-io/",
      "body": "This can lead to attacks",
      "created_at": "2023-01-06T09:06:21Z",
      "updated_at": "2023-01-06T13:41:18Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "niki-sp",
        "avatar_url": "https://avatars.githubusercontent.com/u/17176395?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR0ek",
      "number": 124,
      "title": "Looking forward to using pynecone",
      "body": "Hi, everyone: \r\n\r\nI started to explore the web-framework world, for the first time ever, just about 2 weeks ago; not knowing JS, nor caring for HTML/ CSS but knowing Python, I was happy to find pure-python frameworks.  So, I am exploring a few, like Flet, Panel, Bokeh, Streamlit, NiceGUI. Pynecone being a \"newborn baby\", there are no reviews nor comparisons vs existing frameworks...I don't even remember how I found it, but I like it\r\n\r\nClearly, each framework has its own approach, its own idiosyncracies; so, far, I think I like Pynecone approach and I believe I understand it, but I need to get my feet wet.\r\n\r\nAnyway, looking forward to using it.  \r\n\r\nThanks. \r\n",
      "created_at": "2022-12-16T20:20:36Z",
      "updated_at": "2023-01-09T20:35:42Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR4RO",
      "number": 167,
      "title": "[Styling] Style attributes for disabled `pc.radio` ?",
      "body": "Hello,\r\n\r\nI cannot find the attributes to change the default color (light gray) for the text of a radio button when `is_disabled` is True:\r\n\r\n````python\r\nradio_style = {\r\n    \"background\": \"white\",\r\n    \"border_color\": \"black\",\r\n    \"padding\": \"0.7em\",\r\n    \"spacing\": \"10px\",    \r\n    \"_hover\": {\r\n        \"background\": \"lightblue\",\r\n        \"color\": \"white\",\r\n    },\r\n    \"_active\": {\r\n        \"background\": \"lightblue\",\r\n        \"color\": \"white\",\r\n    },\r\n    \"_disabled\": {\r\n        \"background\": \"white\",\r\n        \"border_color\": \"white\",\r\n        \"opacity\": \"99%\",\r\n    },\r\n}\r\n````\r\n\r\nAny idea ?",
      "created_at": "2022-12-22T19:42:37Z",
      "updated_at": "2022-12-29T08:48:05Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "matt-grain",
        "avatar_url": "https://avatars.githubusercontent.com/u/111311078?u=2a7d29738a87653c6c306067c75755e005bcfbe8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR0xG",
      "number": 130,
      "title": "Documentation (questions/suggestion?)",
      "body": "The Components Overview section contains a \"Pages\" article that, in my opinion, is out of place and redundant with the actual \"Pages\" section:\r\n\r\n```\r\nComponents    | \r\n    Overview  |          Pages (article out of place)\r\n    Props     | \r\n    Pages     | \r\n```\r\nAnother opinion (disclaimer: English is my second language, although I believe I know it well, by now :wink: )\r\n```\r\nEvents Reference\r\n    Triggers\r\n        **on_mouse_enter** \r\n        **on_mouse_over**\r\n            look identical\r\n            I vote for on_mouse_enter\r\n            \"to be over\" something does not sound like an event, more like a condition/state\r\n            \"to enter\" is an event\r\n        **on_mouse_leave**\r\n        **on_mouse_out** \r\n            look identical\r\n            I vote for on_mouse_leave\r\n            \"to be out\" does not sound like an event, more like a condition/state\r\n            \"to leave\" is an event\r\n```\r\nMy 2 cents",
      "created_at": "2022-12-17T05:04:23Z",
      "updated_at": "2022-12-29T08:49:40Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR6sm",
      "number": 186,
      "title": "v0.1.11 Websockets + Bug Fixes",
      "body": "## **What's Changed**\r\n* Update README.md by @bersace in https://github.com/pynecone-io/pynecone/pull/119\r\n* Add `size` to Input by @kbrgl in https://github.com/pynecone-io/pynecone/pull/143\r\n* Fix missing curly brace in _app.js by @kbrgl in https://github.com/pynecone-io/pynecone/pull/145\r\n* Add React fragment support by @kbrgl in https://github.com/pynecone-io/pynecone/pull/148\r\n* Use websockets for events by @picklelo in https://github.com/pynecone-io/pynecone/pull/150\r\n* Added initial integration test template. by @Alek99 in https://github.com/pynecone-io/pynecone/pull/152\r\n* Run integration test on pr approval. by @Alek99 in https://github.com/pynecone-io/pynecone/pull/155\r\n* Improve event processing performance by @picklelo in https://github.com/pynecone-io/pynecone/pull/153\r\n* Add Node Version Error Handling by @Alek99 in https://github.com/pynecone-io/pynecone/pull/159\r\n* Improve event processing performance by @picklelo in https://github.com/pynecone-io/pynecone/pull/163\r\n* Add template version check by @picklelo in https://github.com/pynecone-io/pynecone/pull/164\r\n* Fix generic alias checks by @picklelo in https://github.com/pynecone-io/pynecone/pull/172\r\n* Fix substate event handlers by @picklelo in https://github.com/pynecone-io/pynecone/pull/171\r\n* Fix event handler name by @picklelo in https://github.com/pynecone-io/pynecone/pull/174\r\n* Socket CORS by @Alek99 in https://github.com/pynecone-io/pynecone/pull/173\r\n* Small changes in Markdown component by @murilo-cunha in https://github.com/pynecone-io/pynecone/pull/179\r\n* Add log level args for pc run by @Alek99 in https://github.com/pynecone-io/pynecone/pull/182\r\n* Catch websocket disconnect by @picklelo in https://github.com/pynecone-io/pynecone/pull/184\r\n* Improve cli help messages by @picklelo in https://github.com/pynecone-io/pynecone/pull/185\r\n\r\n## New Contributors\r\n* @bersace made their first contribution in https://github.com/pynecone-io/pynecone/pull/119\r\n* @kbrgl made their first contribution in https://github.com/pynecone-io/pynecone/pull/143\r\n* @murilo-cunha made their first contribution in https://github.com/pynecone-io/pynecone/pull/179\r\n\r\n**Full Changelog**: https://github.com/pynecone-io/pynecone/compare/v0.1.10...v0.1.11\n\n<hr /><em>This discussion was created from the release <a href='https://github.com/pynecone-io/pynecone/releases/tag/v0.1.11'>v0.1.11 Websockets + Bug Fixes</a>.</em>",
      "created_at": "2022-12-27T17:43:15Z",
      "updated_at": "2022-12-27T17:43:16Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR5bb",
      "number": 176,
      "title": "How do you manage the state vars when the vars are much",
      "body": "In the case of having a User model with up to 15 fields and I would like to have a UserState, what is the best way to set/access the fields by querying the db for the user\r\n\r\n```\r\nclass TimeGeneric(pc.Model):\r\n    day_arrived: int\r\n    registered_on: datetime\r\n    updated_on: datetime\r\n\r\n\r\nclass User(TimeGeneric, table=True):\r\n    id: Optional[int] = Field(default=None, primary_key=True)\r\n    first_name: str\r\n    last_name: str\r\n    address: str\r\n\r\n    phone: Optional[str] = None\r\n    whatsapp_line: Optional[str] = None\r\n    email: Optional[str] = None\r\n\r\n    district: Optional[str] = None\r\n    group: Optional[str] = None\r\n    church: Optional[str] = None\r\n\r\n    role: RoleEnum = Field(sa_column=Column(Enum(RoleEnum)))\r\n    section: SectionEnum = Field(sa_column=Column(Enum(SectionEnum)))\r\n\r\n    is_admin: bool = False\r\n    is_convert: bool = False\r\n\r\n    school: str = None\r\n    level: str = None\r\n\r\n\r\nclass UserState(pc.State):\r\n    user: User\r\n    users: list[User] = []\r\n\r\n    def create_user(self, user: User):\r\n        with pc.session() as session:\r\n            session.add(user)\r\n            session.commit()\r\n            session.refresh(user)\r\n            return user\r\n\r\n    def update_user(self, user_id: int, user_info: dict):\r\n        with pc.session() as session:\r\n            user = session.exec(select(User).where(User.id == user_id)).one()\r\n            # update user with user_info\r\n            session.add(user)\r\n            session.commit()\r\n            session.refresh(user)\r\n            print(\"Updated user info: \", user)\r\n\r\n    def fetch_all_users(self):\r\n        with pc.session() as session:\r\n            users = session.exec(select(User)).all()\r\n            return users\r\n\r\n    def fetch_user_by_id(self, user_id: int):\r\n        with pc.session() as session:\r\n            user = session.exec(select(User).where(User.id == user_id)).first()\r\n            return user\r\n```\r\n\r\nI'd appreciate some guidance, am I doing it right?",
      "created_at": "2022-12-24T22:22:06Z",
      "updated_at": "2022-12-25T09:06:16Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "joshajiniran",
        "avatar_url": "https://avatars.githubusercontent.com/u/32210709?u=b8c5211b3043ff67592aeff529b8938ab6599ff5&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR4SC",
      "number": 170,
      "title": "How to go to another page from a button click?",
      "body": "Looks like a stupid question but... what would be the python code on the `on_click` event to load another page (like a `pc.link` does thru href)\r\n\r\nThanks !",
      "created_at": "2022-12-22T20:07:02Z",
      "updated_at": "2022-12-23T00:09:52Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "matt-grain",
        "avatar_url": "https://avatars.githubusercontent.com/u/111311078?u=2a7d29738a87653c6c306067c75755e005bcfbe8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR2wz",
      "number": 149,
      "title": "Add example showing webpage that reacts to database updates",
      "body": "It would be helpful to have an example that shows page data that updates automatically when a database is updated.\n\nAlso, it might be helpful to show an example that shows a page being updated upon receiving data via MQTT, since this is a popular IOT scenario, and it seems that pynecone would be perfect for IOT apps.",
      "created_at": "2022-12-20T17:30:36Z",
      "updated_at": "2022-12-20T17:34:10Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "jcyrio",
        "avatar_url": "https://avatars.githubusercontent.com/u/50239349?u=387fd90121379d68b3231340570ea36c5e26c623&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ARvpQ",
      "number": 68,
      "title": "How do you suggest we retrieve querystring or route values?",
      "body": "Let's say I want to create something like a blog, where we have an identifier in the query string or route for a post.\r\n\r\nI know how to do this in Flask, but I'm wondering if you have other thoughts on how to implement this with Pynecone.\r\n\r\nMy sense is that you've abstracted this the way you have with several other things, but I couldn't find any examples.\r\n\r\nSo, basically, let's say I have a list of items and want them to link to details. Or let's say I want people to be able to share URLs with dynamic querystring values. How do you suggest I implement this?\r\n\r\nThanks!",
      "created_at": "2022-12-11T19:28:42Z",
      "updated_at": "2022-12-19T18:21:09Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AQsGd",
        "body": "This isn't supported at the moment, but we have plans to add it soon. We have a ticket to track it [here](https://github.com/pynecone-io/pynecone/issues/63).\r\n\r\nThe design we had in mind currently that the render functions take in the query arguments. So if you had a blog page and you want the path to be `/blog/<post_id>` you could define your render function like:\r\n\r\n```\r\ndef blog(post_id: pc.Var[str]):\r\n  return pc.box(...)\r\n```\r\n\r\nThen you could add a route like\r\n```\r\napp.add_page(blog, path=\"/blog/:post_id\")\r\n```\r\n\r\nFor query parameters, we would make them accessible as kwargs.\r\n\r\n```\r\ndef blog(post_id: pc.Var[str], **kwargs):\r\n  ...\r\n```\r\n\r\nIn the app state, we would provide some way to access the query parameters. So in the event handlers, maybe you could call `self.get_query_params()` and do some logic with it.\r\n\r\nThis design is still in process, I'll post updates on the linked ticket as we make progress. We're open to ideas here."
      },
      "user": {
        "login": "simonmesmith",
        "avatar_url": "https://avatars.githubusercontent.com/u/5099521?u=7025ef7881332e5d9421cbc9586aad882bede515&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR1Z8",
      "number": 136,
      "title": "How to debug FastAPI?",
      "body": "Hi,\r\n\r\nI started to refactor my code (according to the discussion on a multipages application), and I broke something. The `even` API returns a 500 but there is no trace in the `pc.run` console.\r\n\r\nOnly in the browser network tab:\r\n\r\n![image](https://user-images.githubusercontent.com/111311078/208307424-16aff420-91a0-459d-abc1-a8119c2a4800.png)\r\n\r\n![image](https://user-images.githubusercontent.com/111311078/208307439-1b729c68-10a2-4e8f-acd1-24d0843876ab.png)\r\n\r\nWhere is the `event` POST defined?",
      "created_at": "2022-12-18T15:54:32Z",
      "updated_at": "2022-12-18T16:34:10Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "matt-grain",
        "avatar_url": "https://avatars.githubusercontent.com/u/111311078?u=2a7d29738a87653c6c306067c75755e005bcfbe8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR1XD",
      "number": 135,
      "title": "[Design] How to structure a complex application?",
      "body": "Hi,\r\n\r\nLet's assume I have a website with separate features, mostly independent (except maybe some user data).\r\nCurrently the state is defined at the `app` level so each `page` defined in the `app` shares the same state.\r\n\r\nIf every section of the application is in a separate `py` file, what is the best code structure to use?\r\n\r\nEx:\r\n- [0] `main.py` importing [1], [2], [3], defining the app, pages and compiling the stuff\r\n- [1] `global_state.py` file for the app global state\r\n- [2, 3, ...] `page_x.py` file per section, in this file the local state (inheriting the global state) and substates and rendering functions, importing [1]\r\n\r\nSomething like that?\r\nHow did you structure the pynecone.io website?\r\n\r\n",
      "created_at": "2022-12-18T14:05:55Z",
      "updated_at": "2022-12-18T15:58:07Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOITROHc4AQ8jt",
        "body": "This is a great question. There's no official best way, but the way you described is basically how our website is structured:\n\n* A file `base_state.py` that has global information, and which all the page states will subclass\n* For each page, a file like `landing_page.py` which has the state for that page (inheriting from the base state), along with the code to render the page.\n* A `styles.py` file with common styles used throughout the app pages\n* In the main app file, we define the app and add all the pages\n\nAs your app grows, you may also want to move out common components to their own files so they can be reused. This includes page templates (so for example you can include a navbar and footer for each page easily). We will update our site docs to include this info.\n\nIt seems to scale pretty well and is easy to reason about each page independently."
      },
      "user": {
        "login": "matt-grain",
        "avatar_url": "https://avatars.githubusercontent.com/u/111311078?u=2a7d29738a87653c6c306067c75755e005bcfbe8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR0xA",
      "number": 128,
      "title": "💻 WSL Pynecone Walkthrough",
      "body": "Big thanks to the @codingthunder for taking the time to make a walkthrough on how to use WSL for Pynecone!\r\n\r\nWe should have Pynecone windows compatibility stable in the coming weeks but this is a great temporary solution for windows users.\r\n\r\nIt can be found here: https://www.patreon.com/posts/76017903",
      "created_at": "2022-12-17T04:57:14Z",
      "updated_at": "2022-12-17T17:00:58Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR07-",
      "number": 131,
      "title": "Using PyCharm",
      "body": "I wanted to give it a go but ran into trouble as soon as I opened the (demo) app in PyCharm.\r\n\r\nEverything after:\r\n```\r\ndef index():\r\n  return = pc.center(\r\n    ...\r\n  )\r\n```\r\nis marked with a warning that 'center' is not callable.\r\n\r\nThis makes it unusable using my preferred IDE, which is a significant obstacle for me.\r\n\r\nIdeas? Do I need to do/set something in PyCharm?",
      "created_at": "2022-12-17T12:50:23Z",
      "updated_at": "2022-12-17T16:33:31Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "antigraviton",
        "avatar_url": "https://avatars.githubusercontent.com/u/5345284?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR0fO",
      "number": 125,
      "title": "Docs: Search ability",
      "body": "Hi,\r\n\r\nCan you guys add a search widget to the docs pages?  ",
      "created_at": "2022-12-16T20:32:08Z",
      "updated_at": "2022-12-17T04:10:29Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "gsal",
        "avatar_url": "https://avatars.githubusercontent.com/u/10213896?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4AR0W1",
      "number": 120,
      "title": "Using next.js API to proxify FastAPI",
      "body": "Hi,\r\n\r\nIf I'm not wrong currently the frontend is calling the fastapi backend directly so 2 ports need to be open on internet. And right now the FastAPI docs are available to everyone.\r\n\r\nWould it be possible to use next.js API routing to hide the fastapi backend (which could be deployed on the same machine or elsewhere without CORS issues) and that all frontend calls will be managed by next.js ?\r\n\r\nDue to this 2 ports constraints, I'm struggling to deploy my app to my current cloud provider (without using a VM)\r\n\r\nThanks !",
      "created_at": "2022-12-16T16:53:38Z",
      "updated_at": "2022-12-16T20:14:31Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "matt-grain",
        "avatar_url": "https://avatars.githubusercontent.com/u/111311078?u=2a7d29738a87653c6c306067c75755e005bcfbe8&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ARzzA",
      "number": 116,
      "title": "Pynecone export to html, css, and JS",
      "body": "Is there a way for Pynecone to export the python codes into html/css/JS files so I can host the web app on github?",
      "created_at": "2022-12-16T03:27:23Z",
      "updated_at": "2022-12-16T04:19:41Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "maddiew95",
        "avatar_url": "https://avatars.githubusercontent.com/u/31772094?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ARycN",
      "number": 95,
      "title": "How to synchronize browser and backend clock?",
      "body": "I noticed clock example clock used `await asyncio.sleep(1)` to show timer.\r\nBut that is not exactly one second, there is an difference of about 10ms after network synchronization. \r\nThe final performance is that it skips 1 second after running a while.\r\n\r\nOf course we could use `sleep(0.1)` for query faster, but that's definite not best practice.\r\nMain issue is we need have ability to operate BOM, like `setTimeout()`",
      "created_at": "2022-12-14T12:46:24Z",
      "updated_at": "2022-12-15T00:28:33Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "Evisolpxe",
        "avatar_url": "https://avatars.githubusercontent.com/u/17808825?v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ARww-",
      "number": 82,
      "title": "Pynecone News",
      "body": "# News About Pynecone\r\nFeel free to add any news or social media announcements about Pynecone here.\r\n\r\n### r/Python: [Alpha Launch](https://www.reddit.com/r/Python/comments/zh0pmy/pynecone_web_apps_in_pure_python/)\r\n### r/Programming: [Pynecone: Web Apps in Pure Python](https://www.reddit.com/r/programming/comments/zh0uov/i_made_a_way_to_build_web_apps_in_pure_python/)\r\n### Hacker News: [Alpha Launch](https://www.reddit.com/r/programming/comments/zh0uov/i_made_a_way_to_build_web_apps_in_pure_python/)\r\n\r\n",
      "created_at": "2022-12-13T03:34:44Z",
      "updated_at": "2022-12-15T04:35:35Z",
      "category": {
        "name": "News",
        "emoji": ":newspaper_roll:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ARwws",
      "number": 81,
      "title": "Showcase Your Pynecone App",
      "body": "Got a Pynecone app you want to share?\r\n\r\nMake a public repo and be sure to include a requirements.txt with `pynecone-io` in it and it will show up on our projects used by section seen [here](https://github.com/pynecone-io/pynecone/network/dependents). We would love to know what people are making with Pynecone!",
      "created_at": "2022-12-13T03:19:10Z",
      "updated_at": "2022-12-13T03:39:12Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ARu6t",
      "number": 56,
      "title": "Clear input fields after form posting",
      "body": "First off, I love the idea and the execution. Clean, understandable, easy to use.\r\n\r\nI have what's possibly a stupid question, however.\r\n\r\nI cannot seem to find a way to clear fields after saving data.\r\n\r\nFor example, I have a form with fields like this:\r\n\r\n```python\r\npc.input(\r\n   on_blur=State.set_title, placeholder=\"Title\", width=\"100%\"\r\n)\r\n...\r\n```\r\n\r\nI save the data and reset the attributes:\r\n\r\n```python\r\n\r\npc.button(\"Save Note\", on_click=State.save_note, width=\"100%\"),\r\n\r\n...\r\n\r\n    def save_note(self):\r\n        with pc.session() as session:\r\n            note = Note(\r\n                username=self.username, title=self.title, body=self.body\r\n            )\r\n            session.add(note)\r\n            session.commit()\r\n        self.reset()\r\n\r\n    def reset(self):\r\n        self.title = \"\"\r\n        self.body = \"\"\r\n\r\n```\r\n\r\nBut the text remains in the input fields.\r\n\r\nI tried setting the `value` attribute of input fields to state attributes, but then you can't change them via the UI, which makes sense as it's kind of circular logic.\r\n\r\nAnyway, help appreciated. Thanks!",
      "created_at": "2022-12-10T16:18:36Z",
      "updated_at": "2022-12-10T20:53:10Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "simonmesmith",
        "avatar_url": "https://avatars.githubusercontent.com/u/5099521?u=7025ef7881332e5d9421cbc9586aad882bede515&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ARvJf",
      "number": 57,
      "title": "Forum Preference",
      "body": "Trying to gage what everyones preferences are for communication.",
      "created_at": "2022-12-10T20:51:42Z",
      "updated_at": "2022-12-10T20:51:43Z",
      "category": {
        "name": "Polls",
        "emoji": ":ballot_box:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ARtFL",
      "number": 42,
      "title": "Alpha Release ",
      "body": "This is the first public release of Pynecone!🎊\n\n<hr /><em>This discussion was created from the release <a href='https://github.com/pynecone-io/pynecone/releases/tag/v0.1.8'>Alpha Release </a>.</em>",
      "created_at": "2022-12-09T04:56:18Z",
      "updated_at": "2022-12-09T04:56:19Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    },
    {
      "id": "D_kwDOITROHc4ARnCX",
      "number": 21,
      "title": "Welcome to Pynecone!",
      "body": "# Welcome to Pynecone! :wave:\r\nWe’re using Discussions as a place to connect with other members of the Pynecone community. We hope that you:\r\n\r\n- Ask questions you’re wondering about.\r\nShare ideas.\r\n- Engage with other community members.\r\n- Welcome others and are open-minded. Remember that this is a community we\r\nbuild together 💪.",
      "created_at": "2022-11-30T20:56:11Z",
      "updated_at": "2022-11-30T21:05:04Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "Alek99",
        "avatar_url": "https://avatars.githubusercontent.com/u/38776361?u=bd6c163fe787c2de1a26c881598e54b67e2482dd&v=4"
      }
    }
  ],
  "details": {
    "id": 557075997,
    "node_id": "R_kgDOITROHQ",
    "name": "reflex",
    "full_name": "reflex-dev/reflex",
    "private": false,
    "owner": {
      "login": "reflex-dev",
      "id": 104714959,
      "node_id": "O_kgDOBj3Szw",
      "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/reflex-dev",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "description": "🕸️ Web apps in pure Python 🐍",
    "fork": false,
    "url": "https://api.github.com/repos/reflex-dev/reflex",
    "created_at": "2022-10-25T03:08:48Z",
    "updated_at": "2025-12-07T04:27:32Z",
    "pushed_at": "2025-12-06T01:37:59Z",
    "homepage": "https://reflex.dev",
    "size": 28841,
    "stargazers_count": 27780,
    "watchers_count": 27780,
    "language": "Python",
    "has_issues": true,
    "has_projects": false,
    "has_downloads": true,
    "has_wiki": false,
    "has_pages": false,
    "has_discussions": true,
    "forks_count": 1664,
    "archived": false,
    "disabled": false,
    "open_issues_count": 253,
    "license": {
      "key": "apache-2.0",
      "name": "Apache License 2.0",
      "spdx_id": "Apache-2.0",
      "url": "https://api.github.com/licenses/apache-2.0",
      "node_id": "MDc6TGljZW5zZTI="
    },
    "allow_forking": true,
    "is_template": false,
    "web_commit_signoff_required": false,
    "topics": {
      "0": "framework",
      "1": "gui",
      "2": "open-source",
      "3": "python",
      "4": "web"
    },
    "visibility": "public",
    "forks": 1664,
    "open_issues": 253,
    "watchers": 27780,
    "default_branch": "main",
    "permissions": {
      "admin": false,
      "maintain": false,
      "push": false,
      "triage": false,
      "pull": true
    },
    "temp_clone_token": "",
    "custom_properties": {
      "vanta_production_branch_name": "main"
    },
    "organization": {
      "login": "reflex-dev",
      "id": 104714959,
      "node_id": "O_kgDOBj3Szw",
      "avatar_url": "https://avatars.githubusercontent.com/u/104714959?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/reflex-dev",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "network_count": 1664,
    "subscribers_count": 188
  },
  "lastFetched": 1765093709165
}