Fixed a wallet bug causing Metamask to auto-open on page load.
Fixed a display bug causing the explore page would show contracts from other chains.
Next week we'll be shipping a new feature that makes generating custom earning statements easy. We'll also be increasing Swapper coverage by launching a Chainlink oracle and deploying the contracts to L2s.
Today we’re introducing SplitsKit, a React library designed specifically for the Splits contracts. With SplitsKit, it's easy to create and view Splits in your app without having to build any custom UI. You can learn more in our docs or at kit.splits.org.
To get started, just run yarn add @0xsplits/splits-kit.
Import the components, pass in any default values you need, and let SplitsKit handle the rest. Features include:
Minimally styled with light & dark modes: the UI elements come with sensible, minimal styles that match the aesthetic of our app, including light and dark modes.
Optimized inputs with ENS support: input elements come with masking, styling, error handling, and client-side validation. Address inputs also support ENS out of the box.
Multichain: SplitsKit works on Ethereum, Polygon, Optimism, Zora, Base and all of the EVM chains on which the Splits contracts are deployed.
When creating a Waterfall, you can now specify multiple recipients for each tranche. More often than not, Waterfall users want to split payments among multiple people, and previously this required separate transactions.
As part of this process, we removed Recoup since it was duplicative and caused confusion in the app. So now it's just Waterfall - no more Recoup. Give it a try at waterfall.new.
ENS names set on mainnet now work properly on other networks (Optimism, Base, Zora, etc), even if the ENS name is not set on those networks.
We added additional checks to reduce the number of spam tokens showing up in the app. Note: if you're no longer seeing tokens you expect to see, go to Settings > Token Whitelist and paste in token addresses - this will override our default settings for your account.
Most of our engineering effort this past cycle went towards automating funds flowing through the system. We added automation support for Waterfalls and Recoups that are upstream of incentivized Splits or Swappers. This means that if a Waterfall or Recoup points to a Split or Swapper, all of the contracts in the payment flow will be automatically distributed (assuming it's economically viable to do so). Here is an example of a Waterfall that points to an incentivized Split that's benefiting from this upgrade.
We also expanded automation support to other ERC20 tokens including USDC, USDT, DAI, and WBTC. Previously, the automation layer only handled ETH and WETH.
Other fixes & improvements
Waterfalls, Recoups, Swappers, and Diversifiers all now show up on the Explore view under the "existing contracts" section.
We upgraded both the app and SDK to use Viem, improving performance and composability.
We simplified the process of adding names and tags to your contracts by combining two steps into one. Just click the pencil icon and add a name and tags in the same flow.
We fixed a bug where Rabby wallet users were unable to connect to the app.
We added the ability to name contracts during the creation flow (previously you could only add a name retroactively, after the contract was deployed).
We improved the flow for automating distributions on other networks (ie not mainnet) and now use more sensible default distribution thresholds on other networks since gas needs vary by network.
We deployed the contracts on Holesky (note: we did not add app support for Holesky, so let us know if you need it and we'll add it).
We fixed a bug related to network switching and page loads.
Shortly after launching names the other week, we noticed many folks would follow a specific naming convention. They'd add names like "Nathaniel x Sasha [ArtBlocks] [Primary]" or "Heavy Calm (Songcamp Sessions)". And they'd use the same "tags" across several of the names they added.
So today we're launching Tags - a way for you to easily organize and filter your wallets and contracts within Splits.
To get started with tags, just navigate to your Settings page and create whatever tags you'd like.
Then, when viewing a list of accounts just hit the 3 dots menu and select "Add tags".
You can also add tags from the account detail page, by clicking the tag icon in the header.
Once you've added tags to accounts, you can filter by those in your dashboard. We'll be adding more robust filtering options soon.
As part of this update, we deprecated the bookmarks feature. If you were using bookmarks, we automatically created a tag for you called "Bookmarks", so you don't lose track of any accounts you'd bookmarked. That said, if you were primarily using bookmarks just to name accounts, you can delete the "Bookmarks" tag from your settings since names were migrated to the names feature already.
Withdraw undistributed balances
The other big feature we're launching is the ability to withdraw from all the Splits you earn from at once, even if some of those Splits have balances that have not been distributed.
To do this, just hit the withdraw button from the dashboard and select balances to withdraw as you normally would. You'll notice some of the balances have a Split name next to them - those balances are still sitting in the Split. So when you withdraw those balances, you will also be distributing that balance in the Split (so the other recipients don't have to!) before withdrawing.
We've also added a "estimated gas" cost feature, so you can easily see how much it will cost to withdraw all these balances at once (since withdrawing undistributed balances will increase the gas).
Other fixes and improvements
You can now add names to contracts while you're creating them (if you're signed in with email). We saw many folks naming contracts immediately upon creating them, so we made this flow easier for you.
We finalized our migration from 0xsplits.xyz to splits.org. This means the app, docs, website, etc all now exist at our new website (and visiting the old website will redirect you to the new one).
We shipped a bunch of performance updates, making app and account detail page load times much faster.
We added pagination to the contracts table.
We fixed a bug in the transactions table pagination logic, where it would sometimes reset to the first page.
Diversifiers will now be automatically distributed once it's economically viable to do so.
When we launched the multi-wallet dashboard, we knew there were a bunch of improvements we wanted to make. We've been steadily chipping away at them, and today we're excited to launch a much requested feature: withdrawing for multiple wallets in a single transaction.
If any of your watched wallets has a balance, when you click on "Withdraw" from your dashboard, you'll now be able to withdraw balances across any of your wallets. For detailed instructions, check out this article in our Help Center.
YouTube video tutorials
We worked with the talented Russell Matthews to start building out a set of video tutorial for Splits. The videos have been published to our Help Center, and you can find the full collection on our YouTube channel.
We organized our first team offsite and brought everyone together for a few days in northern California. Creating space to come together as a team is important, especially as the team grows. We're glad to have finally created this space for the team and are looking forward to kicking off the next set of big projects.
Humans aren't equipped to understand hexadecimal addresses. Similar to IP addresses, these hexadecimal addresses are designed for machines. Yet, the standard in most onchain applications today, including ours, is to display these complex addresses to people. While ENS has significantly improved this situation, it remains challenging, if not impossible, to set an ENS for a smart contract such as a Split.
So today we're releasing Named Splits - a way for you to replace the hexadecimal address with a human readable name in our app.
Logged-in users can add a name, which can be either public or private. Public names are visible to all users (after review by our team), while private names are only visible to the user who created it.
Public names are great for things like NFT projects, protocol fees, shelling points, and anything public facing. Private names, on the other hand, are useful when readability and organization are desired but visibility isn't.
Readability of the app is important since Splits is powering a new class of businesses that are emerging onchain. To date, Splits has distributed over $40 million to nearly 10,000 unique creators, makers, artists, and developers across 11 different chains.
And as more businesses of increasing complexity are powered by Splits, more people need to understand where funds are coming and going. Naming Splits makes the app far more legible and human readable.
The introduction of named Splits is just the beginning of an entirely new app experience we're building. We're doubling down on the inherently social nature of Splits by making tracking and reporting on earnings across wallets, networks, and teams considerably easier.
We want to hear your feedback—the good and bad—so please don't hesitate to reach out and let us know what you think!
We released the multi-wallet dashboard view a few weeks ago and have been iterating on it since then. We'll be improving this design in the coming weeks, but in the meantime a quick reminder that all Splits/contracts displayed in the below table are a function of what watched wallets and filters you've applied.
With today's release, you can now sort the table by any of the columns. Either click on the column header, or select the sort from the dropdown in the top right of the view.
We've also seen firsthand how valuable it is to name your Splits (more on that coming soon!), so we added a text search field which lets you very easily filter the table by your named Splits. Just enter text and the table will immediately display those results.
And finally, we added a summary table row so you can easily see in aggregate how funds have flowed through the contracts.
This summary row updates based on the selected filters to reflect the currently displayed contracts.
Introducing the transactions table
In addition to the work done on improving the contracts table, we also created an all new transactions table view. This view allows you to easily see all the transactions that have occurred for your watched wallets.
Now, instead of going to each individual watched wallet's page to see the relevant transactions, you're able to see all the transactions in a single view. You can see the Splits/contracts your watched wallets interacted with, as well as exactly the token value for each transaction.
Weekly email summaries
We also updated the weekly email summaries so that it's easier to parse through the information. Each email now includes the date period listed in the subject line, and the formatting of the emails was improved for readability.
We've heard how important it is to be able to see how much a given person/wallet has earned from a specific Split. Maybe it's understanding how much a musician earned from a single song, or perhaps a business running on Splits wants to see how much revenue they've generated from a specific client—there are lots of times when seeing earnings by contract for a given wallet is useful.
The "Earned" column now shows this right on your dashboard page.
Network selector shows all networks
Splits has been deployed on a bunch of chains, but those chains weren't all discoverable in the app. Now they are.
Just click on the network icon in the top right, and you can see all the networks on which you can use Splits.
You can also hit the "view testnets" toggle to view only the test networks Splits is deployed on.
People often use one wallet for day-to-day operations (their "hot wallet") and another wallet for storing assets (multisig, hardware wallet, etc). This is great for a number of reasons, however, it makes it difficult to see "the whole picture" when earnings are spread across multiple wallets. And this problem is exacerbated if you have more complex payment flows like one of the many businesses built on top of Splits.
The assumption that 1 person = 1 wallet is not true, and, more often than not, simply connecting your wallet does not give you the full picture. We built an entirely new multi-wallet dashboard to solve this.
Now, regardless of whether your wallet is connected or not, once you sign in (using a password-free magic email link) you can add as many external wallets and multisigs as you want to your dashboard. All you have to do is enter the address/ENS and the earnings and associated Splits will be added to your dashboard.
But before getting into all the dashboard updates...
Many people are earning money through Splits on a daily basis, yet it's hard to understand just how much you're making and where that money is coming from. To solve this, we built email notifications which sends you a weekly summary of all earnings and activity for all the wallets you're watching.
It's very basic right now, but we'll be iterating on this over the coming weeks so if you've signed up for an account please just reply to the weekly email and let us know what information you'd like to see included.
We opted to ship a quick MVP of this feature instead of trying to perfect it, so your feedback will help make it much better.
Okay, on to the multi-wallet dashboard improvements.
Earnings across multiple wallets
You can easily see how much you've earned across all your watched wallets. We'll be adding more functionality to this soon, like showing your total balances and adding the ability to withdraw balances for all your wallets in a single transaction.
Filter by wallets
You can filter by any of your watched wallets to quickly see only the Splits and earnings associated with those wallets. You can also filter by tags (i.e., bookmarks), which we'll be enhancing the functionality of soon™.
Quick access to your wallets
Once you've added one or more wallets to watch, they will show up in the left sidebar, making it easy to quickly access those accounts.
Now that you're able to sign in/up with email, we've also released an account settings page. You can access it by clicking the gear icon in the top left (if you're signed in).
The account settings page lets you do things like update your email address, turn on/off email notifications, and add a list of additional tokens (ERC20 addresses) you want displayed in the app (this is particularly important for non-mainnet networks where all ERC20s are not displayed by default).
There's more to these features than meet the eye, so these initial feature set the stage for a lot more fully-baked product enhancements that are coming soon.
We've received a ton of great feedback from makers and teams using Splits to power their businesses, and are dedicated to continually improving the app. Thanks for your support!
Splits is now live on Zora Network! Just select Zora in the network selector and approve the network change in your wallet. (If this is your first time using Zora Network, you will need to approve your wallet adding Zora to your list of supported networks.)
We've received a bunch of requests from creators to support Zora Network, and are excited to support the growing landscape of L2s. As a reminder, all networks Splits is deployed on can be found here.
One thing to note: Splits are chain-specific, meaning that a Split created on Zora can only be used on Zora. Said differently, if an NFT collection exists on Chain A, you must also deploy a Split on Chain A—you cannot (currently) use a Split on Chain A that was created on Chain B.
Last week we announced the newest contract to the Splits ecosystem - Swapper. It lets you specify the token you want to receive, regardless of what you’re sent. It does this by automatically swapping any tokens (ETH or ERC20s) it receives into a predefined output token. For more details, check out our launch post, Introducing Swapper.
We’re thrilled to launch this publicly; it’s been a long time in the making. And what we’re arguably more thrilled about are all the new uses cases this modular contract unlocks. To this end, we also announced Diversifier, which stacks a Split and Swapper(s) together to create a wallet that auto diversifies any income stream before funds hit your account.
For creators, this means you can create a tax withholding wallet that swaps 40% of your income to USDC (or any stable coin) and set aside for taxes, with the remainder going to your hot wallet. We wrote about this use case in the Introducing Swapper launch post, so please check it out and let us know what you think.
We began the migration to splits.org. We can’t migrate everything just yet since we have a few product features we’re still building that will make this process seamless for users, but over time you’ll see more of our brand move over to our new domain.
We added the ability to sponsor Splits on all chains. Previously this was only supported on mainnet, and now it’s supported on all chains supported by the UI (full list is here).
We also fixed a number of bugs, including incorrectly showing “Account not found” due to a subgraph query limit, and implemented a number of design updates.
Over the next few months, we’re going to be investing heavily into the product and user experience. Now that more of the “building blocks” are in place from a smart contract standpoint (ie Split, Swapper, Waterfall) we're going to be doubling down on the app to ensure deploying and using these building blocks in creative ways is seamless.
Creating a Liquid Split is now a template. We did this because it's fundamentally different than just creating a Split, since when creating a Liquid Split you're actually deploying an NFT contract in addition to a mutable Split. Given our future product direction we felt pulling Liquid Split out into it's own template makes the most sense.
Mutable Split controller
Previously, choosing to make a Split mutable was separate from choosing the controller. Since a Split can only be mutable if a controller is set, we decided to combine these two steps into one by allowing you to make a selection. If you want the Split to be immutable, just select "no controller". Otherwise, you can either select yourself (if your wallet is connected) or you an enter in any address you wish.
Adding a distribution bounty is the best way to automate your Splits. By adding a bounty, you're encouraging third-parties to come and distribute balances for the recipients. In an effort to more clearly communicate how this bounty works, we've redesigned this input to let you select the amount at which balances will be distributed. You can see (on the right side) what percentage the distributor fee will be based on the threshold you've selected.
We're grateful for the folks who have chosen to donate a portion of their Split's earnings back to the team building Splits. It's an honor knowing that people are choosing to pay us—not because they have to, but because they want to. We want to both celebrate the people who have chosen to donate, and also make it easier to donate. Now, the last part of creating a new Split is deciding whether you want to become a sponsor.
If you choose to become a sponsor, anytime your Split is viewed or shared online, everyone will see the sponsorship badge displayed at the top of your page and know that you've chosen to sponsor the development of Splits.
Upload CSV flow
People have increasingly been creating larger and larger Splits. We've seen several Splits with hundreds of recipients! This is great to see, and we need to ensure that creating large Splits is as easy as possible. To this end, we redesigned the "bulk upload" flow to make it both easier to use and more apparent as an option.
Now when creating a Split, next to "Add Recipient" there is an "Upload CSV" option. Clicking it will open a dialog where you can either upload a CSV or paste in a list of addresses and amounts. Once you hit "Validate", those recipients will be added as recipients.
Recoup creation flow
Finally, we took the changes we made to the new Split form, including the CSV upload flow, and added them to the new Recoup page as well. We have seen more and more folks use the Recoup flow, like this Metalabel drop, and have found that the process of creating a Recoup with many recipients was tedious. Plus, there were a number of bugs we learned about. So we fixed the bugs and brought all the Split improvements over to Recoup.
Most of our effort has been focused on getting Swapper into a launch-ready state – keep an eye out for more news on that front in the coming weeks!
Our radio silence and general lack of changelog updates is because we've been focused on Swapper, a new contract we're about to launch. We have been working on this contract for a few months now and just opened up a Sherlock competition for it and a handful of related contracts.
This is our first time doing a Sherlock competition and we're excited to have obront be our Lead Senior Watson. We'd love for you to join and see what vulnerabilities you can find. The competition ends on April 24th.
We'll be launching Swapper into the app (along with a handful of related products) in the coming weeks once the Sherlock competition is complete.
When creating new contracts, we've separated the main building blocks (Split and Waterfall) from the templates. Templates stack different building blocks together, so we wanted to make a clearer distinction between the types of contracts being created. We're also developing more contracts and templates, and this separation will help users understand how everything works together.
When creating a Recoup, multiple contracts are involved. To make it easier to understand how funds will flow through the contract once it's created, we added a contract preview to the creation process.
Creation flow polish
We made some improvements to the new contract creation process, including removing unnecessary components, improving the mobile experience, and hiding infrequently used actions.
We believe the onchain ecosystem as a whole benefits greatly from simple, modular, and reusable tools. We also understand that it's oftentimes the combination of simple tools that unlock new workflows.
When Waterfall launched a few months ago, we thought about how great it would be to pair it with Splits. In fact, Metalabel did just this. This combination of Waterfall + Splits lets you create all sorts of interesting structures that revolve around splitting profits instead of revenue. Most projects have upfront costs, and the person who covers those costs wants to be repaid before profits are split among the group. Musicians, VC, PE, debt—tons of workflows exist that need to combine these contracts together.
The problem is that to do so requires deep knowledge of how the system as a whole operates, since you can't create a Waterfall that points to a Split unless that Split already exists. Recoup solves this problem. It's a very simple contract paired with a UI that lets you, in a single transaction, create a Waterfall that points to multiple Splits.
When creating a new Recoup, just list all the recipients you want paid out for each tier. As long as more than one recipient is added, when you create the Recoup a Split will also be created. And if there's only one recipient, no Split will be created.
And once again, Metalabel is already using this. For their most recent Quality Drops, they teamed up with Songcamp and Catalog to create a Recoup for an event they're hosting around NFT NYC in April. You can see their Recoup here, and you can read more about the event and tickets here.
We think of Recoup as being the first template - a pre-built collection of contracts that solve a very specific problem. We have a number of additional templates we we'll be launching in the coming months, stay tuned.
Improved mobile layout
We wanted to make the app easier to use on mobile, particularly for folks just connecting their wallet to withdraw their balances. This should be simple, and previously it required a number of steps and an unintuitive withdraw flow. We improved this on mobile by combining the various actions—network selector, navigation, account menu—into one coherent section.
We now match the same recipient order on the new Split form after hitting "Duplicate Split" from a Split account page
We fixed an issue within the account menu dialog, where accounts with lots of tokens to withdraw weren't able to see the full list
We reworked the subgraph to ensure Liquid Splits created by third parties properly display in the app
There’s a lot of activity going on within the Splits protocol. Unless you know exactly what you’re looking for, it can be rather intimidating to see just a list of all the Splits ever created, which is what we were previously displaying for new users. We improved this experience by launching an all new Explore page, which allows you to see how a handful of different groups—from DAOs to artists to collectives—are getting the most out of the Splits ecosystem.
It’s important for Splits to be available where the people are, so we’ve deployed the contracts onto a number of new networks including Gnosis, Aurora, Fantom, Avalanche and more. The full list is here. We’ve updated the app to support all these networks and their testnets as well. You won’t see them all in the network selected, but you can still access them by changing the network in your wallet provider.
Due to the nuances of fetching ERC-20 token information on each new chain, we’ve added the ability for people to customize their own token whitelist in the app. In addition to the tokens on the app's global whitelist, all tokens added to this whitelist will show up in your app.
Note that this whitelist is saved only to local storage and is associated to the network and connected wallet, meaning if you change network and/or connected wallet, the whitelist will also change.
We added gas estimates to the SDK. When using the SDK, it’s easy to fetch the estimated gas cost for any transaction. More in the docs here.
We’re now displaying all contracts in a more consistent manner, making it easier to see any account’s earnings, balance, and last activity. Additionally, when viewing a Split on an account page, you can see the percentage of the Split that account is earning.
We removed the testnets from the network selector in the app. You can still access the app on the various testnets by manually changing the network in Metamask/your wallet.
We take pride in what we build. And since launching 0xSplits to the world in February 2022, more often than not, much of what we build is never publicly documented. Sometimes we tweet about some big new features, but that typically only happens for…big features. Yet so much of our time is invested in sweating the details and getting the small interactions right.
So today, we’re introducing the Changelog, a dedicated space to share all the things we've shipped. So let's get to it.
We have big plans for the app and will be launching a ton of new features in the next few months. As a result, we needed to introduce a new layout that will provide more flexibility and support for these new features. The new layout gives us this flexibility while making navigation easier on mobile devices and improving the withdraw flow for connected accounts.
Distribute and withdraw
There are many times when you may want to distribute a Split and then immediately withdraw for those recipients. Maybe because some of the recipients are smart contracts that cannot withdraw for themselves, or perhaps you’re just feeling generous. Regardless of the reason, there are times when pushing funds to the end recipients is useful.
Previously, this required going to each recipient’s account page and hitting withdraw. While you can still do that, we’ve made this process a lot easier. Just select the Split balances you wish to distribute, and then hit the down icon within the distribute button. You’ll be able to select what recipients—either all, or if you’re part of the Split, just yourself—for whom you wish to withdraw.
Duplicate an existing Split
We’ve heard time and again the need to create multiple Splits that are nearly identical. A 5-way Split where 4 of the recipients never change. Whether you’re a music label, podcast host, or musician, there are often times when you want a very similar but not identical configuration.
Instead of downloading the CSV and then uploading that each time, now you can just hit the Duplicate Split button within the “Split Recipients” tab. This will take you to the new Split page with the configuration pre-filled, allowing you to make whatever modifications you’d like.
You may notice that when you do this, we’re actually adding a bunch of params to the URL on the new Split page. We built this feature in this way so that 3rd party apps can deep-link into the new Split flow, allowing users to create pre-defined Split according to 3rd party apps.