tauri-apps / tauri

Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
https://tauri.app
Apache License 2.0
84.05k stars 2.53k forks source link

MOBILE when? #843

Closed nothingismagick closed 3 years ago

nothingismagick commented 4 years ago

This is a tracking issue for our work toward making mobile available. The following is a citation from @tensor-programming in the wg-tech discussion we had a few days ago:

Well much of it is just down to connecting the existing tauri library to the native webview.
And the native webview can be access a number of ways.
Though it would likely be easier to keep that access consistent across the two mobile 
platforms Thats why kotlin for instance was a choice that I was considering.  
Its got the ability to access both iOS and android.
So a lot of it is just taking our existing interface and molding the android and iOS 
webviews to it.
All those functions that set the title, push the javascript and html in, make a window etc.
And then I guess the final thing that you want to do is just make sure that you can 
compile the Rust with the other code and load it onto a mobile device
Though all of that should be straight forward.
We could take our c++ bindings and expand them for android and iOS or we could make 
a library using kotlin and/or java and swift
The rest of the stuff is just the same things that we are working on for tauri desktop
Moxinilian commented 4 years ago

Are there concrete points on which new contributors could spend time in order to move this effort forward?

jbolda commented 4 years ago

I don't know that there has been any concrete work done other than planning / research that is noted above. Are you interested in helping to push this forward @Moxinilian?

Moxinilian commented 4 years ago

To the extent of my capabilities, yes! But I am not familiar with the tauri codebase at all, perhaps I should read and understand it first.

Moxinilian commented 4 years ago

For what it's worth however, I don't really understand the motivation behind unifying both mobile implementations. The way one accesses them is sufficiently different that in my opinion they deserve specialized code. Also, adding a Kotlin layer would add one more layer of indirection iOS does not need as you can simply access the relatively simple WebKit interface through regular FFI (I am more familiar with iOS than Android however, so maybe the situation is different on the other side).

tensor-programming commented 4 years ago

@Moxinilian With Android you can access the WebView directly as well through the Android SDK. My reasoning for looking at Kotlin has to do with handling both platforms. Kotlin native can interface both with Android and iOS; it would basically let us share code across both platforms. The alternative would be to build two isolated layers; a Kotlin layer for android and a swift layer for iOS; it would get very complex though.

stacygrace commented 4 years ago

Kotlin Multiplatform Mobile seems like a good way to go here at some point. The UI layer for ios would still need to be done in swift but having worked on a couple multiplatform kotlin apps over the last year, it works really well. This particular link though is to a newer effort to improve the experience and may not be ready yet.

nothingismagick commented 3 years ago

coming soon :tm:

sumade123 commented 3 years ago

It's great that mobile is on the roadmap.

I am finding it a little difficult to choose what to use for a GUI right now for a new project. It must have easy support for calling Rust or Golang (or C library). This doesn't seem straightforward in RN/Expo, and desktop has to be Electron. This really leaves me with Flutter, which is easy to use, but web support is not the best and I'd rather use HTML/CSS/JS.

Tauri on the other hand seems to be just what I am after, rust back end and web GUI.

If I must support mobile at some point though, say within a year, is Tauri a reasonable choice? Or is it too early to say, would really value your advice.

nothingismagick commented 3 years ago

We already have a working prototype for iOS, and within a year is totally reasonable for the major mobile platforms.

nothingismagick commented 3 years ago

https://github.com/tauri-apps/wry/issues/11#issuecomment-825117008

hustcer commented 2 years ago

We already have a working prototype for iOS, and within a year is totally reasonable for the major mobile platforms.

6 months passed already. What's the mobile support status now? Will they be okay before 2022? Thanks @nothingismagick

FabianLars commented 2 years ago

@hustcer No chance for this year at all. Best case would be Q2 2022, but we're still looking for someone to work on android.

nothingismagick commented 2 years ago

@FabianLars is right. Hopefully we will be able to offer early access in Q1 2022 😜 but it will all need to be audited, and so Q2 2022 is just about a year after I made the comment that we will need a year. :)

pie6k commented 2 years ago

Do you consider pushing iOS support, even if Android would not be ready yet?

nothingismagick commented 2 years ago

