{"id":52069049,"url":"https://github.com/js2me/mobx-solid","last_synced_at":"2026-08-03T06:30:26.574Z","repository":{"id":373030632,"uuid":"1309299849","full_name":"js2me/mobx-solid","owner":"js2me","description":"⚡ MobX bindings for SolidJS — reactive state management with fine-grained UI updates (~0.4 kB gzip)","archived":false,"fork":false,"pushed_at":"2026-08-01T21:46:38.000Z","size":322,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-08-01T23:12:15.166Z","etag":null,"topics":["mobx","mobx-react","solid"],"latest_commit_sha":null,"homepage":"https://js2me.github.io/mobx-solid/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/js2me.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-22T22:10:58.000Z","updated_at":"2026-08-01T21:46:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/js2me/mobx-solid","commit_stats":null,"previous_names":["js2me/mobx-solid"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/js2me/mobx-solid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/js2me%2Fmobx-solid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/js2me%2Fmobx-solid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/js2me%2Fmobx-solid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/js2me%2Fmobx-solid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/js2me","download_url":"https://codeload.github.com/js2me/mobx-solid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/js2me%2Fmobx-solid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36223792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-03T02:00:06.975Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["mobx","mobx-react","solid"],"created_at":"2026-08-03T06:30:25.660Z","updated_at":"2026-08-03T06:30:26.565Z","avatar_url":"https://github.com/js2me.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mobx-solid\n\nMobX bindings for [SolidJS](https://www.solidjs.com/) — reactive state management with fine-grained UI updates.\n\nBridge MobX observables with SolidJS's compile-time reactivity — no proxy hacks, no double tracking.\n\n**~0.4 kB gzip** · Zero config · TypeScript-first · SSR-ready\n\n---\n\n## 📖 [Read docs →](https://js2me.github.io/mobx-solid)\n\n---\n\n## Why mobx-solid?\n\n| Feature | What you get |\n|---|---|\n| Fine-grained reactivity | Only DOM nodes that depend on changed observables update |\n| MobX ecosystem | `observable`, `action`, `computed`, `autorun` — the full toolbox |\n| Zero boilerplate | No `observer()` HOC, no `useSyncExternalStore` — just write components |\n| SSR support | Works with SolidJS server-side rendering out of the box |\n| TypeScript-first | Full type safety with zero `any` escapes |\n| Tiny footprint | ~0.4 kB gzip — minimal runtime overhead |\n\n---\n\n## Installation\n\n```bash\nnpm install mobx-solid mobx solid-js\n# or\npnpm add mobx-solid mobx solid-js\n```\n\n---\n\n## Quick Start\n\n```tsx\nimport { enableObservableTracking } from \"mobx-solid\";\nimport { observable } from \"mobx\";\nimport { render } from \"solid-js/web\";\n\n// Enable MobX → SolidJS reactivity bridge (call once at app startup)\nenableObservableTracking();\n\nconst store = observable({\n  count: 0,\n  get double() {\n    return this.count * 2;\n  },\n  increment() {\n    this.count++;\n  },\n});\n\nfunction Counter() {\n  return (\n    \u003cdiv\u003e\n      \u003cp\u003e\n        {store.count} × 2 = {store.double}\n      \u003c/p\u003e\n      \u003cbutton onClick={() =\u003e store.increment()}\u003e+\u003c/button\u003e\n    \u003c/div\u003e\n  );\n}\n\nrender(() =\u003e \u003cCounter /\u003e, document.getElementById(\"app\")!);\n```\n\n\u003e Call `enableObservableTracking()` once at your app's entry point — after that, MobX observables automatically integrate with SolidJS's reactivity system.\n\n---\n\n## How it works\n\nmobx-solid hooks into MobX's internal reaction tracking and translates observable reads into SolidJS reactive primitives. When a MobX observable changes, only the exact SolidJS DOM nodes that read that value update — true fine-grained reactivity, not component-level re-rendering.\n\n---\n\n## API\n\n| Function | Description |\n|---|---|\n| `enableObservableTracking()` | Enable the MobX → SolidJS reactivity bridge |\n| `disableObservableTracking()` | Disable the bridge (useful for SSR cleanup) |\n| `observable` | MobX observable — works with SolidJS components automatically |\n| `computed` | MobX computed — auto-tracked by SolidJS |\n| `action` | MobX action — batch mutations for optimal DOM updates |\n\n---\n\n## SSR Support\n\n```tsx\nimport { enableObservableTracking, disableObservableTracking } from \"mobx-solid\";\n\nenableObservableTracking();\nconst html = renderToString(() =\u003e \u003cApp /\u003e);\ndisableObservableTracking(); // Clean up after rendering\n```\n\n---\n\n## Compatibility\n\n- MobX **6.x**\n- SolidJS **1.6+**\n- TypeScript **5.x**\n- SSR / Hydration\n\n---\n\n## License\n\nMIT © [Sergey Volkov](https://github.com/js2me)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjs2me%2Fmobx-solid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjs2me%2Fmobx-solid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjs2me%2Fmobx-solid/lists"}