Surface v0.12 released!
by Marlus Saraiva ・
surface releases liveview
Surface v0.12
is out!
This version introduces some breaking changes as it's mostly a preparation for v0.13
.
It also deprecates a few components as their usage is no longer required/recommended.
Full changelog can be found here.
Here's a quick overview on the main changes.
Extracting Form components
The most impactful change is that all form-related components have been moved to
surface_form_helpers. That includes the <Form>
component
itself and all other input controls.
The reason those components were created in the first place was to add support for scope-aware contexts to forms. Since this feature has been deprecated due to the lack of built-in support in Liveview, we strongly recommend using the new built-in <.form> component, along with Phoenix.HTML.Form and Phoenix.HTML.FormField structs. This new Liveview API is way more efficient regarding diff-tracking and should be the default way to design forms.
If you're not able to update all your forms at once, surface_form_helpers can be used as a safe fallback so you can gradually replace them. For more information on that, see Migration Guide - v0.12.
Deprecations
Components <LivePatch>
, <LiveRedirect>
and <Link>
have been deprecated in favor of <.link>
. Replacing those
components should be straitforward. In most cases all you have to do is to replace:
-
<LiveRedirect to="...">
with<.link navigate="...">
-
<LivePatch to="...">
with<.link patch="...">
-
<Link to="...">
with<.link href="...">
For more info on <.link>
, see the official Live Navigation docs.
Scope-aware Contexts
Another component that has been deprecated is <Context>
, which used to be used to allow
Scope-aware contexts.
This feature has been deprecated and will be removed in v0.13
due to the lack of built-in
support for the feature in Liveview itself, which leads to inefficient diff-tracking when using it.
Global context related functions like Context.put/3
and Context.get/3
, as well as data/prop's
option :from_context
, will be kept and recommended as their usage don't affect diff-tracking
negatively.
Happy coding!
-marlus