We will put out beta-quality code as it becomes available, but we will probably do the final security audit for both systems, like how we did the desktop audit.

AP2008 commented 2 years ago

but we're still looking for someone to work on android.

@FabianLars have you found anyone for android yet ? If not, I would like to take it up but will require guidance on how to go about it.

FabianLars commented 2 years ago

@AP2008 Yeah we recently found someone who will work together with Yu on it. But we appreciate every helping hand, even if "just" for testing ❤️ So if you're interested you can say hello in the #tao-wry channel on discord (or maybe via pm @nothingismagick#9835 aka Denjell on the tauri server).

pepicrft commented 2 years ago

Out of curiosity, will the solution resemble the desktop stack (Webview + Rust native bindings)?

FabianLars commented 2 years ago

@pepicrft Generally yes. Android is tricky tho and may require the dev to use Java/Kotlin in some places, but we'll have to wait and see for that one.

BraveEvidence commented 2 years ago

After 5 years of working with mobile use native tech like kotlin,swift and using cross platform tech like flutter, react native etc i honestly don't like using cross platform technology for mobile. I had so many performance issues with react native especially on low end android devices. Flutter is great and even though i have not faced any performance issues as such for flutter, some people do complain about flutter's performance on ios as ios uses metal backend even though skia(on which flutter is based on) has added support for metal. I have just decided to stick with Native tech as every year Google Io and wwdc there are so many changes to each platform that it is difficult to keep up for these cross platform tech. I have my doubts about Kotlin multiplatform mobile especially on ios though i have never tried it. I understand tauri takes completely different approach as compared to these cross platform tech and i would be really happy if you guys come up with your own soln for mobile but do consider carefully before investing time, energy and money in mobile. I dont want this project to suffer because of mobile as it does a great job for desktop apps. Would really like the tauri project to be really good at one thing. Maybe maintain a separate repo for mobile.

Sorry if any of my words hurt anybody.

erlend-sh commented 2 years ago

I don’t think that’s a radical position, and your personal technical opinion certainly shouldn’t shouldn’t be taken as an offense to anyone ☺️

Even though it kind of takes the opposite position, this post seems fairly well aligned with the point you’re making: https://news.ycombinator.com/item?id=31243501

Native apps still have their place, but for most applications the native app frameworks only need to provide a very thin layer for the last stretch of the app development process.

Zombobot1 commented 2 years ago

Thank you very much for your amazing project! Now is Q3 of 2022. Do you have any assumptions when iOS support will be added?

SwapnilSoni1999 commented 2 years ago

Tauri is next gen takeover for react-native, ionic and other mobile/web frameworks

Mohammad-DH commented 2 years ago

gambare

ghost commented 2 years ago

Would there need to be a change for PinePhone Pro? If we want another option other than Android or iOS, I think Tauri is gonna be the way.

FabianLars commented 2 years ago

@GravityCollision The first time someone reported that their tauri app worked on a PinePhone (non-pro of course), was a year ago: https://discord.com/channels/616186924390023171/837614826900946954/878461731763015680. But makes sense since it's basically just arm Linux, isn't it? On top of, shortly after that, someone even compiled their app directly on a pinephone (not recommended unless you have a lot of time 😅)

And while what i said was about the normal pinephone, it should apply to the Pro too.

npearson72 commented 2 years ago

I know this thread is closed, but I wanted to make a quick point that sometimes gets overlooked in the analysis of which hybrid framework to use, be it flutter, react native, ionic, etc...

If you're coming from the JS / web world, you'll often want to build an app across multiple environments: web, mobile, desktop, browser extension.

And as such, you'll want to re-use as much code as possible. With monorepos, code re-use is reasonably easy to achieve, so long as the code works across your environments.

Currently, re-using react web components is not generally possible in react native. Or I should say, re-use is very limited unless you add further abstraction. Ionic is much better in this regard.

It seems Tauri is also very good in this regard for desktop apps.

I hope that whatever mobile direction you guys go into, you'll give some consideration to allowing as much JS (and JS framework components) re-use as possible, so that a div is a div and a button accepts onClick and not onPress (these are react examples).

FabianLars commented 2 years ago

