Yet Another Web Framework - News

For information about our next new version visit Upcoming Version.

YetaWF 5.5.0 Released

April 24, 2022

  • YetaWF uses .NET 6 and requires Visual Studio 2022.
  • Support for Bootstrap 4 & Bootstrap 5. While YetaWF only uses the Grid/Layout portion of Bootstrap, skins can optionally use all Bootstrap features, choosing between Bootstrap 4 or 5.
    • When using Bootstrap 5 which is now the default, IE11 is no longer supported.
    • When using Bootstrap 4 in a skin, AppSettings.json, Application:P:YetaWF_Core:SupportLegacyBrowser can be set to true to support IE11. Otherwise, any request by IE 11 (and lower) will be redirected to a customizable "Unsupported Browser" page (/Maintenance/Unsupported Browser.html).
  • Switch from node-sass, which is now officially deprecated, to sass (dart-sass).
  • The FileUpload1 component has been rewritten in TypeScript to eliminate the last use of jQuery.
  • The custom template for domestic and international phone numbers in the Twilio package is now a built-in template used using UIHint("PhoneNumber"). Validation attributes for phone numbers and area codes are now also available built-in.
Installing YetaWF (Git Repository)
Upgrading YetaWF

YetaWF 5.4.0 Released

May 29, 2021

  • Use of #nullable enable for all Core and DataProvider packages. Module packages may be updated in the future when features are added.
    All data (SQL, PostgrSQL, files) that now may use nullable and non-nullable columns are not affected as the generated tables or SQL stored procedures remain unchanged.
  • jQuery has been removed. While jQuery can still be conditionally used, it is currently only used by one component (FileUpload1) and is otherwise not even loaded. Only use of the component will actually load jQuery.
  • Kendo UI has been removed. All components that were based on Kendo UI (like DateTime picker, etc.) have been replaced with custom implementations.
  • Bower is no longer used.
  • Restored the original SQLDyn DataProvider as the default SQL data provider as it has proven to be significantly faster in large scale sites. This deprecates the stored procedures based SQL data provider. Existing SQL tables remain unchanged. To keep using the deprecated SQL dataprovider, see the file "notused_SQL.txt" in the repository root folder.
  • Added caching to UnifiedDataSet provider (controlling Single Page Applications) which improves initial full page loads by ~10 ms. Unified Page Sets are now the default and can no longer be turned off, meaning a YetaWF site is always and must be a Single Page Application.
  • A ConditionalAntiforgeryTokenAttribute used on a controller now always validates the antiforgery token. This means that forms can no longer be used on static pages if the ConditionalAntiforgeryTokenAttribute is used (which is the default for almost all modules). This was mandated by a security concern.
  • Improvements to some legacy constructs (AreaRegistration, removal of obsolete _SiteTemplates).
  • Numerous JavaScript legacy callbacks have been replaced by custom events.
  • Eliminated YTagBuilder (based on TagBuilder which is an "improvement" to build tags, but adds unnecessary runtime). Eliminating it in our menu rendering code improved initial page load time by ~15%.
  • New JavaScript debugging - Monitor for duplicate element ids after every new page (full or SPA) to detect id collision and invalid component HTML.
  • New Active User display in Admin > Dashboard > Active Users, showing connected users (using signalR).
  • Skins (lots of changes):
    • New Skin Palette to customize a skin and save as a theme.
    • Introduction of CSS custom properties (CSS variables) for skin theming. Initially, most components will take advantage of this. Long term this will serve to eliminate Kendo UI themes altogether which are now only used for date, datetime and time components. This includes generating CSS for legacy browsers (IE 11-) which don't support CSS custom properties (see CSS Custom Properties).
    • Skin definition files (Skin.txt) have now been replaced by Skin.yaml files. Skin.txt support has been removed.
    • Eliminated use of jQuery-UI Themes (see CSS Custom Properties).
    • Eliminated use of Kendo UI Themes (see CSS Custom Properties).
    • Eliminated support for Bootswatch as it is now easier to build themes using the Skin Palette.
    • Limited use of Bootstrap to just its grid features.
    • Eliminated use of the complete Font Awesome package and replaced with skin specific SVGs (based on Font Awesome icons). Font Awesome can still be conditionally loaded, typically by skins, but is not used unless explicitly requested. No components use Font Awesome.
  • Enhancements to Grid component: panel header, general column search, column selection, grid definition files converted to yaml files (existing grid definitions are automatically converted when first used).
  • New CheckListMenu, CheckListPanel component implementing a multi-select checkbox menu and list respectively.
  • New DropDownSearch component implementing a single-select dropdown with dynamically built search results based on typed input.
  • Alex Gorbatchev's Syntax Highlighter has been removed as it has been abandonded. Highlight.js which was available previously can be used instead. 
  • The original Lightbox has been replaced with a custom implementation in TypeScript, without jQuery dependency.

YetaWF 5.3.0 Released

