github vaadin/flow 3.0.0
Vaadin Flow 3.0.0 for Vaadin 15.0.0

latest releases: 24.6.0.alpha6, 24.4.12, 24.5.5...
4 years ago

3.0.0 Feature Highlights:

  • TypeScript views and client-side routing, compatible with Java views and server-side routing (#6218)
  • Strongly-typed secure Java backend access from TypeScript views (#6229)
  • The app can start and run without any server-side UI state (#6139)

Other Significant Changes in 3.0.0:

  • The Java API to configure the contents of the bootstrap page is changed to support stateless applications
    • BootstrapPageConfigurator is replaced by AppShellConfigurator (#6939, #6938, #6971, #6533, #6972)
    • the bootstrap page is based on the index.html and index.ts template files (#6135)
    • the V14 bootstrapping-related APIs are deprecated, and require a flag to use (#6484, #7336)
  • An experimental feature of using pnpm instead of npm for faster frontend builds: the pnpm.enable flag (#6966)
  • The order of execution for the BeforeEnter listeners is changed: now they start with the top parent (#4595)
  • All features of Flow 2.2 (up to 2.2.0.alpha12) are included as well.

Breaking Changes in 3.0.0:

  • The list of supported browsers is updated to match the next LTS target (IE11, Safari 12 and older, Edge 18 and older are no longer supported) (#6856, #7424)
  • The APIs deprecated in Flow 2.x are removed (#6510)
    • Property synchronization methods in Element are replaced with similar API in DomListenerRegistration: getSynchronizedPropertyEvents, getSynchronizedProperties, removeSynchronizedPropertyEvent, removeSynchronizedProperty, addSynchronizedPropertyEvent, addSynchronizedProperty, synchronizeProperty.
    • JavaScript execution APIs executeJavaScript and callFunction in Element and Page are replaced with similarly named methods that give access to the return value executeJs and callJsFunction:
    • Miscellaneous Element methods: Element(String, boolean), addEventListener(String, DomEventListener, String...)
    • Device and platform detection methods WebBrowser#isIOS(), WebBrowser#isIPad(), BrowserDetails#isSafariOrIOS(), BrowserDetails#isIOS(), BrowserDetails#isIPad() are replaced with method in ExtendedClientDetails: isIPad(), isIOS()
    • Methods JsModule#loadMode() and Page#addJsModule(String, LoadMode) for setting the load mode of JsModule are removed since it does not function with JavaScript modules.
    • The construction methods BeforeEvent(NavigationEvent, Class<?>) and BeforeEvent(Router, NavigationTrigger, Location, Class<?>, UI) in BeforeEvent are replaced with BeforeEvent(NavigationEvent, Class, List) and BeforeEvent(Router, NavigationTrigger, Location, Class, UI, List)
    • Methods getUrl(), getUrlBase() and getRoutes() in Router are replaced with methods getUrl(), getUrlBase() and getAvailableRoutes() in RouterConfiguration. The resolve() method in Router is replaced with the resolve() method in RouteUtil. The getRoutesByParent() method in Router is removed and has no replacement.
    • ServletHelper is replaced with HandlerHelper
    • ExecutionCanceler is replaced with PendingJavaScriptResult
    • The getBodyAttributes method in AbstractTheme, Lumo and Material is replaced with getHtmlAttributes
    • The removeDataGenerator method in HasDataGenerators and CompositeDataGenerator is removed in favor of using the registration returned from addDataGenerator(DataGenerator)
    • The mehtods preventsDefault and stopsPropagation in ShortcutRegistration are replaced with isBrowserDefaultAllowed and isEventPropagationAllowed
    • The safeEscapeForHtml method in VaadinServlet is removed in favor of using org.jsoup.nodes.Entities#escape(String)
    • The static method getInstance in ApplicationRouteRegistry is removed in favor of the instance method.
    • The protected instance method getApplicationUrl from VaadinServlet is removed

Known limitations in 3.0.0 (to be fixed in 3.0.x)

  • When using the Vaadin Multiplatform Runtime navigation from Vaadin 15 to Vaadin 7/8 views is broken (#7540)
  • The BeforeEnter.rerouteTo() Java API cannot re-route to TypeScript views (#6490, #7578)
  • The pnpm mode works only when the usage statistics collection is enabled (#7663)
  • Links to StreamResources require an extra router-ignore attribute to work (#7623)

See the complete list of changes in 3.0.0

Don't miss a new flow release

NewReleases is sending notifications on new releases.