diff --git a/packages/app-builder-lib/src/targets/snap.ts b/packages/app-builder-lib/src/targets/snap.ts
index 2f7dd22c7cf..8b455a93680 100644
--- a/packages/app-builder-lib/src/targets/snap.ts
+++ b/packages/app-builder-lib/src/targets/snap.ts
@@ -124,7 +124,6 @@ export default class SnapTarget extends Target {
       const archTriplet = archNameToTriplet(arch)
       appDescriptor.environment = {
         DISABLE_WAYLAND: options.allowNativeWayland ? "" : "1",
-        TMPDIR: "$XDG_RUNTIME_DIR",
         PATH: "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         SNAP_DESKTOP_RUNTIME: "$SNAP/gnome-platform",
         LD_LIBRARY_PATH: [
@@ -175,9 +174,6 @@ export default class SnapTarget extends Target {
     })
 
     const snap = await this.createDescriptor(arch)
-    if (this.isUseTemplateApp) {
-      delete snap.parts
-    }
 
     const stageDir = await createStageDirPath(this, packager, arch)
     const snapArch = toLinuxArchString(arch, "snap")
@@ -210,6 +206,14 @@ export default class SnapTarget extends Target {
       args.push("--compression", snap.compression)
     }
 
+    if (this.isUseTemplateApp) {
+      // remove fields that are valid in snapcraft.yaml, but not snap.yaml
+      const fieldsToStrip = ["compression", "contact", "donation", "issues", "parts", "source-code", "website"]
+      for (const field of fieldsToStrip) {
+        delete snap[field]
+      }
+    }
+
     if (packager.packagerOptions.effectiveOptionComputed != null && (await packager.packagerOptions.effectiveOptionComputed({ snap, desktopFile, args }))) {
       return
     }
diff --git a/test/snapshots/linux/snapTest.js.snap b/test/snapshots/linux/snapTest.js.snap
index 104f71b6ecf..166c1b4af90 100644
--- a/test/snapshots/linux/snapTest.js.snap
+++ b/test/snapshots/linux/snapTest.js.snap
@@ -22,7 +22,6 @@ Object {
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "desktop",
@@ -93,7 +92,6 @@ Object {
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "desktop",
@@ -310,13 +308,13 @@ exports[`compression option 1`] = `
 Object {
   "apps": Object {
     "sep": Object {
+      "adapter": "none",
       "command": "command.sh",
       "environment": Object {
         "DISABLE_WAYLAND": "1",
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "desktop",
@@ -342,7 +340,144 @@ Object {
   "confinement": "strict",
   "description": "Test Application (test quite “ #378)",
   "grade": "stable",
+  "icon": "snap/gui/icon.png",
   "name": "sep",
+  "parts": Object {
+    "app": Object {
+      "plugin": "nil",
+      "stage": Array [
+        "-usr/lib/python*",
+        "-usr/bin/python*",
+        "-var/lib/ucf",
+        "-usr/include",
+        "-usr/lib/X11",
+        "-usr/share",
+        "-usr/sbin",
+        "-usr/bin",
+        "-usr/lib/*/libicudata.*",
+        "-usr/lib/*/libicui18n.*",
+        "-usr/lib/*/libgtk-*",
+        "-usr/lib/*/libgdk-*",
+        "-usr/lib/*/glib-*",
+        "-usr/lib/*/gtk-*",
+        "-usr/lib/*/gdk-*",
+        "-usr/lib/*/krb5",
+        "-usr/lib/systemd",
+        "-usr/lib/glib-networking",
+        "-usr/lib/dconf",
+        "-usr/lib/*/avahi",
+        "-usr/lib/*/gio",
+        "-usr/lib/*/libatk*",
+        "-usr/lib/*/libatspi*",
+        "-usr/lib/*/libavahi*",
+        "-usr/lib/*/libcairo*",
+        "-usr/lib/*/libcolordprivate*",
+        "-usr/lib/*/libcolord*",
+        "-usr/lib/*/libcroco*",
+        "-usr/lib/*/libcups*",
+        "-usr/lib/*/libdatrie*",
+        "-usr/lib/*/libdconf*",
+        "-usr/lib/*/libepoxy*",
+        "-usr/lib/*/libexpatw*",
+        "-usr/lib/*/libffi*",
+        "-usr/lib/*/libfontconfig*",
+        "-usr/lib/*/libfreetype*",
+        "-usr/lib/*/libgdk_pixbuf*",
+        "-usr/lib/*/libgdk_pixbuf_xlib*",
+        "-usr/lib/*/libgio*",
+        "-usr/lib/*/libglib*",
+        "-usr/lib/*/libgmodule*",
+        "-usr/lib/*/libgmp*",
+        "-usr/lib/*/libgnutls*",
+        "-usr/lib/*/libgobject*",
+        "-usr/lib/*/libgraphite2*",
+        "-usr/lib/*/libgssapi_krb5*",
+        "-usr/lib/*/libgthread*",
+        "-usr/lib/*/libharfbuzz*",
+        "-usr/lib/*/libhogweed*",
+        "-usr/lib/*/libicuio*",
+        "-usr/lib/*/libicutest*",
+        "-usr/lib/*/libicutu*",
+        "-usr/lib/*/libicuuc*",
+        "-usr/lib/*/libidn2*",
+        "-usr/lib/*/libjbig*",
+        "-usr/lib/*/libjpeg*",
+        "-usr/lib/*/libjson*",
+        "-usr/lib/*/libk5crypto*",
+        "-usr/lib/*/libkrb5*",
+        "-usr/lib/*/libkrb5support*",
+        "-usr/lib/*/liblcms2*",
+        "-usr/lib/*/libnettle*",
+        "-usr/lib/*/libp11*",
+        "-usr/lib/*/libpango*",
+        "-usr/lib/*/libpangocairo*",
+        "-usr/lib/*/libpangoft2*",
+        "-usr/lib/*/libpixman*",
+        "-usr/lib/*/libpng16*",
+        "-usr/lib/*/libproxy*",
+        "-usr/lib/*/librest*",
+        "-usr/lib/*/librsvg*",
+        "-usr/lib/*/libsecret*",
+        "-usr/lib/*/libsoup*",
+        "-usr/lib/*/libsqlite3*",
+        "-usr/lib/*/libtasn1*",
+        "-usr/lib/*/libthai*",
+        "-usr/lib/*/libtiff*",
+        "-usr/lib/*/libunistring*",
+        "-usr/lib/*/libwayland*",
+        "-usr/lib/*/libX11*",
+        "-usr/lib/*/libXau*",
+        "-usr/lib/*/libxcb.so*",
+        "-usr/lib/*/libxcb-dri2*",
+        "-usr/lib/*/libxcb-dri3*",
+        "-usr/lib/*/libxcb-glx*",
+        "-usr/lib/*/libxcb-present*",
+        "-usr/lib/*/libxcb-render*",
+        "-usr/lib/*/libxcb-shm*",
+        "-usr/lib/*/libxcb-sync*",
+        "-usr/lib/*/libxcb-xfixes*",
+        "-usr/lib/*/libXcomposite*",
+        "-usr/lib/*/libXcursor*",
+        "-usr/lib/*/libXdamage*",
+        "-usr/lib/*/libXdmcp*",
+        "-usr/lib/*/libXext*",
+        "-usr/lib/*/libXfixes*",
+        "-usr/lib/*/libXinerama*",
+        "-usr/lib/*/libXi*",
+        "-usr/lib/*/libxkbcommon*",
+        "-usr/lib/*/libxml2*",
+        "-usr/lib/*/libXrandr*",
+        "-usr/lib/*/libXrender*",
+      ],
+      "stage-packages": Array [
+        "libnspr4",
+        "libnss3",
+        "libxss1",
+        "libappindicator3-1",
+        "libsecret-1-0",
+      ],
+    },
+    "app-files": Object {
+      "organize": Object {
+        "*": "app/",
+      },
+      "plugin": "dump",
+      "source": "app",
+      "stage": Array [
+        "-app/chrome-sandbox",
+        "-LICENSES.chromium.html",
+      ],
+    },
+    "gnome-platform-empty-dirs": Object {
+      "override-build": "mkdir -p \\"$SNAPCRAFT_PART_INSTALL/data-dir/themes\\" mkdir -p \\"$SNAPCRAFT_PART_INSTALL/data-dir/icons\\" mkdir -p \\"$SNAPCRAFT_PART_INSTALL/data-dir/sounds\\" mkdir $SNAPCRAFT_PART_INSTALL/gnome-platform
+",
+      "plugin": "nil",
+    },
+    "launch-scripts": Object {
+      "plugin": "dump",
+      "source": "scripts",
+    },
+  },
   "plugs": Object {
     "gnome-3-28-1804": Object {
       "default-provider": "gnome-3-28-1804",
@@ -387,7 +522,6 @@ Object {
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "desktop",
@@ -458,7 +592,6 @@ Object {
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "desktop",
@@ -528,7 +661,6 @@ Object {
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "desktop",
@@ -1262,7 +1394,6 @@ Object {
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "foo",
@@ -1323,7 +1454,6 @@ Object {
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "browser-sandbox",
@@ -1525,7 +1655,6 @@ Object {
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "browser-sandbox",
@@ -1726,7 +1855,6 @@ Object {
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "desktop",
@@ -1800,7 +1928,6 @@ Object {
         "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
         "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
         "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
-        "TMPDIR": "$XDG_RUNTIME_DIR",
       },
       "plugs": Array [
         "desktop",
@@ -1880,3 +2007,72 @@ Object {
   ],
 }
 `;
+
+exports[`use template app 1`] = `
+Object {
+  "apps": Object {
+    "testapp": Object {
+      "command": "command.sh",
+      "environment": Object {
+        "DISABLE_WAYLAND": "1",
+        "LD_LIBRARY_PATH": "$SNAP_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/x86_64-linux-gnu:$SNAP/usr/lib/x86_64-linux-gnu",
+        "PATH": "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH",
+        "SNAP_DESKTOP_RUNTIME": "$SNAP/gnome-platform",
+      },
+      "plugs": Array [
+        "desktop",
+        "desktop-legacy",
+        "home",
+        "x11",
+        "wayland",
+        "unity7",
+        "browser-support",
+        "network",
+        "gsettings",
+        "audio-playback",
+        "pulseaudio",
+        "opengl",
+      ],
+    },
+  },
+  "architectures": Array [
+    "amd64",
+  ],
+  "base": "core18",
+  "confinement": "strict",
+  "description": "Test Application (test quite “ #378)",
+  "grade": "stable",
+  "name": "testapp",
+  "plugs": Object {
+    "gnome-3-28-1804": Object {
+      "default-provider": "gnome-3-28-1804",
+      "interface": "content",
+      "target": "$SNAP/gnome-platform",
+    },
+    "gtk-3-themes": Object {
+      "default-provider": "gtk-common-themes",
+      "interface": "content",
+      "target": "$SNAP/data-dir/themes",
+    },
+    "icon-themes": Object {
+      "default-provider": "gtk-common-themes",
+      "interface": "content",
+      "target": "$SNAP/data-dir/icons",
+    },
+    "sound-themes": Object {
+      "default-provider": "gtk-common-themes",
+      "interface": "content",
+      "target": "$SNAP/data-dir/sounds",
+    },
+  },
+  "summary": "Test App ßW",
+  "title": "Test App ßW",
+  "version": "1.1.0",
+}
+`;
+
+exports[`use template app 2`] = `
+Object {
+  "linux": Array [],
+}
+`;
diff --git a/test/src/helpers/packTester.ts b/test/src/helpers/packTester.ts
index 2712f060948..9aa2a509eff 100644
--- a/test/src/helpers/packTester.ts
+++ b/test/src/helpers/packTester.ts
@@ -27,7 +27,7 @@ if (process.env.TRAVIS !== "true") {
 }
 
 export const linuxDirTarget = Platform.LINUX.createTarget(DIR_TARGET)
-export const snapTarget = Platform.LINUX.createTarget("snap")
+export const snapTarget = Platform.LINUX.createTarget("snap", Arch.x64)
 
 export interface AssertPackOptions {
   readonly projectDirCreated?: (projectDir: string, tmpDir: TmpDir) => Promise<any>
diff --git a/test/src/linux/snapTest.ts b/test/src/linux/snapTest.ts
index 9c0a2ba26a8..6f284f78dee 100644
--- a/test/src/linux/snapTest.ts
+++ b/test/src/linux/snapTest.ts
@@ -40,7 +40,7 @@ test.ifAll.ifDevOrLinuxCi(
 test.ifAll.ifDevOrLinuxCi("default stagePackages", async () => {
   for (const p of [["default"], ["default", "custom"], ["custom", "default"], ["foo1", "default", "foo2"]]) {
     await assertPack("test-app-one", {
-      targets: Platform.LINUX.createTarget("snap"),
+      targets: snapTarget,
       config: {
         extraMetadata: {
           name: "sep",
@@ -82,7 +82,7 @@ test.ifAll.ifDevOrLinuxCi(
 
 test.ifAll.ifDevOrLinuxCi("buildPackages", async () => {
   await assertPack("test-app-one", {
-    targets: Platform.LINUX.createTarget("snap"),
+    targets: snapTarget,
     config: {
       extraMetadata: {
         name: "sep",
@@ -122,7 +122,7 @@ test.ifDevOrLinuxCi("plugs option", async () => {
     },
   ]) {
     await assertPack("test-app-one", {
-      targets: Platform.LINUX.createTarget("snap"),
+      targets: snapTarget,
       config: {
         snap: {
           plugs: p,
@@ -154,7 +154,7 @@ test.ifDevOrLinuxCi("slots option", async () => {
     ],
   ]) {
     await assertPack("test-app-one", {
-      targets: Platform.LINUX.createTarget("snap"),
+      targets: snapTarget,
       config: {
         extraMetadata: {
           name: "sep",
@@ -175,7 +175,7 @@ test.ifDevOrLinuxCi("slots option", async () => {
 test.ifDevOrLinuxCi(
   "custom env",
   app({
-    targets: Platform.LINUX.createTarget("snap"),
+    targets: snapTarget,
     config: {
       extraMetadata: {
         name: "sep",
@@ -197,7 +197,7 @@ test.ifDevOrLinuxCi(
 test.ifDevOrLinuxCi(
   "custom after, no desktop",
   app({
-    targets: Platform.LINUX.createTarget("snap"),
+    targets: snapTarget,
     config: {
       extraMetadata: {
         name: "sep",
@@ -217,7 +217,7 @@ test.ifDevOrLinuxCi(
 test.ifDevOrLinuxCi(
   "no desktop plugs",
   app({
-    targets: Platform.LINUX.createTarget("snap"),
+    targets: snapTarget,
     config: {
       extraMetadata: {
         name: "sep",
@@ -283,14 +283,41 @@ test.ifDevOrLinuxCi(
       },
       productName: "Sep",
       snap: {
+        useTemplateApp: false,
         compression: "xz",
       },
     },
     effectiveOptionComputed: async ({ snap, args }) => {
       expect(snap).toMatchSnapshot()
-      expect(snap.compression).toEqual("xz")
+      expect(snap.compression).toBe('xz')
       expect(args).toEqual(expect.arrayContaining(["--compression", "xz"]))
       return true
     },
   })
 )
+
+test.ifDevOrLinuxCi(
+  "use template app",
+  app({
+    targets: snapTarget,
+    config: {
+      snap: {
+        useTemplateApp: true,
+        compression: "xz",
+      },
+    },
+    effectiveOptionComputed: async ({ snap, args }) => {
+      expect(snap).toMatchSnapshot()
+      expect(snap.parts).toBeUndefined()
+      expect(snap.compression).toBeUndefined()
+      expect(snap.contact).toBeUndefined()
+      expect(snap.donation).toBeUndefined()
+      expect(snap.issues).toBeUndefined()
+      expect(snap.parts).toBeUndefined()
+      expect(snap["source-code"]).toBeUndefined()
+      expect(snap.website).toBeUndefined()
+      expect(args).toEqual(expect.arrayContaining(["--exclude", "chrome-sandbox", "--compression", "xz"]))
+      return true
+    },
+  })
+)