src/content/docs/recipes/apps/release-your-app.md
At some point you'll probably want to release your app to the public. Here are some guidelines that capture some advice regularly given on apps that are put in the showcase channel of the Ratatui Discord server / forum. This is not a comprehensive list, but it should help you get started.
cargo.lock file.--locked to your cargo install command. This makes sure that your users will install the
same version of your dependencies that you used to build your app.README.md file to your project. This file should contain:
LICENSE file to your project. This file should contain the license you are using for your
app. The most common licenses are MIT and Apache 2.0. You can use ChooseALicense to help you
choose a license.Cargo.toml file.Release-plz to automate your GitHub releases. This makes doing a release as easy
as clicking merge on an automatically generated PR.Don't forget to add a screenshot / gif of your app in action. This will help users understand what
your app does and how it looks. We recommend using a tool like VHS to automate the process of
creating screenshots and gifs. See the .tape files in the [Ratatui repository] for examples of how
we use VHS to create screenshots and gifs for our all the examples and widgets.
Some tips for creating good screenshots:
TL;DR: Use VHS, Set Width 1200, Set Theme "Aardvark Blue", Sleep 2s, Hide/Show around
CLI command to run the app,
Hide and Show commands in VHS. This will
make your screenshots look cleaner and more professional.vhs publish), or store them in a PR
comment, an image hosting service, or your own website.Make sure you enable additional compiler optimizations for the release build. This will help reduce
the size of the resulting binary. Add the following lines to your Cargo.toml file:
[profile.release]
codegen-units = 1 # Allows compiler to perform better optimization.
lto = true # Enables Link-time Optimization.
opt-level = "s" # Prioritizes small binary size. Use `3` if you prefer speed.
strip = true # Ensures debug symbols are removed.
3 to optimize
performance, z to optimize for size, and s for something in-between.