# Best Practices

### Permission requests

App developers should seek permissions responsibly, ensuring that they only request the necessary permissions automatically and for the specific duration required.

### Setting up a connection

App developers should pass the application name when setting up a connection

### Manually adding a connection

Users should always be given the option to paste a connection string from an NWC wallet application. Connection string input fields should be `password` type so they are not leaked in recorded videos or screenshots.

### **Don't assume a particular wallet service**

NWC allows anyone to connect their own wallet or node, so don't assume the user is using a particular one. Stay agnostic in your language about the user's wallet, e.g. instead of saying `Pay`*`with X`*, just say `Pay`.

### Check the supported methods from the connection

Apps should do a `get_info` request to check what the connection supports to ensure that the app does not execute commands that are not supported. A positive side effect of this is it will do a request to the wallet service, notifiying the wallet service that the connection is created (which allows the wallet service to tell the user the connection has been successfully created).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nwc.dev/bitcoin-apps-and-websites/best-practices.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
