Jniversal Frameworks

Logics/functions in intersection area can be implemented with same code both in client-side and server-side. In Isomorphic JavaScript apps, these logics and functions are executed by server-side and it provides the speed and SEO-support. Also these can be executed in client-side. Moreover, rendering can be mixed between client-side and server-side.

Ideally, client-side and server-side rendering should be balanced for user experience and performance:

Server-side rendering can be used for critical parts (for example an initial page layout or the main content in the page) Client-side rendering can be used for non-critical parts (for example comments in a content page or other side-functional parts in a page)

Advantages

Better performance: Pages are served as rendered and faster initial page loading (less javascript files and file sizes) Full SEO support: Fully formed pages are served. Pages are easier to crawl with search engine crawlers. Also, faster page loading assures better page rankings. Flexibility of client-side: With the balance of server-side and client-side, it is possible to have better web apps. Despite server-side rendering, flexibility of client-side is still useable. Maintenance: As the same code is shared by both the client and the server, we don’t have to write logics twice. There is less code and it is easier to maintain the code. Old device support: As rendered pages are served, it is not a problem to support old devices. (It is a problem in SPA frameworks/libraries) Poor connections: Coursera says that “In extreme cases, we saw some users in these environments wait minutes for all the Javascript to load before they could see even the page. ... With isomorphic rendering, we were able to meet this threshold even in many of these extreme cases.”. Using isomorphism can lead poor connections to use web applications easier and faster. Better user experience: By balancing rendering of pages will create a better user experience. Important parts of a page will be rendered in server and will be shown to user initially. Other parts can be rendered in client-side after these important parts of page are loaded.

Disadvantages

Lots of logic should be handled in server-side. Handling Http requests, routing, rendering, styling and module loading can be difficult and external libraries would be needed in server-side rendering. They should be handled in the same way both in server-side and client-side. Server-side and client-side are different environments with different dynamics. Using same code may be problematic in different cases.