SharePoint Framework - Questions and Answers

Tags: SharePoint, SharePoint Framework, SharePoint Online, SharePoint 2016

Me at The Village in San FranciscoAt the Future of SharePoint event in San Francisco on May the 4th Microsoft announced the new and improved customization option and/or development model called the SharePoint Framework. This is a development model that solely focused on client-side development. There's been some confusion going on on Twitter and other social medias and podcasts and I thought I should put together an Q&A post for this.

This Q&A post is totally unofficial, all of this is currently in private preview and some comes from my (awesome) DevKitchen experiences, so things can and will change and I take no responsibility of any errors in this post or any financial, physical or mental issues caused by reading this.

I will try to keep this post alive as much as possible and if you have any questions, feel free to post them and we'll try to get answer to them. I also listed some questions, that I do not have an answer to, but are working on to find out…

[1] Updated 2016-08-17, after initial developer preview release

Q: Is the SharePoint Framework an new development model

My point of view here is that this is not a completely new model. The framework might be new, but that is a framework that we all has been longing for for quite some time. Client-side development has been here for years and we all built our own frameworks. Now Microsoft is creating this framework for us, it is standardized and they will also build in native support for this framework in SharePoint. This model leverages techniques we are used to such as CSOM, the SharePoint REST API's, the Microsoft Graph etc and at the same time embraces open source technologies such as node.js, Gulp, Yeoman and more.

This model does not deprecate anything; if you need to do full trust code you can still do that (on-premises) and build WSP's, if you want to use the App/Add-in model you are free to do that.

Q: What's not so new in this model?

A bit of a weird question, but I wanted to highlight that this model actually piggy backs on previous development models and infrastructure in SharePoint - specifically the Add-in model. The packaging and deployment mechanism is using the add-in model. The solutions built using the SharePoint Framework are being packaged as a .spapp file, which is very similar to the .app package created when building a SharePoint add-in, and distributed using the App Catalog.

Q: Are the Feature framework, Sandbox and the Add-in models dead?

[Added 2016-05-08] Far from it! The Feature Framework (introduced in SharePoint 2007) is very much alive for on-premises deployment and is in many cases a requirement, with the caveat that it is hard to convert that to a model that works in the cloud. The Sandbox is partly dead, it is, code based Sandboxed solutions are officially deprecated, but there are still a usage for declarative Sandboxed solutions. The Add-in model is also still a very relevant way moving forward; Add-ins offers features that the SharePoint Framework doesn't (such as isolation, elevation of privileges etc).

Q: Does this replace Add-ins?

[Added 2016-05-08] No! The SharePoint Framework will NOT replace Add-ins, the will co-exist side by side. There's no need for you to migrate your Add-ins to the SharePoint Framework. That might not even be possible to do - since you want to stay in isolation, you might want to elevate privileges, you might want to do work without user interaction, you might want to use the existing store.

Q: Do I need to create those weird app keys and secrets and learn all about OAuth?

[Added 2016-05-08] No, this is not how the SharePoint Framework works You only run this as a user, within the SharePoint page context so you are already authenticated and the SharePoint Framework app are already authorized with the currently logged in users credentials and permissions.

Q: Can I call the Microsoft Graph using the SharePoint Framework?

[Added 2016-05-08] No. Not now at least. You don't get any token that you can pass to Microsoft Graph (graph.microsoft.com). The only API's you can access are the same ones as you can using any Script editor web part or script embedding. If you really want to query the Microsoft Graph, you need to create an Azure AD App and sacrifice to the gods that the Azure AD team fixed ADAL/MSAL so that it works with Internet Explorer and trusted/intranet zones, and do it the "old fashioned way".

Q: Is there any specific requirements on my infrastructure?

[Added 2016-05-08] No, there is no requirements on app-domains etc. as we have in the Add-in model. You can host your SharePoint Framework solutions on any web server anywhere or in SharePoint itself, without any extra infrastructure components. This also makes it very easy for the SharePoint team to bake this into a future Feature Pack (see below).

Q: What does the .spapp package look like?

When you package your client-side solution, an .spapp package is created. This package looks very similar to any other SharePoint Add-in you're creating. This package contains the following major things:

  • An AppManifest - a regular SharePoint add-in AppManifest with the difference that the App element has a IsClientSideSolution="true" attribute
  • One or more features - a normal Feature element file

