How to Install, Update, and Remove Flatpak Apps on Fedora

Install, update, and remove Flatpak apps on Fedora using the flatpak command-line tool with simple install, update, and uninstall commands.

When dnf says no

You installed Fedora. You opened the terminal and ran dnf install discord. The package manager replied with Error: No matching repos to query. You need the app. You do not want to compile it from source. You do not want to hunt for a third-party repository that might break your system on the next update.

This is the exact scenario Flatpak solves. Fedora ships with the Flatpak framework installed by default, but it does not ship with the app store. This is a deliberate policy choice. The base system stays minimal and stable. You add the app layer yourself.

How Flatpak fits into Fedora

Flatpak provides a sandboxed environment for desktop applications. Each app bundles its own dependencies and runs in an isolated container. The app cannot touch files outside its sandbox unless you explicitly grant permission. This isolation prevents dependency conflicts and protects your system from poorly written software.

Think of dnf as the foundation and plumbing of your house. It installs the kernel, the display server, and the core utilities. Flatpak is the furniture. You can swap out a sofa or a lamp without rebuilding the walls. If a Flatpak app breaks, it does not take down your display manager or your network configuration.

Fedora includes the Flatpak runtimes. A runtime is a shared set of libraries that multiple apps can use. For example, org.gnome.Platform provides the GTK toolkit and core GNOME libraries. When you install a GNOME-based Flatpak, it reuses the runtime already present on your system. This saves disk space compared to bundling everything inside every app.

The missing piece is the remote. A remote is a repository URL where Flatpak fetches apps. The community remote is Flathub. Fedora does not enable Flathub by default. You must add it manually.

Add Flathub once. Your system remembers the remote forever.

Add Flathub and install your first app

Run the following command to register Flathub as a remote. This command is safe to run multiple times. The flag prevents errors if the remote already exists.

# Add Flathub. The --if-not-exists flag skips the command if the remote is already configured.
# This avoids duplicate remote errors on repeated runs.
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Verify the remote is active. The output should list flathub with the URL pointing to flathub.org.

# List all configured remotes. Check that flathub appears in the output.
flatpak remotes

Install an app using its Flatpak ID. The ID follows a reverse-domain notation like org.gnome.Calculator or com.discordapp.Discord. You can find the ID on the Flathub website.

# Install an app from Flathub. The app ID is org.gnome.Calculator.
# Flatpak downloads the app and any missing runtimes automatically.
flatpak install flathub org.gnome.Calculator

The command prompts you to confirm the installation. Press y to proceed. Flatpak downloads the app bundle and extracts it into the flatpak directory. If the required runtime is missing, Flatpak downloads the runtime first. This ensures the app has the exact library versions it expects.

Update all installed Flatpak apps with a single command. This behaves like dnf upgrade for the Flatpak ecosystem.

# Update all installed Flatpak apps to their latest versions.
# Flatpak checks all configured remotes for newer commits.
flatpak update

Remove an app when you no longer need it. The command removes the app data and the app binary. It does not remove the runtime if other apps are still using it.

# Uninstall the app. The --delete-data flag removes user data stored in ~/.var/app.
# Omit --delete-data if you want to keep configuration files for a future reinstall.
flatpak uninstall --delete-data org.gnome.Calculator

Run flatpak list to verify the state of your system. The output shows installed apps, their versions, and the remote they came from.

Check the list before you debug. If the app is missing, the remote is broken.

Manage permissions and sandboxing

Flatpak apps run in a sandbox. By default, an app cannot access your home directory, your network, or other apps. It can only access its own data directory and a set of standard portals. Portals are secure interfaces for common operations like file opening, printing, and screenshots.

Sometimes an app needs more access. A media player needs to read video files from your home directory. A development tool needs to access USB devices. You grant access using overrides.

Check the current permissions for an app. This command shows which filesystems, devices, and D-Bus names the app can access.

# Show the permission matrix for the app.
# Look for Filesystem, D-Bus, and Device sections.
flatpak info --show-permissions org.gnome.Calculator

Grant filesystem access using flatpak override. The --filesystem flag accepts paths or special keywords like home or host.

# Grant the app access to the user's home directory.
# The --user flag applies the override to the current user only.
# This avoids requiring sudo and keeps system-wide apps unaffected.
flatpak override --user --filesystem=home org.gnome.Calculator

