Checklist
Is your feature request related to a problem? Please describe.
Bundle Deno runtime for YouTube JavaScript challenges
Problem
Recent versions of yt-dlp require a JavaScript runtime for some YouTube extraction paths. On Android, Seal currently does not bundle one, so YouTube downloads can fail with:
WARNING: [youtube] No supported JavaScript runtime could be found.
Only deno is enabled by default; to use another runtime add
--js-runtimes RUNTIME[:PATH] to your command/config.
This is especially noticeable on recent Android versions, where users cannot simply install a system-wide Node.js or Deno runtime.
Proposed solution
I tested bundling the Android ARM64 build of Deno 2.8.3 directly into Seal as a native library:
app/src/main/jniLibs/arm64-v8a/libdeno.so
No changes to Seal's normal download flow are required.
The important detail is that youtubedl-android already adds the application's nativeLibraryDir to PATH when launching yt-dlp. Therefore, once Deno is packaged into the application's native library directory, yt-dlp can discover and execute it automatically.
Test result
I built Seal 1.13.1 with Deno 2.8.3 bundled this way and tested it on:
- Device: Samsung Galaxy S26 Ultra
- Android: 16 / API 36
- ABI: arm64-v8a
- Seal: 1.13.1
- yt-dlp: 2026.09.16
- Deno: 2.8.3
The resulting APK successfully downloaded a YouTube video using the normal Seal download flow.
No:
- root access
- Termux
- separately installed Deno
- custom yt-dlp command
--js-runtimes option
- user configuration
was required.
Implementation
The only additional native artifact required for the ARM64 build was:
app/src/main/jniLibs/arm64-v8a/libdeno.so
The Deno binary is an Android ARM64 ELF executable and was built for Android API 30+, so it runs on Android 16.
The resulting APK contained:
with a size of approximately 88 MiB.
Considerations
I have only tested the ARM64 variant so far. Other ABIs would require their corresponding Android Deno binaries.
The main questions for upstream integration would therefore be:
- Whether bundling Deno is acceptable from an APK size perspective.
- Which Deno version should be bundled and how it should be updated.
- Whether all supported Seal ABIs should receive a bundled runtime.
- Whether there are any licensing/distribution considerations for the Deno binary.
- Whether this approach fits the current Seal architecture, especially considering the ongoing Seal 2.x development.
I'm opening this issue primarily to share a working approach and verify whether this is something the project would consider for an upstream implementation.
If useful, I can also provide the minimal source change and build instructions used for the test.
Describe the solution you'd like
No response
Video link
No response
Additional context
No response
Checklist
Is your feature request related to a problem? Please describe.
Bundle Deno runtime for YouTube JavaScript challenges
Problem
Recent versions of yt-dlp require a JavaScript runtime for some YouTube extraction paths. On Android, Seal currently does not bundle one, so YouTube downloads can fail with:
This is especially noticeable on recent Android versions, where users cannot simply install a system-wide Node.js or Deno runtime.
Proposed solution
I tested bundling the Android ARM64 build of Deno 2.8.3 directly into Seal as a native library:
No changes to Seal's normal download flow are required.
The important detail is that
youtubedl-androidalready adds the application'snativeLibraryDirtoPATHwhen launching yt-dlp. Therefore, once Deno is packaged into the application's native library directory, yt-dlp can discover and execute it automatically.Test result
I built Seal 1.13.1 with Deno 2.8.3 bundled this way and tested it on:
The resulting APK successfully downloaded a YouTube video using the normal Seal download flow.
No:
--js-runtimesoptionwas required.
Implementation
The only additional native artifact required for the ARM64 build was:
The Deno binary is an Android ARM64 ELF executable and was built for Android API 30+, so it runs on Android 16.
The resulting APK contained:
with a size of approximately 88 MiB.
Considerations
I have only tested the ARM64 variant so far. Other ABIs would require their corresponding Android Deno binaries.
The main questions for upstream integration would therefore be:
I'm opening this issue primarily to share a working approach and verify whether this is something the project would consider for an upstream implementation.
If useful, I can also provide the minimal source change and build instructions used for the test.
Describe the solution you'd like
No response
Video link
No response
Additional context
No response