For a client-side web part the feature contains a .webpart file that is being added to the Web Part gallery. The client-side web parts actually use a new .NET web part class called Microsoft.SharePoint.WebPartPages.ClientSideWebPart. This web part has one important property that references the client-side web part Id. The elements file for the Feature also contains a new CAML element (ClientSideComponent) that is used to point to the bootstrap JavaScript file that we use. That file can be hosted locally (for development), in SharePoint or any other CDN (for more information see below).

For client-side applications it is a bit more complex as they are tied to lists. For the sake of uncertainty I leave that description out for now (well I got to have a reason to lure you back here). I know there are discussions on how this should be implemented/executed.
[1] Note that client-side applications is not part of the initial release.

Note that none of your actual logic (JavaScript etc) is stored in the .spapp package.

(Once again this might very well change over time when we get closer to release)

Q: How do I deploy my solution?

Deployment is two steps; one is to deploy the JavaScript files and artefacts (see below) and from that you get a bootstrap URL, that URL is used to package the solution (.spapp) which you then deploy to the App Catalog in your SharePoint tenant.

Q: How do I deploy my JavaScript files and other artefacts?

You have three options of hosting all your files:

  1. For Development you host your files locally (localhost using the node.js express engine) and can take advantage of automatic reload of your app when you save files etc.
  2. You can deploy to a SharePoint library. A good option if you want full control of the artefacts in your tenant
  3. To a CDN. This is most probably the best solution for ISV's where they centrally can manage all the artefacts.

Q: How do I update a client-side solution

This is an answer that some might be scared of. If you only need to update the logic or code in your app you only have to update the source files, you do not have to redeploy the .spapp package. The "only" time you would need to do that is if you change the URL to the location of where you host the bootloader JavaScript file.

Since the app package and app registration only contains a reference to the bootloader JavaScript file, there is nothing preventing a user, vendor or similar to actually modify that file (and thus giving the app full access to the page/site - see question about isolation below). But, this is exactly the same way we have it with any jQuery or Angular files hosted on a CDN.

Q: Will the Office Store allow client-side solutions built using the SharePoint Framework.

Thank you, very good question. I do not have an answer to this right now, but I assume that the team are working hard on this, specifically regarding the topics around updates. To be continued…

Q: But hey, I'm an ISV and this looks like an Enterprise developer feature only!

[Added 2016-05-08] Thank you for asking and noting. Yes, I agree that the current initial release is focused on enterprise developers. I know one of the goals with this new framework is also to support the ISV market. I have however no timeline for this.

Q: What about isolation in my customizations

The SharePoint Framework runs in the context of your page, and will also have all the privileges of the user of the page. This might sound scary, but it works in the same way as any Script Editor Web Part or Custom Action with JavaScripts. If you truly need isolation in your app you have two options; 1) Go back and use the Add-in model and host your application in an iFrame or 2) build your new client-side application using an iFrame.

Q: I don't want everyone to be able to see my business logic in JavaScript!

No problem! Then you just encapsulate your "secret" business logic or algorithms in web services and make sure that those are CORS enabled.

Q: What client-side frameworks are supported?

All of them. Well, I haven't tested all of them, but that's the idea. The product team does not want to limit you with what frameworks to use, so go ahead use your preferred ones. Personally I've built client-side solutions with jQuery, Angular 1.x, Angular 2, React and Knockout.
[1] Microsoft and the Product Team for SharePoint has taken a decision to use React in their solutions. This actually have a big effect on us developers. For instance the new Office UI Fabric version 2 - is React only! So if you want to use the new components offered you either have to use React in your client side solution or reverse engineer Office UI Fabric, since there's no "pure CSS" spec/implementation.

Q: Do I really need to learn TypeScript?

Short answer Yes. The tooling right now is built using TypeScript and uses class inheritance etc. It is possible to write using plain JavaScript but that would just be a waste of time and more error prone. And just because of that we'll probably see people doing this. And this makes me bring up the old SharePoint mantra - Just because you can, doesn't mean you should!

Q: Do I really need to use Visual Studio Code?

