twinBASIC Update: November 10, 2026
Highlights include hover tips inside With blocks (now with hex values) and a call for testers for Krool's SendKeys replacement.
On April 23, 2021, I helped Wayne Phillips introduce the world to twinBASIC at the Access DevCon Vienna conference. I boldly predicted that twinBASIC (along with the Monaco editor) would replace VBA and its outdated development environment by 2025. (And I was oh so close...) With that goal in mind, this weekly update is my attempt to keep the project fresh in the minds of the VBA development community.
Every Sunday Monday week, I will be providing updates on the status of the project, linking to new articles discussing twinBASIC, and generally trying to increase engagement with the project. If you come across items that should be included here, please leave a comment below.
Here are some links to get involved with the project:
- Custom twinBASIC IDE Installation Guide
- twinBASIC Discord Server (chat about the project)
- twinBASIC Documentation (list of new features not in VBx)
- GitHub Issue Tracker (report bugs)
There was no update last week because I was in London for the UKAUG Autumn 2026 conference. While I was there, I squeezed in something twinBASIC-related that I think was well worth missing a week for. I'll have more to share about that in the coming weeks. This update covers both weeks: BETA 1032 through 1044.
Highlights
* Generated with Claude Opus 5.5
Hover Tips Now Work Inside With Blocks
In break mode, hovering over a variable shows its current value. The VBA editor does this even for the implicit members of a With block, but twinBASIC didn't. Pause inside a block like this one in twinBASIC, hover over .Height, and nothing appeared:
With Me.txtNotes
.Height = .Height * 2
End With
The workaround was typing ?Me.txtNotes.Height into the Immediate window. twixydon, who is used to checking values by hovering, asked for this VBA behavior on October 28. When Wayne looked into it, the main fix turned out to be "to uncomment some of my code that is already designed to make it work and somehow never got enabled 🤦‍♂️".
BETA 1043 turned it on and "fixed: many cases where hovering over a With block dot-accessor element would fail during debugging." A few cases, including .Height, still failed, and BETA 1044 fixed "some further IDE debug hover situations." BETA 1044 also added this:
improved: debug hover over an integral value also now shows the hex value alongside the decimal
That helps with the numbers VBA developers usually read in hex: error numbers like &H80004005, Windows API return codes, and color values. In the example below, the decimal -2147483633 means little at a glance, but its hex form, &H8000000F, is the system color vbButtonFace:

