Skip to content

Releases: coinbase/onchainkit

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;
 };
}

v0.2.0

30 Jan 02:29
a7e4122
Compare
Choose a tag to compare

Minor Changes

  • 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;
 };
}

v0.1.6

28 Jan 22:19
426b484
Compare
Choose a tag to compare

Patch Changes

  • feat: added initial version of getFrameValidatedMessage, which helps decode and validate a Frame message. d5de4e7

v0.1.5

28 Jan 02:13
370db2a
Compare
Choose a tag to compare

Patch Changes

v0.1.4

28 Jan 01:37
7bb8fe7
Compare
Choose a tag to compare

Patch Changes

  • feat: added initial version of getFrameAccountAddress, which helps getting the Account Address from the Farcaster ID using the Frame. 398933b

v0.1.3

27 Jan 23:53
cca9ee2
Compare
Choose a tag to compare

Patch Changes

  • feat: renamed generateFrameNextMetadata to getFrameMetadata c015b3e