twinBASIC Update: August 31, 2025
Highlights include an extensive list of bug fixes and developer quality-of-life improvements in the long-awaited BETA 871 release.

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. 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 Wiki (list of new features not in VBx)
- GitHub Issue Tracker (report bugs)
- twinBASIC/VBx LinkedIn Group
Highlights
BETA 871 Released
As promised, Wayne released a new beta version on August 29. However, it seems my theory of the case–that a pre-announced launch date foreshadowed the introduction of a major new feature–was incorrect. It appears the timeline was driven more by the UK school calendar than by project feature development:

Oops. ¯\(ツ)/¯
That said, while there is no single new killer feature in the BETA 871 release, there were indeed lots of developer quality of life improvements.
Anyway, here's a brief summary of some of the key new features:
- Search added to the IDE PROPERTIES panel
- Added an
App.IsElevated
property [+]
/[-]
buttons to tweak font size (on form designer mini toolbar)[Alt]
+{Left-click and drag}
: alternative control selection mode that only chooses controls that are fully enclosed within the selection lasso- Keyboard navigation added to many IDE dialogs
Improved Tab Management
Here's a screenshot of the new editor tab management feature:

- The down-facing triangle opens the drop-down list
- The list of currently open tabs in the editor
- Recently closed tabs appear in a sub-menu
While the tab selector is dropped down, you can perform a live search/filter of the tabs by entering a few characters that match the name of the tab you are looking for. For example, here's how the dropdown looked after I typed in the characters "MDI" on my keyboard:

Notice how the filtered/searched-for text is highlighted in red.
Reopen Latest Closed Tab
There's also a new IDE command to reopen the latest closed tab, with a default key binding of [Ctrl]
+ [Shift]
+ [T]
. As with all IDE commands, the shortcut key can be modified via the twinBASIC menu: Window > Keyboard Shortcuts > Manage Keyboard Shortcuts...
Property Sheet Search/Filter
No more scrolling through long lists of properties searching for a needle in a haystack. With the new property sheet search/filter feature, you simply:
- Click on the magnifying glass in the top-right corner of the PROPERTIES pane
- Enter the text you want to use to filter the properties shown
For example, in the screenshot below, typing "Color" in the filter box hides all properties except the two that contain the word "color":

Some Discord users got really excited about this new feature:

Font Resize Buttons
Here's a screenshot of the "mini toolbar" that appears on the form designer when you select certain controls. The new font resize buttons are highlighted and outlined:

Auto-Prettify Code & Show CodeLens Run Procedure
BETA 871 also includes two new options to disable built-in twinBASIC features:

Auto-Prettify Code
With this setting turned on (the default), the twinBASIC IDE works like the VB6/VBA IDE by doing things like removing extra spaces from lines of code. For example, Auto-Prettify will turn this...
Private Sub Cascade_Click()
Me.Arrange( vbCascade )
End Sub
...into this...
Private Sub Cascade_Click()
Me.Arrange(vbCascade)
End Sub
I'm not sure why you would want to disable this feature, unless perhaps there are performance issues on very large codebases.
Show CodeLens Run Procedure
This setting controls whether the "run [ProcedureName]" convenience links get added to the code window for public procedures.

These clickable links make it easy to quickly test functions or subs without having to type the full procedure name in the Debug Console.
Discord Chat Summary
* Auto-generated via Claude-Sonnet-4
Overview
The week of August 26-31, 2025 saw strong community engagement around twinBASIC development, with significant focus on 64-bit compatibility challenges, debugging improvements, and practical implementation discussions. The release of BETA 871 brought important quality-of-life improvements, while community members actively collaborated on solving technical challenges ranging from socket programming to Windows API integration.
Bug Fixes & Improvements
- waynephillipsea released BETA 871 with mostly quality-of-life improvements and important bug fixes, noting that coding during school holidays made tackling easier issues more practical
- Fixed Excel 2010 ribbon icon display issues affecting both PNG and BMP images in COM add-ins, with users reporting the problem across multiple twinBASIC versions (tb848-tb870)
- Added search functionality to the Properties panel, earning significant community praise for this long-requested IDE enhancement
- Resolved various compilation and runtime stability issues, including native exception handling improvements
64-bit Migration & Socket Programming
- fafalone successfully demonstrated DirectDraw 64-bit compatibility by switching from dx7vb.dll to direct Windows API calls via WinDevLib, showcasing practical migration strategies
- Community member alaskandruid encountered challenges converting VbAsyncSocket to 64-bit, highlighting the complexity of assembly thunk dependencies in legacy VB6 libraries
- wqweto confirmed no immediate plans for official 64-bit AsyncSocket support, directing users toward alternative solutions
- Discussion revealed that many VB6 socket libraries rely on problematic assembly thunks that don't translate to 64-bit environments
Language Enhancements & API Integration
- deletedewd shared an innovative generic function for retrieving interface IIDs using twinBASIC's generics support, demonstrating unique capabilities not available in VB6
- Explored advanced COM interface handling and UUID management, with discussions about standardizing GUID types across the platform
- fafalone showcased kernel-mode driver development in twinBASIC, including inline assembly examples for low-level system programming
- Community collaboration on Windows Ribbon Framework integration, with improved tooling recommendations for XML-to-binary conversion workflows
IDE & Development Experience
- Property panel search feature received enthusiastic community response, with one member suggesting "sainthood" for waynephillipsea
- Intellisense improvements and debugging enhancements continued, though some users experienced temporary configuration issues requiring IDE restarts
- Icon support testing confirmed compatibility with various sizes up to 256 pixels, with occasional IDE stability issues during resource changes
- Discussion of debugger presence detection for compatibility testing, with waynephillipsea confirming native debugger attachment during IDE execution
Conclusion
This week demonstrated twinBASIC's growing maturity through practical problem-solving and community collaboration. The successful 64-bit DirectDraw migration and innovative generic programming solutions highlight the platform's expanding capabilities beyond VB6 compatibility. The enthusiastic reception of IDE improvements like property panel search reflects the community's appreciation for developer experience enhancements. With BETA 871's stability improvements and ongoing discussions about advanced features like namespace support, twinBASIC continues progressing toward its v1.0 milestone while maintaining strong community engagement and technical innovation.
Around the Web

