DevDays Europe 2025

Christian Wenz: What's New in ASP.NET Core 8 and Blazor 8

46:10 · 20 May 2025 – 23 May 2025 · YouTube

About this talk

This talk focuses on the significant updates in ASP.NET Core 8 and Blazor 8, highlighting the long-term support framework released by Microsoft. The speaker discusses new features such as minimal APIs that improve efficiency by minimizing typing and enhancing functionality for form data binding. Additionally, the introduction of an identity API streamlines user login and registration processes within applications. The session further explores updates in Blazor, including a new hosting model for static server-side rendering and enhancements in tooling for auto-completion and error warnings. Emphasis is placed on the performance improvements and the integration of new features that support enhanced web application security.

Full transcript

[Music] hello everyone welcome to another great day at the death days Europe I'm your host from rle I'm here as our first Speaker of the day a good friend of mine and one of the few really great experts in the web the community much kind thank you hi hi everyone welcome welcome to the second day of death day Europe how are you how are you feeling you've

just been on a great vacation on Hawaii so yeah yeah yeah just just just return just for this um so Bittersweet but uh looking forward uh well I I I have to be honest I'm looking forward to the next 45 minutes I'm then not looking forward to looking into my emails but uh yeah that's well I mean uh everything has two sides right so on the one

hand of course getting great uh recharge for your energy and on the other side of course being away from work and everything of course cues up but I think you also got something really great in queue for us today you are speaking about what's new in net 8 and also especially what I'm looking for in Blazer absolutely yeah so so uh I'm uh I'm uh diving a

little bit into the features of the latest uh net a version uh in terms of web application all right okay let's get started Laur uh thank you for the kind introduction and again uh hello everyone and welcome to this presentation um so indeed the title says it all uh what's new in aspet core 8 and Blazer 8 um this is sign or this has been because it

was released late last year uh it has been a significant release because as you may know um the even.net versions they come with threeyear support or as Microsoft calls it long-term support which of course is pretty great uh having outdated versions uh of the of the framework in your application is always kind of technical depth uh but on the other hand there's always so much stuff to

do uh um so not everyone or not every team or not every application can be updated every year with the annual Cadence of new doet versions um but three years of support is great uh so the supports will end in approximately approximately November of 2026 so there's still some time left whereas the odd numbers have as it's called standard term support so that's usually 18 months8 um

so do Net 7 was uh released in uh November 2022 so um the support of it is uh essentially ending no probably ended a couple of days ago right so if you're still on Net 7 you have to go on net 8 um and with that I would like to you know uh cover a few new features I mean there there there are so many new features

in that release it's always amazing that even with uh a a a framework or technology or a stack as stable um and as proven as aset and aspet core and everything that's in it there's still the potential for new features um which I I find uh pretty amazing uh therefore we don't have to the time to cover it all also there are some features which are really

useful uh and there are also some features where you know marketing wants us to use them pretty bad um and I tried to give this a a personal touch and I just chose those features which I find interesting and or noteworthy and usually I've already implemented them in uh the applications I am responsible for um so I'm pretty confident uh that they work as expected and pretty

well so this is not a complete or exhaustive list but these are just a few kind of highlights all things that I find uh interesting enough to include them today um so asp.net core8 consists of well everything related to web so we have razor Pages we have MVC but ah you probably have a hunch I mean these are these are feature complete uh razor pages is relatively

new but uh there's there are not many new features being added here except for things under the hood like performance Improvement as always uh MVC is even older because there already was MVC in The NET Framework preore days right um so if there's Innovation then that Innovation often is in rather uh young additions to the stack and one of those additions where we have seen more features

being added in the last few net releases is minimal apis so as you know when you want to do web apis rest apis things like that you have been using a controller based approach in uh in as. net core for and also in asp.net pre-ore um for quite a long time and then with minimal apis uh new approach uh was was added where there was kind of

less less typing um and uh when this was new there was no no feature parity you could do all of the important things but some some bits and pieces were missing and these were added bit by bit in the last few net releases and therefore it is no surprise that also in doet 8 um some feature gaps were closed uh when comparing minimal apis to controller based

uh web apis um so uh uh for instance um if if you have a web API and you'd like to bind form data to it uh there's a new attribute now from form so what's a what's a good use case for that because that sounds a little bit weird if you have a a regular form right um and then you send the data to an endpoint you

