Skip to content

Releases: coinbase/onchainkit

v0.5.0

06 Feb 01:48
90b3f48
Compare
Choose a tag to compare

Minor Changes

  • fix: ensured that the <FrameMetadata> component uses the name property instead of the property property to set the type of metadata. Both options are technically correct, but historically, using name is more accurate. By @Zizzamia dc6f33d

  • feat: renamed the component from OnchainName to Name in our Identity Kit. This is a breaking changes. The purpose of the rename is to simplify and enhance clarity. By @alvaroraminelli #86

    BREAKING CHANGES

    To enhance usability and intuitiveness, the component name has been simplified. OnchainName is now renamed to Name.

    Before

    import { OnchainName } from '@coinbase/onchainkit';
    
    ...
    <OnchainName address="0x1234">

    After

    import { Name } from '@coinbase/onchainkit';
    
    ...
    <Name address="0x1234">

v0.4.5

04 Feb 06:53
8647690
Compare
Choose a tag to compare

Patch Changes

  • 6f9dd77: - feat: exported FrameMetadataType.

v0.4.4

03 Feb 23:21
7410f87
Compare
Choose a tag to compare

Patch Changes

  • d168475: - fix: added missing input type on FrameValidationData;

v0.4.3

03 Feb 02:02
169e37c
Compare
Choose a tag to compare

Patch Changes

  • 4bd8ec8: - feat: added textInput to FrameData.

v0.4.2

03 Feb 01:39
1180210
Compare
Choose a tag to compare

Patch Changes

  • feat: Added support for Text Input metadata for Farcaster Frames. By @taycaldwell #67 89e5210
  • feat: Added FrameMetadata component, to help support metadata elements with classic React apps. By @Zizzamia #71
  • feat: Added OnchainName component, to our Identity Kit. The OnchainName component primarily focuses on showcasing ENS names for given Ethereum addresses, and defaults to displaying a sliced version of the address when an ENS name isn't available. By @alvaroraminelli #49

v0.4.1

01 Feb 21:49
35df707
Compare
Choose a tag to compare

Minor Changes

  • feat: the getFrameAccountAddress function has been deprecated. Now, the getFrameMessage function also returns the Account Address. #60 0355c73
  • feat: integrated with Neynars API to obtain validated messages and additional context, such as recast, follow-up, etc. By @robpolak #59
  • fix: removed the Farcaster references due to build errors and compatibility issues. By @robpolak #59

BREAKING CHANGES

We received feedback regarding our initial approach with OnchainKit, which had excessive dependencies on Node.js-only libraries. This caused issues when integrating the library with React Native and the latest version of Node (e.g., v21).

In response to this feedback, we decided to utilize Neynar to simplify our approach and implementation of the getFrameMessage method. By incorporating Neynar, you now have no dependencies for that particular method and will also receive additional data to enhance your Frame.

Therefore, as getFrameMessage relies on Neynar, it is necessary to provide a Neynar API KEY when using the method in order to avoid rate limiting.

Before

import { getFrameMessage } from '@coinbase/onchainkit';

...
const { isValid, message} = await getFrameMessage(body);

After

import { getFrameMessage } from '@coinbase/onchainkit';

...
const { isValid, message } = await getFrameMessage(body , {
  neynarApiKey: 'NEYNAR_ONCHAIN_KIT'
});

Additionally, the getFrameMessage function now returns the Account Address. As a result, we no longer require the use of getFrameAccountAddress.

This enhancement allows us to accomplish more with less code!

v0.4.0

01 Feb 21:25
6256225
Compare
Choose a tag to compare

Minor Changes

  • feat: deprecated getFrameAccountAddress as now getFrameMessage returns also the Account Address. #60 0355c73
  • feat: integrated with Neynars api to get validated messages + additional context like recast/follow/etc. By @robpolak #59
  • fix: removed farcaster references as they were generating build errors and compatibility issues. By @robpolak #59

BREAKING CHANGES

I will write the breaking changes in the next PR

v0.3.1

