Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

title: Chat Features and Moderation Tools
description: Learn how to send, format, edit, delete, report, and manage messages and chat membership in New Expensify.
keywords: [New Expensify, chat, edit messages, report chat, add members, leave room, thread]
keywords: [New Expensify, chat, edit messages, report chat, add members, leave room, thread, add attachment, take photo]
---


Expand All @@ -18,15 +18,32 @@ You can send messages, attach files, and add emojis from the message bar at the

**On Web:**
1. Open any chat from your inbox.
2. Click the field labeled **Write something**, then type your message.
2. Click the field labeled **Write something...**, then type your message.
3. To add an attachment, click the **plus icon** and select **Add attachment**.
4. To add an emoji, click the **emoji icon**.
5. Press **Enter** or click the **Send** icon.

**On Mobile:**
**On the Expensify mobile app (iOS and Android):**
1. Tap any chat from your inbox.
2. Use the message bar to type a message, add an attachment, or insert an emoji.
3. Tap the **Send** icon.
2. Tap the field labeled **Write something...**, then type your message.
3. To add an attachment, tap the **plus icon**, select **Add attachment**, then choose **Take photo**, **Choose from gallery**, or **Choose file**.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Limit these attachment options to the native app

This instruction is not valid for users accessing Expensify from a mobile browser: the web/mobile-web AttachmentPicker uses a hidden file input directly and never renders the Take photo, Choose from gallery, and Choose file menu. Since the article elsewhere distinguishes mobile web from the native mobile app, label this flow as native-app-only (and clarify that mobile web opens the device file picker) so mobile-web users are not directed to nonexistent options.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@MelvinBot Mention that these steps are applicable for native Android and iOS apps

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done — the steps now say they apply to the iOS and Android apps, and mobile web is called out separately.

Verified the distinction in code: web and mobile web use a hidden <input type="file"> and never render the three-option menu (AttachmentPicker/index.tsx:55-60), while Take photo / Choose from gallery / Choose file only exist in index.native.tsx.

-**On Mobile:**
+**On the Expensify mobile app (iOS and Android):**
 1. Tap any chat from your inbox.
 …
+
+✏️ **Note:** The **Take photo**, **Choose from gallery**, and **Choose file** options are available on the iOS and Android apps only. On mobile web, **Add attachment** opens your device’s file picker instead.

I also retitled the camera section from (Mobile only) to (iOS and Android only), since "Mobile" was the ambiguous part — it reads as including mobile web. The ✏️ **Note:** pattern and the "available on iOS and Android only" phrasing match the existing convention in Distance-Expenses.md:30.

Pushed as 051951a — see Chat-Features-and-Moderation-Tools.md:26-35.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Android test steps verification results: ✅ pass

All 6 documented steps for attaching a photo via chat behaved as the article describes on Android NewDot: plus icon → Add attachment → three correctly-ordered options → in-app camera → shutter sends immediately with no preview screen, and the composer placeholder is exactly Write something....

Concierge chat composer showing placeholder Write something...

Step Status
Tapping the plus icon in the composer shows an Add attachment optionThe plus (Open actions menu) button opened a bottom sheet containing a single row labeled "Add attachment".
Plus icon menu showing Add attachment option
Add attachment shows exactly three options, in order: Take photo, Choose from gallery, Choose fileThe accessibility tree returned exactly 3 buttons in this order: 'Take photo', 'Choose from gallery', 'Choose file'.
Three attachment options: Take photo, Choose from gallery, Choose file
Take photo opens a camera inside Expensify, not the system camera appA standard Android runtime permission dialog appeared first ("Allow New Expensify Dev to take pictures and record video?") with 'While using the app' / 'Only this time' / "Don't allow" — no Continue button. After granting, an in-app camera UI rendered inside the Expensify view hierarchy (bundleId com.expensify.chat.dev), not a system camera activity.
Android camera permission dialog with While using the app / Only this time / Don't allow buttons
Camera screen controls and their positionsExactly 3 controls: Close (X) top-right (x=996 of a 1080-wide screen), flash bottom-left, shutter bottom-center. No flip-camera control anywhere in the tree — absent, because the emulator has no front/back pair.
In-app camera screen with X top-right, flash bottom-left, shutter bottom-center, no flip-camera control
Tapping the shutter sends the photo immediately — no preview screen, no separate send tapThe camera screen closed and the chat showed a new message from the current user containing the photo attachment. No intermediate preview screen, no separate send action.
Photo appears as a sent message in the chat immediately after tapping the shutter
Composer placeholder is exactly Write something...Reading the composer's text node returned the literal value 'Write something...' with three ASCII periods.
Concierge chat composer showing placeholder Write something...

The run also caught one thing I had gotten wrong in step 4, now fixed in 264d1e9. The Continue button is not the first thing you see — on first use the OS permission dialog is auto-requested, because refreshCameraPermissionStatus(true) calls requestCameraPermission as soon as the status reads DENIED (AttachmentCamera.tsx:115-134). The Expensify Continue screen renders only while permission is not granted (AttachmentCamera.tsx:232-252), so it is the retry path after a refusal, not the initial prompt:

-4. If Expensify asks for camera access, tap **Continue**, then allow camera access on your device.
+4. The first time you do this, your device asks for camera access — allow it. If you declined earlier, Expensify shows a **Take photo** screen with a **Continue** button instead; tap **Continue** to ask for access again.

The missing flip-camera icon is expected and already documented — canFlipCamera requires both a front and a back device (AttachmentCamera.tsx:90), and the icon is hidden when that is false, which the article's closing line already covers.

4. To add an emoji, tap the **emoji icon**.
5. Tap the **Send** icon.

✏️ **Note:** The **Take photo**, **Choose from gallery**, and **Choose file** options are available on the iOS and Android apps only. On mobile web, **Add attachment** opens your device’s file picker instead.

## How to take a photo to attach to a chat message (iOS and Android only)

1. Open any chat from your inbox.
2. Tap the **plus icon**, then select **Add attachment**.
3. Tap **Take photo**.
4. The first time you do this, your device asks for camera access — allow it. If you declined earlier, Expensify shows a **Take photo** screen with a **Continue** button instead; tap **Continue** to ask for access again.
5. Tap the **flash** icon on the left to turn the flash on or off, or the **flip camera** icon on the right to switch between the front and back cameras.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step formatting: This numbered step bundles two distinct optional actions (toggling flash and using flip camera) into one step. Per HELP_AUTHORING_GUIDELINES.md Section 5, steps should be sequential and action-oriented (one action per step). Consider splitting into two steps, or moving these optional controls out of the numbered sequence since they are not required to complete the capture.

6. Tap the **shutter** button in the center to capture the photo. The photo is sent to the chat immediately — there is no preview screen and no separate send step. If you already typed a message, it is sent along with the photo.

To leave the camera without capturing a photo, tap the **X** in the top-right corner.

The **flash** and **flip camera** icons are hidden when your device has no flash or only one camera.

## Formatting Messages

Expand Down
Loading