Skip to content

Commit a32f56b

Browse files
katia-energizerEkaterina.Volodko
and
Ekaterina.Volodko
authored
Update links to docs on the new portal (JetBrains#3897)
* Updated links to new onboarding articles * Updated links documentation articles moved to the new doc portal * Added placeholders for moved pages --------- Co-authored-by: Ekaterina.Volodko <[email protected]>
1 parent adafcda commit a32f56b

File tree

4 files changed

+22
-257
lines changed

4 files changed

+22
-257
lines changed

README.md

+15-18
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66

77
# Compose Multiplatform
88

9-
**Compose Multiplatform** is a declarative framework for sharing UIs across multiple platforms with Kotlin.
9+
[**Compose Multiplatform**](https://jb.gg/cmp) is a declarative framework for sharing UIs across multiple platforms with Kotlin.
1010
It is based on [Jetpack Compose](https://developer.android.com/jetpack/compose) and developed by [JetBrains](https://www.jetbrains.com/) and open-source contributors.
1111

1212
You can choose the platforms across which to share your UIs using Compose Multiplatform:
1313

14-
* [iOS](https://github.com/JetBrains/compose-multiplatform-ios-android-template/#readme) (Alpha)
15-
* [Android](https://developer.android.com/jetpack/compose) (via Jetpack Compose)
16-
* [Desktop](https://github.com/JetBrains/compose-multiplatform-desktop-template/#readme) (Windows, MacOS, Linux)
14+
* [iOS](https://jb.gg/start-cmp) (Alpha)
15+
* [Android](https://jb.gg/start-cmp)
16+
* [Desktop](https://jb.gg/start-cmp) (Windows, MacOS, Linux)
1717
* [Web](https://kotl.in/wasm-compose-example) (Experimental)
1818

1919
For example, you can share UIs between iOS and Android or Windows and MacOS.
@@ -29,25 +29,29 @@ For example, you can share UIs between iOS and Android or Windows and MacOS.
2929
Compose Multiplatform shares most of its API with Jetpack Compose, the Android UI framework developed by Google.
3030
You can use the same APIs to build user interfaces for both Android and iOS.
3131

32-
Since Compose is built on top of [Kotlin Multiplatform](https://kotlinlang.org/lp/multiplatform/),
32+
Since Compose is built on top of [Kotlin Multiplatform](https://jb.gg/kmp),
3333
you can easily access native APIs, such as the [Camera API](https://developer.apple.com/documentation/avfoundation/capture_setup/avcam_building_a_camera_app),
3434
and embed complex native UI views, such as [MKMapView](https://developer.apple.com/documentation/mapkit/mkmapview).
3535

36-
**[Get started with Compose for iOS](https://github.com/JetBrains/compose-multiplatform-ios-android-template#readme)**
36+
**[Get started with Compose Multiplatform](https://jb.gg/start-cmp)**
3737

3838
## Android
3939

4040
When Android is one of your targets, you can get the same experience for Android as if you were developing an Android app
4141
using [Jetpack Compose](https://developer.android.com/jetpack/compose).
4242

43+
**[Get started with Compose Multiplatform](https://jb.gg/start-cmp)**
44+
4345
## Desktop
4446

4547
Compose Multiplatform targets the JVM and supports high-performance hardware-accelerated UI rendering on all major desktop
4648
platforms – macOS, Windows, and Linux.
4749

4850
It has desktop extensions for menus, keyboard shortcuts, window manipulation, and notification management.
4951

50-
**[Get started with Compose for Desktop](https://github.com/JetBrains/compose-multiplatform-desktop-template#readme)**
52+
**[Get started with Compose Multiplatform](https://jb.gg/start-cmp)**
53+
54+
> We would appreciate your feedback on Compose Multiplatform in the public Slack channel [#compose](https://kotlinlang.slack.com/archives/CJLTWPH7S/p1678882768039969).
5155
5256
## Web
5357

@@ -61,14 +65,6 @@ all the benefits that WebAssembly has to offer, such as good and predictable per
6165

6266
**[Get started with Compose for Web](https://kotl.in/wasm-compose-example)**
6367

64-
## All platforms at once
65-
66-
If you want to share UIs across all supported platforms at once, you can start with [this template](https://github.com/JetBrains/compose-multiplatform-template#readme).
67-
68-
> Note that this template currently doesn’t support the web. It will be added later.
69-
>
70-
> We would appreciate your feedback on Compose Multiplatform in the public Slack channel [#compose](https://kotlinlang.slack.com/archives/CJLTWPH7S/p1678882768039969).
71-
7268
## Libraries
7369

7470
### Compose HTML
@@ -80,11 +76,12 @@ for creating web user interfaces with HTML and CSS.
8076
8177
## Learn more
8278

83-
* [FAQ](docs/FAQ.md)
84-
* [Samples](examples/README.md)
79+
* [FAQ](https://jb.gg/cmp-faq)
80+
* [Samples](https://jb.gg/cmp-samples)
8581
* [Tutorials](tutorials/README.md)
82+
* [Compatibility and versioning](https://jb.gg/cmp-versioning)
8683
* [Changelog](CHANGELOG.md)
87-
* [Compatibility and versioning](VERSIONING.md)
84+
8885

8986

9087

VERSIONING.md

+2-122
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,3 @@
1-
## Compatibility and versioning overview
1+
This document has been moved to [https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-compatibility-and-versioning.html](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-compatibility-and-versioning.html).
22

3-
### Supported platforms
4-
* Android
5-
* iOS
6-
* macOS (x86-64, arm64)
7-
* Windows (x86-64)
8-
* Linux (x86-64, arm64)
9-
* Web browsers
10-
11-
### Limitations
12-
13-
Following limitations apply to 1.0 release.
14-
15-
* Only 64-bit x86 Windows is supported
16-
* Only JDK 11 or later is supported due to the memory management scheme used in Skia bindings
17-
* Only JDK 17 or later is supported for packaging native distributions due to jpackage limitations
18-
19-
Knowing issues on older versions:
20-
- OpenJDK 11.0.12 has [an issue](https://github.com/JetBrains/compose-jb/issues/940), when we switch keyboard layout on MacOs (isn't reproducible in OpenJDK 11.0.15)
21-
22-
[comment]: <> (__SUPPORTED_GRADLE_VERSIONS__)
23-
24-
### Kotlin compatibility
25-
26-
A new version of Kotlin may be not supported immediately after its release. But after some time we will release a version of Compose Multiplatform
27-
that supports it.
28-
Starting from 1.2.0, Compose Multiplatform supports multiple versions of Kotlin.
29-
30-
Kotlin version | Minimal Compose version | Notes
31-
--- | --- | ---
32-
1.5.31 | 1.0.0
33-
1.6.20 | 1.1.1
34-
1.7.10 | 1.2.0
35-
1.7.20 | 1.2.0 | JS is not supported (fixed in the 1.2.1)
36-
1.7.20 | 1.2.1
37-
1.8.0 | 1.3.0 | 1.3.0 is not supported by earlier k/native versions
38-
1.8.10 | 1.3.1
39-
1.8.20 | 1.4.0
40-
1.8.21 | 1.4.3
41-
1.8.22 | 1.4.3
42-
1.9.0 | 1.4.3
43-
1.9.10 | 1.5.1
44-
1.9.20 | 1.5.10
45-
46-
### Using the latest Kotlin version
47-
48-
When a new version of Kotlin is released, the corresponding Compose Multiplatform release may not yet have been published. There are still ways to use it, although stability is not guarantied. Even if it compiles fine, there can be hidden runtime errors, so it is not recommended to use them for production builds.
49-
50-
#### Using Jetpack Compose Compiler
51-
52-
> **Note**
53-
> The Jetpack Compose Compiler Plugin `androidx.compose.compiler:compiler` is guaranteed to function properly for **Kotlin/JVM** targets, including both the desktop and Android platforms. However, its reliability may not extend to **Kotlin/JS** and **Kotlin/Native** targets. For these scenarios, we recommend using the Compose Multiplatform Compiler Plugin `org.jetbrains.compose.compiler:compiler` to ensure compatibility. See [Using the Compose Multiplatform compiler](#using-the-compose-multiplatform-compiler).
54-
55-
The compilation process of composable functions is handled by the Compose compiler plugin. Each release of the compiler plugin is strictly bound to a single version of the Kotlin compiler. Normally, the Gradle plugin chooses an appropriate version of the compiler plugin automatically. But there is a way to choose another version of Compose Compiler. For example, you can use Jetpack Compose Compiler published by Google.
56-
57-
First, check [this page](https://developer.android.com/jetpack/androidx/releases/compose-kotlin#pre-release_kotlin_compatibility) to find a compatible version. If there is one, use it this way:
58-
```
59-
compose {
60-
kotlinCompilerPlugin.set("androidx.compose.compiler:compiler:1.4.2")
61-
}
62-
```
63-
(`1.4.2` corresponds Kotlin 1.8.10)
64-
65-
66-
#### Disabling Kotlin compatibility check
67-
68-
If there is no compatible version of Jetpack Compose Compiler (or you encountered errors), you can try to use Compose Compiler for another version of Kotlin, but disable the Kotlin version check. It can work, if you upgrade to a hotfix version of Kotlin, and most probably won't work if you upgrade to a major version of Kotlin.
69-
70-
```
71-
compose {
72-
kotlinCompilerPlugin.set(dependencies.compiler.forKotlin("1.7.20"))
73-
kotlinCompilerPluginArgs.add("suppressKotlinVersionCompatibilityCheck=1.7.21")
74-
}
75-
```
76-
77-
Here we set a fixed version of Compose Compiler and configure it by specifying additional arguments. The argument `suppressKotlinVersionCompatibilityCheck` disables the internal Kotlin check that happens inside the compiler. In this argument you should specify the version of Kotlin that is applied to your project. It is required to avoid situations when you upgraded Kotlin and forgot to update Compose Compiler.
78-
79-
#### Using the Compose Multiplatform Compiler
80-
81-
Typically, `-dev` versions of Compose Multiplatform (such as 1.5.0-dev1084) contain actual version mappings from Kotlin to the Compose Compiler. This includes Beta and RC (Release Candidate) builds of Kotlin.
82-
83-
If you're looking to test a Beta or RC version of Kotlin that isn't directly supported by the stable release of Compose Multiplatform, there are two potential solutions:
84-
85-
1) Consider using the most recent `-dev` build of Compose Multiplatform. See the [releases page](https://github.com/JetBrains/compose-multiplatform/releases).
86-
2) Manually specify the `kotlinCompilerPlugin` version. You can find the suitable version by consulting the following file: [ComposeCompilerCompatibility](https://github.com/JetBrains/compose-multiplatform/blob/master/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ComposeCompilerCompatibility.kt#L7).
87-
88-
For instance, if you wish to use Kotlin 1.9.0-RC, you can do so in the following way:
89-
90-
```kotlin
91-
compose {
92-
kotlinCompilerPlugin.set("1.4.8-beta")
93-
}
94-
```
95-
96-
**Note:** Unstable versions of Compose Multiplatform compiler plugin (like `1.4.8-beta)` are not available in mavenCentral. Please add `maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")` to the list of repositories in order to use such versions.
97-
98-
### Relationship between the Jetpack Compose and Compose Multiplatform release cycles
99-
100-
Compose Multiplatform shares a lot of code with [Jetpack Compose](https://developer.android.com/jetpack/compose) for Android, a framework developed by Google.
101-
We keep our release cycles aligned, making sure that the common part is properly tested and stabilized.
102-
103-
When a new version of Jetpack Compose is released, we pick the release commit, use it as a base for the next [Compose Multiplatform](https://github.com/JetBrains/androidx) version, finish new platform features, stabilize all platforms, and release Compose Multiplatform.
104-
The gap between a Compose Multiplatform release and a Jetpack Compose release is usually 1 to 3 months.
105-
106-
When you build your application for Android, the artifacts published by Google are used. For example, if you apply the Compose Multiplatform 1.5.0 Gradle plugin and add `implementation(compose.material3)` to your `dependencies`, then your project will use the `androidx.compose.material3:material3:1.1.1` artifact in the Android target (but `org.jetbrains.compose.material3:material3:1.5.0` in the other targets). See the table below to know exactly which version of the Jetpack Compose artifact is used.
107-
108-
Compose Multiplatform version | Jetpack Compose version | Jetpack Compose Material3 version
109-
--- | --- | ---
110-
[1.5.10](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.5.10)|1.5.4|1.1.2
111-
[1.5.1](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.5.1)|1.5.0|1.1.1
112-
[1.5.0](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.5.0)|1.5.0|1.1.1
113-
[1.4.3](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.4.3)|1.4.3|1.0.1
114-
[1.4.1](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.4.1)|1.4.3|1.0.1
115-
[1.4.0](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.4.0)|1.4.0|1.0.1
116-
[1.3.1](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.3.1)|1.3.3|1.0.1
117-
[1.3.0](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.3.0)|1.3.3|1.0.1
118-
[1.2.1](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.2.1)|1.2.1|1.0.0-alpha14
119-
[1.2.0](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.2.0)|1.2.1|1.0.0-alpha14
120-
[1.1.1](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.1.1)|1.1.0|1.0.0-alpha05
121-
[1.1.0](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.1.0)|1.1.0|1.0.0-alpha05
122-
[1.0.1](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.0.1)|1.1.0-beta02|1.0.0-alpha03
123-
[1.0.0](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.0.0)|1.1.0-beta02|1.0.0-alpha03
3+
To edit the document, open [https://github.com/JetBrains/kotlin-multiplatform-dev-docs/blob/master/topics/compose/compose-compatibility-and-versioning.md](https://github.com/JetBrains/kotlin-multiplatform-dev-docs/blob/master/topics/compose/compose-compatibility-and-versioning.md).

docs/FAQ.md

+2-113
Original file line numberDiff line numberDiff line change
@@ -1,114 +1,3 @@
1-
# Compose Multiplatform FAQ
1+
This document has been moved to [https://www.jetbrains.com/help/kotlin-multiplatform-dev/faq.html](https://www.jetbrains.com/help/kotlin-multiplatform-dev/faq.html).
22

3-
## What is Compose Multiplatform?
4-
5-
Compose Multiplatform is a modern declarative and reactive UI framework that provides a simple way to build user
6-
interfaces with a small amount of Kotlin code. It also allows you to write your UI once and run it on any of the supported
7-
platforms – iOS, Android, desktop (Windows, macOS, Linux), and web.
8-
9-
## How does it relate to Jetpack Compose for Android?
10-
11-
Compose Multiplatform shares most of its API with [Jetpack Compose](https://developer.android.com/jetpack/compose), the Android UI framework developed by Google.
12-
In fact, when you are using Compose Multiplatform to target Android, your app simply runs on Jetpack Compose.
13-
14-
Other platforms targeted by Compose Multiplatform may have implementations under the hood that differ from those of
15-
Jetpack Compose on Android, but they still provide you with the same APIs.
16-
17-
## Between which platforms can I share my UI?
18-
19-
We want you to have the option to share your UI between any combination of popular platforms – Android, iOS, desktop
20-
(Linux, macOS, Windows), and web. Note, however, that only Compose for Android and Desktop are Stable at the moment.
21-
22-
## Can I use Compose Multiplatform in production?
23-
24-
The Android and Desktop targets of Compose Multiplatform are Stable. You can use them in production.
25-
26-
The iOS target is in Alpha, and we don’t recommend using it in production. Nevertheless, you are welcome to experiment
27-
with it at your own risk to see what benefits you get and how your application will look in the future.
28-
29-
The version of Compose for Web that is based on WebAssembly, and that has the same UI as Compose for iOS, Android, and
30-
Desktop, is Experimental. You can try it in your pet projects.
31-
32-
## When will Compose Multiplatform become Stable? What are the current stability guarantees?
33-
34-
Compose Multiplatform is Stable for Android and Desktop, while the iOS and Web targets are not Stable yet. The iOS target
35-
is in Alpha, and Web is Experimental.
36-
37-
Stable means that the framework provides a comprehensive API surface that allows you to write beautiful, production-ready
38-
applications, without encountering performance or correctness issues in the framework itself. API-breaking changes can
39-
only be made 2 versions after an official deprecation announcement.
40-
41-
Alpha means that we have decided to productize the idea but it hasn't reached the final shape yet. You can use it at your
42-
own risk and expect migration issues.
43-
44-
Experimental means the framework is under development. It lacks some features and might have performance issues and bugs.
45-
Some aspects might change in the future, and breaking changes can occur often.
46-
47-
The framework is built using [Kotlin Multiplatform](https://kotlinlang.org/lp/multiplatform/), which is not itself Stable yet.
48-
Because of that, you may encounter issues during builds.
49-
50-
## What IDE should I use for building apps with Compose Multiplatform?
51-
52-
We recommend using [IntelliJ IDEA](https://www.jetbrains.com/idea/) for desktop-only, web-only, and combined desktop-web
53-
Multiplatform applications. If you target Android or Android and iOS, we recommend using [Android Studio](https://developer.android.com/studio).
54-
55-
## Where can I find documentation and tutorials?
56-
57-
You can find the Getting Started tutorials on the [main project page](https://github.com/JetBrains/compose-multiplatform#readme)
58-
and more tutorials on [this page](../tutorials/README.md).
59-
60-
## Can I play with a demo application? Where can I find it?
61-
62-
Sure, we have [multiple examples for all platforms](../examples/README.md).
63-
64-
## Does Compose Multiplatform come with widgets?
65-
66-
Yes, Compose Multiplatform provides the full support for [Material 3](https://m3.material.io/) widgets.
67-
68-
## To what extent can I customize the appearance of Material widgets?
69-
70-
You can use Material’s theming capabilities to customize colors, fonts, and paddings. If you want to create a unique
71-
design, you can create completely custom widgets and layouts.
72-
73-
## How does Compose Multiplatform work with Kotlin Multiplatform?
74-
75-
[Kotlin Multiplatform technology](https://kotlinlang.org/lp/multiplatform/) simplifies the development of cross-platform projects.
76-
It reduces time spent writing and maintaining the same code for different platforms while retaining the flexibility and
77-
benefits of native programming.
78-
79-
For business logic, Kotlin Multiplatform is already a well-established and effective approach. Compose Multiplatform
80-
completes the puzzle when you don’t want to build and maintain separate native UIs for your target platforms. Maybe you
81-
don’t have enough people, or perhaps you don’t have enough time. Maybe you just really want to get your app out the door
82-
and into the hands of as many people as quickly as possible.
83-
84-
Compose Multiplatform gives you the option to push the sharing capabilities of Kotlin Multiplatform beyond business logic. It allows you to implement your user interface once and then use it for all the platforms you target.
85-
86-
## Can I share the UI in my existing Kotlin Multiplatform app?
87-
88-
If your application uses a native API for its UI (which is the most popular case), you can indeed gradually rewrite some
89-
parts to Compose Multiplatform, as it provides interoperability for that. You can remove some parts from native UIs and
90-
replace them with a special interop view that wraps a common UI written with Compose.
91-
92-
## I have an existing Android application that uses Jetpack Compose. What should I do to run it on other platforms?
93-
94-
First, you must separate common code from platform-specific logic, such as interactions with Android APIs or uses of
95-
Android-only dependencies. Next, you need to implement this logic on the new platform, either by using a multiplatform
96-
library or writing platform-specific code.
97-
98-
## Can I integrate Compose screens into an existing iOS app?
99-
100-
Yes. Compose Multiplatform supports different integration scenarios.
101-
102-
## Can I integrate UIKit or SwiftUI components into a Compose screen?
103-
104-
Yes, you can.
105-
106-
## What happens when my mobile OS updates and introduces new platform capabilities?
107-
108-
You can use them in platform-specific parts of your codebase as soon as they’re introduced. All new Android capabilities
109-
provide Kotlin or Java APIs, and wrappers over iOS APIs are generated automatically.
110-
111-
## What happens when my mobile OS updates and changes the visual style of the system components or their behavior?
112-
113-
Your UI will stay the same after OS updates because all the components are drawn on a canvas. If you embed native iOS
114-
components into your screen, updates may affect their appearance.
3+
To edit the document, open [https://github.com/JetBrains/kotlin-multiplatform-dev-docs/blob/master/topics/overview/faq.md](https://github.com/JetBrains/kotlin-multiplatform-dev-docs/blob/master/topics/overview/faq.md).

0 commit comments

Comments
 (0)