Give your simulator superpowers

RocketSim: An Essential Developer Tool
as recommended by Apple

RocketSim 12.0: Builds Apps Faster

RocketSim is a developer tool that gives your Xcode Simulator extra functionalities to increase day-to-day development productivity. A floating window becomes visible next to your active Simulator to provide additional functionalities while not too intrusive. Some significant features include recordings with touches, audio, and bezels, location simulation, Simulator airplane mode, and several design comparison features.

You can see this article as a detailed changelog of significant versions of RocketSim, meaning that you’ll also see old design implementations. The first paragraphs you read will represent the latest version available.

I’m guiding you through each feature, and I’ll share background stories and details where possible. If you can’t wait to get started: you can get RocketSim for free from the Mac App Store or explore all features on rocketsim.app.

RocketSim 12.0

RocketSim 12.0 was released on October 2nd and introduced a brand new User Defaults Editor. This is also the first release that came with detailed documentation to help you get started.

RocketSim Documentation

An often requested feature has been documentation around RocketSim’s many features. Since there are so many different ways of using the app, documentation can make a difference in getting the most out of the app.

You can check out the documentation at docs.rocketsim.app like the Getting Started Guide or the list of testimonials.

Onboarding demo video

As part of this significant update, I’ve been working on the first demo video of RocketSim’s features. It does not yet contain the new User Defaults Editor, but it does explain all existing features that help you save hours per week.

RocketSim’s features explained in a demo video.

User Defaults Editor

One of the most requested features has been a real-time User Defaults Editor. This functionality can easily save you hours of time when working on features that impact cached state across app launches. The editor allows you to edit and monitor key-value pairs in real-time.

For example, I’m working on a tooltip in the following video that shows inside the WeTransfer application. The tooltip should only be showing once per user, and I want to ensure the User Defaults key hasShownUploadFilesTooltip updates accordingly. You can open the editor by clicking the Perform button and selecting the User Defaults plist file.

RocketSim’s User Defaults Editor allows you to edit and view User Defaults values in real time.

The editor monitors values constantly and flashes a blue background color when the value changes. At the same time, I can reset the value using the switch and restart the application using RocketSim to see if the tooltip shows again.

You can imagine this drastically speeds up the workflow of testing implementations that rely on UserDefaults. What’s best is that you can get started for free and test the editor with any standard suites by installing RocketSim from the Mac App Store.

RocketSim 11.0

RocketSim 11.0 was released on July 25th and introduced watchOS and visionOS simulator support. Furthermore, device bezels have been improved and there are new ways of showing touches in recordings.

Improved recordings with touches and bezels

One of the core features of RocketSim focuses on creating professional recordings of the features you develop. You’re able to create recordings with touches, bezels, and audio. New in RocketSim 11.0 are advanced touches that constantly show, allowing viewers to better follow your demonstration:

An example recording of showing touches constantly, also known as the ‘attention effect’.

There’s also a new animation scale for the touchpoint to indicate interaction better. The ‘attention effect’ feature can be enabled from the capturing settings. The default touches feature hides and shows the touchpoint before the interaction happens. New this version is an added in-out animation timespan to follow along easier.

For those looking to further customize their demonstration video there’s a new touchpoint style with an extra stroke animation:

An extra stroke animation and custom touch color allow you to customize.

watchOS Support

Long awaited is the support for watchOS simulators. You might have already seen this new feature in the wild on Hidde van der Ploeg’s Twitter:

An example of using RocketSim with the watchOS simulator.
An example of using RocketSim with the watchOS simulator.

In this case, he used one of Apple’s grid inside the comparing tool to ensure his designs follow recommended standards. Most of the features could be ported and are ready for you to use.

Support for visionOS simulators

Besides adding support for the latest Xcode 15 beta, I also needed to add initial support for the visionOS simulator. Features like touches in recordings are a bit odd in a 3D perspective, but you can already use the environment overrides to test your app for several accessibility features:

RocketSim supports the visionOS simulator, including testing accessibility features.
RocketSim supports the visionOS simulator, including testing accessibility features.

