diff --git a/package.json b/package.json
index ecf8495d94..9b0bcd6de5 100644
--- a/package.json
+++ b/package.json
@@ -88,8 +88,8 @@
"@bsky.app/expo-image-crop-tool": "^0.5.0",
"@bsky.app/expo-translate-text": "^0.2.9",
"@bsky.app/react-native-mmkv": "2.12.5",
- "@bsky.app/sift": "^0.2.9",
- "@bsky.app/tapper": "^0.4.2",
+ "@bsky.app/sift": "^0.2.11",
+ "@bsky.app/tapper": "^0.4.3",
"@discord/bottom-sheet": "bluesky-social/react-native-bottom-sheet",
"@emoji-mart/data": "^1.2.1",
"@emoji-mart/react": "^1.1.1",
diff --git a/src/components/Composer/index.tsx b/src/components/Composer/index.tsx
index ab97f88065..91095c990e 100644
--- a/src/components/Composer/index.tsx
+++ b/src/components/Composer/index.tsx
@@ -150,6 +150,7 @@ export function Composer({
placement: autocompletePlacement,
dynamicWidth: IS_WEB,
insets,
+ anchorRef: autocompleteAnchorRef,
})
/*
@@ -178,12 +179,6 @@ export function Composer({
[tapper.input, tapper.insert, inputScrollSharedValue],
)
- useEffect(() => {
- if (autocompleteAnchorRef) {
- sift.refs.setAnchor(autocompleteAnchorRef.current)
- }
- }, [sift.refs])
-
/*
* Skip the initial mount to avoid an unnecessary re-render — the parent
* already knows the initial value since it passed `initialText`.
@@ -294,42 +289,48 @@ export function Composer({
useOnKeyboard('keyboardDidShow', updateAutocompletePosition)
useOnKeyboard('keyboardDidHide', updateAutocompletePosition)
+ const textContent = (
+
+ {tapper.state.nodes.map((node, i) => {
+ switch (node.type) {
+ case 'text':
+ return {node.value}
+ case 'trigger':
+ case 'facet':
+ return (
+
+ {node.raw}
+
+ )
+ }
+ })}
+
+ )
+
return (
<>
-
-
-
- {tapper.state.nodes.map((node, i) => {
- switch (node.type) {
- case 'text':
- return {node.value}
- case 'trigger':
- case 'facet':
- return (
-
- {node.raw}
-
- )
- }
- })}
-
-
-
+ {IS_WEB && (
+
+
+ {textContent}
+
+
+ )}
{
isComposing.current = false
}}
- onUpdateHeight={updateAutocompletePosition}
- />
+ onUpdateHeight={updateAutocompletePosition}>
+ {IS_WEB ? null : textContent}
+
{activeFacet && activeFacet.type !== 'url' && (
diff --git a/yarn.lock b/yarn.lock
index 8255b66f06..d4dc66636e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2413,15 +2413,15 @@
resolved "https://registry.yarnpkg.com/@bsky.app/react-native-mmkv/-/react-native-mmkv-2.12.5.tgz#eb17d31a6158c74393f617a1763ac223ff3f83a6"
integrity sha512-3vUz1nQY1DiKIPAWRkpp5ZGxH5f2G6Ui0UuQuEYjYv81xx1qFcSzS9KQ2sHcOKYdkOM9amWV2Q8TQCxt1lrAHg==
-"@bsky.app/sift@^0.2.9":
- version "0.2.9"
- resolved "https://registry.yarnpkg.com/@bsky.app/sift/-/sift-0.2.9.tgz#517710b850551846482e68c201750d1dfd549792"
- integrity sha512-6eQzQ+xKkc0HcGzs96HaadKx+YfaCQwWO52S5VReyxuSii4Xz+bFZ4pjtHnH0NU/lB9W3llMLmjrV+Y5hGozhA==
+"@bsky.app/sift@^0.2.11":
+ version "0.2.11"
+ resolved "https://registry.yarnpkg.com/@bsky.app/sift/-/sift-0.2.11.tgz#ea5f7b3eaa6314b6eab331fba966f5ada6744d00"
+ integrity sha512-aQMNwZ78ot4oYMtLPVGOaPn7DQ1y+MeVKRXqLP0dfGNDgw/BKWIaTi/73IcIeM7x41/2J1ncIGKUbAj1vzIoLQ==
-"@bsky.app/tapper@^0.4.2":
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/@bsky.app/tapper/-/tapper-0.4.2.tgz#a01355f87bb17c4767cb66930a9d1e65904b298a"
- integrity sha512-64+EI5zzIFAMnLFlHFRuS0L26ANCLnMQS1Q4GszOo6/vhWko6opQA0yYowizEFHCQ73uiquaup2Oc8m7pDSxTA==
+"@bsky.app/tapper@^0.4.3":
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/@bsky.app/tapper/-/tapper-0.4.3.tgz#969e3bc33dfd5221d8b74ee9c854e554c51e6db0"
+ integrity sha512-7nW0EW/SBycX6EpSLYgHNjJd22gGGnutv3hyRKpS0rS9mt9Jtm8qhgkTxpajS338au/KiQRRQGUo8rqdAn7Lfw==
"@crowdin/cli@^4.14.1":
version "4.14.1"