One known gap: after BETA 1043, twixydon reported that hover tips over control-array properties had stopped working. The release notes don't say whether 1044 fixed it.
Help Test a SendKeys Replacement
On November 8, Wayne asked the whole server for help:
If you're someone that uses SendKeys() in your projects, please try out Krool's potential replacement function here and give feedback
Since BETA 291 in April 2023, twinBASIC's SendKeys has passed each call to Windows Script Host's WScript.Shell.SendKeys. That stopgap was Krool's suggestion. On November 6, he reopened issue #1274 to replace it: "In the sense of that VBS might get deprecated at some point we need a replacement." His version is adapted from Karl E. Peterson's classic SendKeys replacement and calls the Windows SendInput API directly.
Krool has posted fixes almost daily since then, chasing VBA.SendKeys behavior: the order of KeyDown, KeyPress and KeyUp events, Caps Lock, modifier keys on non-English layouts, and the same run-time errors as VBA. Two changes stand out for Access developers:
- No more Num Lock toggling.
VBA.SendKeysturning Num Lock off is a long-standing complaint. Krool traced it to the legacy APIs and left it out, and Wayne agreed: "If anything breaks, I'm sure we'll hear about it :)" - New key codes:
{SLEEP n}/{DELAY n}to pause for n milliseconds,{WAIT}to runDoEvents, plus{SPACE},{RETURN},{F17}to{F24}, and the numeric keypad keys.
It isn't built into twinBASIC yet. Wayne wants tests first: "Before we integrate this, we'll need to spend some time writing the tests." Krool says the code is "approaching the final state," but needs "real test usages." To help, copy the module from Krool's November 6 comment on the issue, which he updates in place, and report what you find there.
Discord Chat Summary
* Auto-generated via Claude Sonnet 5.5
Overview
Over this period, waynephillipsea shipped a fast run of betas (BETA 1032 through 1044), led by With-block hover tooltips, VB6 fidelity fixes, and parser corrections. The community discussed the 64-bit transition, the IDE extensibility model as a path to AI features, and licensing terms. Meanwhile, okas_o finished a large documentation and screenshot overhaul. Engagement was high in General, moderate in Docs, and light in Themes.
Open Bug Reports
App.Pathreturns the parent directory in the package-type sample project on BETA 1036 (console projects are correct). Find in Current Project is reported broken in the latest release. waynephillipsea reminded everyone to file bugs in the #bugs channel so they aren't lost.
Language & Compiler Behavior
- 64-bit (LongLong to Integer): waynephillipsea explained that passing a
LongLongto anIntegerparameter is a deliberate error that helps the 64-bit transition. It is the same in VBA64. He is open to defaulting to an error while allowing it to be downgraded to a warning. ByVal 0forByRef Long: waynephillipsea pointed to an implicitCLng()explained in issue #2514. VanGoghGaming's workaround is to declare the parameterByRef As AnyorByVal As LongPtr. fafalone questioned whether the override should also acceptvbNullPtr.
IDE, Themes & Extensibility
- Linked packages: waynephillipsea recommends building a package straight into
%appdata%\twinbasic\packages\, ticking it in consuming projects, and restarting the compiler to pick up changes. fafalone added that packages can also be published privately. This solved alaskandruid's multi-project sharing problem. - IDE polish: waynephillipsea said per-item toolbar icons are coming back once they are more theme-aware. dinyaz asked for a VB6-style property order option in the Properties panel.
- Themes: themes can set only fore color, text decoration, font style, and font weight, so code categories can't have their own background colors.
AI Integration & Extensibility
- Approach: waynephillipsea said AI integration will be slow and deliberate. The first step is refining the add-in extensibility model, starting with exposing CodeLens so add-ins can offer "explain with AI" actions. He rejected multiple language servers as the wrong tool for what is an IDE extensibility problem.
- Compiler access: waynephillipsea also plans to expose compiler syntax trees so agents can see how the compiler interprets code, not just the source text.
- Community input: yereverluvinunclebert asked for swappable or removable AI models and clear documentation. fafalone suggested an
AddWarning-style endpoint built on the existing squiggle system. - TwinUI: hesanbi2038 previewed TwinUI, a framework built with AI agents, and proposed a local experimental MCP integration. fafalone advised pointing agents at working samples, such as his XAudio2 playback demo, rather than letting them rewrite working code.
Documentation & Tooling
- Content: okas_o brought the docs up to BETA 1042. He added the literal keywords (
Empty,True,False,Null,Nothing), pages for the Object Browser and IDE zooming, more Common Errors tables, and a refreshed FAQ. A very preliminary reference for all 523 IDE commands is live. - Screenshots: with a new fidelity-review tool, okas_o improved or added about 500 screenshots in PNG and SVG. Only three images on the site now lack capture tooling.
Community Projects & Licensing
- ucRichEditD2D: fafalone added table insertion and formatting, cell split/merge, emoticon shortcuts, image display on hover, and Notepad-style headers and footers. The emoticon and image features need
riched20.dll, which Windows 11 loads from the Notepad package when it is installed. - XAML Islands fix: VanGoghGaming solved a crash when awaiting async operations. Releasing mouse capture before pumping messages fixes it, and a COM wait can replace
DoEventsto avoid re-entrancy:
ReleaseCapture
If CoWaitForMultipleHandles(COWAIT_INPUTAVAILABLE, INFINITE, 1, VarPtr(m_hEvent)) = S_OK Then Exit Do
- Shared resources: imojenisys published an MIT-licensed repository of VB6 behavior probes with results measured against
vb6.exe. - Licensing: members asked whether the installation limits count installed machines or concurrent use, and asked for a FAQ. dinyaz argued the limits are too tight at the subscription price. Cross-platform compiling and Silver-to-Gold upgrade questions were deferred as post-v1 topics, and the v1 date remains tentative.
Conclusion
Fast beta iteration closed several VB6-compatibility and With-block gaps, and the parser and 64-bit questions got clear answers from waynephillipsea. AI integration is progressing through the extensibility model rather than a rushed built-in feature. The docs site has more complete content and screenshots, with the IDE command reference as the next target. Open questions on licensing terms and the v1 timeline remain.
Around the Web
Osinia: An MMORPG With a twinBASIC Client
Posted on the Osinia dev blog by alaskandruid:
While fiddling around with both Osinia and Terra MMO, I came to a realization. Why not merge both!? So basically, the first iteration of Osinia will be written in TwinBasic (64bit) client and C# server (so it can run on Linux).
alaskandruid, a regular in the twinBASIC Discord, has kept two game-development blogs this year. Terra MMO was a "simple, somewhat generic FREE mmorpg for the Windows OS only," running on a game engine he wrote from scratch in twinBASIC. In his one-month anniversary post, he explained the choice of language:
Twin Basic will read and write Visual Basic 6 code as well has lots of QOL. Even though Microsoft abandoned Visual Basic.. Twin Basic is basically the spiritual successor to Visual Basic 6.
The diary is candid about the rough edges. He found that "DirectX and TB doesn't play well with DPI at the moment" and moved rendering to the SFML library. He later ripped the TGUI interface library back out, because "TGUI/TB does NOT play well together."
Osinia picks up where Terra MMO left off. Its twinBASIC client is a 64-bit Windows 10+ application that uses forms for the chat and inventory windows and SFML for the main game view. He plans to release it on itch.io first, then on Steam: "100% free, no MTX."