Short answer; absolutely not! You can use whatever tool you want to write the code. However I guess most of the demos and instructions from Microsoft will be based on Visual Studio Code.

Q: But I really want to use Visual Studio that I'm used to and love so much!

Yea, I'd love that option to and there's a lot of benefits of using Visual Studio. I know that the product team are aware of this and I'm pretty sure that they are working on it. But see this as an opportunity to learn Visual Studio Code meanwhile…
[1] Visual Studio is fully supported, together with the use of the Node.js tools for Visual Studio (NTVS). Please use at least version 1.2!

Q: Do I really need to use Gulp?

Short answer: Yes. The current tooling is built on Gulp tasks and I recommend you to start with that. But if needed you can configure and modify those tasks. It is also totally possible of building your own package mechanism and code structure that fits your style of coding, if you have the time. (I actually wrote my own package mechanism and gulp tasks from scratch just to understand how it all worked out and to be able to give feedback to the team - so it is possible)

Q: Does it work on my bestest device ever - my precious Mac?

[Added 2016-05-08] Yup! Use Visual Studio Code on your Mac, use whatever text editor you like, use it on a Linux box! This is one of the reasons the team choose to use Node.js npm ,gulp and Yeoman as the foundation for the development framework and that is why the go with Visual Studio Code first (instead of the full Visual Studio).

Q: Do I really need to use Git?

Short answer: Nope! Git has nothing to do with this, at all. But the code samples and the source for all the tooling will most likely be distributed using Git/Github so if you're interested in contributing you should learn it.

Q: Is this Open Source?

[Added 2016-05-08] From my understanding the idea is to have this Open Sourced once we get out of "closed beta". There really is no point in doing it any other way with client side components,.

Q: What is the Workbench?

The Workbench is a test rig for client-side solutions which comes in two flavors. One static html version that are used without the context of SharePoint. It is capable of rendering the page canvas and client-side solutions so that you can work with the UX components. If you need live data however you need to create mock data for your domain model. The second flavor of the Workbench is the one running in SharePoint, with that one you have access to the full page context including SharePoint data.

Q: What about SharePoint 2016 on-premises, will we ever be able to take part of all this?

Yes, I do believe so. There's nothing in here that actually locks this model to Office 365 and SharePoint Online and at the Future of SharePoint event there was announced that SharePoint 2016 will get "Feature Packs" during 2017. So, yes, this will most likely happen.
[1] Microsoft is targeting an on-premises release of the SharePoint Framework for the first half of 2017. This will be a part of a feature pack for SharePoint 2016.

Q: When can I get my hands on this??

[Added 2016-05-08] It was announced at the Future of SharePoint event that this will roll out starting this summer to first release tenants. My guess is that we will have a first version by the end of this year (2016).
[1] You can get your hands dirty right now over here:

Q: Is it SPX or SPFx?

Over the last two days I've seen the SharePoint Framework been shortened both as SPX and SPFx. I prefer the latter one. How about you?

Q: What permissions is needed to deploy a SharePoint Framework app?

[Added 2016-05-10] A really good question. This is an assumption based on the experience so far. You distribute the app/solution to the App Catalog - so you need to have permissions on the App Catalog.

Q: How does the development life cycle look like?

[Added 2016-05-10] The development life cycle is one of the things that this SharePoint Framework would like to align with the rest of modern web development. You have multiple options and how you actually do it is up to you. This is how I see it and what works great with the tools:

  1. Build and host your solution locally (node.js Express web engine) using the local Workbench, without any real SharePoint data just using mock objects
  2. Host your solution locally as above, but deploy the solution to the app catalog and then add it to a site so you can test it with real data
  3. Iterate 1 and 2 until you are happy
  4. Pack and deploy your JavaScripts and assets and deploy either to CDN or to SharePoint
  5. Package your solution, now pointing to the CDN location, and upload that to the App Catalog to distribute it to a SharePoint tenant
  6. Repeat 4 and 5 in dev, stage or production
  7. Go back to 1 to build your next version/update

 

Do you have any more questions? Let me know!

