Liberate your schemas!
September 9th, 2024
New features
- Clearing schemas: This is our most requested feature! Before, if you had any running executions and you wanted to make a change to your schema, you had to duplicate the schemas and persistences, delete the originals, reconnect the duplicates and recreate the execution edges. Now it's much easier: simply use the
Clear
interaction in the schema component's menu. It clears/resets all downstream components (including persistences) and upstream execution edges, and puts the schema back into an editable state, ready for your edits. Check out the video:
- Clearing persistences: If you just want to clear a persistence without touching the schema, simply pause any connected executions and use the
Clear
interaction in the persistence's menu. This can be handy if you don't need to edit the schema or lambda but want to remove all existing data from the table (e.g., to avoid duplicates) before running on a new block range.
- Table name editing with conflict resolution: Want to build a new version of your table without causing downtime for connected APIs? Simply create the new table under a new name. Then, when it's ready for production, rename it to the name of the existing table. The new conflict resolution flow will allow you to claim the name for the new table while also renaming the current table holding that name.
- Custom type support: When you emit a variable from sim Lambdas or Patches, you typically pick from one of the standard available types:
address
,bool
,bytes
,bytes32
,int256
,int64
,string
,uint256
,uint64
. If you connect a persistence, we automatically ingest these into the table using DB types that are best suited for each. Sometimes, however, you may want to emit data that doesn't fit neatly within these standard types. Now you can define your own type in aSchema types
tab that's global to the canvas and use that type in the schema. Read more here.
- Cross-lambda shared code: Ever found yourself declaring the same util functions in ten different lambdas of the same canvas. Then you have an idea to improve it and you have to update ten places? We now have a
Utility
tab in the Lambda/Patch IDE that you can use to define functions. They're automatically shared across all Lambdas/Patches within the contract.
Coming soon
- Emitting data directly to external DBs: With the current schema mirror, you can mirror sim data to an external Kafka topic and then ingest from there into your preferred DB. For certain DBs, starting with Postgres, we're working to make it even easier to directly ingest the data from sim in to the DB, without needing an external Kafka topic.
- Component tables in org dashboard: Canvases are great, but sometimes you want to see and manage all of your org's APIs, Persistences, and Webhooks in one place. We're adding these views to the org dashboard.
- Canvas labels and descriptions: Soon you'll be able to add labels to your canvases to organize them better into projects or simply designate some as
Production
. We're also working on enabling you to give descriptions to canvases. - New sim-powered features for Explorer: sim Explorer is built on the infrastructure we use to power sim Studio. More and more, we're using Studio canvases ourselves to add new features to Explorer. In our immediate plans, we're using Studio to add coverage of builder bribes in Explorer. We'll also add a new page relating to our existing Freedom of Information Act (FOIA) query template, which allows you to see all instances of an address in contract mappings.
- Improved mechanics for query results and lambda logs panes: Currently we have a few minor bugs involving the sizing of panes in our Query Editor, Patch, and Lambdas. For instance, in the query editor, some of your SQL gets hidden under the query results pane and you can't properly scroll to it. You may also have noticed that the sizing gets messy when you drag from one window to another. We have a much more robust experience, with fixes for these bugs, coming soon.