Help & Support

Changelog

All notable changes to this project will be documented in this page.

This page collects any major change to the Lens v3 from Dev Preview to the Mainnet launch. While we will try to keep breaking changes to a minimum, we may need to introduce them as we iterate on the implementations.

11 March 2025

Unreleased

List of changes that are currently in progress and will be released soon.

10 March 2025

Image Resizing and Original URIs

This release introduces changes that allow resizing of Post, Account, and other metadata image URLs, as well as the option to retrieve the original Lens URIs for media URLs. Additionally, it includes various bug fixes and improvements.

Changed

UnknownAction got split into UnknownAccountAction and UnknownPostAction.

UnknownAction
fragment AccountAction on AccountAction {  __typename  ... on TippingAccountAction {    ...TippingAccountAction  }  ... on UnknownAccountAction {-   ...UnknownAction+   ...UnknownAccountAction  }}
+ fragment UnknownAccountAction on UnknownAccountAction {+   __typename+   address+   config {+     ...AnyKeyValue+   }+   metadata {+     ...ActionMetadata+   }+ }fragment PostAction on PostAction {  ... on SimpleCollectAction {    ...SimpleCollectAction  }  ... on UnknownPostAction {-    ...UnknownAction+    ...UnknownPostAction  }}
+ fragment UnknownPostAction on UnknownPostAction {+   __typename+   address+   config {+     ...AnyKeyValue+   }+   metadata {+     ...ActionMetadata+   }+ }- fragment UnknownAction on UnknownAction {-   __typename-   address-   config {-     ...AnyKeyValue-   }-   metadata {-     ...ActionMetadata-   }- }

Some EventMetadata fields got renamed for consistency with other metadata objects.

EventMetadata
fragment EventMetadata on EventMetadata {  …  location {-   ...EventMetadataLensLocation+   ...EventLocation  }  …  schedulingAdjustments {-   ...EventMetadataLensSchedulingAdjustments+   ...EventSchedulingAdjustments  }  …}
- fragment EventMetadataLensLocation on EventMetadataLensLocation {+ fragment EventLocation on EventLocation {  __typename  physical  virtual}
- fragment EventMetadataLensSchedulingAdjustments on EventMetadataLensSchedulingAdjustments {+ fragment EventSchedulingAdjustments on EventSchedulingAdjustments {  __typename  timezoneId  timezoneOffset}

5 March 2025

Changed

Removed redundant title field from Graph, Feed, and Action metadata objects. Use name field instead.

  • Update the @lens-protocol/metadata@next to get the correct builder functions.

  • Update the @lens-protocol/client@canary or use the following diffs to update your GQL fragments.

fragment GraphMetadata on GraphMetadata {  __typename  description  id  name- title}

4 March 2025

Relocate Lens Chain SDK

The Lens Chain SDK has been relocated under: @lens-chain/sdk. Since it's a peer dependency fo the @lens-protocol/client, you need to update the package in your project.

npm uninstall @lens-network/sdknpm install @lens-chain/sdk@canary

22 February 2025

Bugfixes and Improvements

Changed

Fix to structural typing mismatch of AnyKeyValue union.

Update to the latest @lens-protocol/client@canary to get the latest types.

type ArrayKeyValue = {  __typename: "ArrayKeyValue";  key: string;+ array:- value:    | IntKeyValue    | IntNullableKeyValue    | AddressKeyValue    | StringKeyValue    | BooleanKeyValue    | RawKeyValue    | BigDecimalKeyValue    | DictionaryKeyValue;};

14 February 2025

Bugfixes and Improvements

Added

  • New whoExecutedActionOnPost query (fetchWhoExecutedActionOnPost SDK action).

  • New Post.contentUri field surfaces the original Content URI of the Post.

Changed

TimelineItem fix

The TimelineItem.reposts was incorrectly returning array of Post, instead it should return array of Repost.

TimelineItem
fragment TimelineItem on TimelineItem {  __typename  id  primary {    ...Post  }  comments {    ...Post  }  reposts {-   ...Post+   ...Repost  }}

Simple Collect Action

Prepare Simple Collect Action GQL to support multi-recipient. Support at contract level coming soon.

Execute Simple Collect Action
const result = await executePostAction(sessionClient, {  post: postId("42"),  action: {-   simpleCollect: true,+   simpleCollect: {+     selected: true,+   },  },});

Post Actions

The whoActedOnPost query (fetchWhoActedOnPost SDK action) is now whoExecutedActionOnAccount (fetchWhoExecutedActionOnAccount SDK action).

10 February 2025

Actions, Rules, and Sponsorships

Added

  • Follow Rules

  • Feed Rules

  • Graph Rules

  • Username Namespace Rules

  • Group Rules

  • Post Rules

  • Post Actions

  • Account Actions

  • Sponsorship support: apps can now sponsor their own users

Changed

  • Logged-in operations objects:
    • Post.operations.canEdit, Post.operations.canDelete, Post.operations.canComment, Post.operations.canQuote, Post.operations.canRepost now returns a new PostOperationValidationOutcome union with all the details regarding rules validation.

    • Account.operations.canFollow and Account.operations.canUnfollow now returns a new AccountFollowOperationValidationOutcome union with all the details regarding rules validation.

  • Paginated query postActions got renamed into postActionContracts and the return type is now consolidated, including ActionMetatada for unknown Post Actions.

18 December 2024

Routine release with several bug fixes and improvements.

Changed

NestedPost and PostReference nodes got removed.

fragment Post on Post {  id  author {    ...Account  }  metadata {    ...PostMetadata  }  root {-   ...NestedPost+   ...ReferencedPost  }  quoteOf {-   ...NestedPost+   ...ReferencedPost  }  commentOn {-   ...NestedPost+   ...ReferencedPost  }  stats {    ...PostStats  }}

where:

ReferencedPost
fragment ReferencedPost on Post {  id  author {    ...Account  }  metadata {    ...PostMetadata  }
  # root, quoteOf, commentOn omitted to avoid circular references}

25 November 2024

Lens API Testnet

Lens API Testnet is now available for developers to start building and testing their applications.

Changed

Explicit Authentication Roles

The challenge mutation now requires explicit authentication roles to be passed in the request.

mutation {  challenge(    request: {-      app: "<app-address>"-      account: "<account-address>"-      signedBy: "<owner-address>"+      accountOwner: {+        app: "<app-address>"+        account: "<account-address>"+        owner: "<owner-address>"+      }    }  ) {    __typename    id    text  }}

12 November 2024

Developer Preview Announcement