
dotnet-wpf-migration
Migrating desktop apps. WPF/WinForms to .NET 8+, WPF to WinUI or Uno, UWP to WinUI, decision matrix.
- Installs
- 86
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/wshaddix/dotnet-skills --skill dotnet-wpf-migration- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads dotnet-wpf-migration automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
dotnet-wpf-migration
Context-dependent migration guidance for Windows desktop applications. Covers WPF .NET Framework to .NET 8+, WPF to WinUI 3 (Windows-only modernization), WPF to Uno Platform (cross-platform), WinForms .NET Framework to .NET 8+, UWP to WinUI 3, UWP to Uno Platform (cross-ref), and a decision matrix for choosing the right migration target based on project constraints.
Version assumptions: .NET 8.0+ baseline (current LTS). dotnet-upgrade-assistant for automated migration. .NET 9 features explicitly marked where applicable.
Scope boundary: This skill owns migration paths between desktop frameworks and from .NET Framework to modern .NET. Individual framework patterns (WPF modern, WinUI, WinForms modern) are owned by the respective framework skills. The framework selection decision tree is owned by [skill:dotnet-ui-chooser].
Out of scope: WPF .NET 8+ development patterns -- see [skill:dotnet-wpf-modern]. WinUI 3 development patterns -- see [skill:dotnet-winui]. WinForms .NET 8+ development patterns -- see [skill:dotnet-winforms-basics]. Uno Platform development patterns -- see [skill:dotnet-uno-platform]. Framework selection decision tree -- see [skill:dotnet-ui-chooser]. Desktop testing -- see [skill:dotnet-ui-testing-core].
Cross-references: [skill:dotnet-wpf-modern] for WPF .NET 8+ patterns, [skill:dotnet-winui] for WinUI 3 patterns, [skill:dotnet-winforms-basics] for WinForms .NET 8+ patterns, [skill:dotnet-uno-platform] for Uno Platform patterns, [skill:dotnet-ui-chooser] for framework selection, [skill:dotnet-ui-testing-core] for desktop testing.
Migration Path Overview
Choose a migration path based on your current framework and target goals. Each path has different trade-offs in effort, risk, and capability gain.
| Current | Target | Effort | Risk | When to Choose |
|---|---|---|---|---|
| WPF .NET Framework | WPF .NET 8+ | Low-Medium | Low | Modernize runtime, keep existing UI |
| WPF .NET Framework | WinUI 3 | High | Medium | Modern Windows UI, touch/pen, Fluent |
| WPF .NET Framework | Uno Platform | High | Medium-High | Cross-platform needed |
| WinForms .NET Framework | WinForms .NET 8+ | Low | Low | Modernize runtime, keep existing UI |
| UWP | WinUI 3 | Medium | Medium | Stay Windows-only, modern runtime |
| UWP | Uno Platform | Medium-High | Medium | Cross-platform needed from UWP |
WPF .NET Framework to .NET 8+
The lowest-risk migration path. Keeps your existing XAML and code-behind intact while moving to modern .NET with better performance, DI support, and side-by-side deployment.
Using dotnet-upgrade-assistant
The .NET Upgrade Assistant automates the bulk of the migration:
# Install the upgrade assistant
dotnet tool install -g upgrade-assistant
# Analyze the project first (non-destructive)
upgrade-assistant analyze MyWpfApp.sln
# Upgrade the project
upgrade-assistant upgrade MyWpfApp.sln
What the upgrade assistant handles:
.csprojconversion from legacy format to SDK-stylepackages.configtoPackageReferencemigration- TFM change to
net8.0-windows AssemblyInfo.csproperties moved to.csproj- Common API replacements and namespace updates
What requires manual work:
App.configsettings migration toappsettings.jsonor Host builder configurationSettings.settings/My.Settings(VB.NET) migration- Third-party control library updates (check vendor .NET 8 compatibility)
- WCF client references (use
CoreWCFor migrate to gRPC/REST) - COM interop adjustments (syntax differences in
System.Runtime.InteropServices) - Custom MSBuild targets and build scripts
API Compatibility
Most WPF APIs are identical between .NET Framework and .NET 8+. Key differences:
| Area | .NET Framework | .NET 8+ | Action |
|---|---|---|---|
| Clipboard | Clipboard.SetText() | Same API | No change |
| Printing | PrintDialog, PrintVisual | Same API | No change |
| BitmapEffect | Deprecated (software-rendered) | Removed | Use Effect / ShaderEffect |
DrawingContext.PushEffect | Available | Removed | Use ShaderEffect |
| XPS documents | System.Windows.Xps | Requires NuGet package | Add System.Windows.Xps PackageReference |
| Speech synthesis | System.Speech | Requires NuGet package | Add System.Speech PackageReference |
NuGet Package Updates
After migration, update NuGet packages to .NET 8-compatible versions:
# List outdated packages
dotnet list package --outdated
# Update packages (one at a time for safer migration)
dotnet add package Newtonsoft.Json --version 13.*
dotnet add package MaterialDesignThemes --version 5.*
Common package replacements:
Unitycontainer ->Microsoft.Extensions.DependencyInjection(built-in)Autofac-> update to latest (supports .NET 8)log4net/NLog-> considerMicrosoft.Extensions.Loggingwith Serilog or NLog providerEntityFramework(EF6) ->Microsoft.EntityFrameworkCore8.x
Breaking Changes Checklist
- Default high-DPI behavior changed. .NET 8 WPF enables
PerMonitorV2DPI awareness by default (notSystemAwarelike .NET Framework). - Nullable reference types. New projects enable NRT. Existing code may produce warnings. Suppress with
<Nullable>disable</Nullable>initially, then fix incrementally. - Implicit usings. New SDK-style projects enable implicit usings. May conflict with existing
usingstatements. Disable with<ImplicitUsings>disable</ImplicitUsings>if needed. - Assembly loading.
AssemblyLoadContextreplacesAppDomainfor assembly isolation. Plugin architectures usingAppDomain.CreateDomainneed rework. - Runtime behavior. .NET 8 GC is more aggressive with Gen0/Gen1 collections. Finalizer-dependent code may behave differently.
For post-migration WPF patterns (Host builder, MVVM Toolkit, modern C#), see [skill:dotnet-wpf-modern].
WPF to WinUI 3
Migrate when you need modern Windows-native UI: Fluent Design, touch/pen input, Windows 11 integration (widgets, Mica), or UWP-style APIs on modern .NET. This is a partial rewrite -- XAML concepts transfer but APIs and namespaces differ.
When This Path Makes Sense
- Application is Windows-only and will stay Windows-only
- Need modern Fluent Design controls, touch/pen support, or Windows 11 features
- Team is willing to invest in XAML rewrite effort
- Application is actively developed with ongoing feature work (justifies the investment)
When to Consider Alternatives
- If cross-platform is needed -> migrate to Uno Platform instead (WinUI XAML surface)
- If application is in maintenance mode -> migrate to WPF .NET 8+ instead (lower effort)
- If WPF Fluent theme (.NET 9+) is sufficient -> stay on WPF .NET 8+ with
ThemeMode = ThemeMode.System
XAML Differences
| WPF XAML | WinUI 3 XAML | Notes |
|---|---|---|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | Same URI (but resolves to Microsoft.UI.Xaml types, not System.Windows) | No xmlns change, but runtime types differ |
{Binding Path=Name} | {x:Bind Name, Mode=OneWay} | Prefer x:Bind (compiled, type-safe) |
DataContext binding | Code-behind property + x:Bind | x:Bind resolves against code-behind |
Window inherits from System.Windows.Window | Window inherits from Microsoft.UI.Xaml.Window | Different base class and API |
UserControl | UserControl (Microsoft.UI.Xaml namespace) | Same concept, different namespace |
Style with TargetType | Same | Works the same way |
DataTemplate | Needs x:DataType for x:Bind | Required for compiled bindings |
ContextMenu | MenuFlyout | Different control type |
StatusBar | No built-in equivalent | Use custom CommandBar or InfoBar |
RibbonControl | No built-in equivalent | Use NavigationView + CommandBar |
Migration Strategy
- Create a new WinUI 3 project alongside the existing WPF project
- Migrate shared logic first -- Models, Services, ViewModels (if using MVVM Toolkit, they work in both)
- Migrate views incrementally -- start with simpler pages, then complex ones
- Replace WPF-specific controls with WinUI equivalents (see table above)
- Update data binding from
{Binding}to{x:Bind}for compile-time safety - Test Windows integration features (notifications, lifecycle, file associations)
- Choose deployment model -- MSIX (app identity) or unpackaged (xcopy)
For WinUI 3 patterns and project setup, see [skill:dotnet-winui].
WPF to Uno Platform
Migrate when you need cross-platform reach from a WPF codebase. Uno Platform uses the WinUI XAML API surface, so WPF XAML skills transfer partially, but the migration involves adapting to WinUI XAML patterns.
When This Path Makes Sense
- Application needs to run on multiple platforms (Windows, macOS, Linux, Web, mobile)
- Team has WPF/XAML expertise that transfers to WinUI XAML surface
- Willing to invest in cross-platform adaptation (platform-specific behaviors, responsive layouts)
When to Consider Alternatives
- If Windows-only -> migrate to WinUI 3 (simpler, no cross-platform overhead)
- If application is in maintenance mode -> migrate to WPF .NET 8+ (lowest effort)
- If team has web skills -> consider Blazor for web delivery
Migration Approach
The migration from WPF to Uno Platform is similar to WPF to WinUI 3 (since Uno uses the WinUI API surface), with additional cross-platform considerations:
- Create an Uno Platform project with the desired target platforms
- Migrate ViewModels and services -- these are platform-independent
- Adapt XAML to WinUI syntax (same changes as WPF to WinUI migration)
- Handle platform-specific features using conditional compilation or Uno platform extensions
- Replace Windows-only APIs with cross-platform alternatives (file dialogs, notifications, etc.)
- Test each target platform -- rendering and behavior may differ across Skia and native targets
Uno Extensions for Common Patterns
Uno Extensions provides cross-platform replacements for common WPF patterns:
| WPF Pattern | Uno Extensions Replacement |
|---|---|
| Custom navigation | Uno.Extensions.Navigation |
| Manual DI setup | Uno.Extensions.DependencyInjection (wraps MS DI) |
appsettings.json config | Uno.Extensions.Configuration |
| Manual HTTP clients | Uno.Extensions.Http (typed clients with Refit) |
| Manual serialization | Uno.Extensions.Serialization |
For Uno Platform development patterns, see [skill:dotnet-uno-platform]. For per-target deployment guidance, see [skill:dotnet-uno-targets].
WinForms .NET Framework to .NET 8+
Similar to WPF migration but typically simpler due to WinForms' less complex project structure.
Using dotnet-upgrade-assistant
# Analyze first
upgrade-assistant analyze MyWinFormsApp.sln
# Upgrade
upgrade-assistant upgrade MyWinFormsApp.sln
What the upgrade assistant handles:
.csprojconversion to SDK-style with<UseWindowsForms>true</UseWindowsForms>- TFM change to
net8.0-windows packages.configtoPackageReferenceAssemblyInfo.csmigration to project properties
What requires manual work:
App.config/Settings.settingsmigrationMy.Settings(VB.NET) migration to modern configuration- Third-party control library updates (some WinForms controls may lack .NET 8 support)
- Crystal Reports or other legacy reporting tools (evaluate alternatives)
- COM interop adjustments
Designer Compatibility
WinForms designer files (.Designer.cs) generally migrate cleanly. The Visual Studio WinForms designer for .NET 8+ is fully supported.
Known designer issues:
- Custom designer serializers may need updates
- Some third-party controls may not render in the .NET 8 designer
- DPI-unaware designer mode available in .NET 9+ (
<ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>)
Post-Migration Modernization
After migrating to .NET 8+, consider adopting modern patterns incrementally:
- Add dependency injection via Host builder (see [skill:dotnet-winforms-basics])
- Replace synchronous calls with async/await
- Enable high-DPI with
PerMonitorV2mode - Enable dark mode (experimental in .NET 9+)
For WinForms .NET 8+ patterns, see [skill:dotnet-winforms-basics].
UWP to WinUI 3
UWP's natural migration target. WinUI 3 uses the same XAML API surface with namespace changes.
Namespace Changes
The primary migration task is updating namespaces from Windows.UI.* to Microsoft.UI.*:
| UWP Namespace | WinUI 3 Namespace |
|---|---|
Windows.UI.Xaml | Microsoft.UI.Xaml |
Windows.UI.Xaml.Controls | Microsoft.UI.Xaml.Controls |
Windows.UI.Xaml.Media | Microsoft.UI.Xaml.Media |
Windows.UI.Composition | Microsoft.UI.Composition |
Windows.UI.Text | Microsoft.UI.Text |
Keep as-is: Windows.Storage, Windows.Networking, Windows.Security, Windows.ApplicationModel, Windows.Devices -- these WinRT APIs remain unchanged.
App Model Differences
| Concern | UWP | WinUI 3 |
|---|---|---|
| App lifecycle | CoreApplication + suspension | Windows App SDK AppInstance |
| Window management | Window.Current (singleton) | Track window references manually |
| Dispatcher | CoreDispatcher.RunAsync | DispatcherQueue.TryEnqueue |
| Background tasks | Built-in, requires package identity | Available with MSIX, limited without |
| File access | Broad capabilities via manifest | Standard Win32 file access + StorageFile |
| Store APIs | Windows.Services.Store | Same (still available) |
Migration Steps
- Create a new WinUI 3 project using the Windows App SDK template
- Copy source files and update namespaces (
Windows.UI.XamltoMicrosoft.UI.Xaml) - Replace deprecated APIs (
Window.Currentto manual tracking,CoreDispatchertoDispatcherQueue) - Update MSIX manifest from UWP format to Windows App SDK format
- Migrate capabilities -- review and update capability declarations
- Update NuGet packages to Windows App SDK-compatible versions
- Test Windows integration -- notifications, background tasks, file associations may behave differently
UWP .NET 9 preview path: Microsoft announced UWP support on .NET 9 as a preview. If full WinUI 3 migration is too costly, this allows UWP apps to use modern .NET runtime features without migrating the UI framework.
For WinUI 3 development patterns, see [skill:dotnet-winui].
UWP to Uno Platform
When cross-platform reach is needed from a UWP codebase. Uno Platform implements the WinUI XAML API surface, making it the most natural cross-platform migration path for UWP.
Since Uno Platform uses the same WinUI XAML API surface that UWP XAML is based on, much of the UWP code transfers with fewer changes than migrating to other cross-platform frameworks:
- XAML files often work with minimal changes (Uno supports
x:Bind,x:Load, etc.) - ViewModels and services transfer directly (platform-independent code)
- Windows-specific APIs need cross-platform alternatives for non-Windows targets
Key Considerations
- Platform-specific code using
Windows.*APIs needs conditional compilation or abstraction for non-Windows targets - WinRT APIs (sensors, geolocation, media capture) need Uno implementations or platform-specific alternatives
- MSIX packaging is Windows-only -- other platforms use their native distribution mechanisms
For Uno Platform development patterns, see [skill:dotnet-uno-platform]. For per-target deployment, see [skill:dotnet-uno-targets].
Decision Matrix
Use this matrix when deciding which migration path to take. The right choice depends on your specific constraints -- there is no universal "best" migration target.
By Primary Goal
| Goal | Recommended Path | Alternative |
|---|---|---|
| Lowest risk, fastest migration | WPF/WinForms to .NET 8+ | -- |
| Modern Windows UI | WPF to WinUI 3 | WPF .NET 9+ with Fluent theme |
| Cross-platform from Windows app | WPF to Uno Platform | Rewrite critical paths in Blazor |
| Cross-platform from UWP | UWP to Uno Platform | UWP to WinUI 3 (stay Windows-only) |
| UWP modernization (Windows-only) | UWP to WinUI 3 | UWP on .NET 9 preview |
| Legacy WinForms modernization | WinForms to .NET 8+ | Gradual rewrite in Blazor or WPF |
By Constraint
| Constraint | Best Path | Rationale |
|---|---|---|
| Limited budget/time | .NET 8+ migration (same framework) | Lowest effort, same codebase |
| Must stay Windows-only | WinUI 3 or WPF .NET 8+ | WinUI for modern UI; WPF for minimal change |
| Must go cross-platform | Uno Platform | Broadest reach with WinUI XAML surface |
| Large existing WPF codebase | WPF .NET 8+ first, then evaluate | Stabilize on modern runtime before UI rewrite |
| Existing UWP codebase | WinUI 3 (Windows) or Uno (cross-platform) | Closest API surface to existing code |
| Team has web skills | Blazor (rewrite) | Leverage web expertise for desktop/mobile |
Staged Migration Strategy
For large applications, a staged approach reduces risk:
- Stage 1: Runtime migration -- Move from .NET Framework to .NET 8+ (same UI framework). Validates compatibility, gains performance, enables modern NuGet packages.
- Stage 2: Modernize patterns -- Adopt Host builder, DI, MVVM Toolkit, modern C#. See [skill:dotnet-wpf-modern] or [skill:dotnet-winforms-basics].
- Stage 3: UI migration (if needed) -- Migrate to WinUI 3, Uno Platform, or Blazor based on requirements. Only pursue if Stage 1 and 2 are stable.
This approach avoids the "big bang" rewrite risk and delivers incremental value at each stage.
Agent Gotchas
- Do not recommend a single migration target as "the right choice" without understanding constraints. Always present options with trade-offs. Budget, timeline, team expertise, and platform requirements all affect the decision.
- Do not skip the .NET 8+ runtime migration before suggesting a UI framework change. Moving from .NET Framework to .NET 8+ (same UI framework) should be Stage 1. A WPF-to-WinUI migration from .NET Framework is significantly harder than from .NET 8+.
- Do not assume WPF is "legacy" and must be migrated away. WPF on .NET 8+ is actively maintained with new features (Fluent theme in .NET 9+, performance improvements). Many applications are well-served by staying on WPF.
- Do not use
dotnet-upgrade-assistantwithout runninganalyzefirst. Always analyze before upgrading to understand the scope of changes and potential issues. - Do not conflate WPF XAML with WinUI XAML. While concepts are similar, the API surfaces differ (
Window,DataContextvsx:Bind,NavigationViewpatterns). Migration requires more than namespace changes. - Do not forget that UWP to WinUI 3 migration involves app model changes, not just namespace updates.
Window.Current,CoreDispatcher,CoreApplicationAPIs are all replaced with different patterns. - Do not recommend Uno Platform for simple Windows-only apps. If the application does not need cross-platform reach, WinUI 3 or WPF .NET 8+ is simpler and has lower maintenance overhead.
References
FAQ
What does the dotnet-wpf-migration skill do?
Migrating desktop apps. WPF/WinForms to .NET 8+, WPF to WinUI or Uno, UWP to WinUI, decision matrix.
How do I install dotnet-wpf-migration?
Run npx skills add https://github.com/wshaddix/dotnet-skills --skill dotnet-wpf-migration in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/dotnet-wpf-migration/ (personal) or .claude/skills/dotnet-wpf-migration/ (project).
Which AI agents can use dotnet-wpf-migration?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is dotnet-wpf-migration safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains dotnet-wpf-migration?
It is published by wshaddix in wshaddix/dotnet-skills. It has 86 recorded installs.
More from wshaddix/dotnet-skills
dotnet-xunit
wshaddix/dotnet-skills
Writing xUnit tests. v3 Fact/Theory, fixtures, parallelism, IAsyncLifetime, v2 compatibility.
dotnet-testing-strategy
wshaddix/dotnet-skills
Deciding how to test .NET code. Unit vs integration vs E2E decision tree, test doubles.
modern-csharp-coding-standards
wshaddix/dotnet-skills
Write modern, high-performance C code using records, pattern matching, value objects, async/await, Span /Memory , and best-practice API design patterns. Emphasizes functional-style programming with C 12+ features. Use when writing new C code or refactoring existing code, designing public APIs for libraries or services, optimizing performance-critical code paths, or building async/await-heavy applications.
csharp-wolverinefx
wshaddix/dotnet-skills
Build .NET applications with WolverineFX for messaging, HTTP services, and event sourcing. Use when implementing command handlers, message handlers, HTTP endpoints with WolverineFx.HTTP, transactional outbox patterns, event sourcing with Marten, CQRS architectures, cascading messages, batch message processing, or configuring transports like RabbitMQ, Azure Service Bus, or Amazon SQS.
testcontainers
wshaddix/dotnet-skills
Patterns for using Testcontainers in .NET integration tests to spin up real dependencies like databases and message queues. Use when writing integration tests that require real databases, testing with message brokers like RabbitMQ or Kafka, or isolating test dependencies with Docker containers.
microsoft-extensions-dependency-injection
wshaddix/dotnet-skills
Dependency injection patterns and best practices using Microsoft.Extensions.DependencyInjection for .NET applications. Use when configuring DI containers in .NET, choosing between service lifetimes (Singleton, Scoped, Transient), or implementing decorator patterns and service interception.
Popular backend & apis skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
entra-app-registration
microsoft/azure-skills
Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.
google-agents-cli-adk-code
google/agents-cli
This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).
embedded-captions
heygen-com/hyperframes
Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.
entra-agent-id
microsoft/azure-skills
Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).
neon
neondatabase/agent-skills
Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.