React for Chrome Extension Development

Rate this content
Bookmark

Repasaremos los desafíos únicos, soluciones y cosas extrañas que encontramos al integrar React en la extensión de Chrome de Ibotta. ¡Aprende sobre la optimización del rendimiento del script de contenido, la gestión del estado y cómo superar problemas con las herramientas de compilación!

This talk has been presented at React Summit US 2024, check out the latest edition of this React Conference.

Sriram Hariharan
Sriram Hariharan
Darshan Bhatta
Darshan Bhatta
11 min
22 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Vamos a hablar sobre cómo hacer que React funcione en extensiones de Chrome. Comenzamos a construir extensiones de Chrome durante nuestro primer año y hemos aprendido mucho en el camino. Las extensiones de Chrome tienen dos partes: el script de contenido y el script de fondo. Nuestra historia comienza antes de React, cuando creamos la extensión UT Registration Plus para simplificar la inscripción en clases. Inicialmente construimos la extensión utilizando cadenas HTML y luego intentamos usar jQuery, lo que resultó en un código difícil de mantener. Al construir Octoshop, elegimos React por su soporte y sistema de paquetes, pero integrarlo con la extensión Vue de Ibotta generó una base de código desordenada. Centralizamos nuestro código y gestionamos el estado de Chrome utilizando el portal y los hooks de React, mejorando la mantenibilidad.

1. Introducción a las extensiones de Chrome y nuestro recorrido

Short description:

Vamos a hablar sobre cómo hacer que React funcione en las extensiones de Chrome. Comenzamos a construir extensiones de Chrome durante nuestro primer año y hemos aprendido mucho en el camino. Las extensiones de Chrome tienen dos partes: el script de contenido y el script de fondo. Nuestra historia comienza antes de React, y creamos la extensión UT Registration Plus para simplificar la inscripción en clases.

Hola chicos. Mi nombre es Shriram Hidiyaddin. Y yo soy Darshan Bhatta. Y vamos a hablar sobre cómo hacer que React funcione en las extensiones de Chrome o cómo lo hicimos no ser tan malo. Un poco sobre nosotros. Darshan y yo nos conocimos cuando ambos estábamos estudiando en la UT Austin. Y en ese momento, estábamos bastante interesados en trabajar en proyectos aleatorios y aprender. Así que comenzamos a construir extensiones de Chrome alrededor de nuestro primer año y seguimos construyendo y haciendo algunas para nuestra escuela, para nuestros amigos o simplemente para hacer reír a la gente.

En realidad, al principio no comenzamos a usar React. Comenzamos a construir usando solo JavaScript básico, de lo cual hablaremos más adelante. Pero eventualmente, cuando llegamos a React, nos enamoramos de él. Así que alrededor de nuestro tercer año, fundamos una empresa llamada Octoshub, que fue adquirida por Ibotta. Y ahora ambos estamos en Ibotta en el equipo de innovación al consumidor, donde lideramos proyectos de innovación en la empresa. Y en todos nuestros proyectos de extensión, hemos tenido más de 500,000 usuarios. Así que hemos aprendido mucho en el camino.

Para dar un poco de contexto a aquellos que no saben cómo funcionan las extensiones de Chrome, hay básicamente dos partes en ellas. Una es el script de contenido, que se ejecuta en cada pestaña de la página. Así que piensa en eso como cualquier lógica que quieras inyectar en la página o que quieras ejecutar específicamente en esa pestaña. Y luego está el script de fondo, que es como un proceso centralizado. Piensa en ello como el servidor de la extensión. Solo hay un proceso que se ejecuta en segundo plano. Y el patrón típico es que lo uses a través de la capa de mensajería como un llamador de back-end. Entonces, el script de contenido se cargaría. Intentaría ver qué debería inyectar tal vez. Y luego enviaría un mensaje al script de fondo para llamar realmente a esa API. De esta manera, no estás llamando realmente a las API en el sitio web, y todo sucede dentro de tu extensión.

Como dije, nuestra historia comienza mucho antes de React. Estábamos haciendo estas extensiones de Chrome realmente simples y una de ellas era esta extensión llamada UT Registration Plus, que terminó siendo no tan simple. Básicamente era una extensión que permitía a los estudiantes inscribirse en clases de manera más fácil. Obtener acceso a distribuciones de calificaciones, enlaces de Rate My Professor, simplemente hacer que todo el proceso sea más fácil y agradable.

2. Desafíos con el desarrollo inicial de la extensión

Short description:

Inicialmente construimos la extensión utilizando cadenas de HTML y luego intentamos usar jQuery. Sin embargo, ambos enfoques resultaron en un código difícil de mantener sin un flujo de datos y estilos adecuados.

Entonces, inicialmente construimos esta extensión utilizando cadenas de HTML directamente. Simplemente estábamos inyectando cadenas de HTML en el HTML interno de diferentes divs en la página. Y quedó muy claro muy rápidamente que esto era difícil de mantener. Pero realmente no conocíamos ninguna otra forma. Así que en ese momento hicimos algunas búsquedas en Google y vimos a algunas personas usando jQuery y pensamos, bueno, vamos a probar esto. Y jQuery era mejor, ya sabes, tenía mucho soporte de animación. Tenía muchas cosas, ya sabes, era realmente genial para el web scraping, pero también fue un error porque el código seguía siendo muy difícil de mantener. No teníamos un flujo de datos unidireccional. No teníamos, ya sabes, estilos fáciles. Era simplemente muy, muy complicado.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Entendiendo la Arquitectura Fiber de React
React Advanced 2022React Advanced 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
React Summit 2022React Summit 2022
17 min
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
Top Content
Today's Talk discusses building flexible, resilient, and future-proof React components using composition and configuration approaches. The composition approach allows for flexibility without excessive conditional logic by using multiple components and passing props. The context API can be used for variant styling, allowing for appropriate styling and class specification. Adding variants and icons is made easy by consuming the variant context. The composition and configuration approaches can be combined for the best of both worlds.
Patrones de Arquitectura Remix
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Patrones de Arquitectura Remix
Top Content
This Talk introduces the Remix architecture patterns for web applications, with over 50% of participants using Remix professionally. The migration from single page applications to Remix involves step-by-step refactoring and offers flexibility in deployment options. Scalability can be achieved by distributing the database layer and implementing application caching. The backend for frontend pattern simplifies data fetching, and Remix provides real-time capabilities for collaborative features through WebSocket servers and Server-SendEvents.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Masterclass de alto rendimiento Next.js
React Summit 2022React Summit 2022
50 min
Masterclass de alto rendimiento Next.js
Workshop
Michele Riva
Michele Riva
Next.js es un marco convincente que facilita muchas tareas al proporcionar muchas soluciones listas para usar. Pero tan pronto como nuestra aplicación necesita escalar, es esencial mantener un alto rendimiento sin comprometer el mantenimiento y los costos del servidor. En este masterclass, veremos cómo analizar el rendimiento de Next.js, el uso de recursos, cómo escalarlo y cómo tomar las decisiones correctas al escribir la arquitectura de la aplicación.