ABP.IO Platform 9.0 RC Has Been Published

User Avatar
1 week ago, 1711 views, 0 comments
Cover Image

Today, we are happy to release the ABP version 9.0 RC (Release Candidate). This blog post introduces the new features and important changes in this new version.

Try this version and provide feedback for a more stable version of ABP v9.0! Thanks to all of you.

Get Started with the 9.0 RC

You can check the Get Started page to see how to get started with ABP. You can either download ABP Studio (recommended, if you prefer a user-friendly GUI application - desktop application) or use the ABP CLI.

By default, ABP Studio uses stable versions to create solutions. Therefore, if you want to create a solution with a preview version, first you need to create a solution and then switch your solution to the preview version from the ABP Studio UI:

studio-switch-to-preview.png

Migration Guide

There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v8.x: ABP Version 9.0 Migration Guide

What's New with ABP v9.0?

In this section, I will introduce some major features released in this version. Here is a brief list of titles explained in the next sections:

  • Upgraded to .NET 9.0
  • Introducing the Extension Property Policy
  • Allow wildcards for Redirect Allowed URLs
  • Docs Module: Show larger images on the same page
  • Google Cloud Storage BLOB Provider
  • Removed React Native mobile option from free templates
  • Suite: Better naming for multiple navigation properties to the same entity
  • CMS Kit Pro: Feedback feature improvements

Upgraded to .NET 9.0

We've upgraded ABP to .NET 9.0, so you need to move your solutions to .NET 9.0 if you want to use ABP 9.0. You can check Microsoft’s Migrate from ASP.NET Core 8.0 to 9.0 documentation, to see how to update an existing ASP.NET Core 8.0 project to ASP.NET Core 9.0.

Note: Since the stable version of .NET 9 hasn't been released yet, we upgraded ABP to .NET v9.0-rc.2. We will update the entire ABP Platform to .NET 9 stable, after Microsoft releases it on November 13-14 with the stable ABP 9.0 release.

Introducing the Extension Property Policy

ABP provides a module entity extension system, which is a high level extension system that allows you to define new properties for existing entities of the dependent modules. This is a powerful way to dynamically add additional properties to entities without modifying the core structure. However, managing these properties across different modules and layers can become complex, especially when different policies or validation rules are required.

Extension Property Policy feature allows developers to define custom policies for these properties, such as access control, validation, and data transformation, directly within ABP.

Example:

ObjectExtensionManager.Instance.Modules().ConfigureIdentity(identity =>
{
    identity.ConfigureUser(user =>
    {
        user.AddOrUpdateProperty<string>( //property type: string
            "SocialSecurityNumber", //property name
            property =>
            {
                //validation rules
                property.Attributes.Add(new RequiredAttribute());
                property.Attributes.Add(new StringLengthAttribute(64) {MinimumLength = 4});

                //Global Features
                property.Policy.GlobalFeatures = new ExtensionPropertyGlobalFeaturePolicyConfiguration()
                {
                     Features = new[] {"GlobalFeatureName1", "GlobalFeatureName2"},
                     RequiresAll = true
                };

                //Features
                property.Policy.Features = new ExtensionPropertyFeaturePolicyConfiguration()
                {
                    Features = new[] {"FeatureName1", "FeatureName2"},
                    RequiresAll = false
                };

                //Permissions
                property.Policy.Permissions = new ExtensionPropertyPermissionPolicyConfiguration()
                {
                    PermissionNames = new[] {"AbpTenantManagement.Tenants.Update", "AbpTenantManagement.Tenants.Delete"},
                    RequiresAll = true
                };
            }
        );
    });
});

Allow Wildcards for RedirectAllowedURLs

In this version, we made an improvement to the RedirectAllowedUrls configuration, which now allows greater flexibility in defining redirect URLs. Previously, developers faced restrictions when configuring URL redirects. Specifically, the RedirectAllowedUrls did not support using wildcards (*), limiting how developers could specify which URLs were permissible for redirects.

With the new changes in #20628, the restriction has been relaxed, allowing developers to define redirect URLs that include wildcards. This makes it easier to handle scenarios where a broad range of URLs need to be allowed, without explicitly listing each one.

