Create an App
This guide will walk you through the process of creating a Lens App.
To create an App, follow these steps.
You MUST be authenticated as Builder create an App.
First, construct an App Metadata object with the necessary content.
- TS/JS
- JSON Schema
Use the @lens-protocol/metadata package to construct a valid AppMetadata object:
Example
import { MetadataAttributeType, app } from "@lens-protocol/metadata";
const metadata = app({ name: "XYZ", tagline: "The next big thing", description: "An app to rule them all", logo: "lens://4f91cab87ab5e4f5066f878b72…", developer: "John Doe <[email protected]>", url: "https://example.com", termsOfService: "https://example.com/terms", privacyPolicy: "https://example.com/privacy", platforms: ["web", "ios", "android"],});
Next, upload the App 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 Lens App smart contract.
- TypeScript
- GraphQL
Use the createApp action to deploy the Lens App smart contract.
- TypeScript
- GraphQL
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 App using the fetchApp action.
viem
import { fetchApp } from "@lens-protocol/client/actions";
// …
const result = await createApp(sessionClient, { metadataUri: uri("lens://4f91…"), // the URI from the previous step}) .andThen(handleOperationWith(walletClientOrSigner)) .andThen(sessionClient.waitForTransaction) .andThen((txHash) => fetchApp(sessionClient, { txHash }));
if (result.isErr()) { return console.error(result.error);}
// app: App | nullconst app = result.value;
That's it—you now can start using your Lens App!