abpframework/abp · error · UserFriendlyException
The React UI is generated by ABP Studio's modern solution te
Error message
The React UI is generated by ABP Studio's modern solution templates and is not supported by the classic template builder.
What it means
A UserFriendlyException raised in TemplateProjectBuilder.BuildAsync after NormalizeArgs, when args.UiFramework equals UiFramework.React. The classic template builder has no React pipeline; React solutions are produced only by ABP Studio's modern templates, so the CLI fails fast instead of emitting a solution with an unconfigured UI. This also catches the case where UiFramework.NotSpecified is normalized to React.
Source
Thrown at framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateProjectBuilder.cs:67
ApiKeyService = apiKeyService;
EventBus = eventBus;
_configuration = configuration;
Logger = NullLogger<TemplateProjectBuilder>.Instance;
}
public async Task<ProjectBuildResult> BuildAsync(ProjectBuildArgs args)
{
var templateInfo = await GetTemplateInfoAsync(args);
NormalizeArgs(args, templateInfo);
// Checked after NormalizeArgs so a NotSpecified UI resolved to React is caught too. React is only
// produced by ABP Studio's modern solution templates; the classic builders below have no React
// handling, so fail fast instead of emitting a solution with an unconfigured UI.
if (args.UiFramework == UiFramework.React)
{
throw new UserFriendlyException(
"The React UI is generated by ABP Studio's modern solution templates and is not supported by the classic template builder.");
}
await EventBus.PublishAsync(new ProjectCreationProgressEvent {
Message = "Downloading the solution template"
}, false);
var templateFile = await SourceCodeStore.GetAsync(
args.TemplateName,
SourceCodeTypes.Template,
args.Version,
args.TemplateSource,
args.ExtraProperties.ContainsKey(NewCommand.Options.Preview.Long),
skipCache: args.SkipCache,
trustUserVersion: args.TrustUserVersion
);
ConfigureThemeOptions(args, templateFile.Version);View on GitHub (pinned to 7ed43b1931)
Solutions
- Generate the React solution with ABP Studio instead of the classic 'abp new' command.
- Pick a UI framework supported by the classic builder: mvc, angular, blazor, blazor-server, blazor-wasm, or none.
- If you must script creation, invoke the Studio CLI / modern template pipeline rather than ProjectProjectBuilder.
Example fix
// before abp new Acme.App -t app -u react // after (classic CLI) abp new Acme.App -t app -u angular // after (React desired) // Use ABP Studio's modern solution templates
Defensive patterns
Strategy: validation
Validate before calling
if (args.UiFramework == UiFramework.React)
{
Console.Error.WriteLine("React UI requires ABP Studio. Use a classic UI or switch to Studio.");
return;
} Type guard
static bool IsClassicSupportedUi(UiFramework ui) =>
ui == UiFramework.Mvc || ui == UiFramework.Angular ||
ui == UiFramework.Blazor || ui == UiFramework.BlazorServer ||
ui == UiFramework.BlazorWebAssembly || ui == UiFramework.NotSpecified; Prevention
- Document in your project README which UI frameworks the classic CLI supports.
- Validate the --ui flag in your wrapper script before forwarding it to 'abp new'.
When it happens
Trigger: Running 'abp new MyProj -u react' (or passing UiFramework.React via ProjectBuildArgs) through the classic ProjectProjectBuilder. Also triggered indirectly when a NotSpecified UI resolves to React during normalization.
Common situations: Following a tutorial that uses --ui react without noting it requires ABP Studio; migrating a Studio-generated project back to the classic CLI; automation that always passes a UI flag.
Related errors
- The option you provided for UI Framework is invalid!
- There is no template found with given name: {name}
- Should specify an option name after '--' prefix!
- Should specify an option name after '-' prefix!
- Option names should start with '-' or '--'.
AI-assisted analysis of abpframework/abp@7ed43b1931 (2026-08-13).
Data as JSON: /api/errors/4153a4ed536704fc.
Report an issue: GitHub.