# draggable

Published articles for draggable.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Beyond the Luminance Ramp: A Shape-Aware ASCII Renderer in Three.js

DevFeed: [Beyond the Luminance Ramp: A Shape-Aware ASCII Renderer in Three.js](<https://devfeed.tech/articles/beyond-the-luminance-ramp-a-shape-aware-ascii-renderer-in-three-js-4337.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/04/beyond-the-luminance-ramp-a-shape-aware-ascii-renderer-in-three-js/>)

Author: Edoardo Lunardi

Published: 2026-09-04T15:01:38Z

Content type: tutorial

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [shape-aware rendering](<https://devfeed.tech/topics/shape-aware-rendering.md>), [ASCII art shader](<https://devfeed.tech/topics/ascii-art-shader.md>), [Three.js shaders](<https://devfeed.tech/topics/three-js-shaders.md>), [Three.js custom shaders](<https://devfeed.tech/topics/three-js-custom-shaders.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [ascii-art-shader](<https://devfeed.tech/tags/ascii-art-shader.md>), [ascii-dithering](<https://devfeed.tech/tags/ascii-dithering.md>), [ascii-shader](<https://devfeed.tech/tags/ascii-shader.md>), [atlas](<https://devfeed.tech/tags/atlas.md>), [browser-based-ascii-renderer](<https://devfeed.tech/tags/browser-based-ascii-renderer.md>), [creative-coding-three-js](<https://devfeed.tech/tags/creative-coding-three-js.md>), [custom-element-webgl](<https://devfeed.tech/tags/custom-element-webgl.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [draggable-3d-logo](<https://devfeed.tech/tags/draggable-3d-logo.md>), [glsl-ascii-shader](<https://devfeed.tech/tags/glsl-ascii-shader.md>), [glyph-atlas-rendering](<https://devfeed.tech/tags/glyph-atlas-rendering.md>), [glyph-matching-algorithm](<https://devfeed.tech/tags/glyph-matching-algorithm.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [gpu-ascii-rendering](<https://devfeed.tech/tags/gpu-ascii-rendering.md>), [gpu-glyph-search](<https://devfeed.tech/tags/gpu-glyph-search.md>), [interactive-ascii-art](<https://devfeed.tech/tags/interactive-ascii-art.md>), [luminance-ramp-alternative](<https://devfeed.tech/tags/luminance-ramp-alternative.md>), [procedural-ascii-art](<https://devfeed.tech/tags/procedural-ascii-art.md>), [real-time-ascii-rendering](<https://devfeed.tech/tags/real-time-ascii-rendering.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [shape-aware-ascii-renderer](<https://devfeed.tech/tags/shape-aware-ascii-renderer.md>), [shape-aware-rendering](<https://devfeed.tech/tags/shape-aware-rendering.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [three-js-ascii-renderer](<https://devfeed.tech/tags/three-js-ascii-renderer.md>), [three-js-custom-shaders](<https://devfeed.tech/tags/three-js-custom-shaders.md>), [three-js-shader-tutorial](<https://devfeed.tech/tags/three-js-shader-tutorial.md>), [three-js-webgl](<https://devfeed.tech/tags/three-js-webgl.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [webgl](<https://devfeed.tech/tags/webgl.md>), [webgl-ascii-art](<https://devfeed.tech/tags/webgl-ascii-art.md>), [webgl-post-processing](<https://devfeed.tech/tags/webgl-post-processing.md>), [webgl-shader-tutorial](<https://devfeed.tech/tags/webgl-shader-tutorial.md>)

### AI overview

A Three.js ASCII renderer improves on luminance-only glyph selection by sampling each character cell's shape and matching it against printable glyphs on the GPU.

### Source excerpt

The Codrops mark, rebuilt as a draggable solid and printed in ASCII on the GPU, where every character cell searches 95 glyphs for its own.

## What's new in Postgres Managed by ClickHouse: RBAC, Terraform, ClickPipes, extensions, and more

DevFeed: [What's new in Postgres Managed by ClickHouse: RBAC, Terraform, ClickPipes, extensions, and more](<https://devfeed.tech/articles/what-s-new-in-postgres-managed-by-clickhouse-rbac-terraform-clickpipes-extensions-and-more-5518.md>)

Original publisher: [Read original article](<https://clickhouse.com/blog/postgres-managed-by-clickhouse-rbac-terraform-clickpipes-extensions>)

Author: Kaushik Iska

Published: 2026-06-18T16:10:49Z

Content type: article

Language: en

Sources: [ClickHouse Blog](<https://devfeed.tech/sources/clickhouse-blog.md>)

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Terraform](<https://devfeed.tech/topics/terraform.md>), [API](<https://devfeed.tech/topics/api.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [stripe](<https://devfeed.tech/topics/stripe.md>), [draggable](<https://devfeed.tech/topics/draggable.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [management](<https://devfeed.tech/tags/management.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [replication](<https://devfeed.tech/tags/replication.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>), [stripe](<https://devfeed.tech/tags/stripe.md>), [terraform](<https://devfeed.tech/tags/terraform.md>), [update](<https://devfeed.tech/tags/update.md>), [visualization](<https://devfeed.tech/tags/visualization.md>)

### AI overview

This update covers new capabilities for Postgres managed by ClickHouse, including fine-grained per-service access control, a redesigned console, Terraform support, MCP support, Stripe integration, monitoring improvements, and a read-replica topology view.

### Source excerpt

Postgres managed by ClickHouse's first major update since public beta, covering fine-grained access control, a redesigned console, Terraform support, MCP integration, Stripe provisioning, migrations, billing, and capacity reservations -- all shipped in und

## Building the Crossplay Board

DevFeed: [Building the Crossplay Board](<https://devfeed.tech/articles/building-the-crossplay-board-39148.md>)

Original publisher: [Read original article](<https://open.nytimes.com/building-the-crossplay-board-6de68c8574f9?source=rss----51e1d1745b32---4>)

Author: The NYT Open Team

Published: 2026-06-08T16:46:30Z

Content type: tutorial

Language: en

Sources: [New York Times](<https://devfeed.tech/sources/new-york-times.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Development](<https://devfeed.tech/topics/development.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [ui](<https://devfeed.tech/topics/ui.md>), [screen](<https://devfeed.tech/topics/screen.md>), [real-time](<https://devfeed.tech/topics/real-time.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplayer](<https://devfeed.tech/tags/multiplayer.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [screen](<https://devfeed.tech/tags/screen.md>)

### AI overview

The New York Times Games team describes building the Android game board for Crossplay, a multiplayer word game with a 15x15 grid, draggable tiles, real-time animation, and asynchronous matches. The team used a hybrid architecture: an Android GridLayout with 225 tile Views integrated into surrounding Jetpack Compose UI.

### Source excerpt

How We Made a 15X15 Game Surface Feel at Home on AndriodIllustration by Lehel Kovács By Shafik Quoraishee What Is Crossplay? The New York Times Games team has been building daily puzzles for quite a while: Wordle, Spelling Bee, Connections, The Mini. These are solo games. The player opens them, solves them, and then closes them. This leads to a simple, satisfying experience which delights millions of players a day. Crossplay is an altogether different endeavor. It's the first multiplayer game from NYT Games, and it brings a friend (or a stranger) into the experience with them. So two players, one board, in real time. In Crossplay, players take turns placing letter tiles on a 15x15 grid to form interlocking words, but built for mobile with a focus on speed, fairness, and the back-and-forth tension that compels the player to play one more round. The matches are asynchronous by default. The player makes their move, the opponent gets notified and responds when they're ready. But the board animates as if the players are both sitting at the same table. When we set out to build it, we knew the board would be the hardest part. While the networking, the opponent matching, and the game logic were all challenging work, the board itself which is part of the core game loop was the most difficult piece because of the number of interactions required to make it function correctly, in concert. Since every cell is a potential drop target and every tile is draggable, the board needs to respond instantly to touch *and* animate their opponent's moves *as they happen*. This all must occur on a screen that is a few inches wide. In this post we discuss what it took to get that right on Android. Starting with the Grid One of our first questions was architectural. How should 225 tiles be laid out? Jetpack Compose is the obvious modern choice. But Crossplay's development started before our team had fully migrated to Compose, and the game board had specific requirements that made a pure-Compos

## Building a Google Maps Style Bottom Sheet with Jetpack Compose

DevFeed: [Building a Google Maps Style Bottom Sheet with Jetpack Compose](<https://devfeed.tech/articles/building-a-google-maps-style-bottom-sheet-with-jetpack-compose-25920.md>)

Original publisher: [Read original article](<https://proandroiddev.com/building-a-google-maps-style-bottom-sheet-with-jetpack-compose-eccc1f3cf578?source=rss-9bb203a4ab2e------2>)

Author: Jaewoong Eum

Published: 2026-02-15T07:34:23Z

Content type: tutorial

Language: en

Sources: [Stories by Jaewoong Eum on Medium](<https://devfeed.tech/sources/stories-by-jaewoong-eum-on-medium.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [bottomsheet](<https://devfeed.tech/tags/bottomsheet.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dialog](<https://devfeed.tech/tags/dialog.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how to build a Google Maps-style bottom sheet with Jetpack Compose using FlexibleBottomSheet. It covers three expansion states, non-modal interaction, state-dependent content, programmatic transitions, nested scrolling, and dynamic content sizing.

### Source excerpt

Google Maps popularized a bottom sheet pattern that most Android developers recognize immediately: a small panel peeking from the bottom of the screen, expandable to a mid height for quick details, and draggable to full screen for comprehensive information. The user interacts with the map behind the sheet at all times. This pattern looks simple on the surface, but implementing it correctly requires solving several problems: multi state anchoring, non modal interaction, dynamic content adaptation, and nested scroll coordination. Jetpack Compose's standard ModalBottomSheet only supports two states (expanded and hidden) and blocks background interaction with a scrim, making it unsuitable for this use case. In this article, you'll explore how to build a Google Maps style bottom sheet using FlexibleBottomSheet, covering how to configure three expansion states with custom height ratios, how to enable non modal mode so users can interact with the content behind the sheet, how to adapt your UI dynamically based on the sheet's current state, how to control state transitions programmatically, how to handle nested scrolling inside the sheet, and how to wrap content dynamically for variable height sheets. Why ModalBottomSheet falls short Consider the standard Material 3 bottom sheet: https://medium.com/media/8a38f40dd78c91260a666308710000ce/href This gives you two states: expanded and hidden. The sheet covers the background with a scrim, blocking all interaction behind it. For a confirmation dialog or action menu, this is fine. But for a Google Maps style experience, you need: Three visible states: A peek height showing a summary, a mid height for details, and a full height for comprehensive content. No scrim: The map behind the sheet must remain fully interactive. Dynamic content: The content should adapt based on the current expansion state. Nested scrolling: Scrollable content inside the fully expanded sheet should scroll naturally, and dragging down from the top of the scro

## Make your site interactive with code layers

DevFeed: [Make your site interactive with code layers](<https://devfeed.tech/articles/make-your-site-interactive-with-code-layers-9872.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/introducing-code-layers/>)

Author: Alex Mullans

Published: 2025-06-17T00:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [Figma](<https://devfeed.tech/topics/figma.md>), [Code](<https://devfeed.tech/topics/code.md>), [React](<https://devfeed.tech/topics/react.md>), [AI Chat](<https://devfeed.tech/topics/ai-chat.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [Web](<https://devfeed.tech/topics/web.md>), [shaders](<https://devfeed.tech/topics/shaders.md>), [draggable](<https://devfeed.tech/topics/draggable.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [code](<https://devfeed.tech/tags/code.md>), [component](<https://devfeed.tech/tags/component.md>), [design](<https://devfeed.tech/tags/design.md>), [developer](<https://devfeed.tech/tags/developer.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [features](<https://devfeed.tech/tags/features.md>), [figma](<https://devfeed.tech/tags/figma.md>), [generate](<https://devfeed.tech/tags/generate.md>), [react](<https://devfeed.tech/tags/react.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [tool](<https://devfeed.tech/tags/tool.md>), [web](<https://devfeed.tech/tags/web.md>), [website-design](<https://devfeed.tech/tags/website-design.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

Figma introduces code layers for Figma Sites, enabling users to add custom React-powered interactions and motion to website designs. Users can create or convert components into code layers, use Figma's AI chat to build and refine behavior, edit code directly, and generate variations for comparison on the canvas.

### Source excerpt

Today we're launching code layers--a new way to build custom interactions in Figma Sites.

## How to Drag and Drop in React

DevFeed: [How to Drag and Drop in React](<https://devfeed.tech/articles/how-to-drag-and-drop-in-react-18958.md>)

Original publisher: [Read original article](<https://www.robinwieruch.de/react-drag-and-drop/>)

Author: Robin Wieruch

Published: 2024-10-10T04:56:46Z

Content type: tutorial

Language: en

Sources: [Robin Wieruch](<https://devfeed.tech/sources/robin-wieruch.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [draggable](<https://devfeed.tech/topics/draggable.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [component](<https://devfeed.tech/tags/component.md>), [container](<https://devfeed.tech/tags/container.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [npm](<https://devfeed.tech/tags/npm.md>), [react](<https://devfeed.tech/tags/react.md>), [react-component](<https://devfeed.tech/tags/react-component.md>), [react-dnd](<https://devfeed.tech/tags/react-dnd.md>), [react-drag-and-drop](<https://devfeed.tech/tags/react-drag-and-drop.md>), [state](<https://devfeed.tech/tags/state.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A step-by-step React tutorial for building vertical and horizontal drag-and-drop lists with @hello-pangea/dnd. It covers stateful items, reusable components, Droppable and Draggable components, and reordering list state after drag events.

### Source excerpt

A tutorial about using Drag and Drop in React by example for a vertical list (later horizontal list) with @hello-pangea/dnd as DnD library ...

## Listening for element events with Compose for Web - Gustavo Fão Valvassori

DevFeed: [Listening for element events with Compose for Web - Gustavo Fão Valvassori](<https://devfeed.tech/articles/listening-for-element-events-with-compose-for-web-gustavo-fao-valvassori-38178.md>)

Original publisher: [Read original article](<https://touchlab.co/compose-html-events>)

Published: 2024-01-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [compose-for-web](<https://devfeed.tech/topics/compose-for-web.md>), [Web](<https://devfeed.tech/topics/web.md>), [draggable](<https://devfeed.tech/topics/draggable.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [compose-for-web](<https://devfeed.tech/tags/compose-for-web.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [css](<https://devfeed.tech/tags/css.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [event](<https://devfeed.tech/tags/event.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-js](<https://devfeed.tech/tags/kotlin-js.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>)

### AI overview

This tutorial explains how to handle HTML element events in Compose for Web. It covers common event listeners, updating composable state from clicks and input changes, and using side effects to implement more complex behavior such as a draggable window.

### Source excerpt

In a declarative world, events are the main way to interact with the elements, and most components have a way to listen for them.

## Making Your React Native Gestures Feel Natural

DevFeed: [Making Your React Native Gestures Feel Natural](<https://devfeed.tech/articles/making-your-react-native-gestures-feel-natural-1479.md>)

Original publisher: [Read original article](<https://shopify.engineering/making-react-native-gestures-feel-natural>)

Author: Andrew Lo

Published: 2023-01-20T18:37:05Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [draggable](<https://devfeed.tech/topics/draggable.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [React UI animations](<https://devfeed.tech/topics/react-ui-animations.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [app](<https://devfeed.tech/tags/app.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [react-native](<https://devfeed.tech/tags/react-native.md>)

### AI overview

This article explains how to make draggable React Native interfaces feel more natural. Using a Shop app Sheet component, it shows how incorporating drag velocity, position, spring animations, elasticity, and resistance can improve gesture feedback and transitions.

### Source excerpt

When working with draggable elements in React Native mobile apps, there are some simple ways to help gestures and animations feel better and more natural.

## Simplifying Drag and Drop (Lists and Nested Lists)

DevFeed: [Simplifying Drag and Drop (Lists and Nested Lists)](<https://devfeed.tech/articles/simplifying-drag-and-drop-lists-and-nested-lists-37608.md>)

Original publisher: [Read original article](<https://www.taniarascia.com/simplifying-drag-and-drop/>)

Author: hello@taniarascia.com

Published: 2022-09-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tania Rascia](<https://devfeed.tech/sources/tania-rascia.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [draggable](<https://devfeed.tech/topics/draggable.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [components](<https://devfeed.tech/tags/components.md>), [debug](<https://devfeed.tech/tags/debug.md>), [drag-and-drop](<https://devfeed.tech/tags/drag-and-drop.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [react](<https://devfeed.tech/tags/react.md>)

### AI overview

This tutorial shows how to simplify drag-and-drop lists and nested lists in JavaScript by extracting reusable components around a drag-and-drop library. It includes demos for basic lists and moving categories or items between nested categories.

### Source excerpt

I always forget how to use any drag and drop library until I have to use it again. Currently, the one I've been working with is , the...

## Swipe to reveal in Jetpack Compose

DevFeed: [Swipe to reveal in Jetpack Compose](<https://devfeed.tech/articles/swipe-to-reveal-in-jetpack-compose-25899.md>)

Original publisher: [Read original article](<https://proandroiddev.com/swipe-to-reveal-in-jetpack-compose-6ffa8928a4c2?source=rss-56174fa84bcc------2>)

Author: Denys Rudenko

Published: 2021-02-19T17:21:58Z

Content type: tutorial

Language: en

Sources: [Stories by Denis Rudenko on Medium](<https://devfeed.tech/sources/stories-by-denis-rudenko-on-medium.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [draggable](<https://devfeed.tech/topics/draggable.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-animation](<https://devfeed.tech/tags/compose-animation.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [gestures](<https://devfeed.tech/tags/gestures.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [stateflow](<https://devfeed.tech/tags/stateflow.md>), [swipe-to-reveal](<https://devfeed.tech/tags/swipe-to-reveal.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

A tutorial showing how to implement swipe-to-reveal cards in Jetpack Compose by detecting horizontal drag gestures and managing revealed card state with a view model and StateFlow.

### Source excerpt

Swipe to dismiss is really easy to implement in compose, including item removal animation by using a combination of SwipeToDismiss & AnimatedVisibility composables. SwipeToDismiss doesn't allow us to stop the dragging motion midway though, so let's take a look how we can achieve the following by detecting horizontal drag gestures on any composable. https://medium.com/media/1a355b2d3e397414c51442342f16cda5/hrefStep 1: Creating a data source Those who've read expandable lists in jetpack compose can skip this step, since data source is almost the same. First we define our model to hold the card related info: data class CardModel(val id: Int, val title: String) We'll be using AAC viewModel example here, but feel free to use any "controller" abstraction you prefer. https://medium.com/media/28ca457093268969ac4f2e179ee860ef/href This class serves 5 purposes: Holds list of cards using MutableStateFlow in _cards field, and exposes a StateFlow to observers via cards field. Holds list of "revealed" card ids in _revealedCardIdsList, and exposes them to observers via revealedCardIdsList field. Provides list of cards using getFakeData() function. We need a coroutine here, to emit the testList into _cards. Has onItemExpanded() to mark cards as revealed, by adding tapped card id to _revealedCardIdsList, and notify observers about this change by mutating the state of _revealedCardIdsList. Has onItemCollapsed() to remove revealed card id from _revealedCardIdsList, and notify observers about this change by mutating the state of _revealedCardIdsList. Step 2: CardsScreen composablehttps://medium.com/media/4505fde17b0e8f9672f392cb9b3296f3/href We are observing the viewModel.cards containing our list of cards, and viewModel.expandedCardIds with the help of .collectAsStateWithLifecycle(). UI is quite simple here, each list item is represented with a Box that contains our hidden action icons & the draggable card. ActionsRow -- row with 3 icons, exposes callbacks from each icon tap: onDelete,

## Creating Native Components That Accept React Native Subviews

DevFeed: [Creating Native Components That Accept React Native Subviews](<https://devfeed.tech/articles/creating-native-components-that-accept-react-native-subviews-1357.md>)

Original publisher: [Read original article](<https://shopify.engineering/creating-native-components-accept-react-native-subviews>)

Author: Joe Redridge

Published: 2020-02-25T15:30:00Z

Content type: tutorial

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [Android](<https://devfeed.tech/topics/android.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Material Design](<https://devfeed.tech/topics/material-design.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [design](<https://devfeed.tech/tags/design.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [google](<https://devfeed.tech/tags/google.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

A guide to building an Android native bottom sheet component for React Native that can render and interact with React Native views inside the sheet. It covers project setup, Kotlin, TypeScript, Gradle dependencies, and exposing the native component through a new package.

### Source excerpt

This guide will show you how to make a native component that provides bottom sheet functionality to React Native and renders React views inside.