Skip to main content

Desktop App Export

Export your interactive story as a standalone desktop game for Windows, macOS or Linux. No installer, no external services, ready to run.

What is Desktop App Export?

Desktop App is an export format introduced in StoryFlow Editor 1.5.2. It takes your project and produces a real desktop game: the editor wraps its own Electron runtime around the same story runtime used by HTML export, then packages everything into a portable artifact for your operating system. Because the underlying runtime is identical, your exported game plays exactly like it does in HTML export and in Play in Editor.

What's Included in a Desktop Export:

  • Native App Shell: A windowed or fullscreen desktop application with your project's name and icon
  • Complete Story Runtime: The same engine that powers HTML export, embedded inside the app
  • All Scripts and Assets: Every script, variable, character, image and audio file your story uses
  • Launch Settings: Fullscreen, window size and resize behavior baked in from project settings

Perfect For

  • Shipping your story as a real game on itch.io or Steam-style storefronts
  • Distributing to players who expect a downloadable executable
  • Offline play without a browser
  • Game jams where a native build feels more polished
  • Kiosk or exhibition setups that launch straight into fullscreen

Builds for Your Current OS Only

The editor builds for the operating system it is running on. Exporting a Windows app requires Windows and likewise for macOS and Linux. The export menu marks your current OS on the Desktop App row so you always know what you are about to produce. Cross-platform export is on the roadmap.

Platform Outputs

Desktop exports are written to a desktop/ folder inside your project directory. The produced artifact differs per platform:

Platform Output How Players Run It
Windows Plain folder with a renamed .exe plus support files Double-click the executable, no installer
macOS Self-contained .app bundle, ad-hoc signed Open the app (right-click Open on first launch)
Linux Single .AppImage file Run the AppImage (chmod +x may be needed)

Windows

Windows builds ship as a plain folder named after your project, containing a renamed executable plus its support files. There is no installer and no self-extracting archive. Players run the .exe directly, and you can zip the folder to distribute it.

Code
YourProject/
└── desktop/
    └── My Story/
        ├── My Story.exe    (run this)
        └── ...             (support files)

macOS

macOS builds produce a single self-contained .app bundle. The bundle is ad-hoc signed rather than notarized with an Apple developer certificate, so the first launch shows a one-time security prompt about an unidentified developer. The standard workaround applies: right-click (or Control-click) the app and choose Open, then confirm. After that, the app opens normally.

Code
YourProject/
└── desktop/
    └── My Story.app    (run this)

Linux

Linux builds produce a single portable .AppImage file that runs on most modern distributions without installation. Depending on how the file is transferred, you may need to mark it executable first:

Bash
chmod +x "My Story.AppImage"
./"My Story.AppImage"

How to Export

Export Steps:

  1. Open your project in StoryFlow Editor
  2. Ensure you've set a Startup Script via the menu next to the Play button (required for export)
  3. Optionally adjust window behavior under Launch Settings
  4. Click the dropdown arrow on the Export split button in the top-right corner of the editor
  5. Select Desktop App as the export format (the row shows a glyph marking your current OS)
  6. Click the main "Export" button
  7. The editor automatically saves all changed files before exporting
  8. When complete, click "Show in Folder" in the success toast to reveal the produced executable itself

Output Location

Desktop exports go to the desktop/ folder inside your project directory, separate from the build/ folder used by HTML and JSON exports. Re-exporting overwrites the previous desktop build for the same project name.

Launch Settings

How the exported game launches is configured per project under Project Settings → Export → Desktop App:

Setting Default Description
Fullscreen On Launch the exported game in fullscreen, covering the whole screen
Window width 1280 Window width in pixels when not fullscreen (clamped to 320 through 15360)
Window height 720 Window height in pixels when not fullscreen (clamped to 320 through 15360)
Resizable window On Allow the player to resize the window in windowed mode
Allow F11 fullscreen toggle Off Let players switch in and out of fullscreen with the F11 key

Sizing Settings Follow Fullscreen

Window width, height and resizability only apply in windowed mode, so they are disabled in the settings panel while Fullscreen is on. Turn Fullscreen off to edit them.

App Icon

The project icon you set under Project Settings → General becomes the icon of the exported app. The editor converts it to the formats each platform needs (.ico on Windows, .icns on macOS) itself, in-process and completely offline. The only bundled tool involved is rcedit.exe, which stamps the finished .ico onto the Windows executable. No network access or external services are involved.

No Icon Set?

If your project has no icon, or the icon file is missing, the export falls back to the default StoryFlow icon. The export never fails over an icon problem.

Runtime Behavior

The exported app wraps the editor's own Electron runtime around the same story runtime used by HTML export. Dialogue, options, branching, variables, characters, images and audio all behave exactly as they do in HTML export and in play-in-editor, so anything you test in the editor carries over unchanged.

There is one desktop-specific behavior: reaching the story's final END node closes the app. "Final" means an END node at the top level of your story, with no calling script left to return to. An END node inside a script invoked by a Run Script node still returns to the caller as usual, so modular stories work the same as everywhere else. Only when the call stack is empty does the app exit, giving a finished story a clean ending.

Troubleshooting

Problem Solution
Export fails with a startup script error Set a Startup Script via the menu next to the Play button, then export again
Export on Windows asks you to close the running game A previously exported build is still running and locking its files. Close the exported game, then export again
macOS blocks the app on first launch Right-click the .app and choose Open. This one-time prompt appears because the bundle is ad-hoc signed
AppImage won't start on Linux Mark the file executable with chmod +x and run it from a local filesystem
Need a build for another OS Run StoryFlow Editor on that OS and export there. Cross-platform export is planned

Next Steps

Prefer a build that runs in the browser? See HTML Export. Integrating with a game engine instead? Head to JSON Export and Game Engine Integration.

Need Help?

Join our Discord community to ask questions, share your projects, report bugs, and get support from the team and other users.

Join Discord