@npearson72 Since we will use webviews on mobile too, just like on desktop, it will mostly work the same as in your average browser :)

Hex5DA commented 2 years ago

Hey, are there any updates, given that its Q3 2022? What's the progress?

erlend-sh commented 2 years ago

I’m just observing the #mobile channel on the Tauri Discord where the majority of mobile dev discussion is taking place, but it appears to be progressing very well.

Here’s the WIP setup guide: https://hackmd.io/XIcEwk4GSxy8APZhSa0UnA?view

Development is mainly taking place here: https://github.com/tauri-apps/cargo-mobile

Snapshots from end of August:

https://user-images.githubusercontent.com/583842/190613133-89d656b3-0c4e-4fc3-9fdf-852f132ed23c.MOV

https://user-images.githubusercontent.com/583842/190613198-82f3a20e-19c8-421d-967f-82899b43b82b.MOV

In terms of a full, working release of the "Mobile Bundler" listed under the road map online. How long are we looking at? Years? Months?

As a developer I know it's completely unrealistic to give an accurate time line on something like this, especially because this is an open source community project. I just want to know that if I build an app using Tauri and tell the users "Mobile will be coming in the future", how long of a wait it's going to be. If we are looking at 2 years, maybe I recode the mobile app in a different language / solution for time being. But if we are looking at a year or less, I'm willing to wait. Any comments or thoughts?

Answer from devs: Months.

FabianLars commented 2 years ago

alpha soon :tm:

xeoshow commented 2 years ago

Looking forward to the alpha/beta release and related demo..

subhasish-smiles commented 2 years ago

Can't wait !!

DMR-8 commented 2 years ago

@Moxinilian With Android you can access the WebView directly as well through the Android SDK. My reasoning for looking at Kotlin has to do with handling both platforms. Kotlin native can interface both with Android and iOS; it would basically let us share code across both platforms. The alternative would be to build two isolated layers; a Kotlin layer for android and a swift layer for iOS; it would get very complex though.

I am not sure how Tauri works, just stumbled upon this page. Are you using a similar approach to capacitorJS ?

LeFede commented 1 year ago

I managed to make tauri mobile work on my phone with wry (I'm not even a BIT sure what it means) But the project doesn't have any html / js / css files? Is it meant to be like this whilst still being developed or I am being just a noob?

image

Thank you in advance :)

madcerto commented 1 year ago

