v0.9.5 -> v0.11.0

Breaking Changes (v0.11.0)

This release introduces two small but breaking changes to the Streams SDK:

  1. registerEventSchemas now expects a nested schema object.

  2. registerDataSchemas now uses schemaName instead of id.

All other APIs (reading/writing data, computeSchemaId, set, getAllPublisherDataForSchema, etc.) remain unchanged.


1. registerEventSchemas – New schema Shape

What changed

The registerEventSchemas method now expects event metadata to be passed inside a schema object with the following shape:

  • schema.eventTopic – full event signature, e.g. "ChatMessage(bytes32 indexed roomId)".

  • schema.params – the indexed and non-indexed parameters for the event.

New usage

const registerEventSchemasTxHash = await sdk.streams.registerEventSchemas([
  {
    id: eventId,
    schema: {
      params: eventParams,
      eventTopic: eventSignature,
    },
  },
]);

Migration (before → after)

Before:

const registerEventSchemasTxHash = await sdk.streams.registerEventSchemas([
  {
    id: eventId,
    eventTopic: eventSignature,
    params: eventParams,
  },
]);

After:

const registerEventSchemasTxHash = await sdk.streams.registerEventSchemas([
  {
    id: eventId,
    schema: {
      params: eventParams,
      eventTopic: eventSignature,
    },
  },
]);

Tip: Search your codebase for registerEventSchemas( and wrap eventTopic + params under schema: { … }.


2. registerDataSchemasidschemaName

What changed

For data schemas, the field previously called id has been renamed to schemaName. This aligns the SDK with the underlying contract, which expects:

(string schemaName, string schema, bytes32 parentSchemaId)

New usage

const registerTxHash = await sdk.streams.registerDataSchemas(
  [
    {
      schemaName: "hello_world",
      schema: helloSchema,
      parentSchemaId: zeroBytes32,
    },
  ],
  ignoreRegisteredSchemas,
);

Migration (before → after)

Before:

const registerTxHash = await sdk.streams.registerDataSchemas(
  [
    {
      id: "hello_world",
      schema: helloSchema,
      parentSchemaId: zeroBytes32,
    },
  ],
  ignoreRegisteredSchemas,
);

After:

const registerTxHash = await sdk.streams.registerDataSchemas(
  [
    {
      schemaName: "hello_world",
      schema: helloSchema,
      parentSchemaId: zeroBytes32,
    },
  ],
  ignoreRegisteredSchemas,
);

If you continue to use id, calls to registerDataSchemas will revert with a NoData() error.

Tip: Search your codebase for registerDataSchemas( and replace every id: "..." with schemaName: "...".


3. Quick Migration Checklist

When upgrading to this version of the Streams SDK:

Update event schemas: Wrap eventTopic + params into schema: { eventTopic, params }.

Update data schemas: Replace id with schemaName in all calls to registerDataSchemas.

No changes required for:

  • computeSchemaId

  • set / getAllPublisherDataForSchema

  • Existing read/write flows that do not touch schema registration.

If you see errors like:

  • Error: Schema is not registered on-chain, or

  • NoData() when calling registerDataSchemas

double-check that you’ve applied the two changes described above.

Last updated