Grant network access if the app requires internet connectivity. Some apps do not request network access by default.

# Enable network access for the app.
# Without this flag, the app cannot make HTTP requests or resolve DNS.
flatpak override --user --socket=network org.gnome.Calculator

Reset all overrides for an app to restore the default sandbox. This is useful when an app behaves strangely after you granted excessive permissions.

# Reset overrides to the default state defined by the app manifest.
# This removes all custom --filesystem, --device, and --socket grants.
flatpak override --reset --user org.gnome.Calculator

Use overrides sparingly. Every permission you grant reduces the security benefit of the sandbox. If an app asks for --filesystem=host, it can read and write every file on your system. Prefer specific paths like --filesystem=~/Videos over broad access.

Check permissions before blaming the app. The sandbox is doing its job.

Reclaim disk space and clean up

Flatpak can consume significant disk space. Each app and runtime is stored as a commit in the flatpak repository. When you update an app, Flatpak keeps the old version for rollback purposes. Over time, unused runtimes and old commits accumulate.

List installed apps and runtimes with their sizes. This helps you identify large packages.

# List installed apps and runtimes. The output includes the installed size.
# Look for large runtimes that might be shared by multiple apps.
flatpak list --app --runtime

Remove unused runtimes. When you uninstall an app, its runtime might remain if no other app requires it. This command finds and removes orphaned runtimes.

# Uninstall runtimes that are not required by any installed app.
# This reclaims space from abandoned dependencies.
flatpak uninstall --unused

Clean up old commits. Flatpak stores multiple versions of apps and runtimes. You can prune old versions to save space. This is safe because Flatpak can re-download commits if needed.

# Prune old commits from the local cache.
# The --force flag removes commits even if they are referenced by active installations.
# Use this only if disk space is critically low.
flatpak prune --force

Monitor disk usage regularly. Flatpak is convenient, but it is not free. A system with dozens of Flatpak apps can easily use several gigabytes of storage.

Run the cleanup commands monthly. Future-you will thank you.

Troubleshooting common failures

Flatpak apps sometimes fail to launch or behave unexpectedly. The errors usually relate to permissions, missing portals, or runtime incompatibilities.

If an app crashes immediately on startup, check the journal logs. Flatpak apps log to systemd journals. Use journalctl to find the error.

# Show recent logs for the Flatpak session bus.
# The -u flag filters by unit. The -e flag jumps to the end of the log.
journalctl -xeu flatpak-session-helper.service

If an app cannot access the network, verify the network socket permission. The app might have been installed before you granted network access.

# Check if the network socket is enabled for the app.
# Look for "network" in the D-Bus or Socket section of the output.
flatpak info --show-permissions com.discordapp.Discord

If an app fails to find a file, check the filesystem overrides. The app might be looking in a path that is not exposed to the sandbox.

# Grant access to a specific directory.
# Replace ~/Projects with the actual path the app needs.
flatpak override --user --filesystem=~/Projects com.visualstudio.code

If the system reports Error: No such remote 'flathub', the remote was removed or corrupted. Re-add the remote using the command from the setup section.

If an app shows a blank screen or fails to render graphics, check the GPU permissions. Some apps require access to the GPU device.

# Grant access to the GPU device.
# This is required for hardware-accelerated rendering in some apps.
flatpak override --user --device=dri org.mozilla.firefox

Trust the package manager. Manual file edits drift, snapshots stay.

Choose the right package format

Fedora offers multiple ways to install software. Each method has trade-offs. Choose the format that matches your needs.

Use dnf when you need deep system integration. RPM packages install files directly into the system directories. They have full access to the filesystem, network, and hardware. Use dnf for drivers, kernel modules, and core utilities.

Use Flatpak when you want isolation and portability. Flatpak apps run in a sandbox and bundle their dependencies. Use Flatpak for desktop applications, media players, and development tools that do not require low-level system access.

Use source compilation when you need the absolute latest version or custom build flags. Compiling from source gives you control over every option. Use source when the package is not available in any repository and you are comfortable managing dependencies manually.

Use COPR when you need a package that is not in the official repositories but is maintained by a trusted developer. COPR provides RPM packages built from source on demand. Use COPR for niche tools or pre-release software that you want to install via dnf.

Stay on the official repositories for stability. Third-party sources introduce risk.

Where to go next