In the above example, we use the environment overrides to increase text size, show button shapes, and more. All other features, like creating recordings or comparing designs, are available now.

RocketSim 10.0

RocketSim 10.0 was released on March 14th and introduced Simulator Location Simulation features in Quick Actions. The floating window has been redesigned to offer extra location functionalities and offers extra focus during development. Besides those two significant highlights, many other improvements have been introduced since the last major update.

Location Simulation Testing

Quick Actions for single locations or routes allow you to simulate the location inside the Simulator.
Quick Actions for single locations or routes allow you to simulate the location inside the Simulator.

The new location simulation feature allows you to create a car or walking route from start to destination and execute it via a quick action for repetitive testing. I’m translating the MKRoute output into coordinates so that the location simulation follows the given route. You can control how the route will update using the speed and interval parameters.

You can make use of the single location switcher to simulate the location without a quick action:

Simulate a single location by moving the pin on the map.
Simulate a single location by moving the pin on the map.

Location simulation has been one of those features requested by users, and their responses after trying it out have been great:

“That was exactly what I was looking for, so thank you! I can’t really express in words how much of a benefit for me this will be.”

“I’m super happy with the new location simulation features in RocketSim. Makes testing my in-app location features much faster”

It’s one of the best feelings to be able to help developers optimize their day-to-day job!

Recordings with Audio

I opened this issue almost three years ago and finally found a way to implement this without needing virtual drives and complicated user configurations. You can now enable “Record Audio” from the side window, and your Simulator audio will be added to the video recording.

Zoom in on views using the new Magnifier

Kudos to Adam Bell, who encouraged me to build this feature during iOS Conf SG. The new magnifier allows you to zoom in on pixels and verify whether elements look as expected.

Magnify for precision and verify pixel-perfect design implementations.

Floating Window Minimized Mode

Although the floating window works excellently for all supported features, users haven’t always loved it since it’s always visible. Therefore, I decided to spend time creating a minimized version to hide the windows when you don’t need them.

Minimize the floating window in times you don’t need it.

Vote for your most-wanted features

Together with friends, I introduced Roadmap to allow for public feature voting. Obviously, I had to implement this myself:

Could you vote on the roadmap to ensure I'm building the most critical features next?
Could you vote on the roadmap to ensure I’m building the most critical features next?

Building new features is great, but even better if you know it’s a wanted feature by many end-users.

Other improvements and fixes

Besides the major new features mentioned above, there are a few smaller improvements worth highlighting:

  • You can now generate GIFs with device bezels and touches
  • PNGs can be dragged directly into App Store Connect to be used as App Screenshots
  • Added several animations to improve the look in feel, including a spring animation for the floating window
  • The floating Window quick menu allows you to access settings or stick the floating window to the left, right, or bottom (also new!)
  • Advanced comparing options allow you to adjust the position and size of the overlay image
  • Added a directory for File Provider Storage
  • Added a Terminate perform action
  • Added a Relaunch perform action

RocketSim 9.0

RocketSim 9.0 was released on the 5th of January 2023 and introduced Quick Actions to test deeplinks and Push Notifications, together with a redesign of the floating window.

The new bundle identifier-based quick actions allow you to quickly test universal links and notifications for your app.

You can trigger Deeplinks and Push Notifications quickly from the floating window in RocketSim 9.0
You can trigger Deeplinks and Push Notifications quickly from the floating window in RocketSim 9.0

When implementing support for Universal links (deeplinks) and Push Notifications, we often have to retest specific flows. Being able to launch relevant links or messages quickly speeds up the implementation of these features. Secondly, many apps have configured deeplink to enable certain development-specific features. Those can now be added as a quick action.

You can configure Deeplinks and Push Notifications from the new preferences window.
You can configure Deeplinks and Push Notifications from the new preferences window.

While configuring a new push notification, you likely want to test whether it works as expected. That’s where the send button comes into place when filling in all JSON payload details:

A Push Notification can be tested during configuration to ensure it's setup correctly.
A Push Notification can be tested during configuration to ensure it’s setup correctly.

The JSON payload is flexible and supports all types of push notifications. Each group of actions links to a specified bundle identifier, automatically showing actions for the Simulator’s recent builds.