can um uh just use model binding uh to to access the data right um imagine you have a an HTML form and that form is post Ed to a web API um and that form is using the encoding type multiart form data right um so not XD uh x-d DD Form URL encoded uh but multipart form data because in that form you have a file upload and

you have other form Fields so you can buy the form uploads and of excuse me the the file up load to one variable in your your Handler method and you can use from form to buy individual form fields to add variable so that's kind of the idea here so you see kind of edge case or rare case but it was missing now it's added so we we

can use that um also there is a new middleware for protection against cross reest request fory attacks um and as you may know uh I'm uh deeply invested in web application security and uh Tred to Foster that um uh so everything thing security rated is is great if you ask me um on the other hand usually an API is using barer tokens uh where the the threat

of crossed request fory is much much lower than if you have say a session and cookie based uh um um application um therefore okay nice to have but you'll see it almost never in production right um so that's minimal apis and then there is another thing uh which was newly added which I like quite a lot actually uh and it's called identity API um and actually let

me uh let me show you let me show you in a simple example okay um so uh I have a simple application here and that simple application uh essentially has a um has an endpoint SL protected and uh that endpoint outputs the user's identity name and we have require authorization here so that minimal API endpoint now really requires uh authorization in some way or another right um

so that's pretty nice so if we run this application of course nothing happens at the root but if you go to protected then you see HTTP 40 one right it's a bit small to see here thank you Chrome but um essentially we are not allowed uh to to talk to that application um because we lack uh authorization now what we can do now is we can add

identity endpoints so I've already set up the application um to use authorization and uh then I'm uh using the scafolding for asp.net core identity so that we can work with identity users have a database backend etc etc but the the interesting thing now and that's uh the the actual Innovation uh or the the new feature is I can add API endpoints to log in so what I

can do is first I'm using map group so that the new API endpoints have a path prefix and then just say map identi API and identity user is the user class I'd like to use and what this gives me is two new endpoints one to register user and one to log in as a user so um actually we could we could actually have a look at Postman

to send the HTP request so uh again uh talking to the protected and gives us 41 unauthorized and then I have an Point register where I just send user data super simple endpoint email address and some password don't try this at home obviously um and this um actually will uh then register the user against the uh data store so let me just see ah I I should

probably restart the application so that's the new endpoint is known because so far uh we got a uh 404 so let's see whether it's ready now there you go did we get a response yet no not yet H let me quickly check sorry for that connection refused okay because the application is still waiting to run so uh let's let's try this one more time okay I think

that looks better now okay let's give this one more try otherwise I just tell you what uh what will what will happen next actually I'll do that right away while this is still building oh there we should be so uh reister the user now takes a little longer that's a good sign so there's an endp listening and now uh data is written to the database using enti

framework core um and then we get back 202 okay so the user was now added and then the uh other end Point is/ identity SL login now we can use the data log into the application and uh what do we get back we get back an access token oh interesting so let's copy that access token to the clipboard and then use that access token for our protected

uh endpoint so I'm just uh pasting this in let's see what's happening and now we get reply back okay so we could now register we could log in and uh this uh is now possible with just the addition of well essentially uh one line of code and sorry for the lengthy demo but I find this really really interesting wanted definitely wanted to to show you that so

no ASP core identity scaffolding where you get this login screen and this this whole admin UI Etc no you just get those two end points um and with those endpoints you can use bar tokens there's also a way to use cookies if you'd like to use cookies for authentication there um when this was released it was called an early version uh so was asking okay early version

does it mean the API could change I just said no uh they don't expect any API changes uh so uh this might be great for single P applications um to hook into ASP node core identity with all uh of of of this this extra scol um another area where there are new features uh in when it relates to asit core is that the tooling has been improved

and of course if tooling has been improved um as part of a net release then that tooling usually means Visual Studio maybe sometimes Visual Studio Cod but usually it's visual studio so better Auto completion better color coding when working with routes or Roots however you'd like to pronounce them I always trip up when work with routes because I make typos or you know I put my routes

in wrong order I find this highly confusing but now with auto completion with color coding if I have placeholders in my route ah it's it's a tiny thing but personally it helped me a great deal also at compile time I get warnings if I have conflicting routs for instance so really really useful basically for ESP n core that's more or less it because most of the Innovation

