ConnectKit puts a styled wallet connect flow on top of wagmi
Connecting a wallet, made simple.
At a glance
- What is it?
- ConnectKit is a React component library for connecting a wallet to a dApp, built on wagmi and distributed as a set of styled components with predesigned themes. It ships as a yarn workspaces monorepo with runnable Next.js and Vite examples, and the interesting engineering is in how the package is built and how the examples are wired to wagmi and viem.
- Who is it for?
- ConnectKit fits a React dApp team that wants a wallet connect flow with a designed look and finished behaviour, rather than assembling modal, connector list and theme handling from parts. It is the wrong choice if you want a bare headless layer, since the value here is the interface rather than the abstraction.
- Can I use it commercially?
- Yes. BSD-2-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 70 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The value is the interface, not the connection logic
ConnectKit is described as a React component library for connecting a wallet to your dApp, and it supports the most popular connectors and chains out of the box. The important structural fact is the second one in the feature list: it uses top libraries such as wagmi.
So the division of labour is clear. wagmi provides the React hooks, the connector implementations and the chain configuration, and viem sits underneath that as the low level client. ConnectKit provides the layer a product actually ships: the modal, the connector list, the button, the account display, and the styling for all of it.
That positioning explains both the appeal and the constraint. A team that wants a designed wallet connect experience, with a light and a dark theme, spends far less work than building the modal, handling connector state, and getting the account display right. A team that has already built all of that and wants to keep it gets nothing from this library, since the interfaces underneath are wagmi's and could be used directly.
The stated features follow from that split. TypeScript ready, with types straight out of the box. Ecosystem standards, using libraries such as wagmi. A simple UX. And beautiful themes, either predesigned or fully customised.
The root package is named aave-connectkit in the repository manifest, and the README points at the Aave Twitter account for updates.
A workspaces monorepo with one library and five examples
The repository is a yarn workspaces monorepo, and the root package.json makes the shape explicit. The root package is named aave-connectkit with version 0.0.0 and is marked private, and the workspaces are packages/* for the library and examples/* for the runnable applications. The main field points at packages/connectkit/src/index.ts, so the source is the entry point in development.
The examples directory is the part with real value for an adopter, because it shows the library in the setups people actually use. There are five: nextjs, nextjs-siwe, nextjs-app, vite and testbench.
The scripts in the root manifest show how the workspace is driven. Each dev script delegates to a workspace by name, so dev:connectkit runs the connectkit workspace's dev script, dev:vite runs the vite workspace, dev:nextjs the nextjs one, and dev:nextjs-siwe the SIWE variant. There is also a dev:testbench, which is the script for the testbench example.
The build path is the same shape. The build script runs node build.js, then the connectkit workspace build, and then copies the root README.md into packages/connectkit/README.md, which is how the published package gets its documentation. The build:ci script runs a build in every workspace with yarn workspaces foreach -R run build, and lint:ci does the same for lint.
The testbench example is worth noticing as a concept, because it is a separate workspace rather than a page inside one of the other examples, which suggests a place to exercise the components in isolation rather than only inside a full dApp shell.
Running an example is clone, install, and one script
The README documents how to run the examples locally, and the sequence is short. You clone the project and install the dependencies.
$ git clone [email protected]:family/connectkit.git
$ cd connectkit
$ yarn installThen you start the bundler for the example you want, and the README shows two ways of expressing that choice. The first pair of scripts starts the two library-facing workspaces.
$ yarn dev:connectkit
$ yarn dev:connectkit-next-siweThe second set selects a specific example, and the comments name each one.
$ yarn dev:vite # Vite
$ yarn dev:nextjs # Next.js
$ yarn dev:nextjs-siwe # Next.js with SIWETwo alternatives are offered for people who do not want a local checkout. The examples are available as CodeSandbox links, one for Next.js with TypeScript and one for the Vite example, and the README says you can try them out directly in your browser. The documentation also points at a getting started guide for setting up a ConnectKit plus wagmi plus viem project, and there are separate pages for the full documentation and the API reference.
The practical note is that this is a yarn project, not an npm one. The repository has a .yarnrc.yml and a .yarn/ directory, and the package manager field in the manifest is set, so a team that standardises on npm will want to confirm the workspace tooling before cloning.
The SIWE example is the one to read for a sign-in flow
Three of the five examples are Next.js based and they are not the same example. There is a plain nextjs one, a nextjs-app one, and nextjs-siwe. The SIWE variant gets its own dev script, its own build script, and its own workspace package name, connectkit-next-siwe in the dev:connectkit-next-siwe script, and the build script build:connectkit-next-siwe builds it separately from the others.
SIWE is the sign-in with Ethereum pattern, and having it as a first class example rather than a blog post means the library is being exercised against a real authentication flow, not only a balance display. For a team building a dApp where a user signs in with their wallet, that example is the closest thing to a reference implementation of the flow.
The fact that it is a separate workspace with its own package also tells you something about the build. A SIWE flow needs a server side piece to verify the message and issue a session, so the example is not just a bag of React components. The dev:nextjs-siwe script and the build:nextjs-siwe script exist because that workspace differs from the plain nextjs one, and the root build script for the testbench even chains two builds together.
The remaining example, vite, is the same idea without a framework opinion. Running the same library through Next.js and through Vite is a reasonable way of checking that the components do not depend on a specific bundler setup.
Styling and the peer dependency boundary in the build
The theming story is one of the four stated features, with predesigned themes or full customisation offered. The implementation detail that shows in the build configuration is styled-components: the dev dependencies include typescript-plugin-styled-components and a plugin for terser.
The bundler is Rollup, with rollup-plugin-typescript2 for the TypeScript compilation, rollup-plugin-node-resolve, rollup-plugin-visualizer for inspecting the bundle, and rollup-plugin-peer-deps-external. That last one is the important choice for a component library. It marks the peer dependencies as external so they are not bundled into the published package, which is the correct behaviour for a library that expects the host application to supply its own copy of React, wagmi and viem.
The dev dependency versions in the root manifest are worth noting as the baseline the examples are built against: viem at ^2.23.2, wagmi at ^2.14.11 and react at ^18.0.0. wagmi 2.x and viem 2.x are the current major lines, so an application on wagmi 1.x would be a different situation, and the manifest here does not describe it.
The package also supports a TypeScript first workflow throughout, from the src/index.ts entry point to the published types, which is why the feature list leads with TypeScript ready rather than treating it as an afterthought.
BSD 2 clause, and a release history with gaps
The licence is BSD 2 clause, with the file in the LICENSE directory entry at the repository root. For a component that ends up inside a dApp front end, that is a permissive grant with no copyleft obligation on the host product, which is what a wallet connection UI usually needs to be.
The release history is the thing to look at carefully. The listed releases are v1.9.2 on 2026-03-24, v1.9.1 on 2025-06-13 and v1.9.0 on 2025-04-02. Between 1.9.1 and 1.9.2 there is a gap of about nine months, while the 1.9.0 to 1.9.1 gap is about two and a half months. The last push to the repository was on 2026-08-13, which is after the newest tag.
That pattern is not the same as an abandoned project. The CHANGELOG.md at the root is the record to read, and a monorepo with a private root package and per workspace versioning can ship a lot of changes without cutting a root tag. But for a team pinning a version in a production dApp, the practical advice is to read the changelog for the specific version you are moving to rather than assuming patch releases are routine.
The repository also carries a CONTRIBUTING.md, a.prettierrc and a.vscode/ directory, and the README asks contributors to read the contribution guidelines before starting anything.
Editorial conclusion
ConnectKit fits a React dApp team that wants a wallet connect flow with a designed look and finished behaviour, rather than assembling modal, connector list and theme handling from parts. It is the wrong choice if you want a bare headless layer, since the value here is the interface rather than the abstraction. Verify first that your wagmi and viem versions match what the examples use, and read the CHANGELOG.md before upgrading, because the release history shows the 1.9 line moving with long gaps between patch releases.
Frequently asked questions
What is ConnectKit and what does it build on?
ConnectKit is a React component library for connecting a wallet to a dApp. The feature list names ecosystem standards such as wagmi as the underlying library, and the root package.json builds the examples against wagmi 2.14.11 and viem 2.23.2.
How do I run the ConnectKit examples locally?
Clone the repository, run yarn install, and then start the example you want with a script such as yarn dev:vite for the Vite example or yarn dev:nextjs for the Next.js one. There is also a yarn dev:nextjs-siwe for the sign-in-with-Ethereum variant, and CodeSandbox links for trying the examples in a browser.
What is the difference between the nextjs and nextjs-siwe examples?
The SIWE variant is a separate workspace with its own dev and build scripts, dev:nextjs-siwe and build:connectkit-next-siwe, so it exercises the library against a sign-in-with-Ethereum flow rather than only a wallet connection.
Can I customise the appearance of the ConnectKit UI?
Yes. The feature list offers predesigned themes or full customisation, and the build configuration shows styled-components in use, with typescript-plugin-styled-components in the dev dependencies.
What licence is ConnectKit released under?
BSD 2 clause, with the terms in the LICENSE file at the repository root. The newest listed release is v1.9.2 from 2026-03-24, and the last push to the repository was on 2026-08-13.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/family-connectkit)Was this useful?