---
title: About Publishing | Snapcraft
description: How to register a name, upload a snap, and publish it to the Snap Store.
url: https://snapcraft.io/about/publish
---

# Snapcraft lets you build with the tools you already use

With support for many languages out of the box, getting started with Snapcraft can be as simple as [installing and running snapcraft](https://snapcraft.io/docs/snapcraft-overview).

---

## Publish from your developer workstation

### Linux, macOS or Windows

To develop snaps you have [Linux support via Snaps](https://snapcraft.io/snapcraft), [macOS support via homebrew](https://snapcraft.io/docs/install-snapcraft-on-macos) and [Windows support via WSL](https://snapcraft.io/docs/t/building-the-snap-on-windows/6829). With whichever OS you’re comfortable with, you can develop and publish snaps.

If you already have an Electron app for Windows and macOS, you only need to make minimal changes to your package.json to build a snap that’s ready to release. [Get started with an Electron app](https://snapcraft.io/docs/electron-apps).

## Learn how to snap an app in 30 minutes

---

Choose your language:

### Choose your language:

* [Python](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-a-python-app/)
* [Pre-built apps](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-a-pre-built-app/)
* [C/C++](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-a-c-or-cpp-app/)
* [Go](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-a-go-app/)
* [Java](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-a-java-app/)
* [Node.js](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-a-node-app/)
* [Electron](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-an-electron-app/)
* [Flutter](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-a-flutter-app/)
* [Ruby](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/index.html)
* [Rust](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-a-rust-app/)
* [MOOS](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-a-moos-app/)
* [ROS](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-an-ros-1-app/)
* [ROS 2](https://documentation.ubuntu.com/snapcraft/stable/how-to/integrations/craft-an-ros-2-app/)

## Publish with our Build service

### Build for multiple architectures from a single GitHub commit

Building your snap locally limits you to your development architecture. Let us do the heavy lifting and build it for multiple architectures including AMD64, i386, ARM and ARM64.

Behind the scenes, snaps are built by [Launchpad](https://launchpad.net) the tool used to build all Ubuntu images. When your builds are ready, you can release them together, as a set, ensuring everyone on all architectures receive the same version at the same time.

[Find out more](https://snapcraft.io/build)

---

## Publish with a third party CI system

### Travis CI, Circle CI and GitHub Actions are all supported

If you’re already comfortable with a third party CI workflow Snaps are supported there too. You don’t need to change or modify anything if you don’t want to.

[Publish with Travis CI](https://docs.travis-ci.com/user/deployment/snaps/)

[Publish with Circle CI](https://circleci.com/blog/circleci-and-snapcraft/)

[Publish with GitHub Actions](https://github.com/marketplace/actions/snapcraft-action)

---

## Publish with your own infrastructure

### Trave CI, Circle CI and GitHub Actions are all supported

Already have a build farm, for all the architectures you need? The [Publisher Gateway APIs](https://dashboard.snapcraft.io/docs/) let you automate everything from uploading and releasing a Snap, to adding screenshots to display in the [Storefront](https://snapcraft.io/store).