Changelog
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
AI-Generated Changelog Summary
* Auto-generated via Claude-Sonnet-4, sorted in order of its opinion of "most impactful changes."
Based on the changelog, here are the key improvements and new features in this twinBASIC release:
• Enhanced IDE navigation and workflow - Added open tabs dropdown with typing filter, "Recently Closed" tab list, and CTRL+SHIFT+T shortcut to reopen last closed tab
• Improved project settings experience - Simplified Project Settings dialog with many settings now hot-updatable without compiler restart, plus muted HKLM warning when DLL auto-registration is disabled
• Better form designer functionality - Added +/- buttons for font size adjustment on mini toolbar, improved auto-resync when compiler restarts, and experimental ALT-drag selection mode for more precise control selection
• New debugger controls - Added IDE commands and menu options for toggling break-on-all-errors, debuggable mode, auto-prettify code, and CodeLens procedure display
• Enhanced property management - Added search/filter feature to Properties panel with comma-delimited list support, plus property sheet enums now display integer values alongside names (e.g., "2 - vbStartUpScreen")
• Improved keyboard accessibility - Many IDE dialogs are now fully navigatable using tabs, arrows, enter, and escape keys
• Added App.IsElevated property - New boolean property to detect if the application is running with elevated privileges
WARNING: The following issues are present in each of the releases below:
- IMPORTANT: This is an interim/experimental release. It includes significant changes, so some instability is to be expected.
- KNOWN ISSUE: Controls are not being destroyed properly by the form designer, causing big memory leaks (broken in this build)
BETA 871
- added: App.IsElevated boolean property
- fixed: having multiple files open in the IDE, of the same name (with different paths), could cause save failures of "no changes detected"
- fixed: code editor 'dirty' marker for tabs was not visible in the Light themes
- added: +/- buttons on the form designer mini toolbar for tweaking the font size
- fixed: leaving a type library dissassembly viewer tab open and then removing the type library from the project would cause "Save Project Failed" errors
- added: search feature to the PROPERTIES panel, allowing to easily filter the property sheet
- fixed: after entering a code line with a missing string terminator ("), the IDE might auto-insert a terminator in the wrong place
- fixed: semantic highlighting could sometimes show incorrectly when adding new form events from the form designer
- improved: many IDE dialogs are now keyboard navigatable using tabs/arrows/enter/escape
- added: themable property DialogButtonFocusRectColor
- improved: form designers will now auto-resync when the compiler is restarted
- improved: updated the twinBASIC compiler EXE manifests, to allow XAML Islands to work from the IDE [ VanGoghGaming, discord ]
- fixed: Menu Click event not fired for intermediate popup submenus [ Don, discord ]
- fixed: calculation of ScaleWidth and ScaleHeight could be off-by-one/two, depending on border property
- fixed: movement of controls using arrow keys in form designer was not working correctly for child controls of a PictureBox when Border is visible [ Don, discord ]
- added: (IDE) open tabs drop down list button, including typing filter
- added: (IDE) 'Recently Closed' list for tabs, available via the new drop down list button
- added: IDE command 'tbEditor_ReopenLastClosedTab', default keyboard binding: CTRL+SHIFT+T
- improved: form designer property sheet enums now show the integer values alongside the enum member name, e.g. "2 - vbStartUpScreen", to match VBx
- fixed: moving controls with the arrow keys in the form designer was being affected by system DPI settings
- improved: (experimental) ALT-drag in the form designer now provides an alternative selection mode where only controls that are fully encapsulately by the lasso rectangle get selected
- fixed: accessing an MDIForm via
Forms(index)
syntax resulted in an invalid object being returned [ RiverK, vbforums ] - fixed: setting ctl.Enabled = False from Access UC container would cause display glitches [ Tecman, discord ]
- improved: simplified the Project Settings dialog
- improved: many project settings are now hot updatable without requiring a compiler restart
- fixed: editing project settings could make the whole IDE become sluggish
- added: IDE command 'tbDebug_ToggleBreakOnAllErrors', plus associated menu option under Debug > Debugger options
- added: IDE command 'tbDebug_ToggleDebuggable', plus associated menu option under Debug > Debugger options
- added: IDE command 'tbEditor_ToggleAutoPrettifyCode', plus associated menu option under code EDITOR panel ellipsis ('...') menu
- added: IDE command 'tbEditor_ToggleCodeLensShowProc', plus associated menu option under code EDITOR panel ellipsis ('...') menu
BETA 872
- fixed: auto-resync form designer on compiler restarts could freeze at 16% loading [ Alaskan Druid, discord ]
- fixed: using menu Project > References... would result in an empty list of references [ Alaskan Druid, discord ]
- improved: HKEY_LOCAL_MACHINE warning is now muted when 'Register DLL After Build' is set to No [#2225]
BETA 873
- fixed: Available Packages list in References/Settings might not be complete on first being displayed, depending on TWINSERV response time [ Alaskan Druid, discord ]
- fixed: References search bar broken in last few builds
- fixed: WebView2 Package control: could not change the DocumentURL via the form designer property sheet
- improved: property sheet filter now accepts a comma delimited list rather than just a single entry