Pre-Release: Xamarin.Forms 2.5.0.75255-pre3

DavidOrtinauDavidOrtinau USForum Administrator, Xamarin Team, Insider, University Xamurai
edited November 13 in Xamarin.Forms Releases

We've published a pre-release of our next stable release, version 2.5.0.

Highlights
* Forms Embedding
* Layout Compression
* Merged Dictionaries
* Desktop Improvements - macOS

Full release notes

Posts

  • rogiheerogihee NLMember ✭✭✭

    Great! I saw there is somewhere a performance branch with an easy way to measure / show layout performance. Can you give a way to best measure layout performance to test the impact of layout compression?

    Very excited about the Embedding BTW!

  • DirkWilhelmDirkWilhelm USMember ✭✭✭

    @DavidOrtinau 2.4.0-sr2 and this 2.5.0-pre2 share nearly the same bugfixes, but some are in 2.40 but not in the 2.5.0

    Why is that? These are the bugfixs that are nit in 2.5.0-pre2:

    53179 - "PopAsync crashing after RemovePage when support packages are updated to 25.1.1" 
    59996 - "59996 - Race condition when disposing MasterDetailPageRenderer on Android app restart" (#1194)
    60041 - "Placeholder in Entry box is vertically aligned to bottom" (#1190)
    
  • BjornBBjornB USMember ✭✭✭

    can we have som more details about how we should use LayoutCompression? The only example I can find is in the pr.

  • ChaseFlorellChaseFlorell CAInsider, University mod

    @PhilippSumi said:
    @DavidOrtinau This topic may have been beat to death already (I wouldn't know) but: Can you strive for shorter release cycles? I think I can make a good case for that:

    • We have to wait for months to get much needed fixes in a production-ready package.
    • I would be more inclined to switch to pre-release packages in DEV if the cycles were shorter. If I know it'll be months, there is zero incentive for me to do the switch because I would be working with a framework I cannot use for production releases. You loose tons of valuable feedback here.
    • If the releases are so big, the vast number of changes opens up much more room for much more bugs that then damage your release (and reputation).
    • You basically are waiting for months to get developer feedback, because the pre-releases are only used by a small group of devs (see above). Then, with the release, the reports are trickling in and you have a lot of work to fix a lot of issues, with a production release that actually might not be production-ready (we've seen that multiple times this year alone).
    • It's also much more challenging to test and verify than smaller releases with smaller scope for both you guys and us.

    Just my 0.02$ of course. And I'm happy things are progressing - keep those releases coming!

    Longer release cycles have too many changes in a single drop. I prefer small iterative changes... more manageable.

  • DavidOrtinauDavidOrtinau USForum Administrator, Xamarin Team, Insider, University Xamurai

    @DirkWilhelm I'll find out for sure. In addition to building from VSTS now we are generating release notes slightly differently. And we were pulling together both releases at the same time. I'll sort it out.

  • DavidOrtinauDavidOrtinau USForum Administrator, Xamarin Team, Insider, University Xamurai

    @BjornB some Layout Compression details on the blog today and here's a link to a sample layout.

    https://blog.xamarin.com/3-big-things-explore-xamarin-forms-2-5-0-pre-release/

    https://github.com/davidortinau/ProfileLayout

    Essentially add CompressedLayout.IsHeadless="true" on any layout that doesn't need to exist in your resulting UI.

  • DavidOrtinauDavidOrtinau USForum Administrator, Xamarin Team, Insider, University Xamurai

    @PhilippSumi @ChaseFlorell I agree. How quickly?

  • PhilippSumiPhilippSumi USMember ✭✭✭
    edited October 24

    @DavidOrtinau That sounds like a trick question :p

    I would be happy with a new release every few weeks - I think a smaller scope like this would also greatly simplify the triaging of regressions since not that much code would have changed.

    Given that the Visual Studio team adopted a much more agile strategy with their releases, I'm sure they would be willing to share the challenges and benefits that came with that decision? I could imagine the learnings would be comparable to yours (single but modular product, and pesky customers ;)

  • PhilippSumiPhilippSumi USMember ✭✭✭
    edited October 25

    Some more food for thought: How about RC releases before you release to PROD? While a pre-"x" might not be interesting for many (you don't really know what you're at with those), this would give devs the incentive of getting and (more importantly:) testing a basically stable and feature-frozen release (with the actual RTM being right around the corner) and the chance to report back to Xamarin before potential show-stopper bugs make it into the app stores.

  • DnielBugaDnielBuga USMember ✭✭

    Oh look, this prerelease didn't break my app. Cool :)

  • batmacibatmaci DEMember ✭✭✭✭
    edited October 25
    > @DnielBuga said:
    > Oh look, this prerelease didn't break my app. Cool :)

    You probably dont need tap gestures in Android
  • DnielBugaDnielBuga USMember ✭✭

    @batmaci said:
    > @DnielBuga said:
    > Oh look, this prerelease didn't break my app. Cool :)

    You probably dont need tap gestures in Android

    I use them as a bit of hacky implementation of a fling gesture on a custom chart view. It works as I expect it to, so does the pinch gesture.

  • NMackayNMackay GBInsider, University ✭✭✭✭✭

    @DnielBuga said:

    @batmaci said:
    > @DnielBuga said:
    > Oh look, this prerelease didn't break my app. Cool :)

    You probably dont need tap gestures in Android

    I use them as a bit of hacky implementation of a fling gesture on a custom chart view. It works as I expect it to, so does the pinch gesture.

    Great but it broke a lot of production code.

  • KyleWarrenKyleWarren USUniversity ✭✭
    > @DavidOrtinau said:
    > @BjornB some Layout Compression details on the blog today and here's a link to a sample layout.
    >
    > https://blog.xamarin.com/3-big-things-explore-xamarin-forms-2-5-0-pre-release/
    >
    > https://github.com/davidortinau/ProfileLayout
    >
    > Essentially add CompressedLayout.IsHeadless="true" on any layout that doesn't need to exist in your resulting UI.


    I read your blog and maybe I’m not picking up on something. What do you mean by “on any layout that doesn’t need to exist in your resulting ui?”

    What are some common examples of places you would and wouldn’t use layout compression.

    I would think you’d want it everywhere? But obviously I’m not grasping something.

    Can someone elaborate on the topic please?
  • seanydaseanyda GBMember ✭✭✭✭✭

    @KyleWarren said:
    > @DavidOrtinau said:
    > @BjornB some Layout Compression details on the blog today and here's a link to a sample layout.
    >
    > https://blog.xamarin.com/3-big-things-explore-xamarin-forms-2-5-0-pre-release/
    >
    > https://github.com/davidortinau/ProfileLayout
    >
    > Essentially add CompressedLayout.IsHeadless="true" on any layout that doesn't need to exist in your resulting UI.


    I read your blog and maybe I’m not picking up on something. What do you mean by “on any layout that doesn’t need to exist in your resulting ui?”

    What are some common examples of places you would and wouldn’t use layout compression.

    I would think you’d want it everywhere? But obviously I’m not grasping something.

    Can someone elaborate on the topic please?

    My understanding of the compressed layouts is we have a set of layouts available to us e.g StackLayout, Grid, AbsoluteLayout etc.. and the "CompressedLayout.IsHeadless" property removes the extra renderers from the layout which provide the ability to add gestures, background colours and transformations.

    So ideally you will want to have the property set to true for all your layouts but in some cases you won't be able to because you will need those extra renderers on your layout to achieve your planned UI.

  • JohnOsbornJohnOsborn USMember ✭✭

    Pre2 looks pretty solid so far. Two things:

    1) The Editor placeholder is shifted to the bottom of the control on UWP.

    2) The pinch gesture does not work on a UWP phone (Lumia 830, Win 10 mobile version 1607, build 10.0.14393.1770) when compiled for release. However, it works when compiled for debug. It works fine on a Windows PC both debug and release. It also works fine on Android.

  • batmacibatmaci DEMember ✭✭✭✭

    @JohnOsborn said:
    Pre2 looks pretty solid so far. Two things:

    1) The Editor placeholder is shifted to the bottom of the control on UWP.

    2) The pinch gesture does not work on a UWP phone (Lumia 830, Win 10 mobile version 1607, build 10.0.14393.1770) when compiled for release. However, it works when compiled for debug. It works fine on a Windows PC both debug and release. It also works fine on Android.

    I think that there is an entry in bugzilla for number 1 and they uploaded it with 2.4 latest release but I dont know why they dont apply these bug fixes into 2.5 pre

  • batmacibatmaci DEMember ✭✭✭✭

    @seanyda said:

    @KyleWarren said:
    > @DavidOrtinau said:
    > @BjornB some Layout Compression details on the blog today and here's a link to a sample layout.
    >
    > https://blog.xamarin.com/3-big-things-explore-xamarin-forms-2-5-0-pre-release/
    >
    > https://github.com/davidortinau/ProfileLayout
    >
    > Essentially add CompressedLayout.IsHeadless="true" on any layout that doesn't need to exist in your resulting UI.


    I read your blog and maybe I’m not picking up on something. What do you mean by “on any layout that doesn’t need to exist in your resulting ui?”

    What are some common examples of places you would and wouldn’t use layout compression.

    I would think you’d want it everywhere? But obviously I’m not grasping something.

    Can someone elaborate on the topic please?

    My understanding of the compressed layouts is we have a set of layouts available to us e.g StackLayout, Grid, AbsoluteLayout etc.. and the "CompressedLayout.IsHeadless" property removes the extra renderers from the layout which provide the ability to add gestures, background colours and transformations.

    So ideally you will want to have the property set to true for all your layouts but in some cases you won't be able to because you will need those extra renderers on your layout to achieve your planned UI.

    One thing i know and I tested that it doesnt work for ItemTemplate, DataTemplate for listview. It strips off the other elements within as well. At least I tested on SfListView from Syncfusion. maybe behavior is different for XF listview

  • JohnOsbornJohnOsborn USMember ✭✭

    @batmaci I think the Bugzilla entry is for the text, not the placeholder. The text was fixed in pre2, but the placeholder is still a problem.

  • PhilippSumiPhilippSumi USMember ✭✭✭

    At the risk of sounding like a broken record (but hope springs eternal): ListView plus Text Entry on the bottom && Xamarin == bad, bad match.
    One of the issues, which has been open for a long time: https://bugzilla.xamarin.com/show_bug.cgi?id=46165

  • KyleWarrenKyleWarren USUniversity ✭✭
    > @batmaci said:
    > @seanyda said:
    >
    > @KyleWarren said:
    > > @DavidOrtinau said:
    > > @BjornB some Layout Compression details on the blog today and here's a link to a sample layout.
    > >
    > > https://blog.xamarin.com/3-big-things-explore-xamarin-forms-2-5-0-pre-release/
    > >
    > > https://github.com/davidortinau/ProfileLayout
    > >
    > > Essentially add CompressedLayout.IsHeadless="true" on any layout that doesn't need to exist in your resulting UI.
    >
    >
    > I read your blog and maybe I’m not picking up on something. What do you mean by “on any layout that doesn’t need to exist in your resulting ui?”
    >
    > What are some common examples of places you would and wouldn’t use layout compression.
    >
    > I would think you’d want it everywhere? But obviously I’m not grasping something.
    >
    > Can someone elaborate on the topic please?
    >
    >
    >
    >
    >
    > My understanding of the compressed layouts is we have a set of layouts available to us e.g StackLayout, Grid, AbsoluteLayout etc.. and the "CompressedLayout.IsHeadless" property removes the extra renderers from the layout which provide the ability to add gestures, background colours and transformations.
    >
    > So ideally you will want to have the property set to true for all your layouts but in some cases you won't be able to because you will need those extra renderers on your layout to achieve your planned UI.
    >
    >
    >
    >
    >
    > One thing i know and I tested that it doesnt work for ItemTemplate, DataTemplate for listview. It strips off the other elements within as well. At least I tested on SfListView from Syncfusion. maybe behavior is different for XF listview


    Is there a complete list of the renderers, features, properties, etc. that the compression removes listed somewhere?
  • batmacibatmaci DEMember ✭✭✭✭
    I dont think there is. Only said that gestures, Background color etc if you dont need. You can test yourself easily with your Layouts. Usually you can do it on main Layout of the page of you dont have Background color. It works for me without any problem. Only ListView i ecperienced Problem as i said
  • batmacibatmaci DEMember ✭✭✭✭
    edited October 27
    DELETED
  • JasonRaiJasonRai USMember ✭✭
    edited October 27

    What happened to preview 2? Unlisted? https://imgur.com/a/XouTO

    Nevermind. If I change it to Nuget v3 its fine. But on All Sources I can't see the package.

  • knocteknocte GBMember ✭✭

    Why are FastRenderers not the default in 2.5.0?

  • MarcoTronconeMarcoTroncone GBUniversity ✭✭

    @DavidOrtinau I've updated to the version 2.5.0.19271-pre2 and I enabled the FastRenderes on Android:

    global::Xamarin.Forms.Forms.SetFlags("FastRenderers_Experimental");

    Maybe it's not true and it's just myself but it seems more fluid (but maybe it's just me that want to think that everythink is more fluid).

    Anyway...I'm trying to test the Compressed Layout but I don't get how to use it via code instead of the XAML.

    Is it possible?

    Thanks

  • MarcoTronconeMarcoTroncone GBUniversity ✭✭

    Never mind.

    I found how it works...

    Compressed Layout seems a good thing but maybe they are a big dangerous...In my code I can see that enabling it on some layouts they are not well aligned( their children). I don't know if it's a bug or it's "normal".

    I'll continue to test this feature

  • batmacibatmaci DEMember ✭✭✭✭

    @MarcoTroncone said:
    Never mind.

    I found how it works...

    Compressed Layout seems a good thing but maybe they are a big dangerous...In my code I can see that enabling it on some layouts they are not well aligned( their children). I don't know if it's a bug or it's "normal".

    I'll continue to test this feature

    can you give a code sample?

  • MarcoTronconeMarcoTroncone GBUniversity ✭✭

    @batmaci Sure:

    CompressedLayout.SetIsHeadless(YourLayoutToCompress, true);

    Be very careful, many times even a layout that ideally could be compressed without problems, doesn't work (or has unpredicatable behaviours)

  • batmacibatmaci DEMember ✭✭✭✭

    @MarcoTroncone said:
    @batmaci Sure:

    CompressedLayout.SetIsHeadless(YourLayoutToCompress, true);

    Be very careful, many times even a layout that ideally could be compressed without problems, doesn't work (or has unpredicatable behaviours)

    Can you give an example what do you mean?

  • MarcoTronconeMarcoTroncone GBUniversity ✭✭

    @batmaci

    There are some layout that could be compressed (the don't have background color, gestures, transformations, etc...) they are just containers.

    If I try to compress them, for some of them the children are invisible. I don't know yet why it happens as I don't see any logic in that, some of them are working fine, some are not working (invisible children).

    I've also seen that if I try to compress a layout in a ViewCell, it works when I load the page but when I start to scroll the listview, the app crashes.

    @DavidOrtinau I know this is only a preview (and I have to say, it's a great preview) but is the team aware of these bugs? when we can expect a new preview with these improvements?

  • batmacibatmaci DEMember ✭✭✭✭

    @MarcoTroncone I totally agree. thats why it is better to test and see always. for me I had only bad experience within listview as you said. Beside that all worked fine but I hope also works on any device without exception. I am worried only if it works on one device and others fail.

  • batmacibatmaci DEMember ✭✭✭✭

    When i use fast_renderers enabled, I am getting exception below

        Unhandled Exception:
    
        System.NotSupportedException: Unable to activate instance of type Xamarin.Forms.Platform.Android.FastRenderers.ImageRenderer from native handle
    

    this occurs sometimes when I background my app and come back to the app again. It occurs on OnDestroy method (I dont know why is it even called) as you can see in the image below

    https://imgur.com/a/bkHL6

  • JoshuaNovak.6915JoshuaNovak.6915 USMember ✭✭

    @DavidOrtinau said:
    @BjornB some Layout Compression details on the blog today and here's a link to a sample layout.

    https://blog.xamarin.com/3-big-things-explore-xamarin-forms-2-5-0-pre-release/

    https://github.com/davidortinau/ProfileLayout

    Essentially add CompressedLayout.IsHeadless="true" on any layout that doesn't need to exist in your resulting UI.

    @DavidOrtinau I'm not 100% sure what you mean by "doesn't need to exist". Does this mean any layout where we aren't using background colors or gestures? What about layouts that need spacing/padding etc?".

  • LewisKLewisK USUniversity ✭✭

    @JoshuaNovak.6915 said:

    @DavidOrtinau said:
    @BjornB some Layout Compression details on the blog today and here's a link to a sample layout.

    https://blog.xamarin.com/3-big-things-explore-xamarin-forms-2-5-0-pre-release/

    https://github.com/davidortinau/ProfileLayout

    Essentially add CompressedLayout.IsHeadless="true" on any layout that doesn't need to exist in your resulting UI.

    @DavidOrtinau I'm not 100% sure what you mean by "doesn't need to exist". Does this mean any layout where we aren't using background colors or gestures? What about layouts that need spacing/padding etc?".

    Those would be required, although external padding outside the view you can replace a wrapper view with padding with just a margin.

  • JoshuaNovak.6915JoshuaNovak.6915 USMember ✭✭

    @LewisK So how does this work with a Grid view then, since they have columns, rows, row spacing, etc?

Sign In or Register to comment.