Supabase の Supavisor(Transaction Mode)と postgres-js を組み合わせるとき、prepare: false を設定しないと prepared statement does not exist エラーが確率的に発生する。
Papercalの開発チームが、技術的な知見や開発の裏側を共有するブログです。
Supabase の Supavisor(Transaction Mode)と postgres-js を組み合わせるとき、prepare: false を設定しないと prepared statement does not exist エラーが確率的に発生する。
Capacitor製iOSアプリがiOS 18でスプラッシュ画面のまま起動しない不具合を調査。WKWebViewに相対URLを渡した際のiOS 18とiOS 26の挙動差から、サイレント失敗という厄介な問題を発見した記録。
Capacitorアプリでディープリンク処理に苦戦した経験から、Native側でURLを受け取りSPAルーターに委託する設計パターンを共有します
Zodスキーマをドメイン層のエンティティとして使うと何が嬉しくて何が辛いのか。実際に使ってみて感じたことをまとめました。
開発環境でだけ認証処理が失敗する謎のバグ。原因はReact StrictModeによるuseEffectの二重実行だった。
Cloudflare Pagesでサブディレクトリ配置のSPAルーティングを実現しようとしたら詰みました。Worker Assetsへの移行で解決した話。
Capacitorでserver.urlを設定してリモートサーバーに接続すると、CapacitorのApp.addListenerが発火しなくなる問題に遭遇。原因と回避策を解説。
Cloudflare Zero TrustとService Workerの組み合わせで認証画面が出ない問題。原因はHTTPリダイレクトとSWの根本的な相性の悪さでした。
iOS PWAでキーボードを表示した後、フッター下に操作できない余白が出現するバグに遭遇。原因特定までの試行錯誤と、意外なところにあった解決策の記録。
GitHub Actions公式ランナーからUbicloudに移行してCI時間を約4分から1分14秒に短縮した話。Turborepoのキャッシュと相性が良く、Transparent Cacheで自動的にキャッシュが4倍速くなる。
Supabase Auth の getUser が毎回80ms以上かかっていた問題を、getClaims に変更することで劇的に改善した実践記録。JWTのローカル検証で40倍速くなった計測結果を共有します。
vite-plugin-pwaを使ったPWAで、オフライン起動エラーと更新の遅延という2つの問題にハマった。Service Workerの仕組みを理解して解決した記録。
Webエンジニアが初めてCapacitorでiOS/Androidアプリを作ろうとして、OAuth認証で無限ループに陥った話。Universal Linksの罠、Apple Developer Programの壁、そしてSessionStorageでの解決まで。
AWSのLambdaの気分でCloud Runを使っていたら、ヘルスチェックの仕様の違いでハマった話。ECSとLambdaの中間のような存在だった。
SupabaseをバックエンドAPI経由で使っていても、RLSを有効化しないとanon keyで全データにアクセスできてしまう。ローカル検証で気づいた落とし穴と対策について。
satori + @resvg/resvg-jsでブログ記事のOGP画像を自動生成する方法。CIでのフォント管理、woff2非対応の回避策、並列化によるビルド高速化まで実装例付きで解説。
GitHub Actionsでmainブランチ→ステージング、タグ→本番のデプロイを1ワークフローで実現。SOPSでの環境別シークレット管理、Turborepoでの並列デプロイも解説。
Turborepo + pnpmモノレポで快適な開発体験を実現するまでの6つのバージョンと、それぞれで直面した問題と解決策を振り返る。
Zod + @hono/zod-openapiでOpenAPI仕様を生成し、Orvalで型付きTanStack Queryフックを自動生成する方法。APIクライアントのボイラープレートをゼロにする実装パターン。
Zodスキーマをドメイン層に置いてクリーンアーキテクチャを実現する方法。z.inferで型を自動生成し、API・DB・フロントエンドまで一貫した型安全性を確保する設計パターン。
TurborepoとpnpmでAPIとフロントエンドを1リポジトリ管理するモノレポ構成の作り方。pnpm workspaceの設定、turbo.jsonの依存関係定義、型共有のメリットを実例で解説。
家族向けカレンダーアプリPapercalの開発で得た知見を発信していくブログを開設しました。モノレポ構成、型安全設計、API自動生成など、実践的な技術記事を書いていきます。
FastAPIでパスオペレーション関数を定義する際のdefとasync defの違いを、実際の負荷テストで検証しました。スレッドプールとイベントループの動作の違い、ブロッキングの挙動、パフォーマンス差を具体的な数値で示します。
Cloudflare PagesのPreview環境に対して、Cloudflare Zero TrustとGitHub認証を使ったアクセス制御を設定する方法を紹介します。無料で開発環境を保護できます。
EC2 Instance Connect Endpointを使って、グローバルIPなしでプライベートサブネットのEC2インスタンスにVSCode Remote SSH接続する方法を紹介します。MFA対応のtipsも含めて解説します。
ContentfulのWebhookとCloudflare PagesのDeploy Hookを連携して、記事のpublish時に自動でサイトを再デプロイする設定方法を紹介します。
通常はZone Apex(ルートドメイン)にCNAMEレコードを設定できませんが、CloudflareのCNAME Flattening機能を使えば実質的にCNAMEと同等の動作を実現できます。仕組みとRoute53のAliasレコードとの比較を解説します。
react-markdownを使ってMarkdownをReactコンポーネントに変換する方法を紹介します。remark-gfmプラグインの導入、Next.jsのLinkコンポーネントへの変換、react-syntax-highlighterによるコードブロックのシンタックスハイライトまで解説します。