FAQ
모두가 묻는 질문에, 실제 코드 동작을 기준으로 답합니다.
initInstaFix를 호출했는데 아무것도 보이지 않아요. 왜죠?
가능성이 높은 순서대로:
- 프로덕션 빌드입니다.
NODE_ENV가production이면 위젯은 표시를 건너뜁니다(오직process.env.NODE_ENV만 확인합니다). 스테이징 환경에서는forceShow: true를 전달하거나onSkip으로 확인하세요. - 뷰포트 너비가 768px 미만입니다. 해결 방법은 동일합니다:
onSkip으로 알 수 있고,minViewportWidth: 0으로 재정의할 수 있습니다. - 잘못된 설정 —
endpoint/store또는projectName이 누락되면console.error를 출력하고 아무것도 마운트하지 않습니다. 이 경우onSkip은 호출되지 않으므로, 콘솔을 열어 확인하세요. - 이미 마운트되어 있습니다.
initInstaFix()를 두 번째로 호출하면 두 번째 버튼 대신 기존 인스턴스를 반환합니다.
클라이언트가 계정을 만들어야 하나요?
아니요. 클라이언트가 처음 피드백을 보낼 때 위젯이 이름과 이메일을 물어보고, 다음번을 위해 브라우저에 저장해 둡니다. 여러분의 앱이 이미 클라이언트가 누구인지 알고 있다면 identity: { name, email }을 전달하세요. 그러면 이 입력창은 아예 표시되지 않습니다.
정말 무료인가요? 무엇을 직접 호스팅해야 하나요?
MIT 라이선스이며, 유료 요금제도 없고, 어디로도 데이터를 전송하지 않습니다. 여러분은 API 엔드포인트 하나(Web Request/Response를 지원하는 어떤 프레임워크든 가능)와 Prisma를 통한 자체 데이터베이스만 호스팅하면 됩니다. 피드백 데이터는 그 어떤 타사 서버에도 닿지 않습니다.
어떤 프레임워크에서 동작하나요?
- 위젯: 어떤 사이트에서도 동작합니다 — 단순한 스크립트(ESM, CJS, 또는 전역
<script>)이기 때문입니다. React 훅(@instafix/widget/react)도 함께 제공됩니다. - 서버: 어댑터는 표준
Request→Response핸들러를 반환합니다 — Next.js, Remix, SvelteKit, Hono 등. CLI의 라우트 생성기는 Next.js App Router만을 대상으로 하며, 다른 프레임워크에서는 핸들러를 수동으로 연결해야 합니다. - 대시보드: React 18 또는 19.
피드백에는 어떤 데이터가 담기나요?
댓글 내용, 유형과 상태, 페이지 정보(기본적으로 URL 경로만 — 쿼리 스트링은 절대 브라우저 밖으로 나가지 않습니다), 뷰포트 크기, user agent, 작성자의 이름과 이메일, 그리고 각 주석의 DOM 앵커입니다. 선택적으로: 주석이 달린 영역의 스크린샷과 최근 콘솔/네트워크 진단 정보를 포함할 수 있습니다. 민감한 요소는 data-instafix-ignore="true"로 마스킹하세요 — 마스킹된 요소는 스크린샷에서 제외됩니다.
누구나 제 피드백 API를 읽을 수 있나요?
읽기 요청은 기본적으로 공개되어 있으며, 인증되지 않은 호출자에게는 작성자 이메일이 가려지고 clientId는 절대 노출되지 않습니다. 파괴적인 호출(상태 변경, 삭제)은 기본값으로 apiKey가 필요하며, 프로덕션 환경에서는 서버 어댑터가 apiKey 없이는 아예 시작되지 않습니다. 자세히 보기.
전송 도중 네트워크가 끊기면 어떻게 되나요?
위젯은 백오프와 함께 최대 3번 재시도한 뒤, 페이로드를 localStorage에 큐잉합니다(최대 20건). 그리고 다음 페이지 로드 시 이를 전송합니다. 불안정한 연결 때문에 댓글이 유실되는 일은 없습니다.
주석이 달린 요소가 삭제됐어요. 주석은 어디로 갔나요?
잘못된 요소를 가리키는 대신, 해당 페이지에서는 마커가 숨겨집니다(더 이상 고정할 대상이 없기 때문입니다) — 하지만 메시지와 스크린샷을 포함한 피드백 자체는 패널과 대시보드에 그대로 남아 있습니다. 앵커링 동작 방식 참고.
제 언어가 기본으로 포함되어 있지 않아요.
대시보드는 registerLocale을 통해 런타임에 로케일을 추가할 수 있습니다. 위젯의 로케일은 빌드 시점에 포함되는 방식입니다 — 새 로케일을 추가하는 것은 이 프로젝트에 기여하기 가장 좋은 첫걸음입니다: CONTRIBUTING 참고.