Skip to content

Browser-Native Classic VB6 IDE: Hands-On Guide

A browser-native classic Visual Basic VB6 IDE just dropped. Avoid the #1 setup mistake, run Order Entry in minutes, and export real single-file HTML apps.

7 min readBeginner

The #1 mistake with a browser-native classic VB6 IDE

People open the shiny new page, hit F5 once, then immediately try to load their 2003 accounting .vbp full of third-party OCXes. When it fails, they declare the whole thing fake and go back to a dusty VM.

Wrong first move. VB6 Studio Web by Wiesław Šoltés – as of the 0.6.0 docs – is a browser-native classic Visual Basic IDE: form designer, VB-style source runtime, debugger, control library, and single-file HTML export. MIT-licensed HTML/CSS/JS. Not Microsoft’s unsupported 1998 IDE. It does not pretend otherwise.

Treat it like a new host that speaks a familiar dialect. Start empty or with the shipped Order Entry sample, learn the sandbox rules, then decide what is worth porting.

Why the old paths still hurt

Microsoft ended support for the VB6 IDE on April 8, 2008. The runtime still limps along on modern Windows under WOW. The IDE path is installers, service packs, and brittle ActiveX. That is why browser options keep showing up in chats.

Two other browser projects already exist. AvaloniaVisualBasic6 is a C#/Avalonia pixel recreation – great chrome toy, limited language on purpose. WebVB Studio is a polished free IDE with VB6-style syntax plus Python. Useful. Different job. What just dropped is the classic shell feel plus a runtime, dozens of controls, a real debugger loop, and File → Make .html... that ships a self-contained app.

On X, the author’s release notes listed the browser IDE, designer, runtime, debugger, and HTML exporter. Replies went straight to muscle memory: toolbox, properties grid, Project Explorer, F5. One line: it works like a charm. The catch is the browser sandbox – ignore it and the demo feels “broken.”

Recommended approach: run VB6 Studio Web the right way

Open the live build at wieslawsoltes.github.io/VB6 or clone the repo and serve dist/VB6-Studio-Web.html. As of 0.6.0: WebGPU drawing with Canvas2D fallback, no account, no backend database. Node.js 22+ only if you build from source.

Skip file:// when it fights you

README Run notes are blunt: browser origin policies can restrict local files, clipboard, and persistent storage. If the page feels half-dead opened from disk, do this instead:

npm run serve
# then open http://127.0.0.1:8080

The shipped single HTML is enough to try without a full rebuild.

First 10 minutes that actually stick

  1. Let the initial Order Entry project load (form + standard module).
  2. Press F5. The app runs in an embedded window. Click around. Handlers are real VB-style source.
  3. Shift+F5 returns you to design mode.
  4. Double-click a button. You land in something like Private Sub CommandButton1_Click().
  5. Change a caption, F5 again. Tight loop – the whole point of classic RAD.
  6. File → Save Project downloads a .vb6web file. Treat browser storage as best-effort; the download is the backup.
  7. File → Make <project>.html… exports one independent HTML document (model + runtime + CSS). No IDE needed later.

Pro tip: After every useful session, Save Project and Make HTML. Origin storage is not version control. The exporter is the deployment unit.

Property sizes still use twips. User guide math: 15 twips = 1 CSS pixel. Paste raw CSS pixels into the grid and the layout looks about 15× wrong until you convert.

Design and code without relearning everything

  • Toolbox → drag or double-click. Categories split general vs extended.
  • F7 code / Shift+F7 form. F4 properties. F2 Object Browser (modeless).
  • Ctrl+Space completion. Ctrl+F / Ctrl+H. Ctrl+Shift+F project-wide find.
  • Themes under Tools → Options: Windows Classic, Windows Standard (2000), High Contrast Black. IDE theme stays independent of the exported app theme.

As of 0.6.0 the project lists 37 browser control types (intrinsic-style plus extended such as TreeView, ListView, RichTextBox, grids, tabs, charts). Familiar names ≠ full native API coverage – read the control you actually dropped before assuming every old method exists.