Grant, revoke, or Reset permissions

The new floating window design allows you to focus on one specific task at a time. Whether it’s location, photos, calendar, or any other permission flow you’re integrating: RocketSim helps you to quickly grant, revoke, or reset permissions:

Grant, Revoke, or Reset permissions during the implementation of privacy flows.
Grant, Revoke, or Reset permissions during the implementation of privacy flows.

Hiding the floating window and using the menu bar instead

You can access all of the above-mentioned features through the existing status bar menu. If you’re not a fan of the floating window, you can hide it and use the status bar menu instead.

You can access all actions through the status bar menu.
You can access all actions through the status bar menu.

Other improvements and fixes

Besides the above-mentioned major features, a few other improvements found their way into RocketSim 9.0:

  • Video recordings now support alpha channels, meaning you can capture videos with bezels and a transparent background. This feature was requested early on and is especially valuable if you integrate Simulator recordings into a YouTube video.
  • Added support for latest new Simulators
  • More minor improvements like dark mode menu bar support and clipping the rulers view to bounds

RocketSim 8.0

RocketSim 8.0 was released on the 12th of May 2022 and introduced Grids, Rulers, and Derived Data deletion.

Grids

A grid overlay on top of the Simulator allows you to perfectly align elements within your views. The spacing is based on device pixels, matching what you configure in either SwiftUI or UIKit.

Grids are shown on top of the Simulator to align elements within your apps.
Grids are shown on top of the Simulator to align elements within your apps.

The spacing and color can be configured from the preferences panel to adjust the grid to match your preferred spacings.

Rulers

While grids are great for quickly aligning elements at a fixed spacing, you might want to have more precise control. What if your elements are not following a predefined spacing?

Rulers are the answer and allow you to horizontally or vertically align elements at any position.

Add horizontal and vertical rulers to align elements at any position.
Add horizontal and vertical rulers to align elements at any position.

Rulers can be placed horizontally and vertically and their position is shown within the ruler. Future versions will allow you to read out values between rulers.

Deleting Derived Data

Deleting Derived Data is still a common thing to do for many app developers. It allows resetting the state of a project to perform a clean build afterward. RocketSim 8.0 allows deleting the Derived Data either globally or per app.

Quickly delete Derived Data, either globally or per app.
Quickly delete Derived Data, either globally or per app.

Deleting Dervided Data per app is useful since it makes sure you only have to rebuild the app’s project. When you delete your complete Derived Data folder, you’ll have to rebuild all your Xcode projects including fetching SPM packages.

Community driven fixes

Besides introducing a few major new features, this update also includes several fixes based on community-reported bugs. Make sure to post any bugs or feature requests you have on GitHub!

  • Copy of asset now actually copies the file (Thanks, Hidde!)
  • The recent build menu now opens correctly on a second screen
  • Touch no longer appears in the bottom-left corner (Thanks, Amir, Rob!)
  • Floating action buttons now also appear after the conversion completes while hovering
  • The first touch is now captured as well during recordings
  • Floating thumbnails start a little higher to take into account the dock spacing
  • Onboarding images are no longer blurry on non-retina displays (Thanks, Kevin!)

RocketSim 7.0

RocketSim 7.0 was released on the 13th of March 2022 and introduced a new feature called Recent Builds.

Recent Builds

Performing actions on recent builds allows developers to access common folders quickly, reset permissions, or launch/uninstall an app.

Perform quick actions on recent builds in RocketSim.
Perform quick actions on recent builds in RocketSim.

As some of you might know I’m always seeking to increase productivity. The quick actions have been a booster for my personal productivity at least.

Opening common folders and user defaults

As a developer, I often look up the documents directory to find out how my app stores files. With the new recent builds’ quick actions, I can quickly open the Documents directory of the latest build for the current active Simulator. Not having to look up this directory manually is a significant productivity improvement for me, and I hope it will make you develop a little faster.

The user defaults action allows me to look into the user defaults for the currently installed application. It’s an easy way to verify my data saves as expected.

Grant, Revoke, or Reset Permissions

