// the find
scaffold-eth/scaffold-eth-2
Open source forkable Ethereum dev stack
Scaffold-ETH 2 is a monorepo starter for Ethereum dapp development, combining Hardhat/Foundry, Next.js, wagmi/viem, and RainbowKit into a working baseline with contract hot-reload and a built-in debug UI. It targets Solidity developers who want to skip the wiring and get straight to building. The fork count (1353) tells you this is the actual starting point for a lot of real projects.
- Contract hot reload with automatic ABI sync to the frontend is the killer feature here — edit a Solidity file, redeploy, and the debug UI and TypeScript types update without manual steps.
- The custom hooks (useScaffoldReadContract, useScaffoldWriteContract, etc.) provide proper TypeScript inference over your contract ABI, which saves a lot of repetitive wagmi boilerplate and catches argument type errors at compile time.
- Includes a local block explorer and faucet out of the box, so you don't need MetaMask pointed at a public testnet just to see transactions during development.
- AI agent context files (.claude/, .cursor/, .agents/) are a pragmatic addition — they give coding assistants enough project context to generate contract and hook code that actually fits the project structure.
- The monorepo uses Yarn workspaces but ships with both Hardhat and Foundry options, which creates two different mental models and documentation paths. Newcomers frequently pick the wrong one for their use case and get confused when examples don't match.
- State management is Zustand with a single store.ts file — fine for the starter, but it provides zero guidance on how to scale this when your app has real state complexity, so you'll rewrite it anyway.
- The debug UI and block explorer are useful during dev but are included in the production Next.js build by default. There's no built-in mechanism to strip them out for production deployments, which means you need to remember to do it yourself.
- Event history (useScaffoldEventHistory) fetches all historical logs on mount with no pagination or block range cap by default, which will time out or hit rate limits quickly against any public RPC on contracts with significant history.