{"id":30049894,"url":"https://github.com/zpg6/esptool-react","last_synced_at":"2026-03-07T06:32:25.454Z","repository":{"id":302681193,"uuid":"982787562","full_name":"zpg6/esptool-react","owner":"zpg6","description":"React library that provides hooks and context for programming ESP32/ESP8266 devices using esptool-js.","archived":false,"fork":false,"pushed_at":"2025-07-03T19:42:51.000Z","size":201,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-26T12:09:13.334Z","etag":null,"topics":["esp32","esptool","esptool-js","nextjs","react","webserial"],"latest_commit_sha":null,"homepage":"https://esptool-react.com","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/zpg6.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2025-05-13T12:07:32.000Z","updated_at":"2026-02-05T00:31:26.000Z","dependencies_parsed_at":"2025-08-07T12:21:18.612Z","dependency_job_id":"21074047-7945-4baa-b8e9-2aa78373648e","html_url":"https://github.com/zpg6/esptool-react","commit_stats":null,"previous_names":["zpg6/esptool-react"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/zpg6/esptool-react","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpg6%2Fesptool-react","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpg6%2Fesptool-react/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpg6%2Fesptool-react/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpg6%2Fesptool-react/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zpg6","download_url":"https://codeload.github.com/zpg6/esptool-react/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpg6%2Fesptool-react/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30209086,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T05:23:27.321Z","status":"ssl_error","status_checked_at":"2026-03-07T05:00:17.256Z","response_time":53,"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":["esp32","esptool","esptool-js","nextjs","react","webserial"],"created_at":"2025-08-07T12:04:42.162Z","updated_at":"2026-03-07T06:32:25.421Z","avatar_url":"https://github.com/zpg6.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# esptool-react\n\nA React library that provides hooks and context for programming ESP32/ESP8266 devices using esptool-js.\n\n[![NPM Version](https://img.shields.io/npm/v/esptool-react)](https://www.npmjs.com/package/esptool-react)\n[![NPM Downloads](https://img.shields.io/npm/dt/esptool-react)](https://www.npmjs.com/package/esptool-react)\n[![License: MIT](https://img.shields.io/npm/l/esptool-react)](https://opensource.org/licenses/MIT)\n\n**LIVE DEMO**: [https://esptool-react.com/](https://esptool-react.com/)\n\nDemo implementation is available in the [`examples/nextjs/`](./examples/nextjs/) directory showcasing a complete ESP development console with programming and monitoring capabilities.\n\n## Features\n\n- 🔌 **React Hooks \u0026 Context**: Clean API for ESP device communication\n- 📱 **Web Serial API Integration**: Direct browser-to-device communication\n- 🌐 **Browser Compatibility Detection**: Automatic WebSerial support detection with user guidance\n- 🔧 **Firmware Validation**: Built-in validation and guidance utilities\n- 📊 **Real-time Progress**: Track flashing progress and device status\n- 🎯 **TypeScript Support**: Full type safety and IntelliSense\n- 🛠️ **Multi-chip Support**: Works with ESP32, ESP8266, and other ESP variants\n- 📁 **File Management**: Handle multiple firmware files with address validation\n- 🚀 **Modern React**: Built for React 17+ with hooks-first approach\n\n## Installation\n\n```bash\nnpm install esptool-react\n```\n\n## Usage\n\n```tsx\nimport { ESPLoaderProvider, useEspLoader } from 'esptool-react';\n\nfunction App() {\n  return (\n    \u003cESPLoaderProvider\n      initialBaudrate={115200}\n      initialDebugLogging={false}\n    \u003e\n      \u003cESPProgrammer /\u003e\n    \u003c/ESPLoaderProvider\u003e\n  );\n}\n\nfunction ESPProgrammer() {\n  const { state, actions } = useEspLoader();\n  \n  const handleConnect = async () =\u003e {\n    await actions.connect();\n  };\n  \n  const handleFlash = async () =\u003e {\n    const files = [/* your ESP files */];\n    await actions.program(files);\n  };\n  \n  return (\n    \u003cdiv\u003e\n      \u003cp\u003eStatus: {state.isConnected ? 'Connected' : 'Disconnected'}\u003c/p\u003e\n      \u003cbutton onClick={handleConnect}\u003eConnect\u003c/button\u003e\n      \u003cbutton onClick={handleFlash}\u003eFlash Firmware\u003c/button\u003e\n    \u003c/div\u003e\n  );\n}\n```\n\n## License\n\n[MIT](./LICENSE)\n\n## Contributing\n\nContributions are welcome! Whether it's bug fixes, feature additions, or documentation improvements, we appreciate your help in making this project better. For major changes or new features, please open an issue first to discuss what you would like to change. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzpg6%2Fesptool-react","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzpg6%2Fesptool-react","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzpg6%2Fesptool-react/lists"}