{"id":20612880,"url":"https://github.com/powersync-ja/powersync-js","last_synced_at":"2026-04-14T09:01:10.037Z","repository":{"id":198173313,"uuid":"699908722","full_name":"powersync-ja/powersync-js","owner":"powersync-ja","description":"SDK that enables local-first and real-time reactive apps with embedded SQLite for JavaScript clients, including React Native and Web","archived":false,"fork":false,"pushed_at":"2026-01-19T15:48:43.000Z","size":43335,"stargazers_count":603,"open_issues_count":44,"forks_count":61,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-01-19T20:49:13.655Z","etag":null,"topics":["local-first","local-storage","offline","offline-first","powersync","sql","sqlite","state-management","sync"],"latest_commit_sha":null,"homepage":"https://www.powersync.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/powersync-ja.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"audit-ci.jsonc","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":"2023-10-03T15:17:51.000Z","updated_at":"2026-01-15T08:40:10.000Z","dependencies_parsed_at":"2025-12-08T10:14:26.031Z","dependency_job_id":null,"html_url":"https://github.com/powersync-ja/powersync-js","commit_stats":{"total_commits":709,"total_committers":25,"mean_commits":28.36,"dds":0.8222849083215797,"last_synced_commit":"30825f3e6137a86cf37a2e393e9e193bcf1debc4"},"previous_names":["journeyapps/powersync-react-native-sdk","powersync-ja/powersync-react-native-sdk","powersync-ja/powersync-js"],"tags_count":631,"template":false,"template_full_name":null,"purl":"pkg:github/powersync-ja/powersync-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/powersync-ja%2Fpowersync-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/powersync-ja%2Fpowersync-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/powersync-ja%2Fpowersync-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/powersync-ja%2Fpowersync-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/powersync-ja","download_url":"https://codeload.github.com/powersync-ja/powersync-js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/powersync-ja%2Fpowersync-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28780089,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["local-first","local-storage","offline","offline-first","powersync","sql","sqlite","state-management","sync"],"created_at":"2024-11-16T11:08:14.399Z","updated_at":"2026-04-14T09:01:10.008Z","avatar_url":"https://github.com/powersync-ja.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.powersync.com\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/powersync-ja/.github/assets/7372448/d2538c43-c1a0-4c47-9a76-41462dba484f\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres, MongoDB, MySQL or SQL Server on the server-side._\n\n# PowerSync JavaScript SDKs\n\n`powersync-js` is the monorepo for PowerSync JavaScript SDKs.\n\n## Monorepo Structure: Packages\n\n- [packages/react-native](./packages/react-native/README.md)\n\n  - React Native SDK implementation (extension of `packages/common`)\n\n- [packages/web](./packages/web/README.md)\n\n  - JS Web SDK implementation (extension of `packages/common`)\n\n- [packages/node](./packages/node/README.md)\n\n  - Node.js client implementation (extension of `packages/common`)\n\n- [packages/react](./packages/react/README.md)\n\n  - React integration for PowerSync.\n\n- [packages/vue](./packages/vue/README.md)\n\n  - Vue composables for PowerSync.\n\n- [packages/tanstack-query](./packages/tanstack-react-query/README.md)\n\n  - [TanStack Query](https://tanstack.com/query/) integration for React.\n\n- [packages/attachments](./packages/attachments/README.md)\n\n  - Attachments helper package for React Native and JavaScript/TypeScript projects (deprecated).\n\n- [packages/attachments-storage-react-native](./packages/attachments-storage-react-native/README.md)\n\n  - React Native file system storage adapters for PowerSync attachments (alpha).\n\n- [packages/kysely-driver](./packages/kysely-driver/README.md)\n\n  - [Kysely](https://kysely.dev/) integration (ORM) for React Native and JavaScript/TypeScript projects.\n\n- [packages/drizzle-driver](./packages/drizzle-driver/README.md)\n\n  - [Drizzle](https://orm.drizzle.team/) integration (ORM) for React Native and JavaScript/TypeScript projects.\n\n- [packages/powersync-op-sqlite](./packages/powersync-op-sqlite/README.md)\n\n  - [OP-SQLite](https://github.com/OP-Engineering/op-sqlite) integration for React Native projects. Alternative to the default usage of [react-native-quick-sqlite](https://github.com/powersync-ja/react-native-quick-sqlite).\n\n- [packages/common](./packages/common/README.md)\n  - Shared package: TypeScript implementation of a PowerSync database connector, streaming sync bucket implementation and attachment utilities.\n\n## Demo Apps / Example Projects\n\nDemo applications are located in the [`demos/`](./demos/) directory. Also see our [Demo Apps / Example Projects](https://docs.powersync.com/resources/demo-apps-example-projects) gallery which lists all projects by the backend and client-side framework they use.\n\n### React Native\n\n- [demos/react-native-supabase-todolist](./demos/react-native-supabase-todolist/README.md): A React Native to-do list example app using a Supabase backend.\n- [demos/react-native-supabase-group-chat](./demos/react-native-supabase-group-chat/README.md): A React Native group chat example app using a Supabase backend.\n- [demos/react-native-supabase-background-sync](./demos/react-native-supabase-background-sync/README.md): A React Native example app demonstrating background sync using PowerSync, Expo and Supabase.\n- [demos/react-native-web-supabase-todolist](./demos/react-native-web-supabase-todolist/README.md) A React Native to-do list example app using a Supabase backend that's compatible with React Native for Web.\n- [demos/django-react-native-todolist](./demos/django-react-native-todolist/README.md) A React Native to-do list example app using a Django backend.\n\n### Web\n\n- [demos/react-supabase-todolist](./demos/react-supabase-todolist/README.md): A React to-do list example app using the PowerSync Web SDK and a Supabase backend.\n- [demos/react-supabase-todolist-tanstackdb](./demos/react-supabase-todolist-tanstackdb/README.md): A React to-do list example app using the PowerSync Web SDK and a Supabase backend + [TanStackDB](https://tanstack.com/db/latest) collections.\n- [demos/react-supabase-time-based-sync](./demos/react-supabase-time-based-sync/README.md): A React demo using Sync Streams to subscribe to date-filtered data dynamically, with a Supabase backend.\n- [demos/react-multi-client](./demos/react-multi-client/README.md): A React widget that illustrates how data flows from one PowerSync client to another.\n- [demos/yjs-react-supabase-text-collab](./demos/yjs-react-supabase-text-collab/README.md): A React real-time text editing collaboration example app powered by [Yjs](https://github.com/yjs/yjs) CRDTs and [Tiptap](https://tiptap.dev/), using the PowerSync Web SDK and a Supabase backend.\n- [demos/vue-supabase-todolist](./demos/vue-supabase-todolist/README.md): A Vue to-do list example app using the PowerSync Web SDK and a Supabase backend.\n- [demos/angular-supabase-todolist](./demos/angular-supabase-todolist/README.md) An Angular to-do list example app using the PowerSync Web SDK and a Supabase backend.\n\n- [demos/example-webpack](./demos/example-webpack/README.md): A minimal example demonstrating bundling with Webpack.\n- [demos/example-vite](./demos/example-vite/README.md): A minimal example demonstrating bundling with Vite.\n- [demos/example-vite-encryption](./demos/example-vite-encryption/README.md): A minimal example demonstrating web encryption.\n- [demos/example-nextjs](./demos/example-nextjs/README.md): An example demonstrating setup with Next.js.\n\n### Electron\n\n- [demos/example-electron](./demos/example-electron/README.md) An Electron example web rendered app using the PowerSync Web SDK in the renderer process.\n- [demos/example-electron-node](./demos/example-electron-node/README.md) An Electron example that runs PowerSync in the main process using the PowerSync Node.js SDK.\n\n### Capacitor\n\n- [demos/example-capacitor](./demos/example-capacitor/README.md) A Capacitor example app using the PowerSync Web SDK.\n\n### Node\n\n- [demos/example-node](./demos/example-node/README.md) A small CLI example built using the PowerSync SDK for Node.js.\n\n## Tools\n\n- [tools/diagnostics-app](./tools/diagnostics-app): A standalone web app that presents stats about a user's local database (incl. tables and sync buckets).\n\n# Development\n\nThis monorepo uses pnpm.\n\nInstall workspace dependencies\n\n```bash\npnpm install\n```\n\nBuild packages\n\n```bash\npnpm build:packages\n```\n\n## Tests\n\nSome packages use [Playwright](https://www.npmjs.com/package/playwright) for testing. Install Playwright dependencies with:\n\n```bash\npnpm exec playwright install-deps\npnpm exec playwright install\n```\n\n## Versioning\n\n### Development Packages\n\nDevelopment packages can be published by manually triggering the `release` workflow. Development packages are versioned as `0.0.0-{tag}-DATETIMESTAMP`.\n\nFor technical npm reasons, publishing dev and release packages needs to happen from within a single workflow. `release.yml` contains checks to only release\ndev packages when triggered by `workflow_dispatch`.\n\n### Production Packages\n\nPull requests should contain Changesets for changed packages.\n\nAdd changesets with\n\n```Bash\npnpm changeset add\n```\n\nMerging a PR with Changesets will automatically create a PR with version bumps. That PR will be merged when releasing.\n\n## React Native Quick SQLite Development\n\nBy default, the PowerSync React Native SDK uses [a fork of react-native-quick-sqlite](https://github.com/powersync-ja/react-native-quick-sqlite)\n\nTesting live development changes to `@journeyapps/react-native-quick-sqlite` will not work with standard `yarn link` commands. Metro does not work well with symlinks \u003chttps://github.com/facebook/metro/issues/286\u003e.\n\nThe process of releasing development packages for `@journeyapps/react-native-quick-sqlite` for each change can be tedious and slow. A faster (and hackier) method is to use [mtsl](https://www.npmjs.com/package/mtsl) which will watch and copy the package into this workspace's `node_modules`.\n\n```bash\nnpm install -g mtsl\n```\n\n```bash\nmtsl add -s \"[source path to your react-native-quick-sqlite repo folder]\" -d \"[this workspaces root node_modules folder]\"/@journeyapps/react-native-quick-sqlite\n```\n\n```bash\nmtsl start \"[the id returned from step above]\"\n```\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpowersync-ja%2Fpowersync-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpowersync-ja%2Fpowersync-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpowersync-ja%2Fpowersync-js/lists"}