My new favorite topic when it comes to Sitecore. I feel like a kid in a candy shop when I think about all the possibilities with Sitecore JSS. I'm going to give you an overview of the technology.
TLDR overview
Sitecore JSS stands for Sitecore Javascript Services. This gives Sitecore a headless CMS option while not giving up on functionality. Sitecore will have its first true SPA experience with JS frameworks. Communicating with GraphQL to query data from Sitecore. Sitecore developed its own JS framework libraries for popular frameworks. Features like WYSIWYG editor, analytics, personalization, A/B testing are all supported with JSS.
Sitecore currently supports the following languages.
- Angular
- React
- Vue
- React Native
The goal of Sitecore JSS
What is Sitecore JSS trying to achieve? Well, Sitecore has always been amazing at being a CMS and an analytics platform. From a technical standpoint, these are both backend heavy areas. In recent years the frontend development tools have been rapidly changing. With new tools yearly if not monthly. As of recently, front-end tools have been slowing down and coming to a standard. This lets Sitecore leverage them with the already feature-rich application.
Community Reaction
Sitecore JSS is still very new to the Sitecore community. I don't think many people are currently using JSS. It's not uncommon to find people using Sitecore with Web forms. Currently, the standard is ASP.net MVC and I expect it to stay that way for a few years. Some developers are going to steer clear of JSS for as long as they can.
I've seen a mix of worried developers and completely excited developers (That's me! :D).
Features it retains
With a whole new development stack, you might be wondering which features are maintained.
Personalization
Sitecore handles personalization seamlessly in the background. From a developer standpoint, you won't have anything new to do here.
Analytics
Typically Analytics are all done on the Server. If we move everything to the client side how do we track users? Well, you have 2 different options now.
Server side
Using the Layout Service you can track when a user asks for specific data. This will work for anything that is route based like page views. It's important to have a cookie on the client which is already done for you by JSS.
Client side
You will use the JSS Tracker for Client-side analytics. Since you don't have access to the server you will need to send Events to it. This is completely unrestricted in what you can track. Enabling you to track button clicks or page view time. You will also need to send a cookie from the client to follow the user.
Sitecore Localization
This is managed by the server. It will send you back the correct language context. The parameter you will need to pass is "sc_lang" for layout service.
Currently supported fields
Sitecore Layout service currently supports the following field types.
- Rich Text
- Image
- General Link
- Date / DateTime
- Checkbox
- Links (Droplink, Droptree, Grouped Droplink)
- Multi-links (Multilist, Checklist, Treelist, and their variants)
- Number
- File
- Plain text (Single-line text, Multi-line text)
Other fields are supported as raw text
Placeholders
These are kept intact and I would look into how each of the frameworks (Angular, React and Vue) and used. They all are different but keep to the way the languages handle components.
That's just a quick overview of Sitecore JSS. I recommend reading more on the JSS docs HERE.