November 12, 2020

  • Full support for .NET 5.0 (used on our demo sites - Windows, Linux as of 11/10/2020, the release date of .Net 5.0).
  • This new release focuses on legacy code and eliminating old "fragile" JavaScript code, with minimal new features. Instead, the focus is on improving performance, load time, eliminating old constructs and general speed improvement. Less code is better.
  • Scheduler Settings to define how much scheduler log data should be retained. New Scheduler item to remove old scheduler log records.
  • Completely removed jQuery UI which eliminates ~ 240KB. The widgets used are replaced by custom implementations (button, tabs, action menus, accordion). The jQuery UI themes are still used and supported by the new replacements.
  • Replaced the dialogs and windows (popups) with custom code, which eliminates the use of jQuery UI and Kendo UI Core for these components and improves the mobile rendering and response to window resizing.  The jQuery UI and Kendo UI themes are still used and supported by the new replacements.
  • Rewritten dropdown component - No longer uses Kendo UI or jQuery. The jQuery UI and Kendo UI themes are still used and supported by the replacement.
  • HTTP request blocking middleware analyzes User Agent and Request URL and rejects HTTP requests. Used to block bots scanning/scraping website, looking for wp-login and php exploits and email addresses (some bots are truly obnoxious and useless and can be blocked by user agent). Configurable using BlockSettings.json file, editable using Admin > Settings > Request Blocking Settings (standard YetaWF site).
  • Removed the !ci= general URL query string parameter that was used internally for character size information. This legacy artifact has been eliminated.
  • Transition to custom JavaScript events with parameters, removing some registerable callbacks.
  • MenuUL component to simplify JavaScript popup menu use, used in ActionIcons component and module menu.
  • Migrated from tslint to eslint as tslint is now deprecated. It is recommended to edit YetaWF JavaScript/TypeScript files using VS Code by opening the ./Website folder. Installing the ESLint extension is recommended to take advantage of IntelliSense. While opening files in the package Addons folder is still possible, it is not recommended (packages are now removing the tslint/tsconfig.json files). Editing files in the ./Website/wwwroot/Addons/... folders is equivalent to editing the package Addons folders as these are symlink'ed.

YetaWF 5.2.0 Released

August 6, 2020

  • Full support for PostgreSQL for all storage (modules, pages, data, etc.) as a complete replacement for SQL. A choice of SQL, PostgreSQL and File data providers is available.
  • Rewritten SQL data provider, now uses (generated) stored procedures and user-defined types, resulting in a slight performance improvement compared to dynamically generated SQL. Does not affect existing data.
  • New "toast" popup messages instead of the more rigid popups which must be dismissed. Site definable using Admin > Settings > Site Settings, Skin tab, Message Style field.
  • New test pages for Markdown, Tabs and PropertyList components.
  • Built-in LetsEncrypt support for standalone apps.
  • Scheduler improvements, better restart time calculation, set next runtime for events.
  • AppSettings.json settings can be overridden by environment variables (mainly intended for use with Docker).
  • [Debug] prefix for AppSettings.json settings.
  • Dynamically injectable middleware for website startup.
  • Revisited all external login providers and two-step authentication (as they were aging).
  • Login/Register improvements (show password rules, cosmetics).
  • During web startup, a random superuser password is generated and shown in the log for emergency login.
  • Bug fix in grid filters where MultiString types were used.
  • Improved reverse proxy support (removed some MVC5 specific code which held back the MVC6 counterpart).\
  • New HelpInfo component to add help sections to forms.
  • New Social Security Number component (SSN).
  • Many minor bug fixes.
5.1 was the last version to support ASP.NET. 
.Net 5 will be supported as soon as it's officially released in November 2020. We currently have YetaWF running with preview versions of .Net 5.0.

YetaWF 5.1.0 Released

January 16, 2020

  • Support for ASP.NET Core 3.1. This new version has resulted in a near 20% speed improvement for full page loads.
  • This is the last version to actively support ASP.NET 4. Future versions will be ASP.NET Core only, but will still compile/run with ASP.NET 4 (at your own risk).
  • Tree component now supports dynamically expanded branches (using AJAX).
  • Moved some remaining component-specific code out of Core (Grid, Tree).
  • GeoLocation support has been moved out of Core into its own package (YetaWF.Core.GeoLocation Package).
  • New Startup implementations as packages (split out of Core) to support website startup, console startup, web api startup (web service), all with Docker support.
  • New DeploySite utility for site deployment, which replaces the CopySite utility. 
  • New markdown component for editing/displaying content.
  • Changes to low-level data provider for the temporary file system. Can no longer be used to access files outside its root. Provides GetTempFile and GetTempFolder methods to create temporary files/folders which are erased during site restart.
  • Removed jquery-validate, jquery-validate-hooks and jquery-unobtrusive-validation. Validation has been replaced with a native, custom implementation based on TypeScript which simplified validation, streamlined the api and removed 3 dependencies which use jQuery.
  • Customizable package list during first time installation, allowing to create a minimal site with only required packages.
  • New "small object" static cache data provider, used for small objects, typically tree and grid definition files (GetStaticSmallObjectCacheProvider).

YetaWF 5.0.0 Released

