← All projects

Unsend

A place for the message you don’t want to send. Write it out, hold the button, and watch it shred.

A draft with nowhere to go

Unsend started with a text box and a shredder. A place to write the thing you didn’t want to send.

Now it has anonymous posts and replies too.

Twelve strips of text

The animation was the interesting part. I split the text into twelve vertical strips. Each one shows a different slice of the same text, so together they look like a single sheet.

Then they fall, rotate, and fade, with a 40ms delay between strips. The transforms use React Native’s native driver.

const animations = stripAnims.map((strip, i) =>
  Animated.parallel([
    Animated.timing(strip.translateY, {
      toValue: 600,
      duration: 1400,
      delay: i * 40,
      easing: Easing.in(Easing.quad),
      useNativeDriver: true,
    }),
    Animated.timing(strip.rotate, {
      toValue: i % 2 === 0 ? 1 : -1,
      duration: 1400,
      delay: i * 40,
      useNativeDriver: true,
    }),
  ])
);

The shredder is still here

You can still write something, hold the button, and watch it shred. Let go before the hold finishes and it resets.

Some things you just want to get out and let go of.

Or put it out there

I added anonymous posting so people can share what’s on their mind. You can make a post or reply to someone else’s.

The shredder is one part of Unsend now. Posts give people somewhere to talk to each other too.