Skip to content
Tauri

Flathub

  1. Get your required tools.
Terminal window
git submodule add https://github.com/flatpak/flatpak-builder-tools.git
cd flatpak-builder-tools/node/flatpak_node_generator
pipx install . # Change this to your prefered installation method
  1. Generate your sources
Terminal window
# Generate your Node Sources
flatpak-node-generator --no-requests-cache -o node-sources.json yarn /path/to/your/lock/file/yarn.lock
# Generate your cargo sources
python3 flatpak-builder-tools/cargo/flatpak-cargo-generator.py -o cargo-sources.json src-tauri/Cargo.lock
  1. Create your metainfo Make sure to replace the relevant fields.
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>org.your.id</id>
<launchable type="desktop-id">org.your.id.desktop</launchable>
<name>Your Apps Name</name>
<developer id="io.github.roseblume.rosemusic">
<name>Your Name</name>
</developer>
<content_rating type="oars-1.1">
</content_rating>
<keywords>
<keyword>Keyword1</keyword>
<keyword>Keyword2</keyword>
</keywords>
<branding>
<color type="primary" scheme_preference="light">#00ffff</color>
<color type="primary" scheme_preference="dark">#0c9aff</color>
</branding>
<recommends>
<display_length compare="ge">360</display_length>
</recommends>
<summary>Your Summary</summary>
<metadata_license>MIT</metadata_license>
<project_license>MIT</project_license>
<url type="homepage">https://github.com/Your-Username/Your-Repo</url>
<supports>
<control>pointing</control>
<control>keyboard</control>
<control>touch</control>
</supports>
<description>
<p>
Your Description
</p>
</description>
<screenshots>
<screenshot type="default">
<image>https://site.com/your-image.png</image>
<caption>Your Caption</caption>
</screenshot>
</screenshots>
<releases>
<release version="1.0.0" date="2024-11-02" >
<description>
<ul>
<li>Updated UI</li>
<li>Added Electronic Genre</li>
</ul>
</description>
</release>
</releases>
<update_contact>your-email@place.com</update_contact>
</component>

Your metadata is recommended to be included into your debian bundle although it is not required. This can be done by adjusting your bundle configuration like so.

"linux": {
"deb": {
"files": {
"/usr/share/metainfo/org.your.id.metainfo.xml": "relative/path/from/your/tauri.conf.json/to/your/org.your.id.metainfo.xml"
}
}
}
  1. Create your manifest
id: org.your.id
runtime: org.gnome.Platform
runtime-version: '47'
sdk: org.gnome.Sdk
command: tauri-app
finish-args:
- --socket=wayland # Permission needed to show the window
- --socket=fallback-x11 # Permission needed to show the window
- --device=dri # OpenGL, not necessary for all projects
- --share=ipc
sdk-extensions:
- org.freedesktop.Sdk.Extension.node20
- org.freedesktop.Sdk.Extension.rust-stable
build-options:
append-path: /usr/lib/sdk/node20/bin:/usr/lib/sdk/rust-stable/bin
modules:
- name: your-command
buildsystem: simple
env:
HOME: /run/build/your-module
CARGO_HOME: /run/build/your-module/src-tauri
XDG_CACHE_HOME: /run/build/your-module/flatpak-node/cache
yarn_config_offline: 'true'
yarn_config_cache: /run/build/your-module/flatpak-node/yarn-cache
sources:
- type: git
url: https://github.com/Your-Github-Username/Your-Git-Repo.git
tag: v1.2.2
- cargo-sources.json
- node-sources.json
build-commands:
- echo -e 'yarn-offline-mirror "/run/build/your-module/flatpak-node/yarn-mirror"\nyarn-offline-mirror-pruning true' > /run/build/your-module/.yarnrc
- mkdir -p src-tauri/.cargo && echo -e '[source.crates-io]\nreplace-with = "vendored-sources"\n\n[source.vendored-sources]\ndirectory = "/run/build/your-module/cargo/vendor"' > src-tauri/.cargo/config.toml
- yarn install --offline --immutable --immutable-cache --inline-builds
- yarn run tauri build -- -b deb
- ar -x src-tauri/target/release/bundle/deb/*.deb
- tar -xf src-tauri/target/release/bundle/deb/your-app/data.tar.gz
- install -Dm755 src-tauri/target/release/bundle/deb/your-app/data/usr/bin/your-command /app/bin/your-command
- install -Dm644 src-tauri/target/release/bundle/deb/your-app/data/usr/share/applications/your-app.desktop /app/share/applications/org.your.id.desktop
- install -Dm644 src-tauri/target/release/bundle/deb/your-app/data/usr/share/icons/hicolor/128x128/apps/your-app.png /app/share/icons/hicolor/128x128/apps/your-app.png
- install -Dm644 src-tauri/target/release/bundle/deb/your-app/data/usr/share/icons/hicolor/32x32/apps/your-app.png /app/share/icons/hicolor/32x32/apps/your-app.png
- install -Dm644 src-tauri/target/release/bundle/deb/your-app/data/usr/share/icons/hicolor/256x256@2/apps/your-app.png /app/share/icons/hicolor/512x512/apps/your-app.png
- install -Dm644 src-tauri/target/release/bundle/deb/your-app/data/usr/share/icons/hicolor/scalable/apps/your-app.svg /app/share/icons/hicolor/scalable/apps/your-app.svg
- install -Dm644 src-tauri/target/release/bundle/deb/your-app/data/usr/share/metainfo/org.your.id /app/share/metainfo/org.your.id

Submitting To Flathub

1. Fork The Flathub Repository

2. Clone the Fork

Terminal window
git clone --branch=new-pr git@github.com:your_github_username/flathub.git

3. Enter the repository

Terminal window
cd flathub

4. Create a new branch

Terminal window
git checkout -b your_app_name

5. Open a pull request against the new-pr branch on github

6. Your app will now enter the review process in which you may be asked to make changes to your project.


© 2025 Tauri Contributors. CC-BY / MIT