usually happens where the technology is still young and of course this relates Blazer and uh when working with blazer I mean the the first uh aspect where you see some changes is when you set up a new project and then you filter once this has been loaded you filter for for for Blazer projects what kind of templates you see here depends a little bit which net sdks

you have on your system if you only have net 8 then there are less options than uh when you already hadn Net 7 so what do we have we have a new master template so to speak Blazer web app and apart from that we have a Blazer web assembly Standalone app uh and a blazer web assembly empty app so empty app means we don't have this you

know all of the blaze applications look the same right uh we don't have this the standard template with the standard color gradient and you know navigation on the left bootstrap icons Etc um so these are these are the um the main templates now there's also Blazer server app okay nice let's uh let's pick that and uh when we set up a Blazer server app um then um

there might be a surprise uh because the list of Frameworks here on my system shows me net 6 still in support until November this year and Net 7 there's no net 8 in here there is no Blazer server template in net 8 and uh we'll see in a in a second why that is so um but first let's go back to the slides um so we have

the new main template and again the list of templates here depends on what's installed in your system if you don't have the net 6 or Net 7 SDK you won't have anything with blazer server in it does that mean that Blazer server apps cease to work with net 8 no they don't in the project file when setting up an app or if you have an existing app

just change the target framework to net8 and and then you're good it's expected to run as before but the mechanism changed a little bit so um before uh Blazer uh Blazer 8 or net 8 and the Blazer that comes with it uh there were two hosting models for for Blazer one was uh Blazer server that's uh the top uh diagram uh so the application was essentially running

in the server the browser just got some uh JavaScript code the JavaScript code used a websocket connection uh leveraged by signal R to stay in sync with the server and if some code runs on the server then the updated layout was sent to the browser via that connection and if in the browser a client side event occurred that is relevant for Blazer then that information was sent

back to the server via that websocket connection so kind of like ASP that web forms but on steroids and the second um hosting model was Blazer or is Blazer web assembly shown here in the bottom and with bler web assembly the Blazer application and I simplify things a little bit of course is compiled down to web assembly which then can run in the browser so the application

can be independent on the server but of course if there's some data needed uh information from a database for instance there needs to be an API so the browser speaks to the server via well JavaScript code but no it's not really JavaScript code it's C code written in the blaze application which is then compil down to web assem so these are um the two hosting models uh

of Blazer before net 8 now these kind of exist still in net 8 net8 still has a web assembly project template so that continues to work as expected there is no definite server template but as I mentioned uh server apps still work and now there's a third um hosting model and Microsoft calls that um static server side rendering um um so essentially the server renders HTML sends

it to the browser if something happens on the browser the data is sent back to the server via HTTP and then content may be rendered and sent again if you think this kind of sounds like the 1990s have returned like we did websites back then you are not wrong right so it looks a little bit weird but of course there's a difference between having static h on

the server that is then sent down no no no you have the full Blazer experience you have the Blazer component model um so the applications are implemented as before but if you have what and Microsoft I calls it in documentation if you have like static static content what does static content mean in an Essence no JavaScript event handler so if you have just content to show without

any click event handlers then this is a perfect way to go why because you don't need a websocket connection for that the web socket connection of course uh um requires resources on the server at least one connection per client right and also on the client side it requires uh resources also no web assembly download required web assembly is great except for the first load because essentially all

of the DLS that are required need to in need to be web assembly ified okay that can be pre-arranged but then needs to be downloaded in the browser so the initial load takes a while but for static content this is this is just the best I take some offense with the term I find it a bit confusing and um uh I think Glenn henriksson put it put

it best uh so uh either it's something aesthetic or there's server side rendering um but well that that's that's just how how how it's called um now uh let's let's sum up Bo I've just quickly described to you so um we have static service at rendering this is the new default when creating an application and let me show you how you can see that when when I

start this uh use this Blazer web app template and just uh want to create a new blazer web app um then on uh on the next screen of uh of this wizard um of course I ah I was too fast apologies well you see it here in the background uh let's let's hold that moment apart from framework version you could set the interactive rendom mode okay that

was of course too fast um so basically you say okay which of which of those those posting or random modes we we just discussed which of those should be used um you could say yeah use use server so if you pick server here you essentially get a Blazer server application or you set repb assembly and you have a BL there's a web assembly application and that interactive