tbLoader: Stop Manually Downloading twinBASIC BETAs
From DTZ in show-and-tell:
Too many twinBASIC updates to keep up with? This launcher makes things easier: find and launch the latest version and handle updates, all in one place. Put it on your Windows desktop and start using it!

There are multiple updates to the TbLoader.exe available for download at the above show-and-tell link. Be sure to use the most recent for best results (scroll to the bottom of the chat).
WinRT XAML RichEditBox Demo
From VanGoghGaming in show-and-tell:
This project showcases the RichEditBox control as well as a CommandBar control at the top with the classic buttons most encountered in text editing apps. A sample RTF document is included (click the Open button to load it from the current folder).
The WinRT package has been updated with the enhanced HSTRING UDT allowing you to use native strings (BSTR) as parameters for WinRT methods requiring HSTRING.
Also the project uses the Universal Windows Print Dialog to provide printing and print preview capabilities.

Project zip file available on Discord (use link above).
tbCairo twinPACK
From Ben Clothier in show-and-tell:
There's now a twinpack to enable bindings to Cairo 1.18.4, courtesy of tbBlob. Some may find it useful. Available via packages.
Changelog
Here are the updates from the past two weeks. You can also find this information by visiting the GitHub twinBASIC Releases page.

AI-Generated Changelog Summary
* Auto-generated via Claude Sonnet 5.5, sorted in order of its opinion of "most impactful changes."
- Better Find-Replace and IDE navigation: Find-Replace now has Replace-All in the "Current Project" scope. The IDE also gained a "Close tabs to the right" option, an adjustable "Recents History Maximum Count" (default 50), and an "Az" alphabetical sort toggle in the Properties panel.
- Easier debugging:
- Hovering over an integer value now shows its hex value next to the decimal one.
- Hovering over
Withblock dot-accessors works in many more cases. - The Break On All Errors setting is now split into one setting for the project and one for packages.
- Library and package handling: Library References can now auto-fix missing linked packages that are available on TWINSERV.
- Localization:
- All WARNING diagnostics can now be localized. ERROR diagnostics can't be yet.
- Language packs were updated for Swedish, Hungarian, Italian and Dutch.
- Compiler and language correctness:
Redimon a fixed-size array inside a UDT is now caught as a compile-time error.- A Delegate Function without an explicit return type now raises the implicit-Variant warning.
- A parser bug after Delegate definitions in classes is fixed.
- A native codegen bug involving array element accessors and interface coercion is fixed.
- Constants
vbKeyF17tovbKeyF24were added to match the Windows SDK.
- Controls and UI compatibility:
- Buddy control support (such as the UpDown control) is fixed, and built-in IPPB support lays the groundwork for native Buddy controls.
MultiFramenow works on a UserControl.PaintPictureno longer fails silently in some cases.- Forms with many ActiveX or UserControls are much faster.
- Several regressions were fixed:
ForeColorandBackColoron controls, and valid dates near 31-Dec-9999 being rejected byCDate().
- Stability and theming: Several compiler and IDE crashes were fixed. UserControl timers are more reliable during destruction. Smooth scrolling in the Debug Console is now off by default because of performance problems on some systems. A new theme property,
DialogTickForeColor, was added, and the Aurora theme was tweaked.
WARNING: The following issues are present in each of the releases below:
- IMPORTANT: This is a BETA release under active development. It is not recommended for production use.
BETA 1032
- fixed: (regression) valid date values in the range 31-Dec-9999 00:00:01 -> 23:59:59 were being rejected in CDate() calls
- fixed: (regression) graphic ForeColor property for controls not fully working properly in recent releases [ Don, discord ]
- fixed: having many ActiveX or UserControls on a form can signficantly degrade general form UI performance [ axisdj, private ]
BETA 1033
- fixed: (regression) compiler crash when opening some projects [ Jim Mack, discord ]
BETA 1034
- fixed: (regression) setting PictureBox.BackColor always implicitly clears the existing content, regardless of if the value has not changed (unlike Form.BackColor) [ Don, discord ]
- improved: all WARNING diagnostics are now localizable, see file locale/en-gb.lang. ERROR diagnostics not yet localizable.
BETA 1035
- added: Theme property DialogTickForeColor [ fafalone, discord ]
- fixed: compiler crash on editing a RaiseEvent statment in some cases [ fafalone, discord ]
- fixed: PaintPicture method can silently fail in some circumstances [ Jim Mack, discord ]
- improved: Break On All Errors project setting now split into two settings; one for the project, and one for packages [ Don, discord ]
BETA 1036
- fixed:
Redimon a fixed-array within a UDT was not detected as a compile-time error - fixed: a few issues with Find-Replace IDE dialog ('Current Project' scope)
- fixed: MultiFrame control was not working when placed on a UserControl
- improved: added Replace-All support in 'Current Project' scope of Find-Replace dialog
- improved: AUTO-FIX is now implemented in the Library References for missing linked packages that are available on TWINSERV [ VanGoghGaming, discord ]
- changed: smooth multi-line scrolling for the DEBUG CONSOLE has been turned off by default due to IDE performance regressions on some systems, re-enable via the '...' button [ Sanbi, discord ]
- added: IDE option 'Recents History Maximum Count' (default 50)
- updated: 2 language pack (Swedish, Hungarian)
- special thanks to our community members for the new/updated language packs (DTZ)
BETA 1037
- fixed: BuddyControl support for controls such as MS Common Control UpDown [ axisdj, discord ]
BETA 1038
- fixed: Parser bug in some instances for syntax following a Delegate definition in a class [#2001]
- updated: 2 language pack (Italian, Dutch)
- special thanks to our community members for the new/updated language packs (Alessandro Visentin, Jaap)
BETA 1039
- improved: resilience of UC Timers against race conditions during destruction
- added: 'Close tabs to the right' option in the IDE tab context menu [ Don, discord ]
- added: internal built-in controls support for IPPB, ready for native Buddy controls support [ fafalone, discord ]
BETA 1040
- added: IDE command 'tbProperties_ToggleAlphabeticSort' plus an 'Az' toggle switch in the PROPERTIES panel header [ DTZ, discord ]
- fixed: (regression) 'Missing implementation' errors gave an invalid description in the DIAGNOSTICS panel
- fixed: native codegen bug involving array element accessors and interface coercing/uncoercing [ EduardoVB, discord ]
- fixed: (regression) IDE potential crash issue on some systems [#2555]
BETA 1041
- fixed: PropertyPage SelectionChanged should not fire during destruction [ EduardoVB, discord ]
- fixed: IDE internal error: Uncaught TypeError after a compiler restart in some instances [ Gary Miller, discord ]
- fixed: a Delegate Function without an explicit return type did not raise warning TB0003_ImplicitVariantDataType [ fafalone, discord ]
BETA 1042
- fixed: PropertyBag.WriteProperty bug when passing a value that is a Byref-String within a Variant [ EduardoVB, discord ]
- fixed: setting PropertyPage.Changed=FALSE not working [ EduardoVB, discord ]
- fixed: IDE designer property sheet context menu 'Copy' was adding extra quotes [#1017]
BETA 1043
- added: constants for vbKeyF17 to vbKeyF24 to match Windows SDK [#2557]
- fixed: many cases where hovering over a With block dot-accessor element would fail during debugging [ Don, discord ]
- updated: WinNativeCommonCtls dependency VBComDlg to v1.0.0.14
BETA 1044
- improved: debug hover over an integral value also now shows the hex value alongside the decimal [ Don, discord ]
- fixed: some further IDE debug hover situations [ Don, discord ]
- fixed: alias types like OLE_COLOR not being propagated through to ITypeInfo runtime implementation for internal (non UserControl) classes [ fafalone, discord ]
- fixed: ListBox swatch mode would stop rendering on encountering an invalid OLE_COLOR value
- fixed: F2 key when a menu item is selected in the form designer should not open Object Browser [ Don, discord ]
- fixed: double click inside the menu item rename input box should not open the code editor [ Don, discord ]
- improved: tweaked Aurora theme