Real-world walkthrough: Order Entry → tiny change → HTML

Order Entry is the default sample because it already has forms, modules, and controls that exercise the host – not a toy label on an empty form.

Private Sub cmdHello_Click()
 Label1.Caption = "Hello from Visual Basic"
End Sub

Wire a caption flip inside that sample, F5, confirm it, then export. Open the downloaded HTML in a clean tab with the network panel quiet. If the click still works with no calls back to the IDE host, you have an artifact – not a nostalgia screenshot.

Want more surface area? File → New Project and try Calculator, Graphics Lab, Rich Text Editor, Runtime Workbench, or the MDI Resource Workspace. Eleven examples ship under dist/examples/. Each export embeds its own runtime.

Watching the classic chrome appear inside Chrome still feels slightly unreal – like finding a working pinball machine in a server room. That feeling is useful motivation, not a compatibility certificate.

Debugger habits that save an afternoon

Caret on an executable line → F9 breakpoint → F5. Hit line goes yellow; the running UI collapses so debugger panes stay usable.

  • F8 step into · Shift+F8 step over · Ctrl+Shift+F8 step out
  • Ctrl+G Immediate: ? n * 6 or assign n = 11 in the paused frame
  • Locals, Call Stack, watches, conditional breakpoints, Run to Cursor
  • Some paused edits apply; signature or control-flow topology changes need a full stop first

Browser implementation of classic debugger ideas – not Win32 native debugging. Still enough to learn why a handler never fired.

Goal Use Avoid expecting
Learn RAD / teach forms VB6 Studio Web samples + export Full COM/OCX parity
Pixel-perfect 1998 chrome toy AvaloniaVisualBasic6 demo Production language coverage
VB6-ish + Python in one tab WebVB Studio Classic IDE chrome / deep debugger
Ship legacy binary unchanged Supported VB6 runtime on Windows Any browser IDE

Match the tool to the actual job. Mixing those four goals is how people get mad at all three browser projects plus the VM.

Limits you should budget for

Start from the project’s own compatibility contract, not a feature bullet list. No native COM/OCX loading. No arbitrary DLL or Windows API execution. No external ADO/DAO servers – in-memory recordsets yes; Access/SQL Server no. Runtime Open/Print #/Get/Put talk to a project-private virtual disk only; nothing hits the host filesystem unless you import/export through the Virtual Files dialog or a download. Classic .vbp import can pull supported .frm/.bas/.cls text when you include the files; unsupported controls need browser replacements; unknown FRX property bags stay opaque.

Hardware WebGPU, physical Safari/mobile, and full IME/accessibility paths are not certified as of 0.6.0. Canvas2D fallback exists; behavior can differ. Large real-world codebases stay a porting project.

Optional modern twist: Tools → MCP Connections wires Model Context Protocol clients with allow-once approvals. Sharing off by default. Handy if you already live in agent workflows; noise if you just want a CommandButton.

FAQ

Is this the real Microsoft Visual Basic 6?

No. Independent MIT reimplementation. Familiar syntax and workflow on purpose; binaries and COM do not transfer. Microsoft trademarks stay with Microsoft.

Can I open my old .vbp and ship tomorrow?

Usually not unchanged. Import the text pieces you can, watch diagnostics, swap missing ActiveX for browser controls, retest events. Bit-identical Windows binaries still belong on the classic runtime path Microsoft documents for supported OS versions. Use this IDE when HTML export or a teachable RAD loop is the point.

What should I try after Order Entry?

Export first so you trust the pipeline. Then Runtime Workbench (optional args, statics, CallByName) or Rich Text Editor for RTF edges. Prefer the debugger? Conditional breakpoint in a click handler until Immediate feels boring. After that: File → New Project → Standard EXE and build the smallest internal form you need this week.

Open the live IDE, F5 on Order Entry, change one caption, Make HTML before you close the tab. That single loop beats another nostalgia thread.