random mode that basically means server web assembly or just static content and you can set this per page or per component or globally for the whole application right but there's also another option and that other option is called Auto what so what is the auto random mode remember before that we had serve and web assembly web assembly is performance- wise awesome once it's in the browser because

everything that runs in the browser on a web soet connection the websocket option is great for the initial load because everything runs on the server we only have to in initiate the the web circuit connection so what Auto does is this we start in Blazer server mode because it's fast so the application is there the application is interactive we can work with it but as soon as

the application is launched so to speaking the browser web soet connection is established then the web assembly version of the app is sent down the wire browser and that takes a while right but the application is still there so users don't notice and once the weapon simpy code has been sent to the browser the random mode is Switched so from server we go to web assembly so

we have a fast start and after in the background web assembly stuff has been sent to the browser we switch over to fast execution that's pretty that's pretty awesome actually and I couldn't believe it at first how well it worked but it it it worked uh it worked pretty well all right um so much uh so much additional stuff uh I could uh discuss here um maybe

one thing I won't show it I will just uh describe it um and that's that streaming rendering option and uh in our uh in our Blazer application and uh actually let's go back to my previous demo app uh in my um uh the blaze application you know we have this this bogus weather weather forecast service right um and um that uh usually uh looks like this uh

I mean do we have it no we don't have it here but we have it in the template so it's uh usually here like a a a a weather forecast right so you get a table with some random weather data and in a real world application that data would come from an API and that API might take some time um to retrieve and calculate the data of

course here it's random data it's super quick um and uh now what what a typical pattern is like this right so we we wait for the weather forecast come from the API and before they there we just say loading we have a loading spinner or some loading text here and once the data is there we this now with static rendering the server would wait until the API

data is there so this would never be sent to the client only the end result would be sent client but if we say use streaming instead then first the loading spinner would be sent to the client remember we have some JavaScript logic in the client and then once the weather forecast data is there it would be replaced by this without a websocket connection it's just one HP

response with chunks pretty uh pretty pretty amazing feature so this uh this makes this uh this really nice so we have static server rendering server uh Blazer server Blazer web assembly the auto mode and you can configure it app wide or component wide or on individual page Microsoft calls this full stack web UI yeah it's uh it's a weird term but I think now you have a

good understanding uh What uh what this is all about um there are several other um interesting new features in the uh in the new release um and I just like to pinpoint uh a few of those one that I find pretty interesting is a UI for laser identity so you may know aspet core identity uh where we have the um where we have the uh the UI

where you can register user login then you have the the admin area and in that admin area you get a list of users you can administer them stuff like that this is now also available for Blazer so you could either scaffold it in so if application you can add a new scolded item and uh then in Blazer uh application uh you will then have uh an identity

option here depends on uh how the application is set up um but since this is usually pretty brittle um what I recommend instead is uh if you just set up a new uh Blazer app and to the project and you send the authentication type to individual accounts um then that UI is automatically rendered in so you'll get this out of the box looks super similar to the

one from ASP un core identity uh so definitely check that out I don't want to demo that I want to demo something else and that's something that I think I've showed last year when we talked about uh Novelties in aspet core and uh that was quick grid quick grid is a simple yet pretty uh well performing data Grid in Blazer um and this is like the top

requested feature for Blaze applications that there should be a grid as part of uh the the the default release of of Blazer uh of course it cannot and should not be as powerful as all of those third party grids but for simple requirements um that this this would be built in and uh it was delivered as an alpha version foret 7 and now it is version 10

uh and it's a a new get package Microsoft ASP core component quick grid uh there's also an adapter for Entity framework so you connect can connect it to a uh data store um and there is also a scaffolder for crowd functionality uh in in Blazer now so create read update delete you know that already from Razor pages and from MVC that you have a data model and

then you say okay just generate me Pages for entering something into the database getting everything out of the database updating and deleting the same thing is now also available for Blazer and can be can be scaffolded uh as well using that new add new scaffolded item feature I just quickly showed you i' like to show you the quick Rd though um um so uh yeah let's let's

use that uh sample app here so I have an application and uh I have a grid page and uh that's that's code uh we're talking about I have a quick grid that's the new control or component that ships as part of that nou get package and the quick Rd can uh display a couple of items and I can set the items to the item property and I

can also use ped ption pagination is done by a separate component the paginator paginator is here and uh basically these are these are connected uh like like this within the quick grid which is uh if if you have ever worked with asp.net web forms it's kind of like uh the grid view control there so essentially you just Define The Columns and then you say okay which of

