I've tried making snap packages, but I discovered they're very tightly tied to Ubuntu's base packages. They're not portable at all. In essence they're effectively just a secondary Ubuntu-specific package format for user-level applications.
For example, with flatpak you select a base runtime for your package that contains mostly system-agnostic libraries. With snap, you specify an Ubuntu version as a base runtime and additional dependencies that are Ubuntu packages.