Skip to content

Implement controlled inputs with useController for autofill detection#123

Closed
codegen-sh[bot] wants to merge 2 commits into
mainfrom
feature/autofill-controlled-inputs
Closed

Implement controlled inputs with useController for autofill detection#123
codegen-sh[bot] wants to merge 2 commits into
mainfrom
feature/autofill-controlled-inputs

Conversation

@codegen-sh
Copy link
Copy Markdown
Contributor

@codegen-sh codegen-sh Bot commented Aug 14, 2025

Overview

This PR implements a technique for detecting browser autofill using controlled inputs with React Hook Form's useController. This approach provides enhanced control over input behavior and allows for reliable autofill detection.

Implementation

  • Created a new useAutofillControlledInput hook that:
    • Works with React Hook Form's useController
    • Tracks user interactions with the input
    • Detects when values change without user interaction
    • Provides an isAutofilled state, reset function, and enhanced field props
  • Added a Storybook demo that showcases the technique with:
    • Name, email, phone, and address fields
    • Visual indicator when fields are autofilled
    • Form validation using Zod

Technical Details

This approach works by:

  1. Using controlled inputs with React Hook Form's useController
  2. Tracking user interactions with the input (focus, keydown, paste, etc.)
  3. Detecting when values change without user interaction
  4. Setting an autofilled state when this occurs
  5. Providing enhanced field props that maintain the autofill detection

Testing

To test this implementation:

  1. Run Storybook with yarn storybook
  2. Navigate to the "RemixHookForm/AutofillControlledInputs" story
  3. Try using your browser's autofill feature to populate the fields
  4. Observe the "Autofilled" indicator appearing on fields that were autofilled

Related Issues

Addresses subissue 360T-610: Implement controlled inputs with useController for autofill detection

Part of parent issue 360T-602: Explore adding autofill management to form library


💻 View my work • 👤 Initiated by Jake RuesinkAbout Codegen
⛔ Remove Codegen from PR🚫 Ban action checks

@bolt-new-by-stackblitz
Copy link
Copy Markdown

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Aug 14, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/autofill-controlled-inputs

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@codegen-sh
Copy link
Copy Markdown
Contributor Author

codegen-sh Bot commented Aug 14, 2025

🔍 Check Suite Status for PR #123

Check Status Commit Time Check Suite Agent trace
test ⚪ No action 575c0e2 Just now Run
GitHub Actions ⚪ No action 575c0e2 Just now Run Agent Work
Results & Findings

test: ✅ Fixed the failing checks in [this commit](9d145881...

💻 View my work🛑 Stop🚫 Ban all checks

…mix-hook-form

The useController function is not exported from remix-hook-form, so we need to import it directly from react-hook-form to fix the build error.
@github-actions
Copy link
Copy Markdown
Contributor

📝 Storybook Preview: View Storybook

This preview will be updated automatically when you push new changes to this PR.

Note: The preview will be available after the workflow completes and the PR is approved for deployment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant