{"_id":"@unif/react-native-chat","_rev":"66-cb7f1073e773e1d8e2e1452dd7acf00d","name":"@unif/react-native-chat","dist-tags":{"latest":"2.1.1"},"versions":{"2.0.0":{"name":"@unif/react-native-chat","version":"2.0.0","keywords":["react-native","ios","android"],"author":{"url":"https://github.com/unif-design","name":"unif-design","email":"382724935@qq.com"},"license":"MIT","_id":"@unif/react-native-chat@2.0.0","maintainers":[{"name":"hopeonedat","email":"liulijun0810@gmail.com"},{"name":"danhua123","email":"2485069913@qq.com"}],"homepage":"https://github.com/unif-design/react-native-chat#readme","bugs":{"url":"https://github.com/unif-design/react-native-chat/issues"},"dist":{"shasum":"95d9b67d60b7c5e02b224c05eb0a47fa1898d931","tarball":"https://registry.npmjs.org/@unif/react-native-chat/-/react-native-chat-2.0.0.tgz","fileCount":345,"integrity":"sha512-pm7sG7j1uBoAUMyceBvTJokfb9hwTeN5xNnklTKaGLXUVDZAHQMoaJLJweFeJRpAjwrf5OmRxJ2yLQDcfyfRkQ==","signatures":[{"sig":"MEUCIQCxglk1IVOXzQbfuZ9u7BaytGSzSm5FErf/JRkqVcf2rAIgK2i0S5pNSYE+G9qqJ/zDQD2XIQgQYqvSjCsef/xBj7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@unif%2freact-native-chat@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":308128},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","engines":{"node":"^20.19.4 || ^22.13.0 || ^24.3.0 || >=25.0.0"},"exports":{".":{"types":"./lib/typescript/src/index.d.ts","default":"./lib/module/index.js","unif-react-native-chat-source":"./src/index.tsx"},"./package.json":"./package.json"},"gitHead":"233b82644ed9648a0affa91df177e8b247437b62","scripts":{"web":"yarn example web","lint":"eslint \"**/*.{js,jsx,mjs,ts,tsx}\"","test":"jest","clean":"del-cli example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @unif/react-native-chat-example","prepare":"bob build","release":"release-it --only-version","build:web":"yarn example build:web","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ece4b52-6a73-4a43-bea5-227a33e981a3"}},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version} [skip ci]","requireCommits":true},"npm":{"publish":true,"skipChecks":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"infile":"CHANGELOG.md","preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/unif-design/react-native-chat.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.19.1","description":"基于 Unif Design 的独立 React Native 聊天组件","directories":{},"_nodeVersion":"24.13.0","dependencies":{"react-native-marked":"8.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^30.3.0","react":"19.2.3","turbo":"^2.10.8","eslint":"^9.39.5","del-cli":"^7.0.0","lefthook":"^2.1.10","prettier":"^3.9.6","react-dom":"19.2.3","@eslint/js":"^9.39.5","commitlint":"^21.2.1","release-it":"^21.0.1","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/react":"^19.2.0","react-native":"0.86.3","@jest/globals":"^30.3.0","hermes-eslint":"0.37.0","@eslint/compat":"^2.1.0","@eslint/eslintrc":"^3.3.6","react-native-svg":"15.15.5","react-native-web":"~0.21.2","react-test-renderer":"19.2.3","eslint-plugin-ft-flow":"^3.0.11","react-native-worklets":"0.12.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","react-native-reanimated":"4.6.0","react-native-builder-bob":"^0.43.0","@react-native/jest-preset":"0.86.3","@unif/react-native-design":"0.32.0","@react-native/babel-preset":"0.86.3","@react-native/metro-config":"0.86.3","@react-native/eslint-config":"0.86.3","react-native-gesture-handler":"3.1.0","@sbaiahmed1/react-native-blur":"6.0.1","@testing-library/react-native":"13.3.3","react-native-safe-area-context":"5.8.0","@commitlint/config-conventional":"^21.2.0","react-native-reanimated-carousel":"5.0.0","@release-it/conventional-changelog":"^12.0.0"},"peerDependencies":{"react":">=19.2.3 <20.0.0","react-native":">=0.86.0","react-native-svg":">=15","@unif/react-native-design":"^0.32.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-chat_2.0.0_1789702312757_0.4153335417752171","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","tools":["jest","lefthook","release-it","vite","eslint"],"version":"0.63.1","languages":"js"}},"2.1.0":{"name":"@unif/react-native-chat","version":"2.1.0","keywords":["react-native","ios","android"],"author":{"url":"https://github.com/unif-design","name":"unif-design","email":"382724935@qq.com"},"license":"MIT","_id":"@unif/react-native-chat@2.1.0","maintainers":[{"name":"hopeonedat","email":"liulijun0810@gmail.com"},{"name":"danhua123","email":"2485069913@qq.com"}],"homepage":"https://unif-design.github.io/react-native-chat/","bugs":{"url":"https://github.com/unif-design/react-native-chat/issues"},"dist":{"shasum":"5956020451a945abf9fcf9d48423155e347510ad","tarball":"https://registry.npmjs.org/@unif/react-native-chat/-/react-native-chat-2.1.0.tgz","fileCount":365,"integrity":"sha512-IjaMW/eGhjrumX8e+NGCRj6bXsaHNS8CnzhaURjxNlyyz7zDaOobJgdc2c7xMjZvNMi03VrE+nH88OgE9L+uOw==","signatures":[{"sig":"MEUCIGN65Wk/n53Lknt8SabIMbAKXoNGvJjb+5qhp3DAaoxJAiEArhVXAQn0gOU6GTGu2vk074+oPyKU9+X4CuKIdenwaRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCyz1nxoAvE05sCd25uM0BeQiDnQQbTD6WSxURbLsw4YAIhAMmMQdtI9h2CRceX5jKJcNZlm7sKlPAC0F0D1b8b2tsm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@unif%2freact-native-chat@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":351535},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","engines":{"node":"^20.19.4 || ^22.13.0 || ^24.3.0 || >=25.0.0"},"exports":{".":{"types":"./lib/typescript/src/index.d.ts","default":"./lib/module/index.js","unif-react-native-chat-source":"./src/index.tsx"},"./package.json":"./package.json"},"gitHead":"ec810349d3d216d6d9110fc2854210012d8109b4","scripts":{"web":"yarn workspace @unif/react-native-chat-website start","lint":"eslint \"**/*.{js,jsx,mjs,ts,tsx}\"","test":"jest","clean":"del-cli example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @unif/react-native-chat-example","prepare":"bob build","release":"release-it --only-version","website":"yarn workspace @unif/react-native-chat-website","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ece4b52-6a73-4a43-bea5-227a33e981a3"}},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version} [skip ci]","requireCommits":true},"npm":{"publish":true,"skipChecks":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"infile":"CHANGELOG.md","preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/unif-design/react-native-chat.git","type":"git"},"workspaces":["example","website"],"_npmVersion":"11.19.1","description":"Unif React Native 聊天组件：消息、输入、附件和交互展示","directories":{},"_nodeVersion":"24.13.0","dependencies":{"react-native-marked":"8.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^30.3.0","react":"19.2.3","turbo":"^2.10.8","eslint":"^9.39.5","del-cli":"^7.0.0","lefthook":"^2.1.10","prettier":"^3.9.6","react-dom":"19.2.3","@eslint/js":"^9.39.5","commitlint":"^21.2.1","release-it":"^21.0.1","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/react":"^19.2.0","react-native":"0.86.3","@jest/globals":"^30.3.0","hermes-eslint":"0.37.0","@eslint/compat":"^2.1.0","@eslint/eslintrc":"^3.3.6","react-native-svg":"15.15.5","react-native-web":"~0.21.2","react-test-renderer":"19.2.3","eslint-plugin-ft-flow":"^3.0.11","react-native-worklets":"0.12.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","react-native-reanimated":"4.6.0","react-native-builder-bob":"^0.43.0","@react-native/jest-preset":"0.86.3","@unif/react-native-design":"0.33.0","@react-native/babel-preset":"0.86.3","@react-native/metro-config":"0.86.3","@react-native/eslint-config":"0.86.3","react-native-gesture-handler":"3.1.0","@sbaiahmed1/react-native-blur":"6.0.1","@testing-library/react-native":"13.3.3","react-native-safe-area-context":"5.8.0","@commitlint/config-conventional":"^21.2.0","react-native-reanimated-carousel":"5.0.0","@release-it/conventional-changelog":"^12.0.0"},"peerDependencies":{"react":">=19.2.3 <20.0.0","react-native":">=0.86.0","react-native-svg":">=15","@unif/react-native-design":"^0.33.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-chat_2.1.0_1789898080420_0.5357010004789358","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","tools":["jest","lefthook","release-it","eslint"],"version":"0.63.1","languages":"js"}},"2.1.1":{"_id":"@unif/react-native-chat@2.1.1","bugs":{"url":"https://github.com/unif-design/react-native-chat/issues"},"dist":{"shasum":"63ab363d07c26535286513ee0d76b54c6a9019f7","tarball":"https://registry.npmjs.org/@unif/react-native-chat/-/react-native-chat-2.1.1.tgz","fileCount":365,"integrity":"sha512-4F2uDpba0QEMU2M/Y75qkVX7hPSSqfdHhNZKRU/bUPo6YmNWcOAyxfoVO+9tttq/Zmr/r/7yREo5vFJy9BCWag==","signatures":[{"sig":"MEYCIQDyrAoSWCawsvUpTXyZzin6N9YxCRCZ+9jEqPcexpmKegIhAPi3TEDX4Y3tmSAyjVpYj1SVF3eR1eOJyDibpB1+xJat","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDAzkp2lGrH44u2H43azhiqrUnCvxutqEUYqJJ3D3IJvgIgbZ1NBEgyDq62585OPNjwDZA3eRhZS7/+C1+P6rQ4ngU="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@unif%2freact-native-chat@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":351734},"main":"./lib/module/index.js","name":"@unif/react-native-chat","types":"./lib/typescript/src/index.d.ts","author":{"url":"https://github.com/unif-design","name":"unif-design","email":"382724935@qq.com"},"engines":{"node":"^20.19.4 || ^22.13.0 || ^24.3.0 || >=25.0.0"},"exports":{".":{"types":"./lib/typescript/src/index.d.ts","default":"./lib/module/index.js","unif-react-native-chat-source":"./src/index.tsx"},"./package.json":"./package.json"},"gitHead":"ddef28e81bf5b85163bfe0d828b2460a65a12583","license":"MIT","scripts":{"web":"yarn workspace @unif/react-native-chat-website start","lint":"eslint \"**/*.{js,jsx,mjs,ts,tsx}\"","test":"jest","clean":"del-cli example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @unif/react-native-chat-example","prepare":"bob build","release":"release-it --only-version","website":"yarn workspace @unif/react-native-chat-website","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"version":"2.1.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ece4b52-6a73-4a43-bea5-227a33e981a3"}},"homepage":"https://unif-design.github.io/react-native-chat/","keywords":["react-native","ios","android"],"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version} [skip ci]","requireCommits":true},"npm":{"publish":true,"skipChecks":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"infile":"CHANGELOG.md","preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/unif-design/react-native-chat.git","type":"git"},"workspaces":["example","website"],"_npmVersion":"11.19.1","description":"Unif React Native 聊天组件：消息、输入、附件和交互展示","directories":{},"maintainers":[{"name":"hopeonedat","email":"liulijun0810@gmail.com"},{"name":"danhua123","email":"2485069913@qq.com"}],"_nodeVersion":"24.13.0","dependencies":{"react-native-marked":"8.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^30.3.0","react":"19.2.3","turbo":"^2.10.8","eslint":"^9.39.5","del-cli":"^7.0.0","lefthook":"^2.1.10","prettier":"^3.9.6","react-dom":"19.2.3","@eslint/js":"^9.39.5","commitlint":"^21.2.1","release-it":"^21.0.1","typescript":"^6.0.3","@babel/core":"^7.29.7","@types/react":"^19.2.0","react-native":"0.86.3","@jest/globals":"^30.3.0","hermes-eslint":"0.37.0","@eslint/compat":"^2.1.0","@eslint/eslintrc":"^3.3.6","react-native-svg":"15.15.5","react-native-web":"~0.21.2","react-test-renderer":"19.2.3","eslint-plugin-ft-flow":"^3.0.11","react-native-worklets":"0.12.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","react-native-reanimated":"4.6.0","react-native-builder-bob":"^0.43.0","@react-native/jest-preset":"0.86.3","@unif/react-native-design":"0.33.0","@react-native/babel-preset":"0.86.3","@react-native/metro-config":"0.86.3","@react-native/eslint-config":"0.86.3","react-native-gesture-handler":"3.1.0","@sbaiahmed1/react-native-blur":"6.0.1","@testing-library/react-native":"13.3.3","react-native-safe-area-context":"5.8.0","@commitlint/config-conventional":"^21.2.0","react-native-reanimated-carousel":"5.0.0","@release-it/conventional-changelog":"^12.0.0"},"peerDependencies":{"react":">=19.2.3 <20.0.0","react-native":">=0.86.0","react-native-svg":">=15","@unif/react-native-design":"^0.33.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-chat_2.1.1_1789902855743_0.49629156152028453"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","tools":["jest","lefthook","release-it","eslint"],"version":"0.63.1","languages":"js"}}},"time":{"created":"2026-09-18T03:31:52.601Z","modified":"2026-09-20T11:14:16.165Z","0.1.0":"2026-02-13T08:46:30.470Z","0.1.1":"2026-02-13T09:28:40.305Z","0.1.2":"2026-02-13T11:12:27.650Z","0.2.0":"2026-02-24T02:23:37.082Z","0.2.1":"2026-02-24T03:42:44.519Z","0.2.2":"2026-02-24T07:14:38.749Z","0.2.3":"2026-02-24T07:34:18.213Z","0.2.4":"2026-02-24T08:56:59.608Z","0.2.5":"2026-02-24T10:21:35.566Z","0.3.0":"2026-02-27T03:46:44.578Z","0.3.1":"2026-02-27T05:39:57.054Z","0.4.0":"2026-02-27T06:29:53.648Z","0.4.1":"2026-02-27T07:42:31.125Z","0.4.2":"2026-02-27T12:55:00.797Z","0.5.0":"2026-02-27T14:02:51.348Z","0.5.4":"2026-02-27T23:28:29.354Z","0.5.5":"2026-02-28T03:08:11.549Z","0.5.6":"2026-02-28T03:50:25.759Z","0.5.7":"2026-02-28T05:14:21.795Z","0.5.8":"2026-02-28T05:27:27.190Z","0.5.9":"2026-02-28T05:48:23.839Z","0.5.10":"2026-02-28T06:52:45.208Z","0.5.11":"2026-02-28T07:09:08.620Z","0.5.12":"2026-02-28T07:23:48.737Z","0.5.13":"2026-02-28T07:30:28.318Z","0.5.17":"2026-02-28T08:06:21.957Z","0.5.18":"2026-02-28T08:11:24.402Z","0.5.19":"2026-03-01T12:57:53.177Z","0.5.20":"2026-03-01T13:04:43.488Z","0.5.21":"2026-03-12T02:36:09.094Z","0.6.0":"2026-03-19T07:25:47.335Z","0.6.1":"2026-03-20T03:10:10.332Z","1.0.0":"2026-03-20T12:59:30.382Z","1.1.0":"2026-03-20T13:59:57.808Z","1.1.1":"2026-03-21T01:30:13.781Z","1.2.2":"2026-03-22T03:57:02.422Z","1.3.0":"2026-03-22T09:20:13.059Z","1.3.1":"2026-03-23T00:07:46.653Z","1.3.2":"2026-03-23T03:22:53.616Z","1.4.1":"2026-03-23T08:52:48.011Z","1.4.2":"2026-03-23T09:34:00.315Z","1.4.3":"2026-03-23T14:29:44.329Z","1.4.5":"2026-03-26T02:12:45.676Z","1.5.3":"2026-04-09T07:44:37.215Z","1.5.5":"2026-04-09T08:34:56.857Z","1.5.6":"2026-04-09T08:38:10.479Z","1.5.7":"2026-04-09T08:57:41.322Z","1.5.8":"2026-04-09T09:15:54.966Z","1.5.9":"2026-04-09T10:40:48.155Z","1.5.10":"2026-04-09T11:15:47.015Z","1.5.11":"2026-04-09T11:35:06.583Z","1.5.12":"2026-04-09T12:24:09.527Z","1.5.13":"2026-04-09T13:24:05.719Z","1.6.1":"2026-04-10T03:07:26.176Z","1.7.0":"2026-04-10T03:57:40.305Z","1.7.1":"2026-04-10T06:47:34.910Z","1.7.2":"2026-04-11T03:27:12.523Z","1.7.3":"2026-04-11T03:49:10.897Z","1.8.1":"2026-04-14T06:40:29.505Z","1.8.2":"2026-04-14T06:51:04.185Z","1.8.3":"2026-04-14T07:41:16.267Z","2.0.0":"2026-09-18T03:31:52.904Z","2.1.0":"2026-09-20T09:54:40.542Z","2.1.1":"2026-09-20T11:14:15.854Z"},"bugs":{"url":"https://github.com/unif-design/react-native-chat/issues"},"author":{"url":"https://github.com/unif-design","name":"unif-design","email":"382724935@qq.com"},"license":"MIT","homepage":"https://unif-design.github.io/react-native-chat/","keywords":["react-native","ios","android"],"repository":{"url":"git+https://github.com/unif-design/react-native-chat.git","type":"git"},"description":"Unif React Native 聊天组件：消息、输入、附件和交互展示","maintainers":[{"name":"hopeonedat","email":"liulijun0810@gmail.com"},{"name":"danhua123","email":"2485069913@qq.com"}],"readme":"# @unif/react-native-chat\n\n基于 `@unif/react-native-design` 的 TypeScript 聊天 UI 组件库，支持独立组件和完整聊天布局，可供其他 React Native 项目复用。\n\n[文档站](https://unif-design.github.io/react-native-chat/) · [组件源码](src/index.tsx) · [运行示例](example/README.md) · [常见问题](https://unif-design.github.io/react-native-chat/docs/faq) · [开发资料](docs/DEVELOPMENT.md)\n\n## 提供什么\n\n| 用途           | 组件                               |\n| -------------- | ---------------------------------- |\n| 聊天布局与消息 | Chat、MessageList、Message         |\n| 输入与附件     | Composer、Attachments、Suggestions |\n| 交互与反馈     | Confirmation、Process、Feedback    |\n| 来源与引用     | Sources、Citation                  |\n\n组件负责展示和事件；应用负责会话、草稿、文件上传、Agent 请求和业务处理。Markdown 使用 `react-native-marked`。\n\n## 最小用法\n\n在已配置 Design `ThemeProvider` 的应用中使用受控输入：\n\n```tsx\nimport { useState } from 'react';\nimport { Composer } from '@unif/react-native-chat';\n\nexport function ChatInput({ onSend }: { onSend: (text: string) => void }) {\n  const [text, setText] = useState('');\n\n  return (\n    <Composer\n      value={text}\n      onChangeText={setText}\n      primaryAction={{ kind: 'send', onPress: onSend }}\n    />\n  );\n}\n```\n\n发送事件交付原始文字；发送后是否清空输入由应用决定。键盘避让由页面负责，MessageList 的父容器需要有界高度。\n\n## 本地开始\n\n从仓库根目录执行，Node 版本见 [.nvmrc](.nvmrc)：\n\n```sh\nyarn install --immutable --mode=skip-build\nyarn web\n```\n\n仓库自带 Yarn；没有全局命令时可用 `node .yarn/releases/yarn-4.11.0.cjs` 代替 `yarn`。原生示例及检查入口见 [example](example/README.md)。\n\n## 文档\n\n- [LLM 文档索引](https://unif-design.github.io/react-native-chat/llms.txt)：按需查询组件与 FAQ。\n- [公共导出](src/index.tsx)与[组件类型](src/components/)：查询当前可用 API。\n- [开发资料](docs/DEVELOPMENT.md)：架构契约、依赖说明和验证入口。\n- [研发技能](https://github.com/unif-skill/unif-portal-dev-skills) · [贡献指南](CONTRIBUTING.md) · [MIT 许可](LICENSE)\n","readmeFilename":"README.md"}