18 Comments

  • TechHead said

    Dude, sorry to say, but you're getting to be a Microsoft shill. Have made respect for your skills, but you need to look at these things a little more critically. Every couple of years we're getting fed Microsoft's flavor of the day.

  • Wictor said

    @TechHead - dude, I'm sorry you need to hide behind a fake name. You obviously don't get out often and you most certainly don't read my blog or follow me on other social media. When there's something I don't like I tell Microsoft so, I've been hit hard back for that but that doesn't stop me. I've been talking to this team specifically since last year on this topic and given feedback. So just cause I happen to like this approach and thar it fits me in my needs I run Microsoft errands is just utter BS. Sorry dude...

  • PrasadWT said

    SPFx will be a suitable one !!!
    So does this mean that, the SSOM is going away from MS's radar?
    What will happen to those thousands ofsolutions- intranet, Internet extranet - built on SSOM on on-premises? if MS is pushing their customers to migrate all their applns to this new framework,
    IMO, customers may go for other rival products since that incurs a huge cost.

    ps: I am a SSOM lover and coder! :-)

  • Wictor said

    @PrasadWT - no SSOM will not go away, SPFx will not replace it and it's just another complementary model. They serve a bit different purposes.

  • PrasadWT said

    I saw a video from Daniel Kogan [ Mechanics channel ] in youtube.
    [ https://www.youtube.com/watch?v=T_bGyqKwT4g ]
    So he says MS embraces opensource by implementing SPFx. Also it uses Yeoman Template,Gulp, SPWorkbench for publish/deploy on SP live site.
    [ All these are new jargons to me :-) ] .
    So it seems, even nodejs, typescript developers start developing SP Add-ins in this model.
    I think its a great step from MS .

  • Nik Patel said

    Question - What kind of permission you need to manage and deploy the sharepoint framework apps? Can you walk through the SDLC process - Dev to Production Deployment?

    I believe answer is same as Apps model with little twist in DEV tooling but it would be great to have this in your Q&A list above..

  • Nik Patel said

    Question - What kind of permission you need to manage and deploy the sharepoint framework apps? Can you walk through the SDLC process - Dev to Production Deployment?

    I believe answer is same as Apps model with little twist in DEV tooling but it would be great to have this in your Q&A list above..

  • Marc D Anderson said

    Wictor:

    On the principle that there are never too many opinions in the world, I've started my own post-clone of this.
    http://sympmarc.com/2016/05/10/sharepoint-framework-initial-questions-and-answers/

    Your post inspired me, dude!

    M.

  • VijayKumar M said

    I guess with SharePoint Framework app a separate app web will not be created and can avoid the cross-domain call, am I right?

  • Wictor said

    @Vijay - there is no separate app webs or similar in the SharePoint Framework concept. So calling into the SP api's will not be any cross-domain calls.

  • Sunjay Singh said

    Firstly great summary of Questions and answers. I have one counter point Do I really need to learn TypeScript? I would say no, learn JS not like in 1997 but after First print of Crockfords book. JS doesn't have Class inheritance , it is prototypal, so even in ES6 the class keyword it is nothing but syntactic sugar and nothing else. it does not behave like the "classical" inheritance.

    otherwise again a great article.
    thanks
    sunjay

  • Jim said

    Thanks for the Q&A. I have seen that Sharepoint framework has a <a href="https://visualstudiogallery.msdn.microsoft.com/d3b2aaf7-0d6a-4995-a4e5-4153c57e3889">good rating</a> and decided to try it out. This has helped a lot

  • Gregg Lestina said

    I love the blog. Thanks for putting it together.

    The mandatory use of TypeScript is a big disappointment. TypeScript is a great tool, but as a tool it has its niche.

    For someone who has been writing in JavaScript for 15 years, the mandate to use TypeScript is moronic. The benefits for experienced web developers who have been developing in JavaScript are very minimal.

    If TypeScript were actually a different language, I could see the argument to mandate it, but since it just converts to JavaScript, the overhead for an experienced web developer isn't worth it.

Add a Comment

About Wictor...

Wictor Wilén is the Nordic Digital Workplace Lead working at Avanade. Wictor has achieved the Microsoft Certified Architect (MCA) - SharePoint 2010, Microsoft Certified Solutions Master (MCSM) - SharePoint  and Microsoft Certified Master (MCM) - SharePoint 2010 certifications. He has also been awarded Microsoft Most Valuable Professional (MVP) for seven consecutive years.

And a word from our sponsors...