While implementing features that require permissions like location or photo access, we often need to reset permissions to verify our implementation works as expected. The permission quick actions allow you to quickly grant, revoke, or reset permissions and will allow you to test and develop such features faster.

Accessing quick actions from the status bar menu

The same quick actions are available through the status bar menu:

The quick actions can be accessed from the status bar menu as well
The quick actions can be accessed from the status bar menu as well

The list of recent builds within the status bar menu represents the most recent builds overall Simulators. The benefit of this is that you don’t have to keep a Simulator open to perform quick actions.

Updated configuration options

RocketSim 7.0 introduces a few extra configuration options to better align with your needs.

New appearance options allow you to customize the floating windows
New appearance options allow you to customize the floating windows

New in this version is the appearance options, allowing you to customize the floating windows. It might be that you’re not interested in the comparing window, in case you can now hide this section entirely.

Customize the way captures are processed and configure custom theming for your recordings.
Customize the way captures are processed and configure custom theming for your recordings.

The captures section represents both recordings and screenshots and allows you to configure custom theming as well as export location and quality of the export.

RocketSim 6.0

RocketSim 6.0 introduced the option to capture recordings and screenshots with device bezels. Capturing screenshots is entirely new and is mostly different from the default Xcode screenshot feature in adding device bezels around your captures.

Recordings with touches and device bezels

Recordings with touches and device bezels allow you to make a professional video of the app you’re developing. Xcode comes with a default recording option, but it has a few downsides:

  • Landscape recordings will be exported in portrait
  • Touches will not show up
  • You’ll always get a square output that doesn’t look like a phone at all

RocketSim solves this by allowing you to record with extra features:

  • Enable touches to explain better how your app responds to user interaction
  • Device Bezels create that professional impression you need
  • Export-ready for App Store Connect. Creating App Previews has never been easier
  • Landscape orientation is correctly applied in the exported video
  • A floating thumbnail with the resulting recording allows to drag into any destination easily
  • Select MP4 or GIF to match your needs
  • Trim videos for perfect lengths
  • Control the quality of exports for perfect performance

The resulting video could look as follows:

An example recording of the Xcode Simulator made by RocketSim

The device bezels make it look like an actual device recording while the touches explain the story along the way. The background color is configurable and can be adjusted to match your branding.

Beautiful screenshots with device bezels

Creating screenshots is something I like to do often during development. It allows me to demonstrate what I’m working on, and it’s the ultimate way of sharing what I’m proud of. The Xcode Simulator allows creating screenshots by pressing CMD + S but the outcome result was not satisfying enough.

With RocketSim 6.0, you can configure another shortcut like CMD+SHIFT+S to let RocketSim handle the screenshot creation. Doing so results in the following benefits:

  • Create multiple screenshots at once. The floating thumbnails will stack and stay there until you need the screenshot. This is great when you want to drag multiple screenshots into your pull request on GitHub.
  • Add device bezels around your screenshots to make it look like a real app on a real phone

An example screenshot could look as follows, in which I adjusted the background color to match the SwiftLee branding:

An example screenshot of the Xcode Simulator created with RocketSim 6.0, applying a SwiftLee branded background color.
An example screenshot of the Xcode Simulator created with RocketSim 6.0, applying a SwiftLee branded background color.

Floating thumbnails to keep you in your flow

Especially the resulting floating thumbnails allow me to stay in my flow during development. I can create multiple recordings and screenshots, stack them up, and drag them into the destination when I’m done.

The Xcode Simulator is joined by a few floating thumbnails of several captures.

The recording thumbnail allows trimming the output video alongside the default options to copy and save the asset. The thumbnails support dragging, making it easy to drop your captures in apps like Slack, iMessage, Twitter, or GitHub. A typical scenario is to drag the video right into the pull request to demonstrate what I’ve been working on.

App Store Connect App Preview requirements

Drag and drop the thumbnail into App Store Connect, Twitter, GitHub, Slack, or any other app.

If you’ve been creating App Store Previews, you know it comes with many requirements. RocketSim takes over this responsibility and makes sure your recordings conform to the rules set by App Store Connect. The only thing you have to do is drag your recording right into App Store Connect.

