ReactFoo 2019

ReactFoo 2019

A gathering of over 250 web and mobile developers working with React

Arijit Bhattacharya


Wrap it in a Web Component

Submitted Feb 3, 2018

An intro to web components, how to use familiar declarative abstractions to write them and what kind of pragmatic problems it can help you solve.


For larger companies with fully functional legacy codebases and multiple teams, waves of new frameworks often ensues confusion.

Engineer:   We should totally rewrite this in React/Vue/Nue(sorry!)

Other Professionals:   How often should we have to rewrite our applications? ROI?

Rewriting costs a lot

  • dev time
  • infrastructure to switch between versions
  • maintaining two versions simultaneously

Sometimes we identify parts of app which could benefit from modern frameworks.

But legacy code holds us back.

These smaller additions can be

  • widgets on a dashboard
  • integrating a mini-app like chat developed by other teams
  • or it can be a bit more ambitious like an editor

We can write these smaller apps/system of components as custom elements but with declarative component abstractions which we all love so much.

Its the best of both worlds

  • reusability and freedom from any frameworks (or versions)
  • express solutions with declarative abstractions

I would like to present ideas and workflows that would help a developer to write a custom element and use it with any framework.

  • Intro to web components (especially custom elements)
  • Difference between custom elements and React components
  • Using SkateJS to write custom elements with declarative abstractions
  • Some use cases for web components I have come across in my work which may be a food for thought

Speaker bio

UI Dev @Freshworks.

For the last three months, I have been working to bring features using Web Components to works across all the products in a frameork agnostic way. So, I want to share my learning curve. And hope it will help other devs to realise problems that could be potentially be solved by web components.


{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}