01 Feb 00:21
66225da
Compare
Choose a tag to compare

Patch Changes

  • feat: introducing getFrameHtmlResponse server-side helper method: generates HTML response with valid Frame, uses FrameMetadata types for page metadata, eliminates manual creation of server-side HTML strings. 5d80499
  • feat: the FrameMetadata type have been updated. Now, buttons and post_url are considered optional, aligning with the Farcaster Frames API.
  • feat: going forward, we will utilize NEYNAR_ONCHAIN_KIT as the default free API key for Neynar.

v0.3.0

30 Jan 22:39
af7ef92
Compare
Choose a tag to compare

Minor Changes

BREAKING CHANGES

getFrameAccountAddress
We have enhanced the getFrameAccountAddress method by making it more composable with getFrameMessage. Now, instead of directly retrieving the accountAddress from the body, you will utilize the validated message to do so.

Before

import { getFrameAccountAddress } from '@coinbase/onchainkit';

...

const accountAddress = await getFrameAccountAddress(body);

After

import { getFrameAccountAddress } from '@coinbase/onchainkit';

...
const { isValid, message } = await getFrameMessage(body);
const accountAddress = await getFrameAccountAddress(message);

getFrameMetadata
We have improved the getFrameMetadata method by making the buttons extensible for new actions.

Before

import { getFrameMetadata } from '@coinbase/onchainkit';

...
const frameMetadata = getFrameMetadata({
  buttons: ['boat'],
  image: 'https://build-onchain-apps.vercel.app/release/v-0-17.png',
  post_url: 'https://build-onchain-apps.vercel.app/api/frame',
});
type FrameMetadata = {
  buttons: string[];
  image: string;
  post_url: string;
};

After

import { frameMetadata } from '@coinbase/onchainkit';

...
const frameMetadata = getFrameMetadata({
  buttons: [
    {
      label: 'We love BOAT',
    },
  ],
  image: 'https://build-onchain-apps.vercel.app/release/v-0-17.png',
  post_url: 'https://build-onchain-apps.vercel.app/api/frame',
});
type Button = {
  label: string;
  action?: 'post' | 'post_redirect';
};

type FrameMetadata = {
  // A list of strings which are the label for the buttons in the frame (max 4 buttons).
  buttons: [Button, ...Button[]];
  // An image which must be smaller than 10MB and should have an aspect ratio of 1.91:1
  image: string;
  // A valid POST URL to send the Signature Packet to.
  post_url: string;
  // A period in seconds at which the app should expect the image to update.
  refresh_period?: number;
};

v0.2.1

30 Jan 02:53
1e70ef9
Compare
Choose a tag to compare

Patch Changes

  • feat: exported FrameRequest and FrameData types.
  • docs: Polished README for getFrameMessage(). By @Zizzamia #38 218b65e
  • fix: Refactor Farcaster typing to be explicit, and added a Farcaster message verification integration test. By @robpolak @cnasc @Zizzamia #37
  • feat: Added a concept of integration tests where we can assert the actual values coming back from neynar. We decoupled these from unit tests as we should not commingle. By @robpolak #35
  • feat: Refactored neynar client out of the ./src/core code-path, for better composability and testability. By @robpolak #35

BREAKING CHANGES

We made the getFrameValidatedMessage method more type-safe and renamed it to getFrameMessage.

Before

import { getFrameValidatedMessage } from '@coinbase/onchainkit';

...

const validatedMessage = await getFrameValidatedMessage(body);

@returns

type Promise<Message | undefined>

After

import { getFrameMessage } from '@coinbase/onchainkit';

...

const { isValid, message } = await getFrameMessage(body);

@returns

type Promise<FrameValidationResponse>;

type FrameValidationResponse =
  | { isValid: true; message: FrameData }
  | { isValid: false; message: undefined };

interface FrameData {
  fid: number;
  url: string;
  messageHash: string;
  timestamp: number;
  network: number;
  buttonIndex: number;
  castId: {
   fid: number;
   hash: string;
 };
}