Animated Circular Progress Bar0
Font.Lokio
Back to BLOG

Reactjs - Important Concepts

wahyu agus arifin
Reactjs - Important Concepts

React is known as a simple UI library, but behind its simplicity lies a very powerful architecture and internal concepts. Understanding these concepts will help us build faster, more responsive, and scalable React applications, especially for production needs.

This article explores essential React.js concepts with clear explanations and practical examples.

1.React Fiber Architecture

What is React Fiber?

React Fiber is a reimplementation of React's core rendering engine, introduced in React 16. It fundamentally changed how React processes updates and renders components.

The Problem Before Fiber

Before Fiber, React's rendering process had significant limitations:

  • Processed the entire component tree in one go
  • Could not be interrupted mid-process
  • Large component trees would freeze the UI
  • User interactions became unresponsive during heavy renders

Fiber's Solution

Fiber breaks the rendering process into small, manageable units of work. This enables React to:

  • Pause and resume rendering work
  • Prioritize different types of updates
  • Process high-priority updates (user interactions) before low-priority ones
  • Yield control back to the browser to keep the UI responsive

Key Takeaway

Fiber is an internal implementation detail that developers don't interact with directly, but its impact on application performance is substantial. It forms the foundation for modern React features like Concurrent Rendering and Suspense.

2. Concurrent Rendering

Overview

Concurrent Rendering allows React to prepare multiple versions of the UI simultaneously without blocking the main thread. This represents a paradigm shift in how React handles updates.

Core Capabilities

React can now:

  • Work on rendering in the background
  • Defer non-urgent updates
  • Prioritize user input and interactions
  • Interrupt and discard in-progress work if needed

Benefits

Applications remain fast and responsive even when:

  • Processing large datasets
  • Rendering complex component trees
  • Managing multiple state changes

Practical Example: useTransition

index.jsx
Loading...

Key benefit: The input remains responsive even while heavy processing occurs in the background.

3. Code Splitting & Lazy Loading

The Problem

By default, React bundles the entire application into a single JavaScript file. For large applications, this creates a slow initial load time and wastes bandwidth loading code that users may never use.

Code Splitting

Code splitting divides your bundle into smaller chunks that are loaded on demand, reducing the initial bundle size and improving load times.

Lazy Loading

Components are only loaded when they're actually needed, rather than at application startup.

Implementation Example

index.jsx
Loading...

Best Use Cases

  • Admin pages and dashboards
  • Infrequently used features
  • Heavy third-party libraries
  • Route-based code splitting

4. Context API Optimization

Purpose

The Context API provides a way to share state globally across components without prop drilling (passing props through multiple levels).

Common Performance Issue

Every change to a Context value triggers re-renders in all consumer components, regardless of whether they use the changed data. Without optimization, this can severely impact performance.

Optimization Strategies

1. Separate contexts by responsibility

Split unrelated data into different contexts to minimize unnecessary re-renders.

2. Avoid frequently changing state in global context

Keep rapidly changing state local when possible.

3. Use memoization

Memoize context values and consumer components.

Example Comparison

Less optimal:

index.jsx
Loading...

Better approach:

index.jsx
Loading...

With this separation, re-renders are more controlled and isolated to relevant components.

5. Memoization Techniques

What is Memoization?

Memoization is an optimization technique that caches the results of expensive calculations and reuses them when inputs haven't changed, preventing unnecessary recalculations.

When to Use Memoization?

  • Expensive computations or calculations
  • Components that re-render frequently
  • Props that don't change often
  • Derived data from large datasets

useMemo Hook

Memoizes computed values.

index.jsx
Loading...

React.memo

Prevents component re-renders when props haven't changed.

index.jsx
Loading...

useCallback Hook

Memoizes function references.

index.jsx
Loading...

Important Warning

Overusing memoization can reduce code readability and maintainability. Use it strategically where there's actual performance benefit, not everywhere by default.

6. Error Boundaries

What are Error Boundaries?

Error Boundaries are special React components that catch JavaScript errors anywhere in their child component tree during rendering, in lifecycle methods, and in constructors.

Why They're Important?

Without Error Boundaries:

  • A single error crashes the entire application
  • Users see a blank white screen
  • No graceful degradation

With Error Boundaries:

  • Only the failing part of the UI is affected
  • The rest of the application continues working
  • Users see a friendly error message

Implementation Example

index.jsx
Loading...

Usage

index.jsx
Loading...

7. Portals

What are Portals?

Portals provide a way to render children into a DOM node that exists outside the parent component's DOM hierarchy, while maintaining their position in the React component tree.

When to Use Portals?

  • Modals and dialogs
  • Tooltips
  • Dropdown menus
  • Overlays and pop-ups
  • Any UI element that needs to break out of overflow: hidden

Implementation Example

HTML Structure:

index.html
Loading...

React Component:

app.jsx
Loading...

Key Behavior

Even though the portal renders to a different DOM node, it behaves like a normal React child in every other way. Features like context and event bubbling work exactly as they would for a child in the normal component tree.

Conclusion

Understanding these fundamental React concepts enables developers to:

  • Write more efficient React code
  • Avoid performance bottlenecks
  • Build production-ready applications
  • Debug issues more effectively
  • Make informed architectural decisions

React is more than just JSX and state management. Understanding how React works under the hood – from Fiber's reconciliation algorithm to Concurrent Rendering's scheduling – empowers you to build better applications and solve complex problems more effectively.