{"record":{"id":"4153a4ed536704fc","repo":"abpframework/abp","slug":"the-react-ui-is-generated-by-abp-studio-s-modern-s","errorCode":null,"errorMessage":"The React UI is generated by ABP Studio's modern solution templates and is not supported by the classic template builder.","messagePattern":"The React UI is generated by ABP Studio's modern solution templates and is not supported by the classic template builder\\.","errorType":"exception","errorClass":"UserFriendlyException","httpStatus":null,"severity":"error","filePath":"framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateProjectBuilder.cs","lineNumber":67,"sourceCode":"        ApiKeyService = apiKeyService;\n        EventBus = eventBus;\n        _configuration = configuration;\n\n        Logger = NullLogger<TemplateProjectBuilder>.Instance;\n    }\n\n    public async Task<ProjectBuildResult> BuildAsync(ProjectBuildArgs args)\n    {\n        var templateInfo = await GetTemplateInfoAsync(args);\n\n        NormalizeArgs(args, templateInfo);\n\n        // Checked after NormalizeArgs so a NotSpecified UI resolved to React is caught too. React is only\n        // produced by ABP Studio's modern solution templates; the classic builders below have no React\n        // handling, so fail fast instead of emitting a solution with an unconfigured UI.\n        if (args.UiFramework == UiFramework.React)\n        {\n            throw new UserFriendlyException(\n                \"The React UI is generated by ABP Studio's modern solution templates and is not supported by the classic template builder.\");\n        }\n\n        await EventBus.PublishAsync(new ProjectCreationProgressEvent {\n            Message = \"Downloading the solution template\"\n        }, false);\n        \n        var templateFile = await SourceCodeStore.GetAsync(\n            args.TemplateName,\n            SourceCodeTypes.Template,\n            args.Version,\n            args.TemplateSource,\n            args.ExtraProperties.ContainsKey(NewCommand.Options.Preview.Long),\n            skipCache: args.SkipCache,\n            trustUserVersion: args.TrustUserVersion\n        );\n\n        ConfigureThemeOptions(args, templateFile.Version);","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/abpframework/abp/blob/7ed43b1931b9df46a50c0c59148a18645641d0df/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateProjectBuilder.cs#L49-L85","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nabp new Acme.App -t app -u react\n// after (classic CLI)\nabp new Acme.App -t app -u angular\n// after (React desired)\n// Use ABP Studio's modern solution templates","handlingStrategy":"validation","validationCode":"if (args.UiFramework == UiFramework.React)\n{\n    Console.Error.WriteLine(\"React UI requires ABP Studio. Use a classic UI or switch to Studio.\");\n    return;\n}","typeGuard":"static bool IsClassicSupportedUi(UiFramework ui) =>\n    ui == UiFramework.Mvc || ui == UiFramework.Angular ||\n    ui == UiFramework.Blazor || ui == UiFramework.BlazorServer ||\n    ui == UiFramework.BlazorWebAssembly || ui == UiFramework.NotSpecified;","tryCatchPattern":null,"preventionTips":["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'."],"tags":["cli","template-building","ui-framework","react","unsupported-feature"],"backgroundTag":null,"analyzedSha":"7ed43b1931b9df46a50c0c59148a18645641d0df","analyzedAt":"2026-08-13T16:26:11.351Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}