{
  "App": {
    //...
    "RedirectAllowedUrls": "http://*.domain,http://*.domain:4567"
  }

Docs Module: Show Larger Images

As developers, we rely heavily on clear documentation to understand complex concepts and workflows. Often, an image is worth more than a thousand words, especially when explaining intricate user interfaces, workflows, or code structures. In recognition of this, we recently rolled out an improvement to the Docs Module that enables larger images to be displayed more effectively.

docs-image-larger.png

Before this enhancement, images embedded in documentation were often limited in size, which sometimes made it difficult to see the details in the diagrams, screenshots, or other visual contents. Now, images can be displayed at a larger size, offering better clarity and usability.

See https://github.com/abpframework/abp/pull/20557 for more information.

Google Cloud Storage BLOB Provider

ABP provides a BLOB Storing System, which allows you to work with BLOBs. This system is typically used to store file contents in a project and read these file contents when they are needed. Since ABP provides an abstraction to work with BLOBs, it also provides some pre-built storage providers such as Azure, Aws and Aliyun.

In this version, we have introduced a new BLOB Storage Provider for Google Cloud Storage: Volo.Abp.BlobStoring.Google

You can read the documentation for configurations and use Google Cloud Storage as your BLOB Storage Provider easily.

Removed React Native Mobile Option From Free Templates

In this version, we removed the React Native mobile option from the open source templates due to maintaining reasons. We updated the related documents and the ABP CLI (both old & new CLI) for this change, and with v9.0, you will not be able to create a free template with react-native as the mobile option.

Note: Pro templates still provide the React Native as the mobile option and we will continue supporting it.

If you want to access the open-source React-Native template, you can visit the abp-archive repository from here.

Suite: Better Naming For Multiple Navigation Properties

Prior to this version, when you defined multiple (same) navigation properties to same entity, then ABP Suite was renaming them with a duplicate number.

As an example,let's assume that you have a book with an author and coauthor, prior to this version ABP Suite was creating a DTO class as below:

public class BookWithNavigationPropertiesDto
{
    public BookDto Book { get; set; }

    public AuthorDto Author { get; set; }

    public AuthorDto Author1 { get; set; }
}

Notice, that since the book entity has two same navigation properties, ABP Suite renamed them with a duplicate number. In this version, ABP Suite will ask you to define a propertyName for the navigation properties and you'll be able to specify a meaningful name such as (CoAuthor, in this example):

public class BookWithNavigationPropertiesDto
{
    public BookDto Book { get; set; }

    public AuthorDto Author { get; set; }

    //used the specified property name
    public AuthorDto CoAuthor { get; set; }
}

ABP Suite respects the specified property name for the related navigation property and generates codes regarding that (by removing the Id postfix for the related places):

suite-navigation-properties.png

CMS Kit Pro: Feedback Feature Improvements

In this version, we revised the CMS Kit's Feedback Feature and as a result, we made the following improvements:

  • A new auto-handle setting has been added to the settings page. When this feature is enabled, if feedback is submitted without a user note, the feedback is automatically marked as handled.
  • You can now require users to enter a note when submitting negative feedback. This can be configured in the settings page, ensuring that users provide context when they submit critical feedback.
  • We've added a feedback user ID that is saved in local storage. This allows you to track the number of unique users submitting feedback or determine if the same user is sending new feedback on updated documents.

For further information about the Page Feedback System, please refer to the documentation.

Community News

Join ABP at the .NET Conf 2024!

ABP is excited to sponsor the 14th annual .NET Conf! We've proudly supported the .NET community for years and recognize the importance of this premier virtual event. Mark your calendars for November 12-14, 2024, and join us for 3 incredible days of learning, networking, and fun.

dotnet-conf-2024.png

Also, don't miss out on the co-founder of Volosoft and Lead Developer of ABP, Halil Ibrahim Kalkan's talk about "Building Modular Monolith Applications with ASP.NET Core and ABP Studio" at 10:00 - 10:30 AM GMT+3 on Thursday, November 14.

ABP Team Attended the .NETDeveloperDays 2024

We are thrilled to announce that we sponsored the .NETDevelopersDays 2024 event. It's one of the premier conferences for .NET developers with over 1.000 attendees, 50+ expert speakers, and 40+ sessions and workshops.

dotnet-developer-days-2024.jpg

Core team members of the ABP Framework, Halil Ibrahim Kalkan, İsmail Çağdaş, Enis Necipoğlu, and Tarık Özdemir attended .NETDevelopersDays 2024 on October 22-23, 2024 at Warsaw, Poland.

These 2 days with the team were all about chatting and having fun with amazing attendees and speakers. We met with talented and passionate software developers and introduced the ABP - web application framework built on ASP.NET Core - to them.

Also, we made a raffle and gifted an Xbox Series S to the lucky winner at the event:

abp-team-raffle.jpg

Thanks to everyone who joined the fun and visited our booth :)

New ABP Community Articles

There are exciting articles contributed by the ABP community as always. I will highlight some of them here:

Thanks to the ABP Community for all the content they have published. You can also post your ABP-related (text or video) content to the ABP Community.

Conclusion

This version comes with some new features and a lot of enhancements to the existing features. You can see the Road Map documentation to learn about the release schedule and planned features for the next releases. Please try ABP v9.0 RC and provide feedback to help us release a more stable version.

Thanks for being a part of this community!

More From Engincanv

ABP.IO Platform 8.3 Final Has Been Released

