Bang Eunsu

WritingsNEW

Introduce

(age 27) · 2y 3mo

Hi, I'm Bang Eunsu — a frontend developer with 2y 3mo of professional experience (age 27).

I build web services with TypeScript, React, and Next.js, and also develop and maintain new features for our in-house mobile application in a React Native (CLI) environment.

I don't stop at building the screen — I focus on the parts that touch the user experience, like initial load performance and interactions. When problems come up, I look into the root cause with the team and try to solve them in a structural way.

I am also deeply interested in weaving AI tools like Claude Code into the day-to-day development flow. I think a lot about how to load project context per-domain, automate repetitive work with sub-agents, and naturally fold AI into real engineering tasks.

When issues come up at work, I prefer to talk them through with the team. I believe that closing the gap between business and engineering is where good products begin. I want to keep adapting to changing technologies and AI-driven development environments, and grow into a developer who delivers a better experience to users.

Experience

Wonder Round Inc.

2025.04 ~ Present

Day 475 on the job

  1. 1.

    Introduced and operationalized a new OTA (over-the-air code delivery) infrastructure with hot-updater

    • To resolve the structure where urgent bug fixes and QA changes were delayed by the store review cycle, I newly introduced an OTA pipeline with hot-updater that delivers JS bundles over the air without review. Designed and built the whole flow — bundle store integration, a system that manages iOS / Android and dev / beta / pro per environment, and the deploy/rollback operations flow.

    • Problem

      Initially all environments shared channels and settings, so a higher-environment bundle could overwrite a lower-environment native build, or a missed settings swap before deploy left the bundle and native mismatched. Wrong key settings repeatedly crashed social login.

      Solution

      Isolated deploy destinations by an appVersion + channel (dev / beta / production) combination, and automated injecting channel/environment settings at build time. Standardized the set-<env> → deploy → restore dev procedure to establish a partition so bundles always reach only the intended environment.

    • Problem

      In certain situations the app fell into a force-update (force update) infinite loop, making normal entry itself impossible — a critical failure.

      Solution

      Added rollback instrumentation that makes the boot-failure loop observable (current bundle id === minimum bundle id → confirmed boot failure), and secured a manual kill switch recoverable immediately via console/DB to establish a failure-response path.

  2. 2.

    Introduced a staged-mount pattern to optimize entry performance on key screens

    • Problem

      On heavy screens that accumulate many hooks and API calls (lists / map / detail), every widget mounts at the same time on entry, which makes the navigation animation stutter and delays the appearance of the skeleton.

      Solution

      Split the screen into entry point and body in two stages — show the skeleton immediately right after the navigation transition, and detect the end of the transition with setImmediate so the body only mounts after the animation finishes. Shortened perceived entry lag from ~700–800ms to ~200–300ms.

    • Pre-warmed data shown at the top of the screen with a separate prefetch hook so that it is already cache-hit by the time the body mounts.

    • Introduced a shared hook that handles scroll event handlers in a JS-thread non-blocking way, so other interactions are not delayed during scrolling.

  3. 3.

    Built push notification and deep link entry flows

    • Problem

      When a push is tapped from a cold start, the navigation stack is not ready yet, so routing is sometimes dropped.

      Solution

      Stored the pending payload in a global store and consumed the queue once navigation is ready, applying an async-queue pattern for routing.

    • Problem

      When the deep link target is a webview screen and the app is launched from a cold start, the navigation stack ends up containing only that single webview, so pressing back terminates the app instead of returning to the previous in-app screens.

      Solution

      Instead of a plain navigate call, I composed the navigation state directly to reset it into a structure where BottomTabs is the base route and a Stack (related underlay screen + webview) is stacked on top. This guarantees a natural back flow: webview → related screen → BottomTabs.

    • Added a normalization layer for the notification list response to match the updated push-sending API schema on the backend.

    • Implemented a deep link handler that parses the push payload and branches across cold-start / background / foreground entry cases.

  4. 4.

    Introduced and standardized an optimistic-update pattern with TanStack Query

    • Standardized a cancel → snapshot → cache update → rollback flow for toggle-like mutations (bookmark / like) to establish immediate optimistic UI reflection and consistent rollback across the team. Direct setQueryData cache patching also removes unnecessary invalidate round-trips.

  5. 5.

    Built a Claude Code–based development productivity infrastructure

    • With the prior RN app developer leaving and domain knowledge handover broken, I had to maintain the app and ship new features alone with limited RN experience. To cut the learning cost and keep domain context always accessible, I designed and built a Claude Code–based assist infrastructure myself.

    • Split project rules per domain (UI ecosystem / performance / animation / server state / navigation / global state / i18n / new feature flow), so only the rules relevant to the current task are loaded based on keywords.

    • Role-separated multi-agent pipeline — on top of the planner → generator → evaluator implementation loop, composed a self-verification lane where a separate critic agent objectively refutes and verifies the analysis, mitigating the bias of single-context self-verification.

    • Turned repeated implementation patterns into skills — codified standardized tasks (adding an API / optimistic-update mutation / screen entry optimization / i18n application) into reusable commands, so I get consistent output without re-explaining conventions every time.

    • Routed models by task complexity (lightweight lookups → architecture/deep analysis), and tuned prompt caching and reasoning effort to optimize response latency and token cost.

Korea Global Knowledge Network Inc.

2024.03 ~ 2025.03

1y 10d of total experience

  1. 1.

    Built question bank management features needed for quizzes

    • Refreshed question data with TanStack Query invalidateQueries after choice add/edit/delete, then sorted by the latest choice data and called the order-change API for accuracy.

  2. 2.

    Built management features for course composition units (chapters / sections / VOD / quiz / hands-on)

    • Problem

      Configuration values required for hands-on, VOD, etc. differed, so providing a single consistent form was hard, and UI complexity grew.

      Solution

      Built independent forms per content type and rendered them dynamically based on the selected type, easing UI complexity and improving usability.

Skills

Languages

  • JavaScript (ES6+)
  • TypeScript
  • HTML5 / CSS3
  • Java
  • C#

Libraries & Frameworks

  • React.js (vite)
  • Next.js
  • React Native (CLI)+47
  • Tailwind CSS+1
  • TanStack Query
  • Zustand+1
  • Recoil+1
  • Shadcn
  • Express

Backend

  • Prisma
  • Drizzle
  • Neon
  • Supabase
  • Vercel
  • Docker
  • GitHub Actions
  • EC2
  • S3

Tools

  • Git & GitHub
  • Jira
  • Notion
  • Figma
  • Slack

Portfolio

Bread And Source

  • Site & back-office for an actual operating bakery (beta)
Next.jsTypeScriptTailwind CSSNeonDrizzleZustandTanStack QueryFramer Motion

Eunsutory

  • Personal retrospective & introduction blog
Next.jsTypeScriptTailwind CSSPrisma

Scrama

  • Amazon web scraping site
Next.jsTypeScriptTailwind CSSCheerio

Wasd Rental System

  • Equipment rental system built for a university club
React.jsTypeScriptExpress.jsTailwind CSSZustandTanStack Query

Eunimation

  • Animation recommendation site
Next.jsTypeScriptTailwind CSSFramer MotionZustand

Eunsuread

  • Threads clone site
Next.jsTypeScriptTailwind CSSClerkMongoose

Education

Myongji College

Department of Software Contents

2022.03.02 ~ 2024.02.28

  • Graduated with a GPA of 4.26
  • Ran a web development club as the vice president and led project development (2022.06 ~ 2024.02)
  • Built an equipment rental system, a local restaurant / spot finder site, a 2D roguelike mobile game, and more

Certification

  • Engineer Information Processing (Industrial)
  • Computer Specialist Level 1
  • Word Processor
  • TOEIC (Score 815)

Writings