Partial-response JSON for ASP.NET Core: API clients ask for exactly the fields they need. v8 is a Roslyn source generator for System.Text.Json and Native AOT.
This project is maintained by Skyward App Company
Popcorn’s .NET provider ships as two NuGet packages:
Skyward.Api.Popcorn.SourceGen.Shared — runtime attributes ([Default] / [Always] / [Never]
/ [SubPropertyDefault]), envelopes (ApiResponse<T>, Pop<T>, ApiError), DI helpers,
exception middleware.Skyward.Api.Popcorn.SourceGen — Roslyn source generator (analyzer-only, no runtime DLL).Both target .NET 8+ and are compatible with PublishAot=True and PublishTrimmed=True. Current
version: 8.0.0-preview.1 (see Releases).
Building requires .NET SDK 9.0.100 or later (Roslyn 4.12); .NET 10 SDK recommended. Older SDKs
skip the generator with warning CS9057. See the Quick Start
for details.
Coming from v7? The v7 packages (
Skyward.Api.PopcornandSkyward.Api.Popcorn.DotNetCore) are the runtime-reflection line — still on NuGet, still maintained, but cannot AOT-publish. See Migrating from v7 to v8 for the upgrade path.
?include=[...] grammar in detail.!all / !default / negation.[Default] / [Always] / [SubPropertyDefault].[Never] for fields that must not leave the server.Tutorials for v7 features that do not exist in v8 — each carries a deprecation banner pointing at the v8 replacement. Listed for v7 users still on the runtime-reflection line:
[PopcornEnvelope] + UsePopcornExceptionHandler in v8.[Never] / hand factory / Mapster in v8.JsonConverter<T> for external types.dotnet/PopcornAotExample/ — minimal API published with
PublishAot=True + PublishTrimmed=True. Exercises the [PopcornEnvelope] + exception middleware path.dotnet/Examples/PopcornNet5Example/ — legacy v7 example (scheduled for refresh or removal).