the properties from that items collection here shall be shown in which column so I have an idea a present or a topic and um I don't have a database backend here I just at random picked a few presentations uh I'm going to uh going to watch today with uh time when they are starting and that's my list of presentations um and what I also did here is

I was adding a search box where I can uh show how to filter for specific topics and my filtering logic is pretty simple I just check whether the topic contains the data input into the field the pagination uh I set up like this I just throw show three items per page we have uh seven presentations so this gives me three pages so basically that's that that's it

so minimal code mostly markup so let's have a look at the uh application so let's go to Quick grid page and you see we have pagination here we can go back and forth we can uh sort presenter and uh we can also have the uh filter here uh so uh that uh Works uh actually pretty pretty well so all the topics which contain re so that's here

core here it's azure and here it's The credibility so we have uh three hits here right so pretty pretty nice and again if if you just want data to display quickly and it also works great with large amounts of data thanks to virtualization this is the way uh to go all right so many more things uh we could cover um I just picked a few uh which

I would uh run over rather quickly just that you get a complete picture uh of what what's uh in in the new release there's been a lot of uh ongoing work on aot so ahead of time compilation ahead of time compilation um is or may be relevant for for certain scenarios so essentially uh the the compiler generates a Sly code um and aot also has a specific

Target architecture uh so essentially you can do trimming on the compiled application and only have the instructions uh in in in in the application that are relevant for the Target architecture so only armm code and no X6 64 code for instance um and what's new is now that grpc now enjoys full support for aot and there's also some limited support for minimal apis um including a new

aot template that's still some issues because aot is harder than it thinks if something is compiled ahead of time some Dynamic constructs um like reflection for instance are not possible because you know the idea of reflection is that you do something while it runs and not uh during during compile time so for instance if we look at the code that is generated by using the web API

aot templates um pretty pretty simple code here so it's a super simple to-do app using minimal apis right this works aot style um but Json serialization there are some extra steps required here because also Jason calization is of a dynamic nature which collides with with aot so it's possible but you know there are some extra um Loops to to to jump through um but basically it's now

possible at least for certain types of apis uh there are some um advantages and disadvantages with that approach so um check whether that is something for you but yes and it's ongoing work there's a GitHub issue and the ticket that is not updated very often uh which basically lists where aot is not um many other more things uh but there is one thing I definitely would like

to uh at least discuss with you because Microsoft is uh betting quite a bit on it at the moment and uh that isnet Aspire net Aspire is as Microsoft itself calls it an opinionated framework for distributed applications so the idea is you have a typical distributed application a UI say Blazer um an API backend um maybe maybe a red is cache uh so that you can cach

things and you somehow need to orchestrate those things so they have to work together um but they have to work together on all of your systems on your local system on your test system on your production system and what net Aspire basically does is uh it sets that up for you uh in an opinionated fashion so Aspire insists on some things while while giving you flexibility uh

on uh on some others and it also comes with a nice dashboard so let's see whether that works I have to switch to another version of uh of visual studio for that though um because it requires a preview version at least as of now a preview version of visal Studios so I have Vis 17.10 um and in here I have an Aspire application so you it also

works with the 17.9 preview but it has to be the preview version otherwise you don't have the workloads uh available for net expire and if you set up a new project you have doet Aspire as an option here and uh there are a couple of project templates uh which you can use what I've been using is the net Aspire start application because it already sets up uh

an application with Blazer front end a web API and a redis cache and also a uh a test project as well uh which we can use uh to to also run tests against our application and the entry point is the apphost project here and the apphost project uh well um essentially orchestrates everything set everything up so have a web front end project and we have a cache

and you see those kind of magic strings here cach web frontend and these are essentially the placeholders so when this is later deployed you just work with web front end as a string cache as a string and then during during deployment this is then replaced with the actual uh actual hosts or or endpoints um you are using same for the uh API service right so also magic

string um so no configuration file where we have to set set up uh everything all right so for this to work uh since I'm using redis you have to have um Docker uh available and running uh on your system so let's see whether um this works so this now starting the apphost then also starts all of the uh other aspects of the application so the API service

and the UI and uh tries to connect the uh the red is cache so let's see okay we've got something starting in the browser it's a Blazer app and you see aha this is this is a dashboard now so we see the cache the that the cach is already running uh we have have the API service we have the web front end and then for instance we