RocketSim 5.0

RocketSim 5.0 introduced touches for recordings and a design comparison tool, allowing you to create pixel-perfect implementations of delivered designs.

Comparing designs from Figma, Sketch, or any other source

A major new feature in RocketSim 5.0 is the ability to compare designs in the Simulator. You can either paste, select, or use drag & drop to select your design, after which an overlay will appear on the current active simulator:

Comparing a design in the iOS Simulator

The default selected overlay allows you to adjust the opacity of the selected design. This creates a way to determine which elements are pixel-perfect and which elements need to be adjusted a bit.

The split mode allows dragging between the implementation and the design overlay. This is just another way to compare and might give better visibility on the alignment of elements than your design.

Recording with Touches

One of the most requested features since the initial launch of RocketSim has been the ability to record with touches. A new recording window appears next to the active Simulator allowing you to configure the recording settings and start a new recording.

Record the iOS Simulator with Touches
Record the iOS Simulator with Touches

Touches make a big difference in explaining features in your app. It shows the source of an event and makes it easier to follow along, step by step.

The following video shows how deleting content works in the Collect by WeTransfer app. The right version with touches makes it much more clear how the feature works.

The same recording with and without touches.

Showing touches is a new feature that isn’t available in other tools like the Xcode Command Line tool xcrun simctl and makes RocketSim a unique app to have for sharing your recordings.

RocketSim 3.0

RocketSim 3.0 introduced the option to create GIF recordings and improved deeplinks managing.

Recording the Xcode iOS Simulator

RocketSim solves this problem by making it super easy to record the iOS simulator from its status bar menu.

Use RocketSim to create a recording of the iOS Simulator
Use RocketSim to create a recording of the iOS Simulator

It uses the focused simulator and starts recording directly after clicking “Start recording” from the menu. Recordings are automatically saved into a RocketSim subfolder of your Movies folder and the file is opened in Finder after the recording is stopped from the menu.

The only thing left is to copy and paste the video to share the problem, feature, or impressive animation with your team!

Universal Links make it possible to open content directly in your app. Transfer links get opened directly in the Collect App, location URLs in Apple Maps, and GitHub repositories inside the GitHub app. Those are examples of implementations that rely on universal linking.

Universal links, also known as deeplinks, can be hard to test. You have to manage all types of universal links and make it easy to open them in the simulator. Before RocketSim, I was keeping a list of links in notes, which I would copy into Safari on the simulator so I could open them with the Smart App Banner.

Right now, I’ve created groups for both staging and production so I can easily access them from the RocketSim menu. Those testing links are private but a similar group for Apple Maps could look as follows:

Testing universal links with RocketSim
Testing universal links with RocketSim

The greatest thing is that you can set a shortcut to re-run the latest launched deeplink. The shortcuts only work when the simulator is active so they don’t override other app shortcuts (I couldn’t use CMD+SHIFT+D for sending emails anymore, eat your own dog food!).

Last but not least, you can directly execute deeplinks from the clipboard. This helped me to quickly open a transfer that was shared with me to reproduce certain specific bugs. If you often have to test universal links in your app, this will be a great productivity booster.

Reporting bugs and feature requests

The project will not be open-sourced. Still, I decided to open a GitHub repository for managing bugs and feature requests. It allows me to develop in the open and get insights into what issues are most important for users to be fixed. Of course, it helps that I’m building a developer tool so I’m pretty sure that all my end users are familiar with GitHub.

Reporting a bug or requesting a feature is as simple as creating an issue in the RocketSim public repository.

Staying up to date on current development

You can follow active development on Twitter or get an overview of all features at rocketsim.app.

Download RocketSim

Ready to get started?

 

Stay Updated with the Latest in Swift & SwiftUI

Let me do the hard work and join 18,250 developers that stay up to date using my weekly newsletter:


Featured SwiftLee Jobs

Find your next Swift career step at world-class companies with impressive apps by joining the SwiftLee Talent Collective. I'll match engineers in my collective with exciting app development companies. SwiftLee Jobs