I managed to make tauri mobile work on my phone with wry (I'm not even a BIT sure what it means) But the project doesn't have any html / js / css files? Is it meant to be like this whilst still being developed or I am being just a noob?

@LeFede wry is just a library used by tauri, so it's only for if you want to manually create your window and open a webview etc. So use the tauri template in cargo-mobile instead. Note that it only works with iOS at the moment, so if you need Android support immediately, you can't use the whole tauri development kit. (I'm not a contributor or expert, I may be off on the details)

LeFede commented 1 year ago

I managed to make tauri mobile work on my phone with wry (I'm not even a BIT sure what it means) But the project doesn't have any html / js / css files? Is it meant to be like this whilst still being developed or I am being just a noob?

@LeFede wry is just a library used by tauri, so it's only for if you want to manually create your window and open a webview etc. So use the tauri template in cargo-mobile instead. Note that it only works with iOS at the moment, so if you need Android support immediately, you can't use the whole tauri development kit. (I'm not a contributor or expert, I may be off on the details)

@MadScientist2854 according to this note it would be possible even in android. I followed all the steps and even so I didn't get to make it work. I don't see the tauri template in cargo mobile. Just wry, wgpu or something like that and others. Only wry worked while the others all resulted in errors.

Recap: Using cargo-mobile I guess I couldn't figure how to setup my files to make it work and using tauri-mobile gave me errors I couldn't figure out how to fix :(

Thank you for your clarification

FabianLars commented 1 year ago

btw we're working on actual docs here: https://github.com/tauri-apps/tauri-docs/pull/1001

LeFede commented 1 year ago

btw we're working on actual docs here: tauri-apps/tauri-docs#1001

@FabianLars okay, after following step by step my app works on desktop but when I try to compile fo mobile it says:

error[E0433]: failed to resolve: could not find `mobile_entry_point` in `tauri`
 --> src/mobile.rs:1:10bug
  |
1 | #[tauri::mobile_entry_point]
  |          ^^^^^^^^^^^^^^^^^^ could not find `mobile_entry_point` in `tauri`

For more information about this error, try `rustc --explain E0433`.
error: could not compile `app` due to previous error
       Error `Failed to run `cargo build`: Command "cargo build --package app --manifest-path /home/fede/dev/tauri-app2/src-tauri/Cargo.toml --target aarch64-linux-android --no-default-features --color always" didn't complete successfully, exiting with code 101.

Since I don't know much about rust I can't figure how to solve this out. Apparently it doesn't find the package mobile_entry_point ? or namespace... not sure

Any ideas?

LeFede commented 1 year ago

If I comment out the #[tauri::mobile_entry_point]

I get the following:

fede@main ~/dev/tauri-app2 $ cargo tauri android dev
     Running BeforeDevCommand (`npm run dev`)

> tauri-app2@0.0.0 dev
> vite

  VITE v3.2.4  ready in 220 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: http://{public_ip_I_am_not_showing}:5173/
        Info detected host target triple "x86_64-unknown-linux-gnu"
Detected connected device: Meep 🦊 (Mi A2) with target "aarch64-linux-android"
        Info symlink at "/home/fede/dev/tauri-app2/src-tauri/gen/android/app/app/src/main/jniLibs/arm64-v8a/libapp.so" points to "/home/fede/dev/tauri-app2/src-tauri/target/aarch64-linux-android/debug/libapp.so"
<=============> 100% CONFIGURING [285ms]
> IDLE
   Compiling wry v0.22.5TING [385ms]
   Compiling app v0.1.0 (/home/fede/dev/tauri-app2/src-tauri)t is not connected (os error 107); terminate connection: 0
error: failed to run custom build command for `wry v0.22.5`

Caused by:
  process didn't exit successfully: `/home/fede/dev/tauri-app2/src-tauri/target/debug/build/wry-82393426eaa0162e/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-env-changed=WRY_ANDROID_REVERSED_DOMAIN
  cargo:rerun-if-env-changed=WRY_ANDROID_APP_NAME_SNAKE_CASE
  cargo:rerun-if-env-changed=WRY_ANDROID_KOTLIN_FILES_OUT_DIR

  --- stderr
  thread 'main' panicked at 'Failed to canonicalize path: Os { code: 2, kind: NotFound, message: "No such file or directory" }', /home/fede/.cargo/registry/src/github.com-1ecc6299db9ec823/wry-0.22.5/build.rs:36:10
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
       Error `Failed to run `cargo build`: Command "cargo build --package app --manifest-path /home/fede/dev/tauri-app2/src-tauri/Cargo.toml --target aarch64-linux-android --no-default-features --color always" didn't complete successfully, exiting with code 101.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:rustBuildArm64Debug'.
> Process 'command '/home/fede/.cargo/bin/cargo-tauri'' finished with non-zero exit value 1

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 936ms
       Error Failed to assemble APK: Command "/home/fede/dev/tauri-app2/src-tauri/gen/android/app/gradlew --project-dir /home/fede/dev/tauri-app2/src-tauri/gen/android/app assembleArm64Debug --warn" didn't complete successfully, exiting with code 1.

Btw I forgot to mention that to scafold the whole project I used:

yarn create vite
yarn tauri init
cargo tauri android init
cargo tauri android dev
Mohammad-DH commented 1 year ago

yeassssssssssssssssssssssssssssss finally now i got to learn rust !

CanRau commented 1 year ago

yeassssssssssssssssssssssssssssss finally now i got to learn rust !

hahaha exactly! same thought here 🤜🏼 🤛🏼 👏🏼

Akarimichi commented 1 year ago

Hello can you help me when i run yarn tauri android dev i have this error

` VITE v4.0.3 ready in 639 ms

➜ Local: http://localhost:5173/ ➜ Network: http://192.168.0.104:5173/ Info detected host target triple "x86_64-pc-windows-msvc" Detected connected device: Pixel_3_API_30 (sdk_gphone_x86) with target "i686-linux-android" <-------------> 0% EXECUTING [503ms] Compiling cfg-if v1.0.0NG [895ms] Compiling libc v0.2.139 connection 1/100 Compiling memchr v2.5.0 Compiling siphasher v0.3.10 Compiling serde v1.0.151 Compiling smallvec v1.10.0 Compiling itoa v1.0.5 Compiling once_cell v1.16.0 Compiling new_debug_unreachable v1.0.4 Compiling ryu v1.0.12 Compiling scopeguard v1.1.0 Compiling precomputed-hash v0.1.1 Compiling mac v0.1.1 Compiling byteorder v1.4.3 Compiling bytes v1.3.0 Compiling tinyvec_macros v0.1.0 Compiling log v0.4.17TING [1s] Compiling lock_api v0.4.9 [1s] Compiling futf v0.1.5 Compiling tinyvec v1.6.0 Compiling percent-encoding v2.2.0 Compiling phf_shared v0.8.0 Compiling phf_shared v0.10.0 Compiling bitflags v1.3.2 [1s] Compiling phf v0.8.0UTING [1s] Compiling dtoa v0.4.8 Compiling utf-8 v0.7.6 Compiling form_urlencoded v1.1.0 Compiling thiserror v1.0.381s] Compiling typenum v1.16.0 Compiling unicode-bidi v0.3.8 Compiling stable_deref_trait v1.2.0 Compiling matches v0.1.9 Compiling tendril v0.4.3 Compiling dtoa-short v0.3.3 Compiling itoa v0.4.8TING [1s] Compiling nodrop v0.1.14 Compiling fnv v1.0.7 Compiling fxhash v0.2.1 Compiling servo_arc v0.1.1[1s] Compiling parking_lot_core v0.9.5 Compiling getrandom v0.2.8 Compiling cssparser v0.27.21s] Compiling thin-slice v0.1.12s] Compiling jni-sys v0.3.0 Compiling alloc-no-stdlib v2.0.4 Compiling crossbeam-utils v0.8.14 Compiling aho-corasick v0.7.20 Compiling uuid v0.8.2 Compiling parking_lot v0.12.1 Compiling alloc-stdlib v0.2.2 Compiling lazy_static v1.4.0s] Compiling cty v0.2.2g Compiling regex-syntax v0.6.28 Compiling same-file v1.0.6[2s] Compiling brotli-decompressor v2.3.2 Compiling raw-window-handle v0.5.0 Compiling walkdir v2.3.2 Compiling cfb v0.6.1UTING [2s] <--- Compiling ndk-sys v0.3.0s] Compiling rand_core v0.6.4[2s] Compiling unicode-normalization v0.1.22 Compiling generic-array v0.14.6 Compiling num_enum v0.5.7 Compiling http v0.2.8TING [3s] Compiling selectors v0.22.0 <--- Compiling combine v4.6.6s] Compiling cesu8 v1.1.0ING [3s] Compiling ppv-lite86 v0.2.17 Compiling crossbeam-channel v0.5.6 Compiling phf v0.10.1TING [3s] Compiling rand_chacha v0.3.1s] Compiling idna v0.3.0TING [4s] Compiling block-buffer v0.10.3 Compiling crypto-common v0.1.6 Compiling brotli v3.3.4NG [4s] Compiling ndk v0.6.0g Compiling digest v0.10.6G [4s] Compiling infer v0.7.0 Compiling instant v0.1.12 Compiling adler v1.0.2ING [5s] Compiling glob v0.3.0TING [5s] Compiling cpufeatures v0.2.5 Compiling ndk-context v0.1.1s] Compiling regex v1.7.0 Compiling sha2 v0.10.6ING [5s] Compiling miniz_oxide v0.6.2 Compiling crc32fast v1.3.2 Compiling rand v0.8.5TING [5s] Compiling serde_json v1.0.91s] Compiling string_cache v0.8.4 Compiling url v2.3.1UTING [6s] Compiling markup5ever v0.10.1] Compiling serde_with v1.14.0 Compiling semver v1.0.16G [6s] Compiling uuid v1.2.2 Compiling bstr v0.2.17 Compiling pin-project-lite v0.2.9 Compiling http-range v0.1.56s] Compiling base64 v0.13.1 Compiling flate2 v1.0.25G [6s] Compiling globset v0.4.9G [7s] Compiling env_logger v0.7.17s] Compiling serde_urlencoded v0.7.1 Compiling slab v0.4.7TING [7s] Compiling futures-task v0.3.25 Compiling futures-core v0.3.25 Compiling filetime v0.2.19 Compiling dirs-sys-next v0.1.2 Compiling treediff v3.0.2 [7s] Compiling num_cpus v1.15.0 Compiling xattr v0.2.3ING [8s] Compiling thread_local v1.1.4] Compiling remove_dir_all v0.5.3 Compiling fastrand v1.8.0 [8s] Compiling html5ever v0.25.2 Compiling json-patch v0.2.78s] Compiling pin-utils v0.1.0 Compiling pathdiff v0.2.1 [8s] Compiling android_log-sys v0.2.0 Compiling futures-util v0.3.25 Compiling open v3.2.0TING [8s] Compiling tempfile v3.3.0 Compiling android_logger v0.9.2 Compiling ignore v0.4.18G [8s] Compiling tar v0.4.38 Compiling serialize-to-javascript v0.1.1 Compiling anyhow v1.0.68G [9s] Compiling tokio v1.23.0NG [9s] Compiling dirs-next v2.0.0 Compiling kuchiki v0.8.1G [9s] Compiling attohttpc v0.24.09s] Compiling encoding_rs v0.8.31 Compiling os_info v3.5.1G [9s] Compiling shared_child v1.0.0s] Compiling os_pipe v1.1.2G [10s] Compiling state v0.5.3ING [10s] Compiling tauri-utils v2.0.0-alpha.0 Compiling jni v0.20.0TING [11s] Compiling tauri-runtime v0.13.0-alpha.0 Compiling tao v0.15.8TING [14s] Compiling wry v0.23.4TING [15s] Compiling tauri-runtime-wry v0.13.0-alpha.0 Compiling tauri v2.0.0-alpha.2] Compiling tauri-mobile-app v0.0.0 (D:\RepoGit\tauri-mobile-app\src-tauri) Finished dev [unoptimized + debuginfo] target(s) in 22.27s Info symlinking lib "D:\RepoGit\tauri-mobile-app\src-tauri\target/i686-linux-android/debug/libtauri_mobile_app.so" in jniLibs dir "D:\RepoGit\tauri-mobile-app\src-tauri\gen/android\tauri-mobile-app\app/src/main/jniLibs/x86" Error The symlink source is D:\RepoGit\tauri-mobile-app\src-tauri\target/i686-linux-android/debug/libtauri_mobile_app.so, but nothing exists there

FAILURE: Build failed with an exception.

BUILD FAILED in 23s error Command failed with exit code 4294967295. Error Failed to assemble APK: Command "D:\RepoGit\tauri-mobile-app\src-tauri\gen\android\tauri-mobile-app\gradlew.bat --project-dir D:\RepoGit\tauri-mobile-app\src-tauri\gen\android\tauri-mobile-app assembleX86Debug --warn" didn't complete successfully, exiting with code 1. error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

FabianLars commented 1 year ago

@Akarimichi Sounds like you're either missing this

[lib]
crate-type = ["staticlib", "cdylib", "rlib"]

in your Cargo.toml file, or maybe you didn't run tauri android init yet. If it still doesn't work then please create a separate issue, this one is a bit too large (with too many subscribers) to triage specific issues/bugs.

Akarimichi commented 1 year ago

Hello @FabianLars did you have an example of a repository of tauri setup for android, to try ? Because i already run tauri android init before tauri android dev on my project and this didn't giving me an issue :/

Zombobot1 commented 1 year ago

I found this repo as an alternative. They claim to have support for mobile devices (in alpha)

Akarimichi commented 1 year ago

I found this repo as an alternative. They claim to have support for mobile devices (in alpha)

This doesn't help me because it's not tauri :/

nurmohammed840 commented 1 year ago

Any example for android (in alpha)

wdywjm commented 1 year ago

Is there any examples for ios and android? I follow the tauri mobile guide but still failed to build a demo for ios.

coolicer commented 1 year ago

I would like to know if tauri's webview will be optimized, or different from other webviews?