 It's October, and Halloween is just a few weeks away, but why wait to get scared? Are you ready for a spine-chilling tale that'll leave you both curious and fearful? I've got a story to share about the recent update to SharePoint Server subscription edition SPSE and the 23H2 feature update. Embrace yourself. As I share the scary truths, there's a downgraded version of the SharePoint framework included in this update. A downgrade? That's not a good scenario for developers who've already upgraded or deployed their projects using SPFX 1.5.1. And while there's also added support for newer versions of React and the Office UI-favorite React components, in doing so, you've got to dive into the tangle web of conflicting dependencies and uncover the risks of mixing SharePoint framework versions. So stick with me if you want to uncover the secrets and find out how to navigate this treacherous terrain. Hey, I'm Andrew. And if you're new here, be sure to hit that subscribe button to see when I publish new videos and subscribe to my bi-weekly newsletter, the Full Stack Devs Microsoft 365 Playbook, to join thousands of fellow Full Stack developers for insights, guidance, and keeping up with the latest news on Microsoft 365 and Azure development. This story is for those who are involved with SharePoint Server subscription edition and the most recent update, SharePoint Server subscription edition 23H2. This update released in September of 2023 is the second update for SPSE this year. And with this update, there were mentions of updates to the SharePoint framework and adding support for newer versions of React and the Office UI-fabric React components. However, it was not clear exactly what they meant by these updates. Now, from what I gathered, the updates actually downgraded the version of the SharePoint framework that's included in the 23H2 feature update compared to the previous update that was released earlier this year, 23H1 that I've already covered. The other thing in the release notes is that they said they added support for React 16 and the Office UI-fabric React version 7. Now, before I explain the impacts on our projects, let's first understand what this update does. Now, experienced SharePoint framework developers will be interested to hear that React and the Office UI-fabric React have been updated to newer versions than what was the included versions that were generally available in the 23H1 updates for SPSE. SPSE shipped with SPFX 1.4.1, just like SP Server 2019. And earlier this year, with the 23H1 update, Microsoft surprised us by upgrading the SharePoint framework. Now, this broke from the previous position of not upgrading the SharePoint framework in on-premises SharePoint Server deployments. The SPSE 23H1 update upgraded the version of the SharePoint framework from 1.4.1 to 1.5.1. Now when I saw this update, I was hoping we'd see the start of a big jump in the SharePoint framework with the second half update that came out this year. But as I mentioned previously, it didn't really go exactly how we expected. In the article announcing this update that Microsoft published in September, that they would continue to improve and expand the capabilities of the SharePoint framework in SharePoint Server subscription edition in future updates. However, they didn't specify which version of the SharePoint framework this feature update included. But in the same paragraph, though, they said this. It adds support for React 16 and the OfficeUI Fabric React Version 7, allowing developers to utilize these newer component versions and their SPFX solutions. So these two statements give us some clues as to what version of the SharePoint framework we're using. Because SPFX 1.7 that was released in January of 2019 added support for React 16, bumping it from React 15. And SPFX 1.12 released in April of 2021 added support for the OfficeUI Fabric Version 7. So initially it appeared to me that they updated the SharePoint framework to version 1.12.1. This update would have included the platform dependency upgrades for React and OfficeUI Fabric React. It made sense since that was also the last version of the SharePoint framework generator that supported creating on-prem projects with starting a new project. Again, that was version SPFX 1.12.1. But because they didn't explicitly say which version of SPFX was in this update, I wasn't really sure of it. So I asked some people, Microsoft, about this, and eventually I got a confirmation that raised a lot more questions than answers. The version of SPFX included in this update is 1.5.0. And later I saw a poll request in the repo for the SharePoint developer docs that confirmed it was SPFX 1.5.0. Now that poll request, I'm going to come back to that in a minute. Let's stay on the topic of the SharePoint framework version. You read that right. That is a downgrade of the SharePoint framework from the 23H1 update, which is 1.5.1, to the 23H2 update, which is 1.5.0. So what does this mean? Well, if anybody upgraded their projects or created new projects for SharePoint Server subscription edition that targets SPFX 1.5.1, they'll likely have problems because once you install the SPFX SE23H2 update, SharePoint Framework 1.5.1 is no longer on the server. So when your SharePoint Framework 1.5.1 project tells the runtime it needs specific versions of the runtime to load for it, wouldn't it fail because it's requesting things that no longer exist? That's just the tip of the iceberg. Wait until you hear the rest of this story. That's really scary about this. Now when I delve deeper and I review the poll request that was submitted to update the documentation on how you upgrade your projects to the newer versions of React and the Office UI fabric, I was absolutely astonished by what I was reading. The instructions advised manually modifying the package.json file to gain support for these new dependencies by setting the versions of React and the React DOM packages to 16.13.1 and adding the Microsoft Office UI fabric React bundle package version 1.15. Now I was surprised enough that they recommended making these changes manually in the package.json which is generally not recommended. If the project's been built once before, there's already going to be a package lock file in the project and that's going to capture a snapshot of all the versions that are installed for all the dependencies. So by simply updating the package.json file, it's not going to update the versions in the lock file. And that assumes that you are starting with a brand new project rather than using an upgraded one. The correct approach in my opinion is to use the npm install command which not only is going to update the package.json file but it's also going to update the lock file and install all the necessary dependencies that you're updating. Now instead of making changes to the package file and then running npm install, you should use the npm install command to ensure that changes are applied consistently throughout your project and those changes will be saved to the lock file. The next set of instructions, they tell you to update the SharePoint framework build dependency packages from 1.4.1 to 1.9.1 but that assumes that your project has never been upgraded or created using the 23H1 update with the SharePoint framework 1.5.1. It assumes you're starting directly from the default version that we had that was included with SPSC. But that's not the whole story and that's not the alarming part because then the pull request tells you to update all of the other SharePoint framework packages in your project to 1.5.0. Yeah, effectively what this means is that you're going to be using one version of the SharePoint framework to build and compile your project and run the local web server using SharePoint framework 1.9.1 while using a different version 1.5.0 in your actual project as a dependency so when the SPFX runtime loads the component on the page it's going to load a different version than the one that was used to build the project. Is that even going to work? Oh, I mean, I guess they tested it but this has never been a supported scenario in the seven years of SPFX. We have never seen them recommend using two different versions of the SharePoint framework. What does all this mean? Well, I think that it's clear where things stay in but it's a little confusing on where we're supposed to go from here. Now Microsoft is aware of this and I think they're currently investigating the situation trying to determine exactly what recommendations they should provide but this is a big concern because the 23H2 update it's already been released and there are probably customers who have already installed it but this does lead me to a couple questions. First of all, what happens to anyone who's already deployed or upgraded the project using SharePoint framework 1.5.1 to SPSC with the 23H1 update that's already installed? Is there a downgrade option? Won't everything just break? Can you really have two versions of the SharePoint framework in one project because after seven years, this is the first time we've heard this from Microsoft. We have two versions of the SharePoint framework. One for the tool chain and one for the runtime. We are dealing with different versions of React and Office UI fabric and Fluid UI with a version that was never supported in this way. It seems that the SharePoint framework engineering team might not been aware of what was happening with the on-prem update so I'm not really sure where this really leaves us because all of these questions remain unanswered. One thing is certain in my mind though, this is a mess. This 23 update for SPSC is keeping in the spirit of Halloween and it should scare the heck out of you. So here's my guidance on how you should proceed. First of all, if you're gonna install the SharePoint server subscription edition 23H2 update right now, don't deploy or upgrade any of your SharePoint framework projects beyond SPFX 1.4.1. SPFX 1.5.1 does not exist on the server with 23H2. And if you wanna use newer versions of React with the Office UI fabric React on SPSC, the only way to do that is to create some Frankenstein SPFX project that uses different versions of React to the Office UI fabric React with SPFX 1.5.0. That's scary. Now the second thing is that if you have any custom SPFX solutions 1.5.1 that you've already deployed to your SPSC H1 environment, don't install H2 until Microsoft clears up their docs and issues a statement about this. My third bit of guidance is to ignore all of the guidance that is in the unmerged pull request that shows how to create this bastardized SPFX solution to support different versions of React in Office UI fabric React. And number four, if you don't have any custom SPFX solutions, including SPFX controls from independent software vendors or have any customizations that they've applied or included with purchased products, you must ensure that when you install SPSE H2, you verify that any ISV solutions or custom solutions are using SPFX 1.4.1 or lower. Now I would be surprised if the SPFX engineering team could support this configuration by having a mix of different SPFX versions and requiring manual updates to the package.json file to accommodate varying versions of React in the Office UI fabric React. What do you think about this update to SPSE? Are you gonna go ahead and risk it by applying it to your environment or are you gonna wait and see what Microsoft says? Let me know by dropping a comment below and let me know if you wanna see more videos about the SharePoint framework or other Microsoft 365 developer topics. And if you like this video, please give me a thumbs up and hit that subscribe button so you can see when I publish new videos. And also subscribe to my bi-weekly newsletter, the Full-Stag Debs Microsoft 365 Playbook. Enjoy thousands of fellow Full-Stag developers for insights, guidance, and to keep up with the latest news on Microsoft 365 and Azure development topics. Again, I'm Andrew Connell, thanks for watching and I'll see you next time.