Popcorn is a .Net Middleware for your RESTful API that allows your consumers to request exactly as much or as little as they need, with no effort from you.
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).
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).