{"id":21804953,"url":"https://github.com/pez/androidcljsrnhotreloadfreeze","last_synced_at":"2026-05-11T03:37:19.061Z","repository":{"id":66560056,"uuid":"383545469","full_name":"PEZ/AndroidCljsrnHotreloadFreeze","owner":"PEZ","description":null,"archived":false,"fork":false,"pushed_at":"2021-07-07T11:41:54.000Z","size":4971,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-26T04:25:19.833Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PEZ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-06T17:14:25.000Z","updated_at":"2021-07-07T11:41:58.000Z","dependencies_parsed_at":"2023-02-28T20:15:41.754Z","dependency_job_id":null,"html_url":"https://github.com/PEZ/AndroidCljsrnHotreloadFreeze","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PEZ%2FAndroidCljsrnHotreloadFreeze","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PEZ%2FAndroidCljsrnHotreloadFreeze/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PEZ%2FAndroidCljsrnHotreloadFreeze/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PEZ%2FAndroidCljsrnHotreloadFreeze/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PEZ","download_url":"https://codeload.github.com/PEZ/AndroidCljsrnHotreloadFreeze/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244759814,"owners_count":20505709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-27T11:57:35.394Z","updated_at":"2026-05-11T03:37:19.020Z","avatar_url":"https://github.com/PEZ.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Android cljsrn hot-reload freeze repro\n\nThis is a minimal reproduction of a strange problem where the Android app freezes when hot-reloading.\n\nThe React Native app is created using\n\n```\n$ npx react-native init AwesomeProject\n````\n\nas per https://reactnative.dev/docs/environment-setup#native\n\nThen a `shadow-cljs.edn` file and some silly ClojureScript was added.\n\n## Some big-ish maps\n\nThe interesting parts of the project code are the `many_defs_[1-6].cljs` files. They are created using the code in `lorem.clj`. They contain 1000 definitions each, all of which define a var bound to a map with entries `:a` to `:f`, each referencing a random substring of this text:\n\n\u003e Aenean viverra, ante in mollis cursus, enim ipsum eleifend metus, non ultrices mauris erat eget magna. Mauris molestie elit finibus turpis pharetra dictum. Maecenas eget turpis faucibus, mollis nulla ac, posuere sem. Etiam vitae dictum libero, euismod aliquet tellus. Aliquam ante erat, volutpat vitae bibendum sit amet, fermentum eu diam. Donec finibus lorem luctus pulvinar euismod. Nam nec ante tellus. Aenean interdum velit tincidunt tortor rutrum, ac bibendum urna pharetra. Phasellus vitae dapibus mi. Sed quis felis et odio ultricies commodo eget ut enim.\n\nSo, that is 1000 maps with 7 strings of maximum that ^ length.\n\n**NB:** All files contain the same definitions. Each file is basically a copy of the first one. (As I don't know if ClojureScripts interns strings, I don't know if that is important, it is more a function of me being lazy.)\n\n## Reproduction\n\nThe `many-defs-[1-6]` namespaces have ignored (`#_`) requires in `core.cljs`. Start the project with:\n\n```\nmpm i\n```\n\nThen use your favorite way of building the app in shadow-cljs watch mode. \n\nThen start the Metro bundler/packager.\n\nThen start the Android app:\n\n```\n$ npm run android\n```\n\nDisable Fast Refresh, and start the Debug session. Check that you can hot-reload some small change of the app.\n\nThen unlock all six requires of the `many-defs-#` namespaces, and hot-reload.\n\n**Expected**: Shadow hot-reloads the change (with no visible change)\n\n**Actual**: The debugger disconnects and the app stops responding.\n\n## Discussion\n\nI have tried to reproduce this with Krell as well, but it hasn't happened. I haven't been trying that much, so it is not clear to me that this is an isolated shadow-cljs issue.\n\nWhen I run this, only two of the `many-defs-#` namespaces need to be required in order for the freeze to happen. The rest are included for better freeze guarantee. If it doesn't happen for you with two requires, try with moar of them.\n\nI've enabled the [Discussions](https://github.com/PEZ/AndroidCljsrnHotreloadFreeze/discussions) tab on this repo. Please engage!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpez%2Fandroidcljsrnhotreloadfreeze","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpez%2Fandroidcljsrnhotreloadfreeze","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpez%2Fandroidcljsrnhotreloadfreeze/lists"}