can go to the web front end we have a counter component and uh as always and we have this weather service and whenever I click on weather you see sometimes we get the same weather but after a few seconds we get a different weather forecast so this is the red is cache in action which is good for I think 5 Seconds here um and uh I am

presenting this intentionally on a German system why because you see it's been localized into the German language automatically although everything else on that system is in English and uh for instance if you go to the API you get the console protocol here also for the for the cash um and um we could can also drill into some details here so for inst for the for the uh

API service um we can have a look at the logs at the environment variables we can do tracing so calling that SL weather endpoint here just the calls to the front end but every 5 seconds or so we have a call to the API Service as well and so we can really drill down into things here so pretty cool pretty amazing um and still a still a

preview but uh uh I would encourage you to try it out actually now even before it's uh it's it's been released so so pretty cool and as I already mentioned you have a couple of templates uh you uh can can use here and then you get some kind of dashboard all right the feature you all will enjoy when upgrading to do and that's the last thing I'd

like to show and mention is one which uh doesn't require any work uh of you uh the performance has just been been improved I mean there's always been discussions how those performance tests are and how optimized sometimes the code is just to be good at the performance tests not in general but still uh the the the run and Razer compilation has greatly improved I noticed that myself

but also Json apis are now much faster so really really uh still uh uh great improvements for the performance of course doesn't let the previous releases shine that much if there's still still so much potential uh for performance improvements but you'll get that out of the box and just for the uh because of the long-term support if you're on net 6 you've got five months to go

essentially or six months to go um so I do encourage you um to upgrade to net 8 as soon as possible and um although ESP core is almost feature complete there's still some Innovation especially in the Blazer face uh Blazer Blazer area uh performance has been improved resilience has been improved and ASP not core 9 will be released in half a year anyway so work on new

improvements in new features um is already ongoing so check out the space and with that thanks for attending if there are any questions uh happy to uh let floran discuss them with you or other topics and with that than you for attending have a great conference um and hopefully see you next year again awesome thanks a lot yeah uh so far uh I see two questions let's

go over them really briefly and uh maybe let's kick it off with what's your favorite uh feature in Blazer 4.net 8 um my favorite feature and U that's that's a little bit of a of a darkh horse I have to say because it it's something really uh it looks irrelevant but uh I'm big I'm I'm big on security right and I content security policy and content security

policy uh is basically a feature that that locks down the browser and uh uh allows the browser only to run selected pieces of JavaScript code and load selected resources then using Blazer web assembly you had to use an kind of unsecure feature of content security policy called unsafe eval in order to be able to run Blazer web assembly applications with content security policy with blazer 8 this

is no longer necessary small thing and almost no one noticed that uh in the new release but I love it awesome uh all right uh now the the second question um this goes also of course fully into blazer with auto rendering and streaming Blazer is is catching up a bit with with Frameworks like of course angular react and and yeah was inspired especially with from by by

react yeah okay yeah yeah yeah but what do you in your opinion what is still missing to close the gap even further or maybe even get ahead because so far I mean this is mostly playing katchup right yeah I mean I I would I would argue that's a hot take but but I would argue that uh the the target audiences of those Frameworks are maybe not necessarily

the same uh so uh let's do a simil a simple let let me put that in a simple simple fashion so apologies um I've seen fraction or I've seen I've seen angular and and and react use in the net space I have not seen Blazer use outside the net uh net space right um if you are if you have heavily invested in C and like to do

single page applications then Blazer is definitely something to look at especially if you want want to avoid writing JavaScript or typescript code if you do not want to avoid writing JavaScript and typescript code then maybe angular and uh and react and and vuejs are more to your liking right so uh I I I I think the the the goal of the Blazer team is not to have

feature parity with with angler and react but just provide a very solid mechanism to implement CP backed single page applications and also line with Trends in the spa world including that serers side rendering which now had was reborn after like a decade of avoiding uh doing service at Rend yeah yeah Okay cool so uh I don't see any more questions I would say that's it uh thanks

again um for for the awesome session also uh hopefully um will not be too terrible now looking at your email stack but be prepared it's a high number but yeah uh you got to do what you got to do I won't complain all right thanks everyone uh have a aw day thanks floran aome bye bye bye

From event

DevDays Europe 2025

20 May 2025 – 23 May 2025

All event videos
Back to Watch