Fullstack Software Engineer

Change how productivity tools get distributed by developers.

Raycast makes it simple, fast and delightful to control your tools. We're looking for a Software Engineer to join our small team to build, own and scale the distribution of Raycast extensions via a store that developers around the world can contribute to.

Raycast is a native Mac application with a significant focus on top-notch UI and interactions. We genuinely care about user experience, performance, privacy and ease of use. We had enough of dealing with slow and clunky tools. Raycast is our attempt to let you enjoy your daily workflows without all the distractions.

When Apple announced the App Store in 2008, the distribution of software changed over night. Suddenly, developers could reach millions of customers. We believe it's about time to change how developers discover and consume productivity tools. At the center of this, is our Store full of Raycast extensions that people can share and manage or discover new ones from others. What works within our community, is ideal for teams. They can share extensions privately and make each other more productive. We need hungry engineers that architect and extend our Store to revolutionise how developers experience productivity tools with us.

We're a fully remote company and looking for candidates in the UTC timezone (London, Lisbon, Dakar, ...) ± 3 hours. This position is for a full-time employment.

In this role you will...

  • Build features from scratch. The first version of our Store is live. Now it's time to add new features to it. Add collaborators for extensions, highlight extensions with screenshots and enable sharing extensions privately within teams. You'll work on these features end-to-end, including collaboration with our macOS client and developer tooling.
  • Co-own the product and work self-directed. We're a small team of individual contributors. Everybody has autonomy and responsibility. You work on features from ideation over release to maintenance and shape the roadmap of the product.
  • Shape the experience for contributors. The store is one piece of the puzzle. You generate ideas about how developers should add and maintain extensions. You optimise for ease-of-use for producers and consumers.
  • Improve performance and care about quality. You dogfood your own features with our nightly builds, respond to user feedback in our community and jump into performance profiling to make API calls fast. You automate tedious tasks. At best, directly in Raycast.
  • Wear many hats. In a small startup, we're all generalists. You might add a new page to our Vue.js website, set up infrastructure components, or write a blog post about a new feature.

You will be a great fit if...

  • You can work across the full stack. Ideally, you've used Ruby on Rails. You've worked with different types of data stores, and you know best practices around data modeling and access. For frontend work, you have used JavaScript and TypeScript and you are familiar with the concepts behind Vue or React. Moreover, you can reason well about the tradeoffs of different programming languages and tech stacks without being dogmatic.
  • You're highly productive while writing quality code. We release updates every 1-2 weeks. You can break down big projects in small deliverables. You care about the outcome and take a pragmatic approach to deliver it. You keep things simple and rather write more code than adopting a third-party dependency. You know when you want a code review or need to write tests.
  • You're product-minded. You have a sense for great user experience and feel when something is off. You work with continuous deployment and preview environments to get constant feedback and you have monitoring and analytics in place to quickly act when something unexpected happens. You're eager to optimize API responsiveness and dig deep when there is a need to resolve a tricky issue. You treat APIs as products and proactively iterate on them.
  • You have a track-record of great web apps. You've seen software projects succeed and fail and bring in proven concepts to ship software from day one.
  • You put our users first. Throughout Raycast you find many little details. You pay attention to detail and provide our users a delightful experience. You can't stand bugs and don't shy away from user feedback.
  • You're an empathetic communicator. You treat technology as tradeoffs. You may be opinionated but you're not ideological. When disagreeing, you communicate thoughtfully your perspective and compromise when needed. You're thriving in a team environment and hold your colleagues accountable.

Our stack

  • JavaScript and Ruby for the web. Our marketing website is build with Vue.js and Gridsome and deployed with Vercel. Our middleware is a simple Node.js app written with Express and hosted on Heroku. The Store and it's backend is built with Ruby on Rails. We have plans to unity our web codebases for easier maintenance.
  • Swift for our macOS app. Everything is written in Swift using AppKit with Swift Packages. We don't use SwiftUI because it's too premature for rapid development. We rarely adopt third party dependencies. Some are GRDB for our database, Sentry for crash reporting, Nuke for image fetching and a few C libraries to crank up performance.
  • Modern work tools for everything. Linear for issue tracking, GitHub as source control, Sentry for error reporting, Segment and Amplitude for analytics, Slack for internal communication, Figma for pixels, Notion as knowledge base and a few others. As a team, we enjoy using CleanShot, Bear, Things and more Mac apps.

How to apply?

Now that you know about us, we would like to learn more about you. Send us an engaging message at jobs@raycast.com with information you think is relevant. Tell us why you want to join us, what excites you about the problem we're solving and how you envision your role at Raycast. Read about our application process.