NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1460 most downloaded on Packagist
🏆 Nette Application: a full-stack component-based MVC kernel for PHP that helps you write powerful and modern web applications. Write less, have cleaner code and your work will bring you joy.
Last release 3 months ago
29 Jun 2026
Release timing varies
gaps range from 3 weeks to 10 months
Rarely documented
notes for 8 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
81 releases · first in 2014
Mostly very old curiosities that few people knew existed – they still work but now emit a deprecation notice:
Nette Application 3.3 modernizes the foundations: PHP 8.3+ and Latte 3.1, more reliable CSRF protection driven by the browser itself, and a default presenter mapping that finally matches the structure used throughout the documentation. It also clears out a pile of long-forgotten legacy. Please test the RC and report anything that breaks before the stable release.
Sec-Fetch-Site header instead of a SameSite cookie.App\Presentation\*\**PresenterApplication::processRequest() returns a Response instead of sending it itself (#350) – sending is handled by run(). This enables long-running runtimes (RoadRunner, FrankenPHP) and PSR integration.Presenter::getRequest() throws instead of returning null when the presenter isn't running yetLatteFactory::create() now takes ?Control – update any custom LatteFactory implementation to the new create(?Control $control = null) signature.{ifCurrent} – use {if isLinkCurrent('...')}.PresenterComponent and IRouter.Mostly very old curiosities that few people knew existed – they still work but now emit a deprecation notice:
@annotations → PHP attributes: @persistent → #[Persistent], @crossOrigin → #[Requires(sameOrigin: false)], @deprecated → #[Deprecated].RouteList – $router[] = new Route(...) and friends are replaced by $router->addRoute(...) / getRouters().link('Product:detail?id=1') should pass arguments instead: link('Product:detail', ['id' => 1]).Component::getParameter() second $default argument – use the ?? operator instead.$presenter->view, $layout, $request, $session…) – use the getters.link('Product:detail', ['#' => 'reviews']) produces ...#reviews. The value is URL-encoded, must be scalar, and isn't passed on as a request parameter.Presenter::completeTemplate() – a protected method extracted from sendTemplate() that you can override to inject shared variables or set the template file before rendering.One column per quarter.
Nothing published for this version
A hardening release. Crafted or malformed request parameters that used to slip through as uncaught 500s now degrade gracefully to 4xx . If your site g
A hardening release. Crafted or malformed request parameters that used to slip through as uncaught 500s now degrade gracefully to 4xx. If your site gets probed by scanners – and it does – these three fixes turn a batch of "Server Error" reports into clean Bad Request / Not Found responses.
redirect('this'), forward('this'), isLinkCurrent('this'), typically from a language switcher) while the current URL carries a parameter that doesn't fit the action's typed signature (e.g. ?id=abc for int $id), the framework raised an uncaught InvalidLinkException (HTTP 500). It now reports a proper BadRequestException (4xx) through the new InvalidRequestParameterException. Explicitly passed bad link arguments still throw InvalidLinkException, so genuine programmer mistakes stay visible.?1-foo=bar produced a numeric component id that hit getComponent()'s string type hint and threw a TypeError (HTTP 500). The id is now cast to string and the request is handled gracefully.?do[]=x could crash Tracy's routing panel during development. It now skips non-string presenter/signal/action values instead of throwing.Reverted the experimental hasPresenter()/getPresenterIfExists() addition and the $throw deprecation in Component / Form::getPresenter() – the previous…
hasPresenter()/getPresenterIfExists() addition and the $throw deprecation in Component/Form::getPresenter() – the previous API behavior stays unchangedApplication, FileResponse, JsonResponse, RedirectResponse, TextResponse, ForwardResponse and CliRouterPresenterFactory, CallbackResponse and Multiplier are normalized to Closure for stronger typingLinkGenerator: throws an error when the link points to #[Requires(forward: true)]
LinkGenerator: do not pass defaults of #[Parameter]
Latte: added filter |absoluteUrl and {linkBase}
|absoluteUrl and {linkBase}LatteExtension: added option 'locale'
ApplicationExtension: checks the correct usage of attributes
Component::tryCall() throws BadRequestExceptionMultiplier::createComponent() allow to return a null (#327)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →