SmartHR Tech Blog

SmartHR 開発者ブログ

フロントエンド

rspec-openapi × Orval で API クライアント生成を自動化 —— AI Agent で移行する

スキル・学習管理チームでプロダクトエンジニアをしている yamaguchi です。 本記事では、自前実装していたAPIクライアント(SWR + カスタムfetcher)を、rspec-openapiとOrvalを組み合わせて自動生成されたAPIクライアントに移行した取り組みについて紹介し…

React v18/v19が混在するモノレポで起きたバージョン不一致エラーへの対処

こんにちは、SmartHR の基本機能の開発を担当しているプロダクトエンジニアの sakata です。 先日、担当しているプロダクトのフロントエンドテストフレームワークを Jest から Vitest へ移行しました。 その過程で直面した、モノレポ(monorepo)における Re…

「TSKaigi 2025事後勉強会 —— まだまだ型りたい」を開催しました

こんにちは! SmartHRでプロダクトエンジニアをしているshiraです。 この記事では、先月開催した「TSKaigi 2025事後勉強会 —— まだまだ型りたい」の様子をお届けします。 TSKaigi 2025事後勉強会アイキャッチ 開催概要 6月6日にSmartHRで「TSKaigi 2025事後…

TSKaigi 2025レポート —— 協賛、参加、登壇

こんにちは!SmartHRでアクセシビリティエンジニアをしているtajimanです! SmartHRは、2025年5月23日〜24日に開催された「TSKaigi 2025」にBronzeスポンサーとして協賛し、7名が参加し、2名が登壇しました。 この記事では、イベントの模様と合わせて、プロ…

弊社のheading levelがめちゃくちゃだった件と 解決のためにしたことの話

こんにちは。プロダクトエンジニアの@atsushimです。 smarthrでは社内でひろくsmarthr-ui が利用されています。 大変便利なのですが、使っていく上で色々問題も発生し、その都度対応してきています。 今回は発生した問題の一つ、Headingのレベルがめちゃくち…

Next.js(Pages Router)で叶える"初期SSR+動的CSR"のアプリストア高速化

SmartHR Plusアプリストアのリニューアル事例を通じて、Next.js Pages Routerを活用した「初期SSR+動的CSR」構成によるパフォーマンス改善と拡張性の両立、現実的な技術選定のプロセス、実装の工夫を詳しく解説します。 Next.js Pages Routerでアプリストア…

再レンダーに時間がかかる画面のUXをuseDeferredValueで改善する

こんにちは!SmartHRプロダクトエンジニアのhimiです。 この記事ではコンポーネントの再レンダーに時間がかかるシーンで、useDeferredValueを活用してユーザー体験を改善した事例について紹介します。 解決したい課題 私のチームで開発しているスキル管理機…

アクセシビリティを考慮した階層構造のフォームUIをどう実現したか

こんにちは、SmartHR プロダクトエンジニアの ceris と gaha です。 複雑な UI コンポーネントの実装において、アクセシビリティの確保は難しい課題の1つです。 この記事では、smarthr-ui で提供している階層構造のフォーム UI コンポーネントについて、アク…

入社してわかったSmartHRのフロントエンドエンジニア

こんにちは、SmartHR プロダクトエンジニアの chanMisa と ushiboy です。 この記事では、SmartHR に入社したフロントエンドエンジニアの視点から、日々の業務や取り組み、開発体験を通して感じたギャップや魅力をお伝えします。 共同執筆者である私たち 2 …