ABP 8.3 stable version has been released today. Read the blog post to learn all new features in details. Continue Reading

EngincanV September 2024

New ABP Documentation System: Everything You Need In One Place 📣

We have combined the ABP (open-source) and ABP Commercial (paid) documents into a single, comprehensive resource. This unification brings you a bet... Continue Reading

EngincanV August 2024

ABP.IO Platform 8.3 RC Has Been Published

Today, we are happy to release ABP version 8.3 RC (Release Candidate). This blog post introduces the new features and important changes in this new... Continue Reading

EngincanV August 2024

Introducing the New ABP CLI

📢 We're excited to introduce the new ABP CLI after the announcement of the new unified ABP Platform. Continue Reading

EngincanV July 2024

ABP.IO Platform 8.2 Final Has Been Released

ABP Framework and ABP Commercial 8.2 versions have been released today. Continue Reading

EngincanV June 2024

ABP.IO Platform 8.2 RC Has Been Published

Today, we are happy to release the ABP Framework and ABP Commercial version 8.2 RC (Release Candidate). This blog post introduces the new features ... Continue Reading

EngincanV May 2024

ABP.IO Platform 8.1 Final Has Been Released

ABP Framework and ABP Commercial 8.1 versions have been released today. Continue Reading

EngincanV April 2024

ABP.IO Platform 8.1 RC Has Been Published

Today, we are happy to release the ABP Framework and ABP Commercial version 8.1 RC (Release Candidate). This blog post introduces the new features ... Continue Reading

EngincanV February 2024

ABP.IO Platform 8.0 Has Been Released Based on .NET 8.0

Today, ABP Framework and ABP Commercial 8.0 versions have been released based on .NET 8.0. Continue Reading

EngincanV December 2023

ABP.IO Platform 8.0 RC Has Been Published

Today, we are happy to release the ABP Framework and ABP Commercial version 8.0 RC (Release Candidate). This blog post introduces the new features ... Continue Reading

EngincanV November 2023

ABP.IO Platform 7.4 Final Has Been Released

ABP Framework and ABP Commercial 7.4 versions have been released today. Continue Reading

EngincanV October 2023

Unleash the Power of ABP CMS Kit: A Dynamic Content Showcase

We're excited to introduce to you ABP's CMS Kit Module – a versatile module that empowers you to build your own dynamic content website with ease. ... Continue Reading

EngincanV September 2023

ABP.IO Platform 7.4 RC Has Been Published

Today, we are happy to release the ABP Framework and ABP Commercial version 7.4 RC (Release Candidate). This blog post introduces the new features ... Continue Reading

EngincanV August 2023

ABP.IO Platform 7.3 Final Has Been Released

ABP Framework and ABP Commercial 7.3 versions have been released today. Continue Reading

EngincanV July 2023

ABP.IO Platform 7.3 RC Has Been Published

Today, we are happy to release the ABP Framework and ABP Commercial version 7.3 RC (Release Candidate). This blog post introduces the new features ... Continue Reading

EngincanV June 2023

ABP.IO Platform 7.2 Final Has Been Released

ABP Framework and ABP Commercial 7.2 versions have been released today. Continue Reading

EngincanV May 2023

ABP.IO Platform 7.2 RC Has Been Published

Today, we are happy to release the ABP Framework and ABP Commercial version 7.2 RC (Release Candidate). This blog post introduces the new features ... Continue Reading

EngincanV April 2023

ABP.IO Platform 7.1 RC Has Been Published

Today, we are happy to release the ABP Framework and ABP Commercial version 7.1 RC (Release Candidate). This blog post introduces the new features ... Continue Reading

EngincanV February 2023

ABP.IO Platform 7.0 Final Has Been Released

ABP Framework and ABP Commercial 7.0 versions have been released today. Continue Reading

EngincanV January 2023

ABP.IO Platform 7.0 RC Has Been Published

Today, we are happy to release the ABP Framework and ABP Commercial version 7.0 RC (Release Candidate). This blog post introduces the new features ... Continue Reading

EngincanV November 2022

ABP.IO Platform 6.0 Final Has Been Released

ABP Framework and ABP Commercial 6.0 versions have been released today. Continue Reading

EngincanV October 2022

ABP.IO Platform 6.0 RC Has Been Published

Today, we are happy to release the ABP Framework and ABP Commercial version 6.0 RC (Release Candidate). This blog post introduces the new features ... Continue Reading

EngincanV July 2022

ABP.IO Platform 5.3 Final Has Been Released

ABP Framework and ABP Commercial 5.3 versions have been released today. Continue Reading

EngincanV June 2022

ABP.IO Platform 5.3 RC Has Been Published

Today, we are happy to release the ABP Framework and ABP Commercial version 5.3 RC (Release Candidate). This blog post introduces the new features ... Continue Reading

EngincanV May 2022