Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NativeScript/android
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 72fce99
Choose a base ref
...
head repository: NativeScript/android
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 9998502
Choose a head ref
  • 16 commits
  • 43 files changed
  • 1 contributor

Commits on Aug 15, 2026

  1. feat(runtime): ESM resolver hardening and async module-graph loader

    Canonicalize module identity into three registry shapes — http(s) URLs,
    custom schemes (node:, blob:, optional:), and absolute file paths — and
    key the module registries by v8::Isolate instead of thread_local storage.
    import() now rejects missing bare specifiers instead of installing
    placeholders; optional-module placeholders are built without string
    interpolation, detection is unified in IsLikelyOptionalModule, and module
    source preserves embedded NUL bytes. Thenables handed to the loader from
    JS are adopted properly. Blob URLs (blob:nativescript/<uuid>) become
    first-class module identities via URL.createObjectURL and
    URL.InternalAccessor.
    
    The prewarm/prefetch machinery is replaced by an async module-graph
    loader; boot hands off to a manual runloop that pumps pending module work
    when the entry script has not reached the main looper yet (e.g. a
    top-level-await entry still loading its graph). Load surfaces the
    failure cause to callers, and relative import() against a filesystem
    referrer keeps the already-absolute path instead of prefixing the
    application root twice.
    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    f8116c3 View commit details
    Browse the repository at this point in the history
  2. feat(runtime): HMR dev-sessions and a hardened HTTP session loader

    Dev sessions serve the app's module graph over HTTP during development,
    with a mechanism-only dev-loader contract: policy stays in JS tooling,
    the runtime supplies fetch/registry/invalidations. The loader is
    deny-by-default — remote allowlist entries only authorize URLs on a
    URL-component boundary ('/', '?', '#' or exact match), refusing
    lookalike-host and lookalike-port bypasses; a specific port must be
    listed explicitly. Hot-path hash containers use robin_hood maps.
    
    Per-fetch URL logging is opt-in via the httpFetchUrlLog config flag
    (volume is one line per fetch), alongside the existing
    logScriptLoading-gated diagnostics. The previous HMRSupport/DevFlags
    sources are replaced by HttpLoader (JNI HttpURLConnection).
    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    c70d3ee View commit details
    Browse the repository at this point in the history
  3. feat(runtime): expose the dev-loader surface as the ns:module builtin

    The dev-loader control surface (HttpLoader) is reachable from JS as the
    ns:module builtin module: NsBuiltinModules routes ns:module through
    BuildNsModuleBinding — the binding builder decides build-dependent
    membership — and ns-module.js (compiled in via js2c) shapes and freezes
    whatever arrives. docs/ns-builtin-modules.md documents the surface.
    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    776831c View commit details
    Browse the repository at this point in the history
  4. fix(worker): surface entry-script load errors and buffer early messages

    Worker entry-script load failures now reach worker.onerror instead of
    failing silently. Messages posted before the worker's entry script has
    installed onmessage are no longer dropped: ConcurrentQueue::Signal
    re-arms the drain source without enqueueing (a silent no-op when racing
    Terminate), and WorkerWrapper retries delivery through a deferred drain,
    with drainRetryPending_ preventing one stacked retry per attempt.
    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    7f13b3c View commit details
    Browse the repository at this point in the history
  5. test: cover the ESM loader, remote-module security, and worker behavior

    The ns:module surface, remote-module allowlist boundary matching, and
    relative ESM dynamic-import cases exercise the async loader and the
    deny-by-default HTTP gate. The on-device result harvester falls back to
    run-as when adb root is unavailable (Play Store emulator images), and
    -Pabis is forwarded so a single-ABI V8 tree can build and test locally.
    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    6a818e5 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    c206bce View commit details
    Browse the repository at this point in the history
  7. refactor(runtime): rename HMRSupport to HttpLoader and fold DevFlags …

    …into ns:runtime
    
    Live log flags (logScriptLoading, httpFetchUrlLog) move onto ns:runtime
    setConfig/getConfig. Remote-module security stays boot-time
    nativescript.config only. Android does not expose releasedObjectPolicy.
    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    91cd30c View commit details
    Browse the repository at this point in the history
  8. fix(runtime): harden HTTP fetch, extend names, and worker drain retries

    JNI mid-body read exceptions no longer spin the JS thread, async fetch
    threads detach from the JVM, and canonicalization config is published as
    an immutable snapshot so configureLoader cannot race a background fetch.
    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    4886f9a View commit details
    Browse the repository at this point in the history
  9. feat: reloadApplication for JS bundle restart without restarting app …

    …process
    
    Helpful for programmatic reset of JS isolate for clean restart of JS application as well as OTA (over-the-air) updates without restarting the entire app process.
    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    0bd021d View commit details
    Browse the repository at this point in the history
  10. chore: pr comments

    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    49ededc View commit details
    Browse the repository at this point in the history
  11. chore: main merge

    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    bb92b36 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    6b7b5bc View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    003655d View commit details
    Browse the repository at this point in the history
  14. chore: pr feedback

    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    cffea7d View commit details
    Browse the repository at this point in the history
  15. ci: build

    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    d102e6c View commit details
    Browse the repository at this point in the history
  16. ci: unit test fixes

    NathanWalker committed Aug 15, 2026
    Configuration menu
    Copy the full SHA
    9998502 View commit details
    Browse the repository at this point in the history
Loading