{"id":13773158,"url":"https://github.com/pmndrs/react-three-next","last_synced_at":"2025-05-14T23:07:04.727Z","repository":{"id":38374365,"uuid":"327307205","full_name":"pmndrs/react-three-next","owner":"pmndrs","description":"React Three Fiber, Threejs, Nextjs starter","archived":false,"fork":false,"pushed_at":"2024-06-21T00:17:05.000Z","size":3004,"stargazers_count":2689,"open_issues_count":37,"forks_count":367,"subscribers_count":40,"default_branch":"main","last_synced_at":"2025-05-09T07:21:32.606Z","etag":null,"topics":["react","react-three-fiber","starter","tailwind","threejs","webgl"],"latest_commit_sha":null,"homepage":"https://react-three-next.vercel.app/","language":"JavaScript","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/pmndrs.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}},"created_at":"2021-01-06T12:37:53.000Z","updated_at":"2025-05-08T09:33:27.000Z","dependencies_parsed_at":"2023-12-27T03:35:22.234Z","dependency_job_id":"f041d6f8-e3e0-4748-ae69-ed2988a8ce89","html_url":"https://github.com/pmndrs/react-three-next","commit_stats":{"total_commits":349,"total_committers":29,"mean_commits":12.03448275862069,"dds":0.2063037249283668,"last_synced_commit":"bb29a61949601e1c563688faf33a12d062ec3710"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmndrs%2Freact-three-next","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmndrs%2Freact-three-next/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmndrs%2Freact-three-next/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmndrs%2Freact-three-next/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pmndrs","download_url":"https://codeload.github.com/pmndrs/react-three-next/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253981149,"owners_count":21994217,"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":["react","react-three-fiber","starter","tailwind","threejs","webgl"],"created_at":"2024-08-03T17:01:12.143Z","updated_at":"2025-05-14T23:06:59.718Z","avatar_url":"https://github.com/pmndrs.png","language":"JavaScript","funding_links":[],"categories":["Engine / Framework","JavaScript","3D"],"sub_categories":["General 3D App Framework"],"readme":"[![Downloads](https://img.shields.io/npm/dt/create-r3f-app.svg?style=flat\u0026colorA=000000\u0026colorB=000000)](https://www.npmjs.com/package/create-r3f-app) [![Discord Shield](https://img.shields.io/discord/740090768164651008?style=flat\u0026colorA=000000\u0026colorB=000000\u0026label=discord\u0026logo=discord\u0026logoColor=ffffff)](https://discord.gg/ZZjjNvJ)\n\n# :japanese_castle: React-Three-Next starter\n\nA minimalist starter for NextJS, @react-three/fiber and Threejs.\n\n![](https://user-images.githubusercontent.com/2223602/192515435-a3d2c1bb-b79a-428e-92e5-f44c97a54bf7.jpg)\n\n- TTL ~ 100ms\n- First load JS ~ 79kb\n- Lighthouse score of 100 (Performance, Accessibility, Best Practices, SEO)\n\nThis starter allows you to navigate seamlessly between pages with dynamic dom and/or canvas content without reloading or creating a new canvas every time. 3D components are usable anywhere in the dom. The events, dom, viewport, everything is synchronized!\n\n### ⚫ Demo :\n\n[![image](https://user-images.githubusercontent.com/15867665/231395343-fd4770e3-0e39-4f5c-ac30-71d823a9ef1c.png)](https://react-three-next.vercel.app/)\n\n### How to use\n\n#### Installation\n\n_Tailwind is the default style. styled-components (styled) are also available._\n\n```sh\nyarn create r3f-app next my-app\n# yarn create r3f-app \u003cnext\u003e my-app \u003ctailwind|styled\u003e? -ts?\n# npx create-r3f-app next my-app\n```\n\n### :passport_control: Typescript\n\nFor typescript add the parameter `-ts` or `--typescript`:\n\n```sh\nyarn create r3f-app next my-app -ts\n# npx create-r3f-app next my-app -ts\n```\n\n### :mount_fuji: Features\n\n- [x] GLSL imports\n- [x] Canvas is not getting unmounted while navigating between pages\n- [x] Canvas components usable in any div of the page\n- [x] Based on the App directory architecture\n- [x] PWA Support\n\n### :bullettrain_side: Architecture\n\nThanks to [tunnel-rat](https://github.com/pmndrs/tunnel-rat) the starter can portal components between separate renderers. Anything rendered inside the `\u003cView/\u003e` component of the starter will be rendered in the 3D Context. For better performances it uses gl.scissor to cut the viewport into segments.\n\n```jsx\n\u003cdiv className='relative'\u003e\n  \u003cView orbit className='relative sm:h-48 sm:w-full'\u003e\n    \u003cDog scale={2} /\u003e\n    // Some 3D components will be rendered here\n  \u003c/View\u003e\n\u003c/div\u003e\n```\n\n### :control_knobs: Available Scripts\n\n- `yarn dev` - Next dev\n- `yarn analyze` - Generate bundle-analyzer\n- `yarn lint` - Audit code quality\n- `yarn build` - Next build\n- `yarn start` - Next start\n\n### ⬛ Stack\n\n- [`create-r3f-app`](https://github.com/utsuboco/create-r3f-app) \u0026ndash; Command line tool to simplify the installation.\n- [`threejs`](https://github.com/mrdoob/three.js/) \u0026ndash; A lightweight, 3D library with a default WebGL renderer.\n- [`@react-three/fiber`](https://github.com/pmndrs/react-three-fiber) \u0026ndash; A React renderer for Threejs on the web and react-native.\n- [`@react-three/drei` - Optional](https://github.com/pmndrs/drei) \u0026ndash; useful helpers for react-three-fiber\n- [`@react-three/a11y` - Optional](https://github.com/pmndrs/react-three-a11y/) \u0026ndash; Accessibility tools for React Three Fiber\n- [`r3f-perf` - Optional](https://github.com/RenaudRohlinger/r3f-perf) \u0026ndash; Tool to easily monitor react threejs performances.\n\n### How to contribute :\n\n```bash\ngit clone https://github.com/pmndrs/react-three-next\n\u0026\u0026 cd react-three-next \u0026\u0026 yarn install\n```\n\n### Maintainers :\n\n- [`twitter 🐈‍⬛ @onirenaud`](https://twitter.com/onirenaud)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmndrs%2Freact-three-next","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpmndrs%2Freact-three-next","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmndrs%2Freact-three-next/lists"}