GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat: apply webpack HMR updates while a debug app runs by triniwiz · Pull Request #32 · NativeScript/windows

Conversation

@triniwiz

@triniwiz triniwiz commented Oct 22, 2026

Copy link
Copy Markdown
Member

With webpack, ns run windows syncs the hot-update files into bin\app, but nothing tells the running app to apply them, so the CLI restarts the app on every change. On Android and iOS the runtime calls global.__onLiveSync() after a LiveSync, and webpack's HMR runtime hooks that to run its hot update.

Changes

template/framework/__PROJECT_NAME__/RuntimeHost.cs (Debug builds only):

  • WatchLiveSync(dispatcherQueue) watches the app's LocalState for an ns-livesync marker. When the marker appears or changes, the host consumes it on the UI thread and runs __onLiveSync() through runtime_runscript.
  • While it watches, the host writes ns-livesync-ready. The CLI only signals an app whose host wrote it, so a newer CLI with an older host still restarts as before. The ready marker is deleted at startup and on dispose.

App.xaml.cs starts the watcher once the pump runs.

The CLI side is NativeScript/nativescript-cli (against feat/windows). It writes the marker after syncing, and now restarts on a full sync, which is how the CLI recovers from a hot update that fails.

Testing

End to end on Windows 11 (Debug, x64): a TypeScript app on webpack 5.99.7, core and @nativescript/webpack built from feat/windows, this template, a current nativescript.dll and the CLI branch:

  • Editing app.css: the CLI synced the hot-update files and logged "Refreshing application" with no restart. The app logged [HMR] success | Successfully applied update. with the same PID.
  • Editing app.ts (not hot-acceptable): the app logged [HMR] failure | A module has not been accepted., and the CLI then restarted the app (new PID), as on Android and iOS.

I haven't built the published @nativescript/windows-* packages from this template. The NativeScriptWindowsDemo and TestApp copies of the host are unchanged.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@triniwiz
feat: apply webpack HMR updates while a debug app runs
7d49623
The CLI syncs webpack's hot-update files into bin\app, but nothing told the
running app to apply them, so every change restarted the app.

Debug hosts now watch LocalState for an ns-livesync marker and call
global.__onLiveSync() on the UI thread when it appears, which runs webpack's
hot update, as the Android and iOS runtimes do after a LiveSync. The host
writes ns-livesync-ready while it watches, so a CLI only relies on the marker
when the app can act on it.
@coderabbitai

coderabbitai Bot commented Oct 22, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 3961616e-1a25-4011-8f0a-87a74a4489de

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
  • X
  • Mastodon
  • Reddit
  • LinkedIn

Comment @coderabbitai help to get the list of available commands.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@triniwiz
triniwiz merged commit 4c1ce4f into main Oct 22, 2026
1 check passed

Uh oh!

There was an error while loading. Please reload this page.

@triniwiz
triniwiz deleted the feat/webpack-hmr-livesync branch October 22, 2026 07:34
This was referenced Oct 22, 2026
feat(windows): apply webpack HMR updates without restarting the app NativeScript/nativescript-cli#6174
Merged
RFC: Windows support NativeScript/rfcs#60
Open
triniwiz added a commit to NativeScript/nativescript-cli that referenced this pull request Oct 23, 2026
@triniwiz
feat(windows): apply webpack HMR updates without restarting the app (#…
a1e8001
…6174)

tryRefreshApplication returned false for webpack, so every change restarted
the app even though the hot-update files were already in bin\app.

After a sync, the CLI now writes an ns-livesync marker into the app's
LocalState. The debug host watches for it and calls global.__onLiveSync(),
which runs webpack's hot update (NativeScript/windows#32). The CLI only does
this when the host has written ns-livesync-ready, so older hosts still restart.

shouldRestart now also restarts on a full sync, as Android and iOS do. That is
how the CLI recovers when a hot update fails.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@triniwiz
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.