Create a Group
This guide will help you create a Group on Lens.
To create an Group, follow these steps.
You MUST be authenticated as Builder, Account Manager, or Account Owner to create a Group.
First, construct a Group Metadata object.
- TS/JS
- JSON Schema
Use the @lens-protocol/metadata package to construct a valid GroupMetadata object:
Example
import { group } from "@lens-protocol/metadata";
const metadata = group({ name: "XYZ", description: "My group description", icon: "lens://BsdfA…",});
Next, upload the Group Metadata object to a public URI.
import { storageClient } from "./storage-client";
const { uri } = await storageClient.uploadAsJson(metadata);
console.log(uri); // e.g., lens://4f91ca…
This example uses Grove storage to host the Metadata object. See the Lens Metadata Standards guide for more information on hosting Metadata objects.
Next, deploy the Group smart contract.
- TypeScript
- GraphQL
- React
Use the createGroup action to deploy the Lens Group smart contract.
To learn more about how to use Group Rules, see the Group Rules guide.
- TypeScript
- GraphQL
- React
Next, handle the result using the adapter for the library of your choice and wait for it to be indexed.
See the Transaction Lifecycle guide for more information on how to determine the status of the transaction.
- TypeScript
- GraphQL
Finally, fetch the newly created Group using the fetchGroup action.
viem
import { fetchGroup } from "@lens-protocol/client/actions";
// …
const result = await createGroup(sessionClient, { metadataUri: uri("lens://4f91…"), // the URI from the previous step}) .andThen(handleOperationWith(walletClientOrSigner)) .andThen(sessionClient.waitForTransaction) .andThen((txHash) => fetchGroup(sessionClient, { txHash }));
if (result.isErr()) { return console.error(result.error);}
// group: Group | nullconst group = result.value;
That's it—you have successfully created a Group on Lens!