October 2, 2019

  • Full on ASP.NET Core: YetaWF can now be built and run on other platforms supported by ASP.NET Core and is no longer limited to Windows.
    • Visit the YetaWF Demo site running on Ubuntu 18.04.2 in a container alongside SQL Server, Redis, Nginx, etc.
    • Documentation to install on Linux has been added.
    • YetaWF can run on the host or in a container (Docker).
    • All YetaWF features are available on all ASP.NET Core supported platforms.
    • New MSLog data provider logging YetaWF data to Microsoft log (suitable for use in containers).
  • Pub/Sub provider for easy publish/subscribe messaging. Currently only a Redis provider is implemented.
  • New and enhanced Process.., Required... attributes making dynamic forms completely data driven, where controls can be hidden/disabled based on other control properties within the same form. Most controls support a disabled state, in addition to being hidden, except from some complex controls which would not typically be disabled.
  • New PageBar module combining multiple pages into one page with a navigation bar using each page's favicon and title.
  • New Audit Settings (Admin) to define how long to keep audit info.
    • Scheduler task for cleanup.
  • "Database First" support added to allow pre-created indexes, foreign keys, etc. which are not part of YetaWF's automatic schema to persist, even when installing/updating models.
    • New Data_Unique attribute to identify columns with unique values.
    • New Data_ColumnName attribute to rename columns in the data provider repository. Only supported for SQL data providers, ignored by others.
  • When using new user verification via email, the Login module now has a Resend Verification Email button.
  • Site Settings now offers a PostLoginUrl property defining a URL where users are redirected after logging on.
    • Individual roles now have a PostLoginUrl property which defines a URL where users with that role are redirected after logging on. (Admin > Configuration Panel > Identity Settings, Roles tab).
  • The UserSettings package now includes a user settings module with just minimal settings (date/time format and timezone).
  • Streamlined phone number validation, based on the country defined in site settings, for national and International phone numbers.
  • A site-wide default timezone for all users can be defined in Site Settings. The default user timezone doesn't have to be the same as the server's local timezone.
  • Modules can now show individual help links, customizable through module settings.
  • Modules and pages by default have autocomplete turned off. Individual modules can set autocomplete using module settings.
  • The Identity package's handling of name/email address for login and registration has been improved.
  • The Feedback package supports entry of the user's Name (configurable).
  • The Scheduler now calculates the optimal restart time, rather than polling.
  • New DayOfMonth and DayOfWeek components.
  • Property list styles.
  • Bug Fix: ALTER COLUMN, mixing DBOs.
  • Bug Fix (ASP.NET Core): Logging providers (other than YetaWF's) could not be configured because the AppSettings.json file wasn't loaded.

YetaWF 4.3.0 Released

April 12, 2019

The theme for this new version is first page loading speed and much needed documentation has been added.
  • New StatusCheck package, which checks the availability of a list of websites at a specified interval (by default every minute). If a site is found that is down, text messages are sent to a list of phone numbers. When the site(s) come back up, a text message is sent indicating the recovery. It's like a poor man's StatusCake. It's a console application (.NET and ASP.NET Core which can be containerized). The source code demonstrates how YetaWF services (like data providers and the TwilioProcessor package) can be used from a console application.
  • Incremental JavaScript/CSS loading - For most landing pages this increases Google's PageSpeed Insights score to the low 90s for mobile and almost 100 for desktop. If no Google Fonts are used, the score will be in the high 90s for mobile and 100 for desktop. Landing pages based on Bootstrap (or custom CSS) without forms benefit the most from this enhancement. Kendo UI and jQuery UI are not loaded until needed (even on landing pages with popups, which use both).
  • Automagic use of WEBP images, which are significantly smaller than png or jpg files. This is part of the build pipeline and images are served as image/webp if the browser supports the content type. This is fully automatic, when png or jpg files are used. (documentation)
  • Custom tooltip to remove the dependency on jQuery-UI (to avoid loading it on landing pages).
  • Razor is no longer used, not even for skins. All pages, views and components are generated by C# code. No more *.cshtml. This has simplified things internally, eliminates IntelliSense problems in *.cshtml and no need to "precompile" pages/views (Goodbye Razor). It also simplifies using localization resources directly in pages.  This resulted in a >10% page load speed improvement on ASP.NET, and more on ASP.NET Core. Who knew...
  • Tree component now supports external links.
  • IVR Package:
    • Add phone numbers that are notified via text message whenever a call is received. The message is sent before the caller selects an extension or leaves a voice mail.
    • Blocked phone numbers - Calls from blocked numbers are rejected.
  • Variables in Appsettings.json (variable substitution for string values in Appsettings.json).
  • New BootstrapSkin package, which allows customization using Bootstrap variables.
  • Additional documentation:
  • Gzip compression for full page load broke along the way and has been fixed (static pages were working).
  • Removal of dependency on SQL Server Management Objects (SMO) in SQL Data Provider, making porting to other SQL-based database systems easier (like PostgreSQL, MySQL). Minimum SQL Server version required for YetaWF is SQL Server 2012.
  • Page load improved by 5-10%. Removed <script></script> code scanning which was a remnant from display/editor templates when *.cshtml were used. We can now generate JavaScript directly and add it to the end of the page.
  • JavaScript/CSS bundles would collide between different sites in one YetaWF instance. This has been corrected. That was a doozy of a bug.
  • YetaWF was tested with Visual Studio 2015 (ASP.NET 4 only) and Visual Studio 2017 and 2019 (both ASP.NET Core and ASP.NET 4).

YetaWF 4.2.0 Released

February 18, 2019
  • New IVR package: Implements a complete automated voice attendant and voice mail system, using your Twilio account with your phone number(s). Documentation for this package can be found at
    • Automated call answer with attendant ("Press 1 for sales, 2 for support...").
    • Customizable extensions.
    • Define multiple extensions, each with multiple users and phone numbers.
      • When an extension is selected, all phone numbers defined for the extension are called, with call screening, first answer is connected to caller (call hunt).
      • Call screening allows to accept a call or send it to voice mail.
      • Call screening includes information such as calling phone number, originating city and country.
    • Call log.
    • Web based voice mail retrieval for each user/extension (permissions based on users defined per extension).
    • Supports one or several main numbers, including toll-free (available from Twilio).
    • Distinct greetings for business open/closed hours and holidays.
    • Customizable holiday list.
    • Optional text message notification when a caller leaves a voice mail.
  • Use of sprites for common action icons.
  • New DisplaySteps module to show progress through related forms.
  • New Site Announcement module to send real-time announcements to all visitors, using SignalR.
  • New Web Browser Notifications module to send notifications to visitors, using SignalR. (Not supported for IE11/Edge).
  • SignalR support
    • Although supported for ASP.NET and ASP.NET Core, the SignalR versions are significantly different so that there is little common code.
  • Expanded Process..., Required... attributes (see /Documentation/YetaWF/Topic/g_dev_propertylists)
  • Minor items
  • BooleanText template - checkbox with text
  • CAProvince template - Canadian provinces dropdown
  • Copy to clipboard icon for TextAreaSourceOnly template (display)
  • TimeSpanValidation attribute (range)
Bug fixes
  • So many little fixes...
  • yTrack page tracking
  • kendo style for disabled <input>
  • Module menu fixed by converting to TypeScript, now uses intended icon, fades in/out correctly and aligns with the module contents
  • Close overlays (tooltips) on submit/apply - occasionally we would leave stray tooltips

YetaWF 4.1.0 Released

November 24, 2018

  • New Grid template replacing jqGrid with our own implementation.
    • No jQuery, uses TypeScript and YetaWF Core instead.
    • Initial page (with grid) is completely server rendered - No more initial round-trip to populate the grid.
    • Better expandability as it can fully use YetaWF features server-side and client-side.
    • When reloading a page, the entire grid status (filtering, page #, column widths, etc.) is restored.
    • Easier localization as it now uses YetaWF localization.
    • Smaller (jqGrid ~350KB, new grid ~20KB, this is mostly the result of server-side rendering).
    • Same functionality as before (at least the subset of jqGrid features we used).
    • Interestingly enough, overall page load time (average of all pages) has dropped another 10%. It's not quite clear how this new grid code caused that, but the suspicion is that this rewrite fixed some serious flaw in our original grid rendering code which went undetected. Since 3.0.0 average page load time decreased by ~20% with the removal of Display/Editor Templates and addition of this new grid.
  • New Tree template replacing jstree with our own implementation.
    • No jQuery, uses TypeScript and YetaWF Core instead.
    • Initial page (with tree) is completely server rendered - No more initial round-trip or JSON conversion to populate the tree client-side.
    • Better expandability as it can fully use YetaWF features server-side and client-side.
    • Smaller (jstree ~130KB, new tree ~10KB, this is mostly because we only used a subset of jstree, and of course the new server-side rendering).
  • Upgraded to ASP.NET Core 2.1
  • New TextAreaSourceOnly template for <textarea> where no formatting is required. This is a lot lighter than using CKEditor for source only. It also addresses a problem with a future upgrade to CKEditor 5, which no longer offers a Source View.
  • All JavaScript code has been converted to TypeScript and the conversion is now complete. While some legacy issues remain in TypeScript code, this will make refactoring and updating things a lot easier. (Some of the updated original JavaScript code was about 10 years old, so updating things is a step-by-step process). To think that this started with MVC 3 and is now still used with ASP.NET Core MVC in Single Page Applications.
    • All components (now located in ComponentsHTML) have been converted to TypeScript.
    • All modules have been converted to TypeScript. 
  • CSS to SCSS conversion for all packages.
  • 10% page load speed enhancement through
    • Skin customization caching
    • Anti-forgery token caching per request
    • Diagnostic file existence check removal in deployed builds
    • No longer allow empty CSS/SCSS files
    • Small improvement in SQL data provider FillObject method
    • Small improvement in HTML white-space compression
  • New ProcessIfSupplied, ProcessIfNotSupplied and expanded ProcessIf attribute supporting more dynamic client side form handling, supporting easier and more complex hidden/disabled fields based on other form fields.

With all the page load speed enhancements, we noticed that YetaWF running with ASP.NET Core 2.1 is now on par with ASP.NET 4. With earlier ASP.NET Core versions we generally observed that it was actually just a tad slower. The main reason we believe is that YetaWF uses just a minimal subset of MVC and already eliminated some of the performance bottlenecks in ASP.NET 4, so moving to ASP.NET Core didn't offer a performance improvement.

On another note, the white-space compression built into YetaWF is consuming about 15% of the page load time, which is quite significant. There may be better third-party solutions available for white-space compression (part of the HTTP pipeline). Overall the compression achieved is typically less than 10% so it hardly seems worth it. Fortunately it's a configurable setting (Admin > Site Settings, Pages tab, Compression field). When gzip compression is enabled for a site in IIS, the achieved compression rate is much better, in which case white-space compression is not valuable anyway.

YetaWF 4.0.0 Released

September 4, 2018

  • Removed all use of Razor for Views and Display/EditorTemplates reducing page load time by 15% on average. Razor is now only used for main pages, i.e., pages defined by skins. A skin typically only defines 6 pages.
    • Eliminates some overhead in ASP.NET internal round-trips for templates and child actions.
    • Eliminates the dual-coding of views and templates for MVC 5 and MVC 6 due to missing async/await support in MVC 5 rendering.
    • Avoids any "warm-up" time spent compiling Razor pages (views, templates), meaning a site is immediately available. (This is a huge win!)
  • Site restart has been reduced to (typically) around 5-10 seconds maximum for an average site, making a restart much less painful.
  • All HTML rendering of former templates (now Components), modules, pages is performed by a YetaWF package so all rendering can be replaced/changed by providing a new rendering package. The default rendering package (YetaWF_ComponentsHTML) which uses jQuery, jQuery-UI, Kendo UI can be replaced with any component framework (yes, it's not exactly trivial, but there is a well-defined interface and requirements).
  • All core JavaScript code (YetaWF_Core package) has been transitioned to TypeScript and no longer uses jQuery.
  • Localization has been reworked (and some bug fixes).
    • Localization files now use JSON instead of XML.
    • Localization files are now grouped by language and package in the new Localization folder (can be used as Git submodules).
  • Import/Export and backups of packages and package data now use JSON data. This means that any backups, exported zip files, prior to 4.0.0 cannot be used with 4.0.0. The only supported way to convert to 4.0.0 is by upgrading an existing site. Backup files cannot be used.
    • This fixed a long standing problem with transferring pages/modules between sites, which didn't copy role/user authorizations correctly.
  • New TimeOfDay template.
  • New DayTimeRange template.
  • New WeekDays template.
  • Authentication now supports forcing a new user password during login.
  • X-Frame-Options can be set using a site wide default and for each individual page, to allow/disallow site pages from being used in IFrames (by any site).
  • Many bug fixes.

YetaWF 3.0.0 Released

May 21, 2018

  • YetaWF for ASP.NET 5 MVC 6 is now built using netcoreapp2.0 instead of net462/net472.
  • YetaWF for ASP.NET 4 MVC 5 is now built using net472.
  • All async DataProviders (SQL & File) along with all code throughout reworked to support async.
    • YetaWF for ASP.NET 4 MVC 5 doesn't support async child actions, async rendering and async action filters, due to MVC 5 limitations.
    • YetaWF for ASP.NET 5 MVC 6 fully supports async in all child actions, rendering code and action filters.
  • Http handlers now fully async.
  • NLog support for logging. Includes a custom target logging to SQL table, viewable, searchable with YetaWF's logging browse module.
  • Full support for web garden and web farms.
    • Module/page editing is fully supported.
    • Certain site wide settings require a full restart of all instances (typically Site Settings affecting caching).
    • YetaWF version upgrades, new site creation/deletion and authorization role additions/deletions are only supported in single instance mode (no web farm/garden).
    • YetaWF stress testing shows excellent web garden performance with more than 1.5 Million full page requests per day (on one server with marginal hardware and 4 Application Pool worker processes at less than 50% overall CPU usage). Single Page Application page updates (as performed by default by YetaWF) are still higher. A web farm on separate servers would be significantly better, although this hasn't been tested (no need, no money, send servers :-)  
      However, web garden support is somewhat pointless (except for availability) as YetaWF with 1 worker process will run at nearly the same speed processing the same number of requests as a web garden (compared to 4 worker processes), thanks to YetaWF's extensive use of async throughout. A web farm is the way to scale if this should be necessary.
  • New Caching module supporting
    • distributed caching using
      • Redis
      • SQL Server
      • distributed (shared) file system
  • Updated Dashboard module supporting
    • web farm/web garden status display (postponed)
    • audit trail of any changes to site data, such as pages, modules, etc.
      • display of pending restart requirements based on significant site changes (typically Site Settings affecting distributed caching)
    • inspection of distributed cache and locks (postponed)
    • inspection of distributed file system (postponed)
  • New Page Panel to create overview pages for easier user selection of pages, with icons and links.
    • User megamenu and overview page
    • Admin megamenu and overview page
    • Configuration settings overview page
    • Dashboard overview page
  • Page Export/Import through Control Panel to easily copy pages including modules to other sites.
  • Bootstrap 4.x - While version upgrades are normally not specifically called out, this upgrade is a major new version that breaks a lot of things. Most of the breaking changes are covered by YetaWF, but some custom CSS and Text module data may need to be updated.

YetaWF 2.8.0 Released

YetaWF 2.8.0 Released in February, 2018

  • Built-in support for "Blue-Green Deployment" using IIS, with instant switchover and just inbound rules (meaning, no restrictions for gzip responses).
    • New site is deployed next to currently running site, is preloaded and tested, before instant switchover using a proxy in IIS (use of a load balancer for this purpose is also possible).
      • Existing sessions are preserved.
      • "Single Page App" is not disrupted and will simply result in a page reload when a new Url is visited.
      • Ajax requests are served by the new site for a seamless switchover.
      • Site visitors will see no disruption.
  • Support for plug-in replacable data providers for all datasets. File and SQL data providers are included.
  • New DefaultSkin skin with support for all Bootstrap themes offered by Bootswatch, including much cleanup work for skins so there is no assumption as to background/foreground colors. Implementing a brand new skin is now super simple. You can implement a Bootstrap, Kendo UI and jQuery UI theme or just select one of the predefined themes and customize.
  • Consolidated site selector and login selector into Control Panel, reducing UI and Css complexity.
  • New PartialFormCss property for skins and modules to add a Css class to partial forms. This is typically used with Bootstrap skins to add the "well" Css class to partial forms.

YetaWF 2.7.0 Released

YetaWF 2.7.0 Released on November 25, 2017

  • The location of all JavaScript files (<script src= > tags) can now be defined through Site Settings, either at the top or at the bottom of pages. This way we don't have to take sides in the debate which location is better. Placing them at the top of pages minimizes the "Flash of Unformatted Content" effect.
  • The location of all Css files (<link href= > tags) can now be defined through Site Settings, either at the top or at the bottom of pages. This way we don't have to take sides in the debate which location is better. Placing them at the top of pages minimizes the "Flash of Unformatted Content" effect.
  • When JavaScript or Css files are placed at the bottom of pages, JavaScipt/Css is injected that minimizes the "Flash of Unformatted Content". This feature is automatic and can be disabled in Site Settings.
  • A separate cookie-less domain can be defined to serve just static files  (css, js, png, etc.) to improve site performance. See Admin > Site Settings > CDN tab.
  • New TawkTo package implementing live chat with a account (basic accounts are free).
  • Simplified CDN setup (only static files are served using a CDN).
  • JavaScript/Css bundles for Unified Page Sets (SPA) are discontinued. All previously bundled JavaScript/Css is now returned as part of the response to the initial Ajax request. (This is so much better).
  • Simplified Bootstrap Carousel editing.
  • New grid action dropdown menu (instead of icons). User selectable in User > Settings. New sites default to dropdown menus.
  • Support for new (replaced) Microsoft Translator Text API.
  • New Panels package: Panel module with support for navigation between multiple modules added to the Panel module using tabs or accordion.

YetaWF 2.6.1 Released

YetaWF 2.6.1 Released on August 15, 2017

  • Support for ASP.NET Core 2.0 (Release).

YetaWF 2.6.0 Released

YetaWF 2.6.0 Released on August 13, 2017

  • New CurrencyISO4217 template supporting Currency selection and display. ISO 4217 currency codes are typically used by credit card payment processors/gateways.
  • New ExtraHead, ExtraBodyTop and ExtraBodyBottom site and page properties to define HTML to be added to <HEAD> and <BODY> tags. This is used to add 3rd party support, such as Google Tag Manager.
  • Build pipeline (gulp, ts, tslint, sass, minify,...) replacing the somewhat archaic MSBUILD parts.
  • TypeScript 2.4 support, with ES2015 code generation - Supports mixing JavaScript and TypeScript. JavaScript/TypeScript is used for individual (YetaWF) modules/templates. These do not import/require() external libraries or modules, so YetaWF avoids committing to a module loader (it's built in).
  • JSX support (without React, as it is not used by YetaWF) to simplify HTML/DOM manipulation.
  • Use of npm to manage all JavaScript packages, replacing Nuget.
  • Dropped MakeSite (used to install a new site) - While it was really easy to set up a new site, it would have required a major overhaul to support installing all the new parts, like nodejs, bower, etc. Because testing and supporting multiple install paths was quite time-consuming, we decided to use installs from the Git repository only (which also lines up with our internal requirements). We will bring MakeSite back down the road again, for binary installs only (i.e., installs without source code) for non-developers who just want to set up a new YetaWF site.

YetaWF 2.5.2 Released

YetaWF 2.5.2 Released on July 20, 2017

  • This release is now also available for ASP.NET Core MVC 2.0 (Preview 2) - Make sure to check all requirements.
  • Content Delivery Network support built-in for all major Javascript addons used by YetaWF (jQuery, jQueryUI, KendoUI, etc.) - Enable using Admin > Site Settings, CDN tab.
  • Module actions can now also be displayed in the module title area (Module Settings, Skin).
  • Syntax highlighter support for Highlight.Js (
  • New Admin configuration page to configure syntax highlighter - All syntax highlighting support has been removed from the Core package and is now only in the existing YetaWF.SyntaxHighlighter package.
  • Profiling uncovered some authorization and SQL issues - fixing these shaved off 20-100ms per Http request. You can never do enough profiling...
  • New serializer/deserializer for smaller data objects, typically used for caching. Saves ~15% run-time for a cached page request.

YetaWF 2.5.1 Released

YetaWF 2.5.1 Released on July 3, 2017

  • Every YetaWF site is a Single Page Site: Popups can optionally participate in Unified Page Sets making them much more responsive as only the necessary module contents are rendered. SEO and Analytics for popups are fully supported (just like pages - Unified Page Sets)
  • Removed the restricition so direct module links (/!Mod/...) can also participate in Unified Page Sets. These are sometimes used in grids, when no page has been designed for the detail view.
  • Skin definitions (skin.txt) now include additional information that was previously added in *.cshtml files.
  • New CountyISO3166 template to select a country (dropdown list). ISO 3166 1 support for country names (including 2 and 3 letter ids and 3 digit numbers, as these are often used by payment gateways like Paypal, Payflow, Squareup, etc.).
  • The UserProfile module now takes advantage of ISO 3166 1 country names to determine the address format. This removes the prior assumption of the module that the default site country is the US. The default site country is now configurable in Site Settings.
  • New UserId (YetaWF_Identity_UserId) template to select a user from the list of site users (as a dropdown list and a grid (Ajax), supporting sites with thousands of users).

YetaWF 2.5.1 is not currently available for ASP.NET Core (only) as we wait for netstandard2.0 support.

YetaWF 2.5.0 Released

YetaWF 2.5.0 Released on June 22, 2017

  • Every YetaWF Site is a Single Page Site:
    New "Unified Page Sets", which combine multiple separately created pages into one single page. This can be used to create a "Single Page Site". For large sites, page content in designated panes is replaced by new content via Ajax calls to the server to render modules. Only modules within designated panes participate in unified pages, so data transmission is minimized. Or for smaller sites, a unified page set can show all content at the same time using smooth scrolling when another Url is clicked, or can switch between content so visually pages still appear as individual pages, yet are loaded all as one page.
    There can be multiple sets of unified pages, within the same site, for logically related content.
    This makes it super simple to create a Single Page Site, even with very large number of pages, by creating/testing individual pages which can then be rendered as a single page. Absolutely no coding required.
  • New ScrollToTop skin module to display a quick link to return to the top of a page when scrolling. Can be referenced by site, page or module.
  • New standard module views, eliminating many existing module views for smaller footprint, better startup time.
  • Blog: Auto-generated Google News site map ( based on all published blog entries.
  • Error handling "polish": Add page status code when a module throws an internal error or error. Handle direct GET when internal error or error is thrown by redirecting to an error page (usually only needed for file downloads).
  • Strings weren't stored as NVarChar in SQL tables. While things worked, that wasn't good (see VarChar or NVarChar Is Never The Question). All data is automatically updated when upgrading to 2.5.0 without any data loss.
  • ASP.NET 4: Move all Web.config <appSettings> into new Appsettings.json file in Data folder. This aligns it with ASP.NET Core.
  • ASP.NET Core: Move Appsettings.json to Data folder.
  • Eliminate MIME type configuration from Web.config/Appsettings.json and move to its own file. Now third-party packages can extend the MIME types with their own keywords (extending ImageUse, FlashUse, PackageUse, etc.).
  • Eliminate LanguageSection from web.config/appsettings.json and move to its own file. Also eliminated Add/Edit options for languages (Admin > Languages) as these would be rarely used. Instead, the json file is edited.
  • Expand YetaWF Solution and YetaWF Solution2 repositories (GitHub) so YetaWF can be installed by cloning the repository (see - The MakeSite utility will continue to be the preferred installation tool.

YetaWF 2.0.2 Released

YetaWF 2.0.2 Released on April 28, 2017 (ahead of schedule to address numerous issues as ASP.NET Core MVC dev depot was updated to 2.0 prerelease)

  • Search Module: Completely reworked mechanism to extract search terms from pages and dynamic Urls. Additional page summary displayed in search results. Misc. additional enhancements. This fixes an issue where blog entries weren't fully covered with search terms.
  • Page load enhancement: Configurable max-age for response headers for static files.
  • Site Edit/Display mode is no longer stored per session - It is now much easier to have multiple windows/tabs open and mix edit/display mode.
  • UserProfile Module: allows users to enter full contact information.
  • Alignment of Logging and Visitor Activity (both now record session id).
  • Client-side validation fixed (ASP.NET Core failed to validate client side - Server side validation and validation on MVC5/ASP.NET4 was unaffected).
  • Addressed many client-side validation issues. Some minor server-side validation issues addressed. It does not appear that either allowed invalid data server-side, but could result in confusing (or missing) warning indicators for invalid fields or defer to server-side validation (without client-side validation).
  • New Basic Templates test page to test all built-in templates.

YetaWF 2.0.1 Released

YetaWF 2.0.1 Released on April 6, 2017

  • Stackable log providers (in addition to default log provider).
  • Initial site startup feedback page (to provide information as to what is happening as first time site initialization can take a long time).
  • Optionally define mandatory two-step authentication setup for defined roles. This could be used to enforce two-step authentication for all users, and/or admins, superusers, etc.
  • Log (SQL/File) for Scheduler activity.
  • Built-in site map, user configurable via site and page settings, with scheduler task that rebuilds/updates the site map at regular intervals.
  • Last-Modified added to http headers for all static page requests.
  • Click tracking for static files and external links in Visitor Activity (by adding yTrack CSS class to <a> tag).

YetaWF 2.0.0 Released (Beta)

YetaWF 2.0.0 Released on March 22, 2017

  • Support for both ASP.NET Core MVC and ASP.NET 4 MVC 5 with full 99.4% source code compatibility for modules and packages.
  • Blog package: New Summary module (for a recent posts summary) and misc. fixes.
  • Dashboard package: misc. additions/changes to support ASP.NET Core - Status display now shows ASP.NET version.
  • Misc. updated third-party packages.
  • Support for Visual Studio 2013 has been dropped. Supported versions are Visual Studio 2015 and Visual Studio 2017. YetaWF for ASP.NET Core is supported with Visual Studio 2017 only.

YetaWF 1.1.1 Released

YetaWF 1.1.1 Released on January 24, 2017

Between 1.0.9 and 1.1.1 we have focused on performance quite a bit and 1.1.1 shows up to 75% faster page load time for regular pages, compared to YetaWF version 1.0.0. Static pages, introduced in this version, take this even further as they approximate the speed of static html pages, while preserving the administrator's ability to simply change a page. Once saved, the static page is recreated.

  • Static pages - Create a static site or mix static and dynamic pages throughout the site. Any page can become a static page for super-fast download (as long as its content is in fact static). This is ideal for a home page and other pages that rarely change. If you make a change to a page, it is automatically regenerated. Static pages have access to all available YetaWF features.
  • Schedule item to automatically remove old log records (SQL only).
  • Expanded email sending support with ability to provide text and html contents as strings.
  • Search Module, order results by relevance, simplified SQL query, fix for multiple AND search terms.
  • Performance enhancement - reduce impact of main menu (and menus in general) - eliminate need to deserialize - eliminates 25% of code path per page.
  • Performance enhancement - keep same SQL connection for duration of a data provider.
  • New DisposableTracker module to view objects that are allocated and implement IDisposable - used for development to find leaks.
  • Misc. fixes (whitespace filter, favicon W3C violation, canonical urls).
  • Misc. third-party package upgrades.
  • The class AreaRegistration which must be implemented for each package has changed (AreaRegistration.cs in each package). This must be changed for custom modules only.

YetaWF 1.1.0 Released

YetaWF 1.1.0 Released on November 12, 2016

  • Performance tuning related to module rendering.
  • Login using Facebook, Google, Microsoft, Twitter accounts (while included in earlier releases, this was not working - Not a good example of step-wise refinement, going from broken to fixed), see User Login / Authentication.
  • Misc. minor fixes.

YetaWF 1.0.9 Released

YetaWF 1.0.9 Released on October 24, 2016

  • Visual Studio 15 support (AKA Visual Studio 2016 or 2017, mainly affecting Install/Upgrade). Support for Visual Studio 2013 will be dropped once VS 15 is released.
  • MakeSite now installs Microsoft Visual C++ 2012 Redistributable Package - used for NSASS.
  • MakeSite Utility updated to deploy a YetaWF site to Azure and server deploy documentation updates. While already possible and fairly straightforward, this utility creates a copy of a YetaWF site while honoring symlinks (which VS Deploy doesn't do), excluding SQL DBs, which can be deployed to Azure using FTP.
  • New module to display active Http Modules - used to determine which can be removed for performance tuning.
  • Module definition caching for improved page load time.
  • Web.config performance tuning.
  • Misc. minor fixes.

YetaWF 1.0.8 Released

YetaWF 1.0.8 Released on October 10, 2016

  • Alert module to display site wide accouncements (we could have used this for Hurricane Matthew).
  • Modules supporting for page comments. (Quote: "Disqus offers the best add-on tools for site owners to power discussions, increase engagement, and earn revenue."). While this is part of the Blog package, it can be used independently of the Blog modules, on any page.
    • With optional Single Sign On using the YetaWF site's authentication.
    • Optional Gravatars with Single Sign On.
  • Bootstrap Carousel Module offering interactive carousel configuration including images and captions (no HTML knowledge required).
  • Switch to case-insensitive Urls for all pages. This may impact users who have have pages with identical Urls (ignoring case) - these must be renamed.
  • Improved Module Selection template.
  • Meta data can now use variable substitution.
  • New simple sample bootstrap skin - ported BusinessCasual skin (
  • Template actions are now supported for module settings (ModuleDefinition-derived classes).
  • MakeSite/UpgradeSite utilities always run from website to insure latest version is used (required as new YetaWF versions may require new features in these utilities).
  • Misc. minor fixes.
  • Documented all templates and how to create custom templates (

YetaWF 1.0.7 Released

YetaWF 1.0.7 Released on September 22, 2016

  • Telerik's Kendo UI Core 2016.3.914 was recalled by YetaWF because of unusable DropDownLists, Date and DateTime pickers on Android (see We released 1.0.7 to work around this issue.
  • New Scroller DevTests test page.
  • Many minor bug fixes.

YetaWF 1.0.6 Released

YetaWF 1.0.6 Released on September 21, 2016

  • Support import/export of source packages and binary packages, making it easy to give/sell packages. Strip license information/verification code from source code.
  • ProcessIfAttribute to support hiding/showing properties in response to a changing property (enum value) - used for data annotation - affects client-side javascript used to show/hide/validate fields, server-side validation.
  • Improved whitespace compression (HTML output).
  • Use of Kendo DropDownList throughout ("DropDownList" and all related templates), except mobile devices.
  • Use of Kendo MaskedTextBox throughout ("Text" and all related templates).
  • Use of Kendo NumericTextBox throughout ("IntValue" and all related templates).
  • Rewrite of localization (better caching, less memory use).
  • Automated translation of localization resources (using Google Translate or Microsoft Translator) to assist translation of packages to other languages - Translations are not perfect but provide a good head start.
  • Rename of "GoogleAnalytics" to a more general "Analytics" as it can be used with other providers also (for example Clicky).
  • Many fixes for rendering on small devices.
  • The initially installed site now has a sample IFrame module. Past versions included the IFrame test page, without the IFrame module.
  • Many minor bug fixes.

YetaWF 1.0.5 Released

August 23, 2016

  • Authorization model change - Modules can no longer inherit authorization from the containing page (SameAsPage property) as this was too confusing and could lead to security issues (see Authorization).
  • Admin>Modules and Admin>Pages show User and Anonymous User visibility.
  • Skin supported display of module/page ownership (whether a user or anonymous user can "see" the module/page) with additional User Setting.
  • Fix rendering of page/module authorization in property pages.
  • Blog Categories module property page didn't show the Categories dropdown correctly.
  • Two-step authentication built into Core - requires add-on packages for SMS, Email or Google Authenticator two-step verification.
  • Header/Footer attributes were not honored in tabbed property pages.
  • Site restart now correctly updates all symlinks (switched to junctions).
  • New 3rd party addon versions.

YetaWF 1.0.4 Released

August 14, 2016

  • Google Analytics support (site wide and per page)
  • Meta tags (site wide and per page)
  • Control Panel offers W3C Validation link for current page
  • New RecaptchaV2 (Google) replacing Recaptcha
  • Icon caching (performance enhancement)
  • AddOn Info module - displays info about available javascript and css packages
  • IFrame module used to include page contents
  • SMS API to send SMS/emails with 3rd party providers Twilio, Nexmo (preparing for two step authentication (not included in 1.0.3))
  • Modules can now define Bootstrap container/row settings (when used with suitable Bootstrap skins)
  • W3C compliance fixes
  • MakeSite and UpgradeSite now correctly start Visual Studio if a path name with spaces is used (doh!)
  • SiteTemplates are now packaged with the package that installs them
  • Module Skin edit has been fixed
  • Various 3rd party package upgrades

YetaWF 1.0.3

Rejected in final testing due to an issue with CKEditor

YetaWF 1.0.2 Released

July 28, 2016

  • Main menu adds MegaMenu features (display a module as a submenu).
  • Fixed menu editing (no more dups).
  • Add new site (additional site) fixed so it works with IIS, not just IIS Express.
  • Automatic package upgrades (with logging) during site restart (development system only)
  • Finalized UpgradeSite utility
  • New BccForgottenPassword property in User Login Settings so admin receives email copies for forgotten passwords.
  • New 3rd party packages (jquery-ui 1.12 and others)
  • Prepared for jquery 3.x, but not active because Kendo UI Core package not ready for jQuery 3.x

.\Website\Sites Folder Security Issue

July 1, 2016 - We discovered a security issue, due to a missing file in the initial release. While it's nearly impossible to guess the name of a critical file name, because all paths use some form of Guid, it's still a security issue. Directory browsing is never available.
1.0.2 will add a web.config file at .\Website\Sites to protect all files within the folder.

<?xml version="1.0"?>
            <remove name="BlockViewHandler"/>
            <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />

YetaWF 1.0.1 Released

June 30, 2016 - We released YetaWF 1.0.1
Installing YetaWF
YetaWF Documentation (work in progress)