diff --git a/src/deployments/expo.ts b/src/deployments/expo.ts
index 0f83d0f..1a572db 100644
--- a/src/deployments/expo.ts
+++ b/src/deployments/expo.ts
@@ -43,18 +43,19 @@
         perspective: "published"
     });
 
-    const manifest = await client.fetch<string | null>(`*[_type == "release" && channel <= $channel && count(artifacts[_type == "expo" && platform == $platform && runtime == $runtime]) == 1] {
+    const manifestID = await client.fetch<string | null>(`*[_type == "release" && product->identity.current == $product && channel <= $channel && count(artifacts[_type == "expo" && platform == $platform && runtime == $runtime]) == 1] {
         "manifest": select(artifacts[_type == "expo" && platform == $platform && runtime == $runtime])[0].manifest,
         version
     } | order(version desc)[0].manifest`, {
+        product,
         platform,
         runtime,
         channel: EXPO_CHANNEL_NAMES[channel as keyof typeof EXPO_CHANNEL_NAMES]
     });
 
-    if (!manifest) return env.HTTP_STATUS_PAGES.fetch("https://http-status-pages.jottocraft.com/?status=404");
+    if (!manifestID) return env.HTTP_STATUS_PAGES.fetch("https://http-status-pages.jottocraft.com/?status=404");
 
-    return serveExpoManifest(request, env, ctx, product, manifest, channel);
+    return serveExpoManifest(request, env, ctx, product, manifestID, channel);
 }
 
 async function serveExpoAsset(request: Request, env: Env, ctx: AeroCtx, product: string, filename: string) {
@@ -73,6 +74,11 @@
     buildManifest.launchAsset.url = `https://aero.jottocraft.com/${product}/expo/assets/${buildManifest.launchAsset.key}.js`;
     buildManifest.assets.forEach((asset: any) => asset.url = `https://aero.jottocraft.com/${product}/expo/assets/${asset.key}${asset.fileExtension}`);
 
+    // Preserve native build and channel headers
+    if (!buildManifest.extra.expoClient.updates.requestHeaders) buildManifest.extra.expoClient.updates.requestHeaders = {};
+    if (request.headers.get("Expo-Channel-Name")) buildManifest.extra.expoClient.updates.requestHeaders["Expo-Channel-Name"] = request.headers.get("Expo-Channel-Name");
+    if (request.headers.get("jottocraft-Native-App-Version")) buildManifest.extra.expoClient.updates.requestHeaders["jottocraft-Native-App-Version"] = request.headers.get("jottocraft-Native-App-Version");
+
     const boundary = "jottocraft-Aero-Boundary-" + crypto.randomUUID();
 
     let multipartBody = [];
diff --git a/src/util/r2.ts b/src/util/r2.ts
index a7ed19e..9ddc120 100644
--- a/src/util/r2.ts
+++ b/src/util/r2.ts
@@ -14,7 +14,7 @@
         object.writeHttpMetadata(headers);
         headers.set("Etag", object.httpEtag);
         headers.set("Content-Type", contentType ?? "application/octet-stream");
-        headers.set("Cache-Control", (cacheControl ? cacheControl + ", " : "") + "no-transform");
+        if (cacheControl) headers.set("Cache-Control", cacheControl);
         headers.set("Accept-Ranges", "bytes");
         headers.set("Content-Length", String(object.size));
 
@@ -37,7 +37,7 @@
     object.writeHttpMetadata(headers);
     headers.set("ETag", object.httpEtag);
     headers.set("Content-Type", contentType ?? "application/octet-stream");
-    headers.set("Cache-Control", (cacheControl ? cacheControl + ", " : "") + "no-transform");
+    if (cacheControl) headers.set("Cache-Control", cacheControl);
     headers.set("Accept-Ranges", "bytes");
 
     if (hasRequestedRange && object.range) {
