<ul data-eligibleForWebStory="true">Building apps with Next.js involves optimizing server tasks post-response using the after() API of Next.js 15.after() allows running logic after route rendering without impacting the client's experience, beneficial for tasks like analytics or logging.It works in Server Components, Actions, Route handlers, and Middleware, with varying access to request info.Nested after() calls execute in reverse order of their rendering, providing a clean way to handle post-response tasks.after() runs even during errors, ensuring critical tasks like logging continue despite route failures.Key considerations include after()'s static nature, need for manual gating of conditional logic, and limitations in dynamic reactivity.alternatives to after() include waitUntil() for Edge Middleware and await for tasks that must complete pre-response.Utilizing after() effectively can significantly enhance web app performance and user experience by deferring non-critical tasks.