Skip to content

Consolidate/reduce/improve the template selections #29757

@mattleibow

Description

@mattleibow

"Problem"

Right now, we have quite a few templates that sort of make things not amazing:

  • Extra maintenance as we need to make sure they all use the new recommendations
  • Discoverability is not that great as you have to know what you want before seeing it
  • Synchronizing dependencies (eg: bootstrap in hybrid)
  • Synchronizing pictures, styles

What others are doing

In addition to this, it appears everyone has an amazing "template studio" that really makes our flat list of increasingly longer names cause tears to form in my left eye.

For example:

Now I am not saying this is the perfect way, but I am wondering if we should maybe have something that uses this and then we just have "1" template.

Current situation

Our current "suite" of App templates are:

  • .NET MAUI Blazor Hybrid App (with both --includeSampleContent and --empty affecting the same sample content)
  • .NET MAUI Blazor Hybrid and Web App (with both --includeSampleContent and --empty affecting the same sample content)
  • .NET MAUI App (with --includeSampleContent)
  • .NET MAUI Multi-Project App

We also have some library templates:

  • .NET MAUI for .NET Aspire Service Defaults
  • .NET MAUI Class Library

Looking at the app templates we can see that they have a sort of growing features:

  • an empty native app with nothing but a blank page (dotMorten really wants this 😉)
  • a basic native app with the dotnet bot for the new users
  • a starter native app with SF controls
  • an empty blazor hybrid app
  • a starter blazor hybrid app
  • a basic native app with multiple projects
  • an empty app with blazor hybrid AND web app
  • a starter app with blazor hybrid AND web app

Ideas

I am wondering if we should maybe do something that allows the user to pick what they want via a more intuitive UI. One could imagine a new app dialog with some options:

  • Native App
    • --content = [empty, basic, starter]
    • --platforms = [android, ios, macos, windows]
    • --projects = [single, multi]
  • Hybrid App
    • --content = [empty, basic, starter]
    • --platforms = [android, ios, macos, windows, web]
    • --projects = [single, multi]

If we want to keep the "hybrid" and "native" template as separate items, then we can as this list sort of shows that we really have to "dev experiences": web-first dev vs a native-first dev

Since all apps need a backend, and with Aspire becoming the cool thing, we could even have a checkbox to "add a backend API" in the native space. But that is adding new things and is for later...

Metadata

Metadata

Assignees

No one assigned

    Labels

